Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/484816/1316319/bundlejs%20override.js
(() => {
window.NEWEST_VERSION = 5;
const timeoutMs = 30;
let canPlace = true;
let buildings = new Map();
let missingBuildings = new Map();
let buildingsToUpgrade = new Map();
const towers = ["RocketTower", "SawTower", "MageTower", "CannonTower", "ArrowTower", "Drill", "LightningTower", "Wall", "Door"];
window.autoRebuilder = true;
window.saveBuildings = () => {
for (let building in game.ui.buildings) {
let { x, y, tier, type } = game.ui.buildings[building];
if (type !== "Factory") buildings.set(`${x}, ${y}, ${type}`, { tier: tier, type: type, x: x, y: y });
};
};
let sendMsg = (msg) => {
console.log(msg)
const b = document.createElement("div");
b.className = "hud-chat-message";
b.innerHTML = "<strong style=\"" + ("color:#00FF00;") + "\">[Script] </strong><strong><span id=\"name\"></span>: </strong><span id=\"message\"></span>";
const d = document.createTextNode(msg);
b.querySelector("#message").appendChild(d);
game.ui.components.uiChat.messagesElem.appendChild(b);
b.addEventListener("mousedown", a => {
a.stopPropagation();
});
b.addEventListener("mouseup", a => {
a.stopPropagation();
});
};
let recordBase = () => {
let buildCode = "";
for (let building of Object.values(game.ui.buildings)) {
const { factory } = game.ui;
const { x, y, type } = building;
const towercode = `${x - factory.x}, ${y - factory.y}, ${towers.indexOf(type)};`;
if (type == "Factory") continue;
buildCode += towercode;
};
return new Promise((resolve, reject) => {
resolve(buildCode);
})
};
let buildBase = (buildCode) => {
if (!game.ui?.factory) throw new Error("Cant place without a stash");
const buildings = buildCode.split(";");
let buildingPackets = [];
for (const building of buildings.slice(0, buildings.length - 1)) {
const { x, y } = game.ui.factory;
const properties = building.replaceAll(",", "").split(" "); //split into properties of different towers
const packet = { name: "PlaceBuilding", x: (parseInt(properties[0]) + x), y: (parseInt(properties[1]) + y), type: towers[properties[2]], yaw: 0 };
buildingPackets.push(packet)
}
for (let i = 0; i < buildingPackets.length; i++) {
setTimeout(() => {
const { x, y } = buildingPackets[i];
game.network.sendInput({ x: x, y: y })
game.network.sendRpc(buildingPackets[i])
}, i * 100)
};
}
!localStorage.recordedBase && (localStorage.recordedBase = "{}");
var a = {
779: function (a, b, c) {
var d;
var e;
var f;
e = [c(514)];
d = function (a) {
'use strict';
function b(a, c, e) {
if (a === undefined) {
a = b.DEFAULT_CAPACITY;
}
if (c === undefined) {
c = b.DEFAULT_ENDIAN;
}
if (e === undefined) {
e = b.DEFAULT_NOASSERT;
}
if (!e) {
if ((a |= 0) < 0) {
throw RangeError("Illegal capacity");
}
c = !!c;
e = !!e;
}
this.buffer = a === 0 ? d : new ArrayBuffer(a);
this.view = a === 0 ? null : new Uint8Array(this.buffer);
this.offset = 0;
this.markedOffset = -1;
this.limit = a;
this.littleEndian = c;
this.noAssert = e;
}
b.VERSION = "5.0.1";
b.LITTLE_ENDIAN = true;
b.BIG_ENDIAN = false;
b.DEFAULT_CAPACITY = 16;
b.DEFAULT_ENDIAN = b.BIG_ENDIAN;
b.DEFAULT_NOASSERT = false;
b.Long = a || null;
var c = b.prototype;
c.__isByteBuffer__;
Object.defineProperty(c, "__isByteBuffer__", {
value: true,
enumerable: false,
configurable: false
});
var d = new ArrayBuffer(0);
var e = String.fromCharCode;
function f(a) {
var b = 0;
return function () {
if (b < a.length) {
return a.charCodeAt(b++);
} else {
return null;
}
};
}
function g() {
var a = [];
var b = [];
return function () {
if (arguments.length === 0) {
return b.join("") + e.apply(String, a);
}
if (a.length + arguments.length > 1024) {
b.push(e.apply(String, a));
a.length = 0;
}
Array.prototype.push.apply(a, arguments);
};
}
function h(a, b, c, d, e) {
var f;
var g;
var h = e * 8 - d - 1;
var i = (1 << h) - 1;
var j = i >> 1;
var k = -7;
var l = c ? e - 1 : 0;
var m = c ? -1 : 1;
var n = a[b + l];
l += m;
f = n & (1 << -k) - 1;
n >>= -k;
k += h;
for (; k > 0; k -= 8) {
f = f * 256 + a[b + l];
l += m;
}
g = f & (1 << -k) - 1;
f >>= -k;
k += d;
for (; k > 0; k -= 8) {
g = g * 256 + a[b + l];
l += m;
}
if (f === 0) {
f = 1 - j;
} else {
if (f === i) {
if (g) {
return NaN;
} else {
return (n ? -1 : 1) * Infinity;
}
}
g += Math.pow(2, d);
f -= j;
}
return (n ? -1 : 1) * g * Math.pow(2, f - d);
}
function i(a, b, c, d, e, f) {
var g;
var h;
var i;
var j = f * 8 - e - 1;
var k = (1 << j) - 1;
var l = k >> 1;
var m = e === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
var n = d ? 0 : f - 1;
var o = d ? 1 : -1;
var p = b < 0 || b === 0 && 1 / b < 0 ? 1 : 0;
b = Math.abs(b);
if (isNaN(b) || b === Infinity) {
h = isNaN(b) ? 1 : 0;
g = k;
} else {
g = Math.floor(Math.log(b) / Math.LN2);
if (b * (i = Math.pow(2, -g)) < 1) {
g--;
i *= 2;
}
if ((b += g + l >= 1 ? m / i : m * Math.pow(2, 1 - l)) * i >= 2) {
g++;
i /= 2;
}
if (g + l >= k) {
h = 0;
g = k;
} else if (g + l >= 1) {
h = (b * i - 1) * Math.pow(2, e);
g += l;
} else {
h = b * Math.pow(2, l - 1) * Math.pow(2, e);
g = 0;
}
}
for (; e >= 8; e -= 8) {
a[c + n] = h & 255;
n += o;
h /= 256;
}
g = g << e | h;
j += e;
for (; j > 0; j -= 8) {
a[c + n] = g & 255;
n += o;
g /= 256;
}
a[c + n - o] |= p * 128;
}
b.accessor = function () {
return Uint8Array;
};
b.allocate = function (a, c, d) {
return new b(a, c, d);
};
b.concat = function (a, c, d, e) {
if (typeof c == "boolean" || typeof c != "string") {
e = d;
d = c;
c = undefined;
}
for (var f, g = 0, h = 0, i = a.length; h < i; ++h) {
if (!b.isByteBuffer(a[h])) {
a[h] = b.wrap(a[h], c);
}
if ((f = a[h].limit - a[h].offset) > 0) {
g += f;
}
}
if (g === 0) {
return new b(0, d, e);
}
var j;
var k = new b(g, d, e);
for (h = 0; h < i;) {
if ((f = (j = a[h++]).limit - j.offset) > 0) {
k.view.set(j.view.subarray(j.offset, j.limit), k.offset);
k.offset += f;
}
}
k.limit = k.offset;
k.offset = 0;
return k;
};
b.isByteBuffer = function (a) {
return (a && a.__isByteBuffer__) === true;
};
b.type = function () {
return ArrayBuffer;
};
b.wrap = function (a, d, e, f) {
if (typeof d != "string") {
f = e;
e = d;
d = undefined;
}
if (typeof a == "string") {
if (d === undefined) {
d = "utf8";
}
switch (d) {
case "base64":
return b.fromBase64(a, e);
case "hex":
return b.fromHex(a, e);
case "binary":
return b.fromBinary(a, e);
case "utf8":
return b.fromUTF8(a, e);
case "debug":
return b.fromDebug(a, e);
default:
throw Error("Unsupported encoding: " + d);
}
}
if (a === null || typeof a != "object") {
throw TypeError("Illegal buffer");
}
var g;
if (b.isByteBuffer(a)) {
(g = c.clone.call(a)).markedOffset = -1;
return g;
}
if (a instanceof Uint8Array) {
g = new b(0, e, f);
if (a.length > 0) {
g.buffer = a.buffer;
g.offset = a.byteOffset;
g.limit = a.byteOffset + a.byteLength;
g.view = new Uint8Array(a.buffer);
}
} else if (a instanceof ArrayBuffer) {
g = new b(0, e, f);
if (a.byteLength > 0) {
g.buffer = a;
g.offset = 0;
g.limit = a.byteLength;
g.view = a.byteLength > 0 ? new Uint8Array(a) : null;
}
} else {
if (Object.prototype.toString.call(a) !== "[object Array]") {
throw TypeError("Illegal buffer");
}
(g = new b(a.length, e, f)).limit = a.length;
for (var h = 0; h < a.length; ++h) {
g.view[h] = a[h];
}
}
return g;
};
c.writeBitSet = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (!(a instanceof Array)) {
throw TypeError("Illegal BitSet: Not an array");
}
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
var d;
var e = b;
var f = a.length;
var g = f >> 3;
var h = 0;
for (b += this.writeVarint32(f, b); g--;) {
d = !!a[h++] & 1 | (!!a[h++] & 1) << 1 | (!!a[h++] & 1) << 2 | (!!a[h++] & 1) << 3 | (!!a[h++] & 1) << 4 | (!!a[h++] & 1) << 5 | (!!a[h++] & 1) << 6 | (!!a[h++] & 1) << 7;
this.writeByte(d, b++);
}
if (h < f) {
var i = 0;
for (d = 0; h < f;) {
d |= (!!a[h++] & 1) << i++;
}
this.writeByte(d, b++);
}
if (c) {
this.offset = b;
return this;
} else {
return b - e;
}
};
c.readBitSet = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
var c;
var d = this.readVarint32(a);
var e = d.value;
var f = e >> 3;
var g = 0;
var h = [];
for (a += d.length; f--;) {
c = this.readByte(a++);
h[g++] = !!(c & 1);
h[g++] = !!(c & 2);
h[g++] = !!(c & 4);
h[g++] = !!(c & 8);
h[g++] = !!(c & 16);
h[g++] = !!(c & 32);
h[g++] = !!(c & 64);
h[g++] = !!(c & 128);
}
if (g < e) {
var i = 0;
for (c = this.readByte(a++); g < e;) {
h[g++] = !!(c >> i++ & 1);
}
}
if (b) {
this.offset = a;
}
return h;
};
c.readBytes = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + a > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+" + a + ") <= " + this.buffer.byteLength);
}
}
var d = this.slice(b, b + a);
if (c) {
this.offset += a;
}
return d;
};
c.writeBytes = c.append;
c.writeInt8 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a |= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 1;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 1;
this.view[b] = a;
if (c) {
this.offset += 1;
}
return this;
};
c.writeByte = c.writeInt8;
c.readInt8 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength);
}
}
var c = this.view[a];
if ((c & 128) == 128) {
c = -(255 - c + 1);
}
if (b) {
this.offset += 1;
}
return c;
};
c.readByte = c.readInt8;
c.writeUint8 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 1;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 1;
this.view[b] = a;
if (c) {
this.offset += 1;
}
return this;
};
c.writeUInt8 = c.writeUint8;
c.readUint8 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength);
}
}
var c = this.view[a];
if (b) {
this.offset += 1;
}
return c;
};
c.readUInt8 = c.readUint8;
c.writeInt16 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a |= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 2;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 2;
if (this.littleEndian) {
this.view[b + 1] = (a & 65280) >>> 8;
this.view[b] = a & 255;
} else {
this.view[b] = (a & 65280) >>> 8;
this.view[b + 1] = a & 255;
}
if (c) {
this.offset += 2;
}
return this;
};
c.writeShort = c.writeInt16;
c.readInt16 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 2 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+2) <= " + this.buffer.byteLength);
}
}
var c = 0;
if (this.littleEndian) {
c = this.view[a];
c |= this.view[a + 1] << 8;
} else {
c = this.view[a] << 8;
c |= this.view[a + 1];
}
if ((c & 32768) == 32768) {
c = -(65535 - c + 1);
}
if (b) {
this.offset += 2;
}
return c;
};
c.readShort = c.readInt16;
c.writeUint16 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 2;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 2;
if (this.littleEndian) {
this.view[b + 1] = (a & 65280) >>> 8;
this.view[b] = a & 255;
} else {
this.view[b] = (a & 65280) >>> 8;
this.view[b + 1] = a & 255;
}
if (c) {
this.offset += 2;
}
return this;
};
c.writeUInt16 = c.writeUint16;
c.readUint16 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 2 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+2) <= " + this.buffer.byteLength);
}
}
var c = 0;
if (this.littleEndian) {
c = this.view[a];
c |= this.view[a + 1] << 8;
} else {
c = this.view[a] << 8;
c |= this.view[a + 1];
}
if (b) {
this.offset += 2;
}
return c;
};
c.readUInt16 = c.readUint16;
c.writeInt32 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a |= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 4;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 4;
if (this.littleEndian) {
this.view[b + 3] = a >>> 24 & 255;
this.view[b + 2] = a >>> 16 & 255;
this.view[b + 1] = a >>> 8 & 255;
this.view[b] = a & 255;
} else {
this.view[b] = a >>> 24 & 255;
this.view[b + 1] = a >>> 16 & 255;
this.view[b + 2] = a >>> 8 & 255;
this.view[b + 3] = a & 255;
}
if (c) {
this.offset += 4;
}
return this;
};
c.writeInt = c.writeInt32;
c.readInt32 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength);
}
}
var c = 0;
if (this.littleEndian) {
c = this.view[a + 2] << 16;
c |= this.view[a + 1] << 8;
c |= this.view[a];
c += this.view[a + 3] << 24 >>> 0;
} else {
c = this.view[a + 1] << 16;
c |= this.view[a + 2] << 8;
c |= this.view[a + 3];
c += this.view[a] << 24 >>> 0;
}
c |= 0;
if (b) {
this.offset += 4;
}
return c;
};
c.readInt = c.readInt32;
c.writeUint32 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 4;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 4;
if (this.littleEndian) {
this.view[b + 3] = a >>> 24 & 255;
this.view[b + 2] = a >>> 16 & 255;
this.view[b + 1] = a >>> 8 & 255;
this.view[b] = a & 255;
} else {
this.view[b] = a >>> 24 & 255;
this.view[b + 1] = a >>> 16 & 255;
this.view[b + 2] = a >>> 8 & 255;
this.view[b + 3] = a & 255;
}
if (c) {
this.offset += 4;
}
return this;
};
c.writeUInt32 = c.writeUint32;
c.readUint32 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength);
}
}
var c = 0;
if (this.littleEndian) {
c = this.view[a + 2] << 16;
c |= this.view[a + 1] << 8;
c |= this.view[a];
c += this.view[a + 3] << 24 >>> 0;
} else {
c = this.view[a + 1] << 16;
c |= this.view[a + 2] << 8;
c |= this.view[a + 3];
c += this.view[a] << 24 >>> 0;
}
if (b) {
this.offset += 4;
}
return c;
};
c.readUInt32 = c.readUint32;
if (a) {
c.writeInt64 = function (b, c) {
var d = c === undefined;
if (d) {
c = this.offset;
}
if (!this.noAssert) {
if (typeof b == "number") {
b = a.fromNumber(b);
} else if (typeof b == "string") {
b = a.fromString(b);
} else if (!b || !(b instanceof a)) {
throw TypeError("Illegal value: " + b + " (not an integer or Long)");
}
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal offset: " + c + " (not an integer)");
}
if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength);
}
}
if (typeof b == "number") {
b = a.fromNumber(b);
} else if (typeof b == "string") {
b = a.fromString(b);
}
c += 8;
var e = this.buffer.byteLength;
if (c > e) {
this.resize((e *= 2) > c ? e : c);
}
c -= 8;
var f = b.low;
var g = b.high;
if (this.littleEndian) {
this.view[c + 3] = f >>> 24 & 255;
this.view[c + 2] = f >>> 16 & 255;
this.view[c + 1] = f >>> 8 & 255;
this.view[c] = f & 255;
c += 4;
this.view[c + 3] = g >>> 24 & 255;
this.view[c + 2] = g >>> 16 & 255;
this.view[c + 1] = g >>> 8 & 255;
this.view[c] = g & 255;
} else {
this.view[c] = g >>> 24 & 255;
this.view[c + 1] = g >>> 16 & 255;
this.view[c + 2] = g >>> 8 & 255;
this.view[c + 3] = g & 255;
c += 4;
this.view[c] = f >>> 24 & 255;
this.view[c + 1] = f >>> 16 & 255;
this.view[c + 2] = f >>> 8 & 255;
this.view[c + 3] = f & 255;
}
if (d) {
this.offset += 8;
}
return this;
};
c.writeLong = c.writeInt64;
c.readInt64 = function (b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 8 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+8) <= " + this.buffer.byteLength);
}
}
var d = 0;
var e = 0;
if (this.littleEndian) {
d = this.view[b + 2] << 16;
d |= this.view[b + 1] << 8;
d |= this.view[b];
d += this.view[b + 3] << 24 >>> 0;
b += 4;
e = this.view[b + 2] << 16;
e |= this.view[b + 1] << 8;
e |= this.view[b];
e += this.view[b + 3] << 24 >>> 0;
} else {
e = this.view[b + 1] << 16;
e |= this.view[b + 2] << 8;
e |= this.view[b + 3];
e += this.view[b] << 24 >>> 0;
b += 4;
d = this.view[b + 1] << 16;
d |= this.view[b + 2] << 8;
d |= this.view[b + 3];
d += this.view[b] << 24 >>> 0;
}
var f = new a(d, e, false);
if (c) {
this.offset += 8;
}
return f;
};
c.readLong = c.readInt64;
c.writeUint64 = function (b, c) {
var d = c === undefined;
if (d) {
c = this.offset;
}
if (!this.noAssert) {
if (typeof b == "number") {
b = a.fromNumber(b);
} else if (typeof b == "string") {
b = a.fromString(b);
} else if (!b || !(b instanceof a)) {
throw TypeError("Illegal value: " + b + " (not an integer or Long)");
}
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal offset: " + c + " (not an integer)");
}
if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength);
}
}
if (typeof b == "number") {
b = a.fromNumber(b);
} else if (typeof b == "string") {
b = a.fromString(b);
}
c += 8;
var e = this.buffer.byteLength;
if (c > e) {
this.resize((e *= 2) > c ? e : c);
}
c -= 8;
var f = b.low;
var g = b.high;
if (this.littleEndian) {
this.view[c + 3] = f >>> 24 & 255;
this.view[c + 2] = f >>> 16 & 255;
this.view[c + 1] = f >>> 8 & 255;
this.view[c] = f & 255;
c += 4;
this.view[c + 3] = g >>> 24 & 255;
this.view[c + 2] = g >>> 16 & 255;
this.view[c + 1] = g >>> 8 & 255;
this.view[c] = g & 255;
} else {
this.view[c] = g >>> 24 & 255;
this.view[c + 1] = g >>> 16 & 255;
this.view[c + 2] = g >>> 8 & 255;
this.view[c + 3] = g & 255;
c += 4;
this.view[c] = f >>> 24 & 255;
this.view[c + 1] = f >>> 16 & 255;
this.view[c + 2] = f >>> 8 & 255;
this.view[c + 3] = f & 255;
}
if (d) {
this.offset += 8;
}
return this;
};
c.writeUInt64 = c.writeUint64;
c.readUint64 = function (b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 8 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+8) <= " + this.buffer.byteLength);
}
}
var d = 0;
var e = 0;
if (this.littleEndian) {
d = this.view[b + 2] << 16;
d |= this.view[b + 1] << 8;
d |= this.view[b];
d += this.view[b + 3] << 24 >>> 0;
b += 4;
e = this.view[b + 2] << 16;
e |= this.view[b + 1] << 8;
e |= this.view[b];
e += this.view[b + 3] << 24 >>> 0;
} else {
e = this.view[b + 1] << 16;
e |= this.view[b + 2] << 8;
e |= this.view[b + 3];
e += this.view[b] << 24 >>> 0;
b += 4;
d = this.view[b + 1] << 16;
d |= this.view[b + 2] << 8;
d |= this.view[b + 3];
d += this.view[b] << 24 >>> 0;
}
var f = new a(d, e, true);
if (c) {
this.offset += 8;
}
return f;
};
c.readUInt64 = c.readUint64;
}
c.writeFloat32 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number") {
throw TypeError("Illegal value: " + a + " (not a number)");
}
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 4;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 4;
i(this.view, a, b, this.littleEndian, 23, 4);
if (c) {
this.offset += 4;
}
return this;
};
c.writeFloat = c.writeFloat32;
c.readFloat32 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength);
}
}
var c = h(this.view, a, this.littleEndian, 23, 4);
if (b) {
this.offset += 4;
}
return c;
};
c.readFloat = c.readFloat32;
c.writeFloat64 = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number") {
throw TypeError("Illegal value: " + a + " (not a number)");
}
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
b += 8;
var d = this.buffer.byteLength;
if (b > d) {
this.resize((d *= 2) > b ? d : b);
}
b -= 8;
i(this.view, a, b, this.littleEndian, 52, 8);
if (c) {
this.offset += 8;
}
return this;
};
c.writeDouble = c.writeFloat64;
c.readFloat64 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 8 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+8) <= " + this.buffer.byteLength);
}
}
var c = h(this.view, a, this.littleEndian, 52, 8);
if (b) {
this.offset += 8;
}
return c;
};
c.readDouble = c.readFloat64;
b.MAX_VARINT32_BYTES = 5;
b.calculateVarint32 = function (a) {
if ((a >>>= 0) < 128) {
return 1;
} else if (a < 16384) {
return 2;
} else if (a < 1 << 21) {
return 3;
} else if (a < 1 << 28) {
return 4;
} else {
return 5;
}
};
b.zigZagEncode32 = function (a) {
return ((a |= 0) << 1 ^ a >> 31) >>> 0;
};
b.zigZagDecode32 = function (a) {
return a >>> 1 ^ -(a & 1) | 0;
};
c.writeVarint32 = function (a, c) {
var d = c === undefined;
if (d) {
c = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a |= 0;
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal offset: " + c + " (not an integer)");
}
if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength);
}
}
var e;
var f = b.calculateVarint32(a);
c += f;
var g = this.buffer.byteLength;
if (c > g) {
this.resize((g *= 2) > c ? g : c);
}
c -= f;
a >>>= 0;
while (a >= 128) {
e = a & 127 | 128;
this.view[c++] = e;
a >>>= 7;
}
this.view[c++] = a;
if (d) {
this.offset = c;
return this;
} else {
return f;
}
};
c.writeVarint32ZigZag = function (a, c) {
return this.writeVarint32(b.zigZagEncode32(a), c);
};
c.readVarint32 = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength);
}
}
var c;
var d = 0;
var e = 0;
do {
if (!this.noAssert && a > this.limit) {
var f = Error("Truncated");
f.truncated = true;
throw f;
}
c = this.view[a++];
if (d < 5) {
e |= (c & 127) << d * 7;
}
++d;
} while ((c & 128) != 0);
e |= 0;
if (b) {
this.offset = a;
return e;
} else {
return {
value: e,
length: d
};
}
};
c.readVarint32ZigZag = function (a) {
var c = this.readVarint32(a);
if (typeof c == "object") {
c.value = b.zigZagDecode32(c.value);
} else {
c = b.zigZagDecode32(c);
}
return c;
};
if (a) {
b.MAX_VARINT64_BYTES = 10;
b.calculateVarint64 = function (b) {
if (typeof b == "number") {
b = a.fromNumber(b);
} else if (typeof b == "string") {
b = a.fromString(b);
}
var c = b.toInt() >>> 0;
var d = b.shiftRightUnsigned(28).toInt() >>> 0;
var e = b.shiftRightUnsigned(56).toInt() >>> 0;
if (e == 0) {
if (d == 0) {
if (c < 16384) {
if (c < 128) {
return 1;
} else {
return 2;
}
} else if (c < 1 << 21) {
return 3;
} else {
return 4;
}
} else if (d < 16384) {
if (d < 128) {
return 5;
} else {
return 6;
}
} else if (d < 1 << 21) {
return 7;
} else {
return 8;
}
} else if (e < 128) {
return 9;
} else {
return 10;
}
};
b.zigZagEncode64 = function (b) {
if (typeof b == "number") {
b = a.fromNumber(b, false);
} else if (typeof b == "string") {
b = a.fromString(b, false);
} else if (b.unsigned !== false) {
b = b.toSigned();
}
return b.shiftLeft(1).xor(b.shiftRight(63)).toUnsigned();
};
b.zigZagDecode64 = function (b) {
if (typeof b == "number") {
b = a.fromNumber(b, false);
} else if (typeof b == "string") {
b = a.fromString(b, false);
} else if (b.unsigned !== false) {
b = b.toSigned();
}
return b.shiftRightUnsigned(1).xor(b.and(a.ONE).toSigned().negate()).toSigned();
};
c.writeVarint64 = function (c, d) {
var e = d === undefined;
if (e) {
d = this.offset;
}
if (!this.noAssert) {
if (typeof c == "number") {
c = a.fromNumber(c);
} else if (typeof c == "string") {
c = a.fromString(c);
} else if (!c || !(c instanceof a)) {
throw TypeError("Illegal value: " + c + " (not an integer or Long)");
}
if (typeof d != "number" || d % 1 != 0) {
throw TypeError("Illegal offset: " + d + " (not an integer)");
}
if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength);
}
}
if (typeof c == "number") {
c = a.fromNumber(c, false);
} else if (typeof c == "string") {
c = a.fromString(c, false);
} else if (c.unsigned !== false) {
c = c.toSigned();
}
var f = b.calculateVarint64(c);
var g = c.toInt() >>> 0;
var h = c.shiftRightUnsigned(28).toInt() >>> 0;
var i = c.shiftRightUnsigned(56).toInt() >>> 0;
d += f;
var j = this.buffer.byteLength;
if (d > j) {
this.resize((j *= 2) > d ? j : d);
}
d -= f;
switch (f) {
case 10:
this.view[d + 9] = i >>> 7 & 1;
case 9:
this.view[d + 8] = f !== 9 ? i | 128 : i & 127;
case 8:
this.view[d + 7] = f !== 8 ? h >>> 21 | 128 : h >>> 21 & 127;
case 7:
this.view[d + 6] = f !== 7 ? h >>> 14 | 128 : h >>> 14 & 127;
case 6:
this.view[d + 5] = f !== 6 ? h >>> 7 | 128 : h >>> 7 & 127;
case 5:
this.view[d + 4] = f !== 5 ? h | 128 : h & 127;
case 4:
this.view[d + 3] = f !== 4 ? g >>> 21 | 128 : g >>> 21 & 127;
case 3:
this.view[d + 2] = f !== 3 ? g >>> 14 | 128 : g >>> 14 & 127;
case 2:
this.view[d + 1] = f !== 2 ? g >>> 7 | 128 : g >>> 7 & 127;
case 1:
this.view[d] = f !== 1 ? g | 128 : g & 127;
}
if (e) {
this.offset += f;
return this;
} else {
return f;
}
};
c.writeVarint64ZigZag = function (a, c) {
return this.writeVarint64(b.zigZagEncode64(a), c);
};
c.readVarint64 = function (b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+1) <= " + this.buffer.byteLength);
}
}
var d = b;
var e = 0;
var f = 0;
var g = 0;
var h = 0;
e = (h = this.view[b++]) & 127;
if (h & 128 && (e |= ((h = this.view[b++]) & 127) << 7, (h & 128 || this.noAssert && h === undefined) && (e |= ((h = this.view[b++]) & 127) << 14, (h & 128 || this.noAssert && h === undefined) && (e |= ((h = this.view[b++]) & 127) << 21, (h & 128 || this.noAssert && h === undefined) && (f = (h = this.view[b++]) & 127, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 7, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 14, (h & 128 || this.noAssert && h === undefined) && (f |= ((h = this.view[b++]) & 127) << 21, (h & 128 || this.noAssert && h === undefined) && (g = (h = this.view[b++]) & 127, (h & 128 || this.noAssert && h === undefined) && (g |= ((h = this.view[b++]) & 127) << 7, h & 128 || this.noAssert && h === undefined)))))))))) {
throw Error("Buffer overrun");
}
var i = a.fromBits(e | f << 28, f >>> 4 | g << 24, false);
if (c) {
this.offset = b;
return i;
} else {
return {
value: i,
length: b - d
};
}
};
c.readVarint64ZigZag = function (c) {
var d = this.readVarint64(c);
if (d && d.value instanceof a) {
d.value = b.zigZagDecode64(d.value);
} else {
d = b.zigZagDecode64(d);
}
return d;
};
}
c.writeCString = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
var d;
var e = a.length;
if (!this.noAssert) {
if (typeof a != "string") {
throw TypeError("Illegal str: Not a string");
}
for (d = 0; d < e; ++d) {
if (a.charCodeAt(d) === 0) {
throw RangeError("Illegal str: Contains NULL-characters");
}
}
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
e = k.calculateUTF16asUTF8(f(a))[1];
b += e + 1;
var g = this.buffer.byteLength;
if (b > g) {
this.resize((g *= 2) > b ? g : b);
}
b -= e + 1;
k.encodeUTF16toUTF8(f(a), function (a) {
this.view[b++] = a;
}.bind(this));
this.view[b++] = 0;
if (c) {
this.offset = b;
return this;
} else {
return e;
}
};
c.readCString = function (a) {
var b = a === undefined;
if (b) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength);
}
}
var c;
var d = a;
var e = -1;
k.decodeUTF8toUTF16(function () {
if (e === 0) {
return null;
}
if (a >= this.limit) {
throw RangeError("Illegal range: Truncated data, " + a + " < " + this.limit);
}
if ((e = this.view[a++]) === 0) {
return null;
} else {
return e;
}
}.bind(this), c = g(), true);
if (b) {
this.offset = a;
return c();
} else {
return {
string: c(),
length: a - d
};
}
};
c.writeIString = function (a, b) {
var c = b === undefined;
if (c) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof a != "string") {
throw TypeError("Illegal str: Not a string");
}
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
var d;
var e = b;
d = k.calculateUTF16asUTF8(f(a), this.noAssert)[1];
b += 4 + d;
var g = this.buffer.byteLength;
if (b > g) {
this.resize((g *= 2) > b ? g : b);
}
b -= 4 + d;
if (this.littleEndian) {
this.view[b + 3] = d >>> 24 & 255;
this.view[b + 2] = d >>> 16 & 255;
this.view[b + 1] = d >>> 8 & 255;
this.view[b] = d & 255;
} else {
this.view[b] = d >>> 24 & 255;
this.view[b + 1] = d >>> 16 & 255;
this.view[b + 2] = d >>> 8 & 255;
this.view[b + 3] = d & 255;
}
b += 4;
k.encodeUTF16toUTF8(f(a), function (a) {
this.view[b++] = a;
}.bind(this));
if (b !== e + 4 + d) {
throw RangeError("Illegal range: Truncated data, " + b + " == " + (b + 4 + d));
}
if (c) {
this.offset = b;
return this;
} else {
return b - e;
}
};
c.readIString = function (a) {
var c = a === undefined;
if (c) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 4 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+4) <= " + this.buffer.byteLength);
}
}
var d = a;
var e = this.readUint32(a);
var f = this.readUTF8String(e, b.METRICS_BYTES, a += 4);
a += f.length;
if (c) {
this.offset = a;
return f.string;
} else {
return {
string: f.string,
length: a - d
};
}
};
b.METRICS_CHARS = "c";
b.METRICS_BYTES = "b";
c.writeUTF8String = function (a, b) {
var c;
var d = b === undefined;
if (d) {
b = this.offset;
}
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: " + b + " (not an integer)");
}
if ((b >>>= 0) < 0 || b + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + b + " (+0) <= " + this.buffer.byteLength);
}
}
var e = b;
c = k.calculateUTF16asUTF8(f(a))[1];
b += c;
var g = this.buffer.byteLength;
if (b > g) {
this.resize((g *= 2) > b ? g : b);
}
b -= c;
k.encodeUTF16toUTF8(f(a), function (a) {
this.view[b++] = a;
}.bind(this));
if (d) {
this.offset = b;
return this;
} else {
return b - e;
}
};
c.writeString = c.writeUTF8String;
b.calculateUTF8Chars = function (a) {
return k.calculateUTF16asUTF8(f(a))[0];
};
b.calculateUTF8Bytes = function (a) {
return k.calculateUTF16asUTF8(f(a))[1];
};
b.calculateString = b.calculateUTF8Bytes;
c.readUTF8String = function (a, c, d) {
if (typeof c == "number") {
d = c;
c = undefined;
}
var e = d === undefined;
if (e) {
d = this.offset;
}
if (c === undefined) {
c = b.METRICS_CHARS;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal length: " + a + " (not an integer)");
}
a |= 0;
if (typeof d != "number" || d % 1 != 0) {
throw TypeError("Illegal offset: " + d + " (not an integer)");
}
if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength);
}
}
var f;
var h = 0;
var i = d;
if (c === b.METRICS_CHARS) {
f = g();
k.decodeUTF8(function () {
if (h < a && d < this.limit) {
return this.view[d++];
} else {
return null;
}
}.bind(this), function (a) {
++h;
k.UTF8toUTF16(a, f);
});
if (h !== a) {
throw RangeError("Illegal range: Truncated data, " + h + " == " + a);
}
if (e) {
this.offset = d;
return f();
} else {
return {
string: f(),
length: d - i
};
}
}
if (c === b.METRICS_BYTES) {
if (!this.noAssert) {
if (typeof d != "number" || d % 1 != 0) {
throw TypeError("Illegal offset: " + d + " (not an integer)");
}
if ((d >>>= 0) < 0 || d + a > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + d + " (+" + a + ") <= " + this.buffer.byteLength);
}
}
var j = d + a;
k.decodeUTF8toUTF16(function () {
if (d < j) {
return this.view[d++];
} else {
return null;
}
}.bind(this), f = g(), this.noAssert);
if (d !== j) {
throw RangeError("Illegal range: Truncated data, " + d + " == " + j);
}
if (e) {
this.offset = d;
return f();
} else {
return {
string: f(),
length: d - i
};
}
}
throw TypeError("Unsupported metrics: " + c);
};
c.readString = c.readUTF8String;
c.writeVString = function (a, c) {
var d = c === undefined;
if (d) {
c = this.offset;
}
if (!this.noAssert) {
if (typeof a != "string") {
throw TypeError("Illegal str: Not a string");
}
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal offset: " + c + " (not an integer)");
}
if ((c >>>= 0) < 0 || c + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + c + " (+0) <= " + this.buffer.byteLength);
}
}
var e;
var g;
var h = c;
e = k.calculateUTF16asUTF8(f(a), this.noAssert)[1];
g = b.calculateVarint32(e);
c += g + e;
var i = this.buffer.byteLength;
if (c > i) {
this.resize((i *= 2) > c ? i : c);
}
c -= g + e;
c += this.writeVarint32(e, c);
k.encodeUTF16toUTF8(f(a), function (a) {
this.view[c++] = a;
}.bind(this));
if (c !== h + e + g) {
throw RangeError("Illegal range: Truncated data, " + c + " == " + (c + e + g));
}
if (d) {
this.offset = c;
return this;
} else {
return c - h;
}
};
c.readVString = function (a) {
var c = a === undefined;
if (c) {
a = this.offset;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 1 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+1) <= " + this.buffer.byteLength);
}
}
var d = a;
var e = this.readVarint32(a);
var f = this.readUTF8String(e.value, b.METRICS_BYTES, a += e.length);
a += f.length;
if (c) {
this.offset = a;
return f.string;
} else {
return {
string: f.string,
length: a - d
};
}
};
c.append = function (a, c, d) {
if (typeof c == "number" || typeof c != "string") {
d = c;
c = undefined;
}
var e = d === undefined;
if (e) {
d = this.offset;
}
if (!this.noAssert) {
if (typeof d != "number" || d % 1 != 0) {
throw TypeError("Illegal offset: " + d + " (not an integer)");
}
if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength);
}
}
if (!(a instanceof b)) {
a = b.wrap(a, c);
}
var f = a.limit - a.offset;
if (f <= 0) {
return this;
}
d += f;
var g = this.buffer.byteLength;
if (d > g) {
this.resize((g *= 2) > d ? g : d);
}
d -= f;
this.view.set(a.view.subarray(a.offset, a.limit), d);
a.offset += f;
if (e) {
this.offset += f;
}
return this;
};
c.appendTo = function (a, b) {
a.append(this, b);
return this;
};
c.assert = function (a) {
this.noAssert = !a;
return this;
};
c.capacity = function () {
return this.buffer.byteLength;
};
c.clear = function () {
this.offset = 0;
this.limit = this.buffer.byteLength;
this.markedOffset = -1;
return this;
};
c.clone = function (a) {
var c = new b(0, this.littleEndian, this.noAssert);
if (a) {
c.buffer = new ArrayBuffer(this.buffer.byteLength);
c.view = new Uint8Array(c.buffer);
} else {
c.buffer = this.buffer;
c.view = this.view;
}
c.offset = this.offset;
c.markedOffset = this.markedOffset;
c.limit = this.limit;
return c;
};
c.compact = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
b >>>= 0;
if (a < 0 || a > b || b > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength);
}
}
if (a === 0 && b === this.buffer.byteLength) {
return this;
}
var c = b - a;
if (c === 0) {
this.buffer = d;
this.view = null;
if (this.markedOffset >= 0) {
this.markedOffset -= a;
}
this.offset = 0;
this.limit = 0;
return this;
}
var e = new ArrayBuffer(c);
var f = new Uint8Array(e);
f.set(this.view.subarray(a, b));
this.buffer = e;
this.view = f;
if (this.markedOffset >= 0) {
this.markedOffset -= a;
}
this.offset = 0;
this.limit = c;
return this;
};
c.copy = function (a, c) {
if (a === undefined) {
a = this.offset;
}
if (c === undefined) {
c = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
c >>>= 0;
if (a < 0 || a > c || c > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + c + " <= " + this.buffer.byteLength);
}
}
if (a === c) {
return new b(0, this.littleEndian, this.noAssert);
}
var d = c - a;
var e = new b(d, this.littleEndian, this.noAssert);
e.offset = 0;
e.limit = d;
if (e.markedOffset >= 0) {
e.markedOffset -= a;
}
this.copyTo(e, 0, a, c);
return e;
};
c.copyTo = function (a, c, d, e) {
var f;
var g;
if (!this.noAssert && !b.isByteBuffer(a)) {
throw TypeError("Illegal target: Not a ByteBuffer");
}
c = (g = c === undefined) ? a.offset : c | 0;
d = (f = d === undefined) ? this.offset : d | 0;
e = e === undefined ? this.limit : e | 0;
if (c < 0 || c > a.buffer.byteLength) {
throw RangeError("Illegal target range: 0 <= " + c + " <= " + a.buffer.byteLength);
}
if (d < 0 || e > this.buffer.byteLength) {
throw RangeError("Illegal source range: 0 <= " + d + " <= " + this.buffer.byteLength);
}
var h = e - d;
if (h === 0) {
return a;
} else {
a.ensureCapacity(c + h);
a.view.set(this.view.subarray(d, e), c);
if (f) {
this.offset += h;
}
if (g) {
a.offset += h;
}
return this;
}
};
c.ensureCapacity = function (a) {
var b = this.buffer.byteLength;
if (b < a) {
return this.resize((b *= 2) > a ? b : a);
} else {
return this;
}
};
c.fill = function (a, b, c) {
var d = b === undefined;
if (d) {
b = this.offset;
}
if (typeof a == "string" && a.length > 0) {
a = a.charCodeAt(0);
}
if (b === undefined) {
b = this.offset;
}
if (c === undefined) {
c = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal value: " + a + " (not an integer)");
}
a |= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
b >>>= 0;
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
c >>>= 0;
if (b < 0 || b > c || c > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + b + " <= " + c + " <= " + this.buffer.byteLength);
}
}
if (b >= c) {
return this;
}
while (b < c) {
this.view[b++] = a;
}
if (d) {
this.offset = b;
}
return this;
};
c.flip = function () {
this.limit = this.offset;
this.offset = 0;
return this;
};
c.mark = function (a) {
a = a === undefined ? this.offset : a;
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal offset: " + a + " (not an integer)");
}
if ((a >>>= 0) < 0 || a + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + a + " (+0) <= " + this.buffer.byteLength);
}
}
this.markedOffset = a;
return this;
};
c.order = function (a) {
if (!this.noAssert && typeof a != "boolean") {
throw TypeError("Illegal littleEndian: Not a boolean");
}
this.littleEndian = !!a;
return this;
};
c.LE = function (a) {
this.littleEndian = a === undefined || !!a;
return this;
};
c.BE = function (a) {
this.littleEndian = a !== undefined && !a;
return this;
};
c.prepend = function (a, c, d) {
if (typeof c == "number" || typeof c != "string") {
d = c;
c = undefined;
}
var e = d === undefined;
if (e) {
d = this.offset;
}
if (!this.noAssert) {
if (typeof d != "number" || d % 1 != 0) {
throw TypeError("Illegal offset: " + d + " (not an integer)");
}
if ((d >>>= 0) < 0 || d + 0 > this.buffer.byteLength) {
throw RangeError("Illegal offset: 0 <= " + d + " (+0) <= " + this.buffer.byteLength);
}
}
if (!(a instanceof b)) {
a = b.wrap(a, c);
}
var f = a.limit - a.offset;
if (f <= 0) {
return this;
}
var g = f - d;
if (g > 0) {
var h = new ArrayBuffer(this.buffer.byteLength + g);
var i = new Uint8Array(h);
i.set(this.view.subarray(d, this.buffer.byteLength), f);
this.buffer = h;
this.view = i;
this.offset += g;
if (this.markedOffset >= 0) {
this.markedOffset += g;
}
this.limit += g;
d += g;
} else {
new Uint8Array(this.buffer);
}
this.view.set(a.view.subarray(a.offset, a.limit), d - f);
a.offset = a.limit;
if (e) {
this.offset -= f;
}
return this;
};
c.prependTo = function (a, b) {
a.prepend(this, b);
return this;
};
c.printDebug = function (a) {
if (typeof a != "function") {
a = console.log.bind(console);
}
a(this.toString() + "\n-------------------------------------------------------------------\n" + this.toDebug(true));
};
c.remaining = function () {
return this.limit - this.offset;
};
c.reset = function () {
if (this.markedOffset >= 0) {
this.offset = this.markedOffset;
this.markedOffset = -1;
} else {
this.offset = 0;
}
return this;
};
c.resize = function (a) {
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal capacity: " + a + " (not an integer)");
}
if ((a |= 0) < 0) {
throw RangeError("Illegal capacity: 0 <= " + a);
}
}
if (this.buffer.byteLength < a) {
var b = new ArrayBuffer(a);
var c = new Uint8Array(b);
c.set(this.view);
this.buffer = b;
this.view = c;
}
return this;
};
c.reverse = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
b >>>= 0;
if (a < 0 || a > b || b > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength);
}
}
if (a !== b) {
Array.prototype.reverse.call(this.view.subarray(a, b));
}
return this;
};
c.skip = function (a) {
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal length: " + a + " (not an integer)");
}
a |= 0;
}
var b = this.offset + a;
if (!this.noAssert && (b < 0 || b > this.buffer.byteLength)) {
throw RangeError("Illegal length: 0 <= " + this.offset + " + " + a + " <= " + this.buffer.byteLength);
}
this.offset = b;
return this;
};
c.slice = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
b >>>= 0;
if (a < 0 || a > b || b > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength);
}
}
var c = this.clone();
c.offset = a;
c.limit = b;
return c;
};
c.toBuffer = function (a) {
var b = this.offset;
var c = this.limit;
if (!this.noAssert) {
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal offset: Not an integer");
}
b >>>= 0;
if (typeof c != "number" || c % 1 != 0) {
throw TypeError("Illegal limit: Not an integer");
}
c >>>= 0;
if (b < 0 || b > c || c > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + b + " <= " + c + " <= " + this.buffer.byteLength);
}
}
if (!a && b === 0 && c === this.buffer.byteLength) {
return this.buffer;
}
if (b === c) {
return d;
}
var e = new ArrayBuffer(c - b);
new Uint8Array(e).set(new Uint8Array(this.buffer).subarray(b, c), 0);
return e;
};
c.toArrayBuffer = c.toBuffer;
c.toString = function (a, b, c) {
if (a === undefined) {
return "ByteBufferAB(offset=" + this.offset + ",markedOffset=" + this.markedOffset + ",limit=" + this.limit + ",capacity=" + this.capacity() + ")";
}
if (typeof a == "number") {
c = b = a = "utf8";
}
switch (a) {
case "utf8":
return this.toUTF8(b, c);
case "base64":
return this.toBase64(b, c);
case "hex":
return this.toHex(b, c);
case "binary":
return this.toBinary(b, c);
case "debug":
return this.toDebug();
case "columns":
return this.toColumns();
default:
throw Error("Unsupported encoding: " + a);
}
};
var j = function () {
for (var a = {}, b = [65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47], c = [], d = 0, e = b.length; d < e; ++d) {
c[b[d]] = d;
}
a.encode = function (a, c) {
for (var d, e;
(d = a()) !== null;) {
c(b[d >> 2 & 63]);
e = (d & 3) << 4;
if ((d = a()) !== null) {
c(b[((e |= d >> 4 & 15) | d >> 4 & 15) & 63]);
e = (d & 15) << 2;
if ((d = a()) !== null) {
c(b[(e | d >> 6 & 3) & 63]);
c(b[d & 63]);
} else {
c(b[e & 63]);
c(61);
}
} else {
c(b[e & 63]);
c(61);
c(61);
}
}
};
a.decode = function (a, b) {
var d;
var e;
var f;
function g(a) {
throw Error("Illegal character code: " + a);
}
while ((d = a()) !== null) {
if ((e = c[d]) === undefined) {
g(d);
}
if ((d = a()) !== null && ((f = c[d]) === undefined && g(d), b(e << 2 >>> 0 | (f & 48) >> 4), (d = a()) !== null)) {
if ((e = c[d]) === undefined) {
if (d === 61) {
break;
}
g(d);
}
b((f & 15) << 4 >>> 0 | (e & 60) >> 2);
if ((d = a()) !== null) {
if ((f = c[d]) === undefined) {
if (d === 61) {
break;
}
g(d);
}
b((e & 3) << 6 >>> 0 | f);
}
}
}
};
a.test = function (a) {
return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a);
};
return a;
}();
c.toBase64 = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
b |= 0;
if ((a |= 0) < 0 || b > this.capacity || a > b) {
throw RangeError("begin, end");
}
var c;
j.encode(function () {
if (a < b) {
return this.view[a++];
} else {
return null;
}
}.bind(this), c = g());
return c();
};
b.fromBase64 = function (a, c) {
if (typeof a != "string") {
throw TypeError("str");
}
var d = new b(a.length / 4 * 3, c);
var e = 0;
j.decode(f(a), function (a) {
d.view[e++] = a;
});
d.limit = e;
return d;
};
b.btoa = function (a) {
return b.fromBinary(a).toBase64();
};
b.atob = function (a) {
return b.fromBase64(a).toBinary();
};
c.toBinary = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
b |= 0;
if ((a |= 0) < 0 || b > this.capacity() || a > b) {
throw RangeError("begin, end");
}
if (a === b) {
return "";
}
for (var c = [], d = []; a < b;) {
c.push(this.view[a++]);
if (c.length >= 1024) {
d.push(String.fromCharCode.apply(String, c));
c = [];
}
}
return d.join("") + String.fromCharCode.apply(String, c);
};
b.fromBinary = function (a, c) {
if (typeof a != "string") {
throw TypeError("str");
}
for (var d, e = 0, f = a.length, g = new b(f, c); e < f;) {
if ((d = a.charCodeAt(e)) > 255) {
throw RangeError("illegal char code: " + d);
}
g.view[e++] = d;
}
g.limit = f;
return g;
};
c.toDebug = function (a) {
for (var b, c = -1, d = this.buffer.byteLength, e = "", f = "", g = ""; c < d;) {
if (c !== -1) {
e += (b = this.view[c]) < 16 ? "0" + b.toString(16).toUpperCase() : b.toString(16).toUpperCase();
if (a) {
f += b > 32 && b < 127 ? String.fromCharCode(b) : ".";
}
}
++c;
if (a && c > 0 && c % 16 == 0 && c !== d) {
while (e.length < 51) {
e += " ";
}
g += e + f + "\n";
e = f = "";
}
if (c === this.offset && c === this.limit) {
e += c === this.markedOffset ? "!" : "|";
} else if (c === this.offset) {
e += c === this.markedOffset ? "[" : "<";
} else if (c === this.limit) {
e += c === this.markedOffset ? "]" : ">";
} else {
e += c === this.markedOffset ? "'" : a || c !== 0 && c !== d ? " " : "";
}
}
if (a && e !== " ") {
while (e.length < 51) {
e += " ";
}
g += e + f + "\n";
}
if (a) {
return g;
} else {
return e;
}
};
b.fromDebug = function (a, c, d) {
for (var e, f, g = a.length, h = new b((g + 1) / 3 | 0, c, d), i = 0, j = 0, k = false, l = false, m = false, n = false, o = false; i < g;) {
switch (e = a.charAt(i++)) {
case "!":
if (!d) {
if (l || m || n) {
o = true;
break;
}
l = m = n = true;
}
h.offset = h.markedOffset = h.limit = j;
k = false;
break;
case "|":
if (!d) {
if (l || n) {
o = true;
break;
}
l = n = true;
}
h.offset = h.limit = j;
k = false;
break;
case "[":
if (!d) {
if (l || m) {
o = true;
break;
}
l = m = true;
}
h.offset = h.markedOffset = j;
k = false;
break;
case "<":
if (!d) {
if (l) {
o = true;
break;
}
l = true;
}
h.offset = j;
k = false;
break;
case "]":
if (!d) {
if (n || m) {
o = true;
break;
}
n = m = true;
}
h.limit = h.markedOffset = j;
k = false;
break;
case ">":
if (!d) {
if (n) {
o = true;
break;
}
n = true;
}
h.limit = j;
k = false;
break;
case "'":
if (!d) {
if (m) {
o = true;
break;
}
m = true;
}
h.markedOffset = j;
k = false;
break;
case " ":
k = false;
break;
default:
if (!d && k) {
o = true;
break;
}
f = parseInt(e + a.charAt(i++), 16);
if (!d && (isNaN(f) || f < 0 || f > 255)) {
throw TypeError("Illegal str: Not a debug encoded string");
}
h.view[j++] = f;
k = true;
}
if (o) {
throw TypeError("Illegal str: Invalid symbol at " + i);
}
}
if (!d) {
if (!l || !n) {
throw TypeError("Illegal str: Missing offset or limit");
}
if (j < h.buffer.byteLength) {
throw TypeError("Illegal str: Not a debug encoded string (is it hex?) " + j + " < " + g);
}
}
return h;
};
c.toHex = function (a, b) {
a = a === undefined ? this.offset : a;
b = b === undefined ? this.limit : b;
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
b >>>= 0;
if (a < 0 || a > b || b > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength);
}
}
for (var c, d = new Array(b - a); a < b;) {
if ((c = this.view[a++]) < 16) {
d.push("0", c.toString(16));
} else {
d.push(c.toString(16));
}
}
return d.join("");
};
b.fromHex = function (a, c, d) {
if (!d) {
if (typeof a != "string") {
throw TypeError("Illegal str: Not a string");
}
if (a.length % 2 != 0) {
throw TypeError("Illegal str: Length not a multiple of 2");
}
}
for (var e, f = a.length, g = new b(f / 2 | 0, c), h = 0, i = 0; h < f; h += 2) {
e = parseInt(a.substring(h, h + 2), 16);
if (!d && (!isFinite(e) || e < 0 || e > 255)) {
throw TypeError("Illegal str: Contains non-hex characters");
}
g.view[i++] = e;
}
g.limit = i;
return g;
};
var k = function () {
var a = {
MAX_CODEPOINT: 1114111,
encodeUTF8: function (a, b) {
var c = null;
for (typeof a == "number" && (c = a, a = function () {
return null;
}); c !== null || (c = a()) !== null;) {
if (c < 128) {
b(c & 127);
} else if (c < 2048) {
b(c >> 6 & 31 | 192);
b(c & 63 | 128);
} else if (c < 65536) {
b(c >> 12 & 15 | 224);
b(c >> 6 & 63 | 128);
b(c & 63 | 128);
} else {
b(c >> 18 & 7 | 240);
b(c >> 12 & 63 | 128);
b(c >> 6 & 63 | 128);
b(c & 63 | 128);
}
c = null;
}
},
decodeUTF8: function (a, b) {
for (var c, d, e, f, g = function (a) {
a = a.slice(0, a.indexOf(null));
var b = Error(a.toString());
b.name = "TruncatedError";
b.bytes = a;
throw b;
};
(c = a()) !== null;) {
if ((c & 128) == 0) {
b(c);
} else if ((c & 224) == 192) {
if ((d = a()) === null) {
g([c, d]);
}
b((c & 31) << 6 | d & 63);
} else if ((c & 240) == 224) {
if ((d = a()) === null || (e = a()) === null) {
g([c, d, e]);
}
b((c & 15) << 12 | (d & 63) << 6 | e & 63);
} else {
if ((c & 248) != 240) {
throw RangeError("Illegal starting byte: " + c);
}
if ((d = a()) === null || (e = a()) === null || (f = a()) === null) {
g([c, d, e, f]);
}
b((c & 7) << 18 | (d & 63) << 12 | (e & 63) << 6 | f & 63);
}
}
},
UTF16toUTF8: function (a, b) {
for (var c, d = null;
(c = d !== null ? d : a()) !== null;) {
if (c >= 55296 && c <= 57343 && (d = a()) !== null && d >= 56320 && d <= 57343) {
b((c - 55296) * 1024 + d - 56320 + 65536);
d = null;
} else {
b(c);
}
}
if (d !== null) {
b(d);
}
},
UTF8toUTF16: function (a, b) {
var c = null;
for (typeof a == "number" && (c = a, a = function () {
return null;
}); c !== null || (c = a()) !== null;) {
if (c <= 65535) {
b(c);
} else {
b(55296 + ((c -= 65536) >> 10));
b(c % 1024 + 56320);
}
c = null;
}
},
encodeUTF16toUTF8: function (b, c) {
a.UTF16toUTF8(b, function (b) {
a.encodeUTF8(b, c);
});
},
decodeUTF8toUTF16: function (b, c) {
a.decodeUTF8(b, function (b) {
a.UTF8toUTF16(b, c);
});
},
calculateCodePoint: function (a) {
if (a < 128) {
return 1;
} else if (a < 2048) {
return 2;
} else if (a < 65536) {
return 3;
} else {
return 4;
}
},
calculateUTF8: function (a) {
for (var b, c = 0;
(b = a()) !== null;) {
c += b < 128 ? 1 : b < 2048 ? 2 : b < 65536 ? 3 : 4;
}
return c;
},
calculateUTF16asUTF8: function (b) {
var c = 0;
var d = 0;
a.UTF16toUTF8(b, function (a) {
++c;
d += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4;
});
return [c, d];
}
};
return a;
}();
c.toUTF8 = function (a, b) {
if (a === undefined) {
a = this.offset;
}
if (b === undefined) {
b = this.limit;
}
if (!this.noAssert) {
if (typeof a != "number" || a % 1 != 0) {
throw TypeError("Illegal begin: Not an integer");
}
a >>>= 0;
if (typeof b != "number" || b % 1 != 0) {
throw TypeError("Illegal end: Not an integer");
}
b >>>= 0;
if (a < 0 || a > b || b > this.buffer.byteLength) {
throw RangeError("Illegal range: 0 <= " + a + " <= " + b + " <= " + this.buffer.byteLength);
}
}
var c;
try {
k.decodeUTF8toUTF16(function () {
if (a < b) {
return this.view[a++];
} else {
return null;
}
}.bind(this), c = g());
} catch (c) {
if (a !== b) {
throw RangeError("Illegal range: Truncated data, " + a + " != " + b);
}
}
return c();
};
b.fromUTF8 = function (a, c, d) {
if (!d && typeof a != "string") {
throw TypeError("Illegal str: Not a string");
}
var e = new b(k.calculateUTF16asUTF8(f(a), true)[1], c, d);
var g = 0;
k.encodeUTF16toUTF8(f(a), function (a) {
e.view[g++] = a;
});
e.limit = g;
return e;
};
return b;
};
if ((f = d.apply(b, e)) !== undefined) {
a.exports = f;
}
},
924: (a, b, c) => {
'use strict';
var d = c(210);
var e = c(559);
var f = e(d("String.prototype.indexOf"));
a.exports = function (a, b) {
var c = d(a, !!b);
if (typeof c == "function" && f(a, ".prototype.") > -1) {
return e(c);
} else {
return c;
}
};
},
559: (a, b, c) => {
'use strict';
var d = c(612);
var e = c(210);
var f = e("%Function.prototype.apply%");
var g = e("%Function.prototype.call%");
var h = e("%Reflect.apply%", true) || d.call(g, f);
var i = e("%Object.getOwnPropertyDescriptor%", true);
var j = e("%Object.defineProperty%", true);
var k = e("%Math.max%");
if (j) {
try {
j({}, "a", {
value: 1
});
} catch (a) {
j = null;
}
}
a.exports = function (a) {
var b = h(d, g, arguments);
if (i && j && i(b, "length").configurable) {
j(b, "length", {
value: 1 + k(0, a.length - (arguments.length - 1))
});
}
return b;
};
function l() {
return h(d, f, arguments);
}
if (j) {
j(a.exports, "apply", {
value: l
});
} else {
a.exports.apply = l;
}
},
187: a => {
'use strict';
function b(a, b, d) {
d = d || 2;
var f;
var g;
var h;
var i;
var l;
var m;
var o;
var p = b && b.length;
var q = p ? b[0] * d : a.length;
var r = c(a, 0, q, d, true);
var s = [];
if (!r || r.next === r.prev) {
return s;
}
if (p) {
r = function (a, b, d, e) {
var f;
var g;
var h;
var i = [];
f = 0;
g = b.length;
for (; f < g; f++) {
if ((h = c(a, b[f] * e, f < g - 1 ? b[f + 1] * e : a.length, e, false)) === h.next) {
h.steiner = true;
}
i.push(n(h));
}
i.sort(j);
f = 0;
for (; f < i.length; f++) {
d = k(i[f], d);
}
return d;
}(a, b, r, d);
}
if (a.length > d * 80) {
f = h = a[0];
g = i = a[1];
for (var t = d; t < q; t += d) {
if ((l = a[t]) < f) {
f = l;
}
if ((m = a[t + 1]) < g) {
g = m;
}
if (l > h) {
h = l;
}
if (m > i) {
i = m;
}
}
o = (o = Math.max(h - f, i - g)) !== 0 ? 32767 / o : 0;
}
e(r, s, d, f, g, o, 0);
return s;
}
function c(a, b, c, d, e) {
var f;
var g;
if (e === A(a, b, c, d) > 0) {
for (f = b; f < c; f += d) {
g = x(f, a[f], a[f + 1], g);
}
} else {
for (f = c - d; f >= b; f -= d) {
g = x(f, a[f], a[f + 1], g);
}
}
if (g && r(g, g.next)) {
y(g);
g = g.next;
}
return g;
}
function d(a, b) {
if (!a) {
return a;
}
b ||= a;
var c;
var d = a;
do {
c = false;
if (d.steiner || !r(d, d.next) && q(d.prev, d, d.next) !== 0) {
d = d.next;
} else {
y(d);
if ((d = b = d.prev) === d.next) {
break;
}
c = true;
}
} while (c || d !== b);
return b;
}
function e(a, b, c, j, k, l, n) {
if (a) {
if (!n && l) {
(function (a, b, c, d) {
var e = a;
do {
if (e.z === 0) {
e.z = m(e.x, e.y, b, c, d);
}
e.prevZ = e.prev;
e.nextZ = e.next;
e = e.next;
} while (e !== a);
e.prevZ.nextZ = null;
e.prevZ = null;
(function (a) {
var b;
var c;
var d;
var e;
var f;
var g;
var h;
var i;
var j = 1;
do {
c = a;
a = null;
f = null;
g = 0;
while (c) {
g++;
d = c;
h = 0;
b = 0;
for (; b < j && (h++, d = d.nextZ); b++);
for (i = j; h > 0 || i > 0 && d;) {
if (h !== 0 && (i === 0 || !d || c.z <= d.z)) {
e = c;
c = c.nextZ;
h--;
} else {
e = d;
d = d.nextZ;
i--;
}
if (f) {
f.nextZ = e;
} else {
a = e;
}
e.prevZ = f;
f = e;
}
c = d;
}
f.nextZ = null;
j *= 2;
} while (g > 1);
})(e);
})(a, j, k, l);
}
for (var o, p, q = a; a.prev !== a.next;) {
o = a.prev;
p = a.next;
if (l ? g(a, j, k, l) : f(a)) {
b.push(o.i / c | 0);
b.push(a.i / c | 0);
b.push(p.i / c | 0);
y(a);
a = p.next;
q = p.next;
} else if ((a = p) === q) {
if (n) {
if (n === 1) {
e(a = h(d(a), b, c), b, c, j, k, l, 2);
} else if (n === 2) {
i(a, b, c, j, k, l);
}
} else {
e(d(a), b, c, j, k, l, 1);
}
break;
}
}
}
}
function f(a) {
var b = a.prev;
var c = a;
var d = a.next;
if (q(b, c, d) >= 0) {
return false;
}
for (var e = b.x, f = c.x, g = d.x, h = b.y, i = c.y, j = d.y, k = e < f ? e < g ? e : g : f < g ? f : g, l = h < i ? h < j ? h : j : i < j ? i : j, m = e > f ? e > g ? e : g : f > g ? f : g, n = h > i ? h > j ? h : j : i > j ? i : j, p = d.next; p !== b;) {
if (p.x >= k && p.x <= m && p.y >= l && p.y <= n && o(e, h, f, i, g, j, p.x, p.y) && q(p.prev, p, p.next) >= 0) {
return false;
}
p = p.next;
}
return true;
}
function g(a, b, c, d) {
var e = a.prev;
var f = a;
var g = a.next;
if (q(e, f, g) >= 0) {
return false;
}
for (var h = e.x, i = f.x, j = g.x, k = e.y, l = f.y, n = g.y, p = h < i ? h < j ? h : j : i < j ? i : j, r = k < l ? k < n ? k : n : l < n ? l : n, s = h > i ? h > j ? h : j : i > j ? i : j, t = k > l ? k > n ? k : n : l > n ? l : n, u = m(p, r, b, c, d), v = m(s, t, b, c, d), w = a.prevZ, x = a.nextZ; w && w.z >= u && x && x.z <= v;) {
if (w.x >= p && w.x <= s && w.y >= r && w.y <= t && w !== e && w !== g && o(h, k, i, l, j, n, w.x, w.y) && q(w.prev, w, w.next) >= 0) {
return false;
}
w = w.prevZ;
if (x.x >= p && x.x <= s && x.y >= r && x.y <= t && x !== e && x !== g && o(h, k, i, l, j, n, x.x, x.y) && q(x.prev, x, x.next) >= 0) {
return false;
}
x = x.nextZ;
}
while (w && w.z >= u) {
if (w.x >= p && w.x <= s && w.y >= r && w.y <= t && w !== e && w !== g && o(h, k, i, l, j, n, w.x, w.y) && q(w.prev, w, w.next) >= 0) {
return false;
}
w = w.prevZ;
}
while (x && x.z <= v) {
if (x.x >= p && x.x <= s && x.y >= r && x.y <= t && x !== e && x !== g && o(h, k, i, l, j, n, x.x, x.y) && q(x.prev, x, x.next) >= 0) {
return false;
}
x = x.nextZ;
}
return true;
}
function h(a, b, c) {
var e = a;
do {
var f = e.prev;
var g = e.next.next;
if (!r(f, g) && s(f, e, e.next, g) && v(f, g) && v(g, f)) {
b.push(f.i / c | 0);
b.push(e.i / c | 0);
b.push(g.i / c | 0);
y(e);
y(e.next);
e = a = g;
}
e = e.next;
} while (e !== a);
return d(e);
}
function i(a, b, c, f, g, h) {
var i = a;
do {
for (var j = i.next.next; j !== i.prev;) {
if (i.i !== j.i && p(i, j)) {
var k = w(i, j);
i = d(i, i.next);
k = d(k, k.next);
e(i, b, c, f, g, h, 0);
e(k, b, c, f, g, h, 0);
return;
}
j = j.next;
}
i = i.next;
} while (i !== a);
}
function j(a, b) {
return a.x - b.x;
}
function k(a, b) {
var c = function (a, b) {
var c;
var d = b;
var e = a.x;
var f = a.y;
var g = -Infinity;
do {
if (f <= d.y && f >= d.next.y && d.next.y !== d.y) {
var h = d.x + (f - d.y) * (d.next.x - d.x) / (d.next.y - d.y);
if (h <= e && h > g && (g = h, c = d.x < d.next.x ? d : d.next, h === e)) {
return c;
}
}
d = d.next;
} while (d !== b);
if (!c) {
return null;
}
var i;
var j = c;
var k = c.x;
var m = c.y;
var n = Infinity;
d = c;
do {
if (e >= d.x && d.x >= k && e !== d.x && o(f < m ? e : g, f, k, m, f < m ? g : e, f, d.x, d.y)) {
i = Math.abs(f - d.y) / (e - d.x);
if (v(d, a) && (i < n || i === n && (d.x > c.x || d.x === c.x && l(c, d)))) {
c = d;
n = i;
}
}
d = d.next;
} while (d !== j);
return c;
}(a, b);
if (!c) {
return b;
}
var e = w(c, a);
d(e, e.next);
return d(c, c.next);
}
function l(a, b) {
return q(a.prev, a, b.prev) < 0 && q(b.next, a, a.next) < 0;
}
function m(a, b, c, d, e) {
return (a = ((a = ((a = ((a = ((a = (a - c) * e | 0) | a << 8) & 16711935) | a << 4) & 252645135) | a << 2) & 858993459) | a << 1) & 1431655765) | (b = ((b = ((b = ((b = ((b = (b - d) * e | 0) | b << 8) & 16711935) | b << 4) & 252645135) | b << 2) & 858993459) | b << 1) & 1431655765) << 1;
}
function n(a) {
var b = a;
var c = a;
do {
if (b.x < c.x || b.x === c.x && b.y < c.y) {
c = b;
}
b = b.next;
} while (b !== a);
return c;
}
function o(a, b, c, d, e, f, g, h) {
return (e - g) * (b - h) >= (a - g) * (f - h) && (a - g) * (d - h) >= (c - g) * (b - h) && (c - g) * (f - h) >= (e - g) * (d - h);
}
function p(a, b) {
return a.next.i !== b.i && a.prev.i !== b.i && ! function (a, b) {
var c = a;
do {
if (c.i !== a.i && c.next.i !== a.i && c.i !== b.i && c.next.i !== b.i && s(c, c.next, a, b)) {
return true;
}
c = c.next;
} while (c !== a);
return false;
}(a, b) && (v(a, b) && v(b, a) && function (a, b) {
var c = a;
var d = false;
var e = (a.x + b.x) / 2;
var f = (a.y + b.y) / 2;
do {
if (c.y > f != c.next.y > f && c.next.y !== c.y && e < (c.next.x - c.x) * (f - c.y) / (c.next.y - c.y) + c.x) {
d = !d;
}
c = c.next;
} while (c !== a);
return d;
}(a, b) && (q(a.prev, a, b.prev) || q(a, b.prev, b)) || r(a, b) && q(a.prev, a, a.next) > 0 && q(b.prev, b, b.next) > 0);
}
function q(a, b, c) {
return (b.y - a.y) * (c.x - b.x) - (b.x - a.x) * (c.y - b.y);
}
function r(a, b) {
return a.x === b.x && a.y === b.y;
}
function s(a, b, c, d) {
var e = u(q(a, b, c));
var f = u(q(a, b, d));
var g = u(q(c, d, a));
var h = u(q(c, d, b));
return e !== f && g !== h || e === 0 && !!t(a, c, b) || f === 0 && !!t(a, d, b) || g === 0 && !!t(c, a, d) || h === 0 && !!t(c, b, d);
}
function t(a, b, c) {
return b.x <= Math.max(a.x, c.x) && b.x >= Math.min(a.x, c.x) && b.y <= Math.max(a.y, c.y) && b.y >= Math.min(a.y, c.y);
}
function u(a) {
if (a > 0) {
return 1;
} else if (a < 0) {
return -1;
} else {
return 0;
}
}
function v(a, b) {
if (q(a.prev, a, a.next) < 0) {
return q(a, b, a.next) >= 0 && q(a, a.prev, b) >= 0;
} else {
return q(a, b, a.prev) < 0 || q(a, a.next, b) < 0;
}
}
function w(a, b) {
var c = new z(a.i, a.x, a.y);
var d = new z(b.i, b.x, b.y);
var e = a.next;
var f = b.prev;
a.next = b;
b.prev = a;
c.next = e;
e.prev = c;
d.next = c;
c.prev = d;
f.next = d;
d.prev = f;
return d;
}
function x(a, b, c, d) {
var e = new z(a, b, c);
if (d) {
e.next = d.next;
e.prev = d;
d.next.prev = e;
d.next = e;
} else {
e.prev = e;
e.next = e;
}
return e;
}
function y(a) {
a.next.prev = a.prev;
a.prev.next = a.next;
if (a.prevZ) {
a.prevZ.nextZ = a.nextZ;
}
if (a.nextZ) {
a.nextZ.prevZ = a.prevZ;
}
}
function z(a, b, c) {
this.i = a;
this.x = b;
this.y = c;
this.prev = null;
this.next = null;
this.z = 0;
this.prevZ = null;
this.nextZ = null;
this.steiner = false;
}
function A(a, b, c, d) {
for (var e = 0, f = b, g = c - d; f < c; f += d) {
e += (a[g] - a[f]) * (a[f + 1] + a[g + 1]);
g = f;
}
return e;
}
a.exports = b;
a.exports.default = b;
b.deviation = function (a, b, c, d) {
var e = b && b.length;
var f = e ? b[0] * c : a.length;
var g = Math.abs(A(a, 0, f, c));
if (e) {
for (var h = 0, i = b.length; h < i; h++) {
var j = b[h] * c;
var k = h < i - 1 ? b[h + 1] * c : a.length;
g -= Math.abs(A(a, j, k, c));
}
}
var l = 0;
for (h = 0; h < d.length; h += 3) {
var m = d[h] * c;
var n = d[h + 1] * c;
var o = d[h + 2] * c;
l += Math.abs((a[m] - a[o]) * (a[n + 1] - a[m + 1]) - (a[m] - a[n]) * (a[o + 1] - a[m + 1]));
}
if (g === 0 && l === 0) {
return 0;
} else {
return Math.abs((l - g) / g);
}
};
b.flatten = function (a) {
for (var b = a[0][0].length, c = {
vertices: [],
holes: [],
dimensions: b
}, d = 0, e = 0; e < a.length; e++) {
for (var f = 0; f < a[e].length; f++) {
for (var g = 0; g < b; g++) {
c.vertices.push(a[e][f][g]);
}
}
if (e > 0) {
d += a[e - 1].length;
c.holes.push(d);
}
}
return c;
};
},
729: a => {
'use strict';
var b = Object.prototype.hasOwnProperty;
var c = "~";
function d() {}
function e(a, b, c) {
this.fn = a;
this.context = b;
this.once = c || false;
}
function f(a, b, d, f, g) {
if (typeof d != "function") {
throw new TypeError("The listener must be a function");
}
var h = new e(d, f || a, g);
var i = c ? c + b : b;
if (a._events[i]) {
if (a._events[i].fn) {
a._events[i] = [a._events[i], h];
} else {
a._events[i].push(h);
}
} else {
a._events[i] = h;
a._eventsCount++;
}
return a;
}
function g(a, b) {
if (--a._eventsCount == 0) {
a._events = new d();
} else {
delete a._events[b];
}
}
function h() {
this._events = new d();
this._eventsCount = 0;
}
if (Object.create) {
d.prototype = Object.create(null);
if (!new d().__proto__) {
c = false;
}
}
h.prototype.eventNames = function () {
var a;
var d;
var e = [];
if (this._eventsCount === 0) {
return e;
}
for (d in a = this._events) {
if (b.call(a, d)) {
e.push(c ? d.slice(1) : d);
}
}
if (Object.getOwnPropertySymbols) {
return e.concat(Object.getOwnPropertySymbols(a));
} else {
return e;
}
};
h.prototype.listeners = function (a) {
var b = c ? c + a : a;
var d = this._events[b];
if (!d) {
return [];
}
if (d.fn) {
return [d.fn];
}
for (var e = 0, f = d.length, g = new Array(f); e < f; e++) {
g[e] = d[e].fn;
}
return g;
};
h.prototype.listenerCount = function (a) {
var b = c ? c + a : a;
var d = this._events[b];
if (d) {
if (d.fn) {
return 1;
} else {
return d.length;
}
} else {
return 0;
}
};
h.prototype.emit = function (a, b, d, e, f, g) {
var h = c ? c + a : a;
if (!this._events[h]) {
return false;
}
var i;
var j;
var k = this._events[h];
var l = arguments.length;
if (k.fn) {
if (k.once) {
this.removeListener(a, k.fn, undefined, true);
}
switch (l) {
case 1:
k.fn.call(k.context);
return true;
case 2:
k.fn.call(k.context, b);
return true;
case 3:
k.fn.call(k.context, b, d);
return true;
case 4:
k.fn.call(k.context, b, d, e);
return true;
case 5:
k.fn.call(k.context, b, d, e, f);
return true;
case 6:
k.fn.call(k.context, b, d, e, f, g);
return true;
}
j = 1;
i = new Array(l - 1);
for (; j < l; j++) {
i[j - 1] = arguments[j];
}
k.fn.apply(k.context, i);
} else {
var m;
var n = k.length;
for (j = 0; j < n; j++) {
if (k[j].once) {
this.removeListener(a, k[j].fn, undefined, true);
}
switch (l) {
case 1:
k[j].fn.call(k[j].context);
break;
case 2:
k[j].fn.call(k[j].context, b);
break;
case 3:
k[j].fn.call(k[j].context, b, d);
break;
case 4:
k[j].fn.call(k[j].context, b, d, e);
break;
default:
if (!i) {
m = 1;
i = new Array(l - 1);
for (; m < l; m++) {
i[m - 1] = arguments[m];
}
}
k[j].fn.apply(k[j].context, i);
}
}
}
return true;
};
h.prototype.on = function (a, b, c) {
return f(this, a, b, c, false);
};
h.prototype.once = function (a, b, c) {
return f(this, a, b, c, true);
};
h.prototype.removeListener = function (a, b, d, e) {
var f = c ? c + a : a;
if (!this._events[f]) {
return this;
}
if (!b) {
g(this, f);
return this;
}
var h = this._events[f];
if (h.fn) {
if (h.fn === b && (!e || !!h.once) && (!d || h.context === d)) {
g(this, f);
}
} else {
for (var i = 0, j = [], k = h.length; i < k; i++) {
if (h[i].fn !== b || e && !h[i].once || d && h[i].context !== d) {
j.push(h[i]);
}
}
if (j.length) {
this._events[f] = j.length === 1 ? j[0] : j;
} else {
g(this, f);
}
}
return this;
};
h.prototype.removeAllListeners = function (a) {
var b;
if (a) {
b = c ? c + a : a;
if (this._events[b]) {
g(this, b);
}
} else {
this._events = new d();
this._eventsCount = 0;
}
return this;
};
h.prototype.off = h.prototype.removeListener;
h.prototype.addListener = h.prototype.on;
h.prefixed = c;
h.EventEmitter = h;
a.exports = h;
},
370: a => {
'use strict';
var b;
var c = typeof Reflect == "object" ? Reflect : null;
var d = c && typeof c.apply == "function" ? c.apply : function (a, b, c) {
return Function.prototype.apply.call(a, b, c);
};
b = c && typeof c.ownKeys == "function" ? c.ownKeys : Object.getOwnPropertySymbols ? function (a) {
return Object.getOwnPropertyNames(a).concat(Object.getOwnPropertySymbols(a));
} : function (a) {
return Object.getOwnPropertyNames(a);
};
var e = Number.isNaN || function (a) {
return a != a;
};
function f() {
f.init.call(this);
}
a.exports = f;
a.exports.once = function (a, b) {
return new Promise(function (c, d) {
function e(c) {
a.removeListener(b, f);
d(c);
}
function f() {
if (typeof a.removeListener == "function") {
a.removeListener("error", e);
}
c([].slice.call(arguments));
}
p(a, b, f, {
once: true
});
if (b !== "error") {
(function (a, b, c) {
if (typeof a.on == "function") {
p(a, "error", b, {
once: true
});
}
})(a, e);
}
});
};
f.EventEmitter = f;
f.prototype._events = undefined;
f.prototype._eventsCount = 0;
f.prototype._maxListeners = undefined;
var g = 10;
function h(a) {
if (typeof a != "function") {
throw new TypeError("The \"listener\" argument must be of type Function. Received type " + typeof a);
}
}
function i(a) {
if (a._maxListeners === undefined) {
return f.defaultMaxListeners;
} else {
return a._maxListeners;
}
}
function j(a, b, c, d) {
var e;
var f;
var g;
var j;
h(c);
if ((f = a._events) === undefined) {
f = a._events = Object.create(null);
a._eventsCount = 0;
} else {
if (f.newListener !== undefined) {
a.emit("newListener", b, c.listener ? c.listener : c);
f = a._events;
}
g = f[b];
}
if (g === undefined) {
g = f[b] = c;
++a._eventsCount;
} else {
if (typeof g == "function") {
g = f[b] = d ? [c, g] : [g, c];
} else if (d) {
g.unshift(c);
} else {
g.push(c);
}
if ((e = i(a)) > 0 && g.length > e && !g.warned) {
g.warned = true;
var k = new Error("Possible EventEmitter memory leak detected. " + g.length + " " + String(b) + " listeners added. Use emitter.setMaxListeners() to increase limit");
k.name = "MaxListenersExceededWarning";
k.emitter = a;
k.type = b;
k.count = g.length;
j = k;
if (console && console.warn) {
console.warn(j);
}
}
}
return a;
}
function k() {
if (!this.fired) {
this.target.removeListener(this.type, this.wrapFn);
this.fired = true;
if (arguments.length === 0) {
return this.listener.call(this.target);
} else {
return this.listener.apply(this.target, arguments);
}
}
}
function l(a, b, c) {
var d = {
fired: false,
wrapFn: undefined,
target: a,
type: b,
listener: c
};
var e = k.bind(d);
e.listener = c;
d.wrapFn = e;
return e;
}
function m(a, b, c) {
var d = a._events;
if (d === undefined) {
return [];
}
var e = d[b];
if (e === undefined) {
return [];
} else if (typeof e == "function") {
if (c) {
return [e.listener || e];
} else {
return [e];
}
} else if (c) {
return function (a) {
for (var b = new Array(a.length), c = 0; c < b.length; ++c) {
b[c] = a[c].listener || a[c];
}
return b;
}(e);
} else {
return o(e, e.length);
}
}
function n(a) {
var b = this._events;
if (b !== undefined) {
var c = b[a];
if (typeof c == "function") {
return 1;
}
if (c !== undefined) {
return c.length;
}
}
return 0;
}
function o(a, b) {
for (var c = new Array(b), d = 0; d < b; ++d) {
c[d] = a[d];
}
return c;
}
function p(a, b, c, d) {
if (typeof a.on == "function") {
if (d.once) {
a.once(b, c);
} else {
a.on(b, c);
}
} else {
if (typeof a.addEventListener != "function") {
throw new TypeError("The \"emitter\" argument must be of type EventEmitter. Received type " + typeof a);
}
a.addEventListener(b, function f(e) {
if (d.once) {
a.removeEventListener(b, f);
}
c(e);
});
}
}
Object.defineProperty(f, "defaultMaxListeners", {
enumerable: true,
get: function () {
return g;
},
set: function (a) {
if (typeof a != "number" || a < 0 || e(a)) {
throw new RangeError("The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received " + a + ".");
}
g = a;
}
});
f.init = function () {
if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {
this._events = Object.create(null);
this._eventsCount = 0;
}
this._maxListeners = this._maxListeners || undefined;
};
f.prototype.setMaxListeners = function (a) {
if (typeof a != "number" || a < 0 || e(a)) {
throw new RangeError("The value of \"n\" is out of range. It must be a non-negative number. Received " + a + ".");
}
this._maxListeners = a;
return this;
};
f.prototype.getMaxListeners = function () {
return i(this);
};
f.prototype.emit = function (a) {
for (var b = [], c = 1; c < arguments.length; c++) {
b.push(arguments[c]);
}
var e = a === "error";
var f = this._events;
if (f !== undefined) {
e = e && f.error === undefined;
} else if (!e) {
return false;
}
if (e) {
var g;
if (b.length > 0) {
g = b[0];
}
if (g instanceof Error) {
throw g;
}
var h = new Error("Unhandled error." + (g ? " (" + g.message + ")" : ""));
h.context = g;
throw h;
}
var i = f[a];
if (i === undefined) {
return false;
}
if (typeof i == "function") {
d(i, this, b);
} else {
var j = i.length;
var k = o(i, j);
for (c = 0; c < j; ++c) {
d(k[c], this, b);
}
}
return true;
};
f.prototype.addListener = function (a, b) {
return j(this, a, b, false);
};
f.prototype.on = f.prototype.addListener;
f.prototype.prependListener = function (a, b) {
return j(this, a, b, true);
};
f.prototype.once = function (a, b) {
h(b);
this.on(a, l(this, a, b));
return this;
};
f.prototype.prependOnceListener = function (a, b) {
h(b);
this.prependListener(a, l(this, a, b));
return this;
};
f.prototype.removeListener = function (a, b) {
var c;
var d;
var e;
var f;
var g;
h(b);
if ((d = this._events) === undefined) {
return this;
}
if ((c = d[a]) === undefined) {
return this;
}
if (c === b || c.listener === b) {
if (--this._eventsCount == 0) {
this._events = Object.create(null);
} else {
delete d[a];
if (d.removeListener) {
this.emit("removeListener", a, c.listener || b);
}
}
} else if (typeof c != "function") {
e = -1;
f = c.length - 1;
for (; f >= 0; f--) {
if (c[f] === b || c[f].listener === b) {
g = c[f].listener;
e = f;
break;
}
}
if (e < 0) {
return this;
}
if (e === 0) {
c.shift();
} else {
(function (a, b) {
for (; b + 1 < a.length; b++) {
a[b] = a[b + 1];
}
a.pop();
})(c, e);
}
if (c.length === 1) {
d[a] = c[0];
}
if (d.removeListener !== undefined) {
this.emit("removeListener", a, g || b);
}
}
return this;
};
f.prototype.off = f.prototype.removeListener;
f.prototype.removeAllListeners = function (a) {
var b;
var c;
var d;
if ((c = this._events) === undefined) {
return this;
}
if (c.removeListener === undefined) {
if (arguments.length === 0) {
this._events = Object.create(null);
this._eventsCount = 0;
} else if (c[a] !== undefined) {
if (--this._eventsCount == 0) {
this._events = Object.create(null);
} else {
delete c[a];
}
}
return this;
}
if (arguments.length === 0) {
var e;
var f = Object.keys(c);
for (d = 0; d < f.length; ++d) {
if ((e = f[d]) !== "removeListener") {
this.removeAllListeners(e);
}
}
this.removeAllListeners("removeListener");
this._events = Object.create(null);
this._eventsCount = 0;
return this;
}
if (typeof (b = c[a]) == "function") {
this.removeListener(a, b);
} else if (b !== undefined) {
for (d = b.length - 1; d >= 0; d--) {
this.removeListener(a, b[d]);
}
}
return this;
};
f.prototype.listeners = function (a) {
return m(this, a, true);
};
f.prototype.rawListeners = function (a) {
return m(this, a, false);
};
f.listenerCount = function (a, b) {
if (typeof a.listenerCount == "function") {
return a.listenerCount(b);
} else {
return n.call(a, b);
}
};
f.prototype.listenerCount = n;
f.prototype.eventNames = function () {
if (this._eventsCount > 0) {
return b(this._events);
} else {
return [];
}
};
},
648: a => {
'use strict';
var b = Array.prototype.slice;
var c = Object.prototype.toString;
a.exports = function (a) {
var d = this;
if (typeof d != "function" || c.call(d) !== "[object Function]") {
throw new TypeError("Function.prototype.bind called on incompatible " + d);
}
for (var e, f = b.call(arguments, 1), g = Math.max(0, d.length - f.length), h = [], i = 0; i < g; i++) {
h.push("$" + i);
}
e = Function("binder", "return function (" + h.join(",") + "){ return binder.apply(this,arguments); }")(function () {
if (this instanceof e) {
var c = d.apply(this, f.concat(b.call(arguments)));
if (Object(c) === c) {
return c;
} else {
return this;
}
}
return d.apply(a, f.concat(b.call(arguments)));
});
if (d.prototype) {
function a() {}
a.prototype = d.prototype;
e.prototype = new a();
a.prototype = null;
}
return e;
};
},
612: (a, b, c) => {
'use strict';
var d = c(648);
a.exports = Function.prototype.bind || d;
},
210: (a, b, c) => {
'use strict';
var d;
var e = SyntaxError;
var f = Function;
var g = TypeError;
function h(a) {
try {
return f("\"use strict\"; return (" + a + ").constructor;")();
} catch (a) {}
}
var i = Object.getOwnPropertyDescriptor;
if (i) {
try {
i({}, "");
} catch (a) {
i = null;
}
}
function j() {
throw new g();
}
var k = i ? function () {
try {
return j;
} catch (a) {
try {
return i(arguments, "callee").get;
} catch (a) {
return j;
}
}
}() : j;
var l = c(405)();
var m = Object.getPrototypeOf || function (a) {
return a.__proto__;
};
var n = {};
var o = typeof Uint8Array == "undefined" ? d : m(Uint8Array);
var p = {
"%AggregateError%": typeof AggregateError == "undefined" ? d : AggregateError,
"%Array%": Array,
"%ArrayBuffer%": typeof ArrayBuffer == "undefined" ? d : ArrayBuffer,
"%ArrayIteratorPrototype%": l ? m([][Symbol.iterator]()) : d,
"%AsyncFromSyncIteratorPrototype%": d,
"%AsyncFunction%": n,
"%AsyncGenerator%": n,
"%AsyncGeneratorFunction%": n,
"%AsyncIteratorPrototype%": n,
"%Atomics%": typeof Atomics == "undefined" ? d : Atomics,
"%BigInt%": typeof BigInt == "undefined" ? d : BigInt,
"%Boolean%": Boolean,
"%DataView%": typeof DataView == "undefined" ? d : DataView,
"%Date%": Date,
"%decodeURI%": decodeURI,
"%decodeURIComponent%": decodeURIComponent,
"%encodeURI%": encodeURI,
"%encodeURIComponent%": encodeURIComponent,
"%Error%": Error,
"%eval%": eval,
"%EvalError%": EvalError,
"%Float32Array%": typeof Float32Array == "undefined" ? d : Float32Array,
"%Float64Array%": typeof Float64Array == "undefined" ? d : Float64Array,
"%FinalizationRegistry%": typeof FinalizationRegistry == "undefined" ? d : FinalizationRegistry,
"%Function%": f,
"%GeneratorFunction%": n,
"%Int8Array%": typeof Int8Array == "undefined" ? d : Int8Array,
"%Int16Array%": typeof Int16Array == "undefined" ? d : Int16Array,
"%Int32Array%": typeof Int32Array == "undefined" ? d : Int32Array,
"%isFinite%": isFinite,
"%isNaN%": isNaN,
"%IteratorPrototype%": l ? m(m([][Symbol.iterator]())) : d,
"%JSON%": typeof JSON == "object" ? JSON : d,
"%Map%": typeof Map == "undefined" ? d : Map,
"%MapIteratorPrototype%": typeof Map != "undefined" && l ? m(new Map()[Symbol.iterator]()) : d,
"%Math%": Math,
"%Number%": Number,
"%Object%": Object,
"%parseFloat%": parseFloat,
"%parseInt%": parseInt,
"%Promise%": typeof Promise == "undefined" ? d : Promise,
"%Proxy%": typeof Proxy == "undefined" ? d : Proxy,
"%RangeError%": RangeError,
"%ReferenceError%": ReferenceError,
"%Reflect%": typeof Reflect == "undefined" ? d : Reflect,
"%RegExp%": RegExp,
"%Set%": typeof Set == "undefined" ? d : Set,
"%SetIteratorPrototype%": typeof Set != "undefined" && l ? m(new Set()[Symbol.iterator]()) : d,
"%SharedArrayBuffer%": typeof SharedArrayBuffer == "undefined" ? d : SharedArrayBuffer,
"%String%": String,
"%StringIteratorPrototype%": l ? m("" [Symbol.iterator]()) : d,
"%Symbol%": l ? Symbol : d,
"%SyntaxError%": e,
"%ThrowTypeError%": k,
"%TypedArray%": o,
"%TypeError%": g,
"%Uint8Array%": typeof Uint8Array == "undefined" ? d : Uint8Array,
"%Uint8ClampedArray%": typeof Uint8ClampedArray == "undefined" ? d : Uint8ClampedArray,
"%Uint16Array%": typeof Uint16Array == "undefined" ? d : Uint16Array,
"%Uint32Array%": typeof Uint32Array == "undefined" ? d : Uint32Array,
"%URIError%": URIError,
"%WeakMap%": typeof WeakMap == "undefined" ? d : WeakMap,
"%WeakRef%": typeof WeakRef == "undefined" ? d : WeakRef,
"%WeakSet%": typeof WeakSet == "undefined" ? d : WeakSet
};
var q = function b(a) {
var c;
if (a === "%AsyncFunction%") {
c = h("async function () {}");
} else if (a === "%GeneratorFunction%") {
c = h("function* () {}");
} else if (a === "%AsyncGeneratorFunction%") {
c = h("async function* () {}");
} else if (a === "%AsyncGenerator%") {
var d = b("%AsyncGeneratorFunction%");
if (d) {
c = d.prototype;
}
} else if (a === "%AsyncIteratorPrototype%") {
var e = b("%AsyncGenerator%");
if (e) {
c = m(e.prototype);
}
}
p[a] = c;
return c;
};
var r = {
"%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
"%ArrayPrototype%": ["Array", "prototype"],
"%ArrayProto_entries%": ["Array", "prototype", "entries"],
"%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
"%ArrayProto_keys%": ["Array", "prototype", "keys"],
"%ArrayProto_values%": ["Array", "prototype", "values"],
"%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
"%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
"%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
"%BooleanPrototype%": ["Boolean", "prototype"],
"%DataViewPrototype%": ["DataView", "prototype"],
"%DatePrototype%": ["Date", "prototype"],
"%ErrorPrototype%": ["Error", "prototype"],
"%EvalErrorPrototype%": ["EvalError", "prototype"],
"%Float32ArrayPrototype%": ["Float32Array", "prototype"],
"%Float64ArrayPrototype%": ["Float64Array", "prototype"],
"%FunctionPrototype%": ["Function", "prototype"],
"%Generator%": ["GeneratorFunction", "prototype"],
"%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
"%Int8ArrayPrototype%": ["Int8Array", "prototype"],
"%Int16ArrayPrototype%": ["Int16Array", "prototype"],
"%Int32ArrayPrototype%": ["Int32Array", "prototype"],
"%JSONParse%": ["JSON", "parse"],
"%JSONStringify%": ["JSON", "stringify"],
"%MapPrototype%": ["Map", "prototype"],
"%NumberPrototype%": ["Number", "prototype"],
"%ObjectPrototype%": ["Object", "prototype"],
"%ObjProto_toString%": ["Object", "prototype", "toString"],
"%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
"%PromisePrototype%": ["Promise", "prototype"],
"%PromiseProto_then%": ["Promise", "prototype", "then"],
"%Promise_all%": ["Promise", "all"],
"%Promise_reject%": ["Promise", "reject"],
"%Promise_resolve%": ["Promise", "resolve"],
"%RangeErrorPrototype%": ["RangeError", "prototype"],
"%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
"%RegExpPrototype%": ["RegExp", "prototype"],
"%SetPrototype%": ["Set", "prototype"],
"%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
"%StringPrototype%": ["String", "prototype"],
"%SymbolPrototype%": ["Symbol", "prototype"],
"%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
"%TypedArrayPrototype%": ["TypedArray", "prototype"],
"%TypeErrorPrototype%": ["TypeError", "prototype"],
"%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
"%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
"%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
"%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
"%URIErrorPrototype%": ["URIError", "prototype"],
"%WeakMapPrototype%": ["WeakMap", "prototype"],
"%WeakSetPrototype%": ["WeakSet", "prototype"]
};
var s = c(612);
var t = c(642);
var u = s.call(Function.call, Array.prototype.concat);
var v = s.call(Function.apply, Array.prototype.splice);
var w = s.call(Function.call, String.prototype.replace);
var x = s.call(Function.call, String.prototype.slice);
var y = s.call(Function.call, RegExp.prototype.exec);
var z = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
var A = /\\(\\)?/g;
function B(a, b) {
var c;
var d = a;
if (t(r, d)) {
d = "%" + (c = r[d])[0] + "%";
}
if (t(p, d)) {
var f = p[d];
if (f === n) {
f = q(d);
}
if (f === undefined && !b) {
throw new g("intrinsic " + a + " exists, but is not available. Please file an issue!");
}
return {
alias: c,
name: d,
value: f
};
}
throw new e("intrinsic " + a + " does not exist!");
}
a.exports = function (a, b) {
if (typeof a != "string" || a.length === 0) {
throw new g("intrinsic name must be a non-empty string");
}
if (arguments.length > 1 && typeof b != "boolean") {
throw new g("\"allowMissing\" argument must be a boolean");
}
if (y(/^%?[^%]*%?$/g, a) === null) {
throw new e("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
}
var c = function (a) {
var b = x(a, 0, 1);
var c = x(a, -1);
if (b === "%" && c !== "%") {
throw new e("invalid intrinsic syntax, expected closing `%`");
}
if (c === "%" && b !== "%") {
throw new e("invalid intrinsic syntax, expected opening `%`");
}
var d = [];
w(a, z, function (a, b, c, e) {
d[d.length] = c ? w(e, A, "$1") : b || a;
});
return d;
}(a);
var d = c.length > 0 ? c[0] : "";
var f = B("%" + d + "%", b);
var h = f.name;
var j = f.value;
var k = false;
var l = f.alias;
if (l) {
d = l[0];
v(c, u([0, 1], l));
}
for (var m = 1, n = true; m < c.length; m += 1) {
var o = c[m];
var q = x(o, 0, 1);
var r = x(o, -1);
if ((q === "\"" || q === "'" || q === "`" || r === "\"" || r === "'" || r === "`") && q !== r) {
throw new e("property names with quotes must have matching quotes");
}
if (o === "constructor" || !n) {
k = true;
}
if (t(p, h = "%" + (d += "." + o) + "%")) {
j = p[h];
} else if (j != null) {
if (!(o in j)) {
if (!b) {
throw new g("base intrinsic for " + a + " exists, but the property is not available.");
}
return;
}
if (i && m + 1 >= c.length) {
var s = i(j, o);
j = (n = !!s) && "get" in s && !("originalValue" in s.get) ? s.get : j[o];
} else {
n = t(j, o);
j = j[o];
}
if (n && !k) {
p[h] = j;
}
}
}
return j;
};
},
573: (a, b, c) => {
'use strict';
const d = c(6).GrawlixPlugin;
const e = c(6).FilterTemplate;
const f = c(50);
const g = {
style: "nazi"
};
var h = [{
word: "niggas",
pattern: /n+[i1]+gg+[a@]+[s\$z]+/i,
priority: 0,
expandable: true
}, {
word: "niggers",
pattern: /n+[i1]+gg+e+r+[s\$z]+/i,
priority: 0,
expandable: true
}, {
word: "nigga",
pattern: /n+[\W023456789_]{0,42}[i1]+[\W023456789_]{0,42}g[\W\d_]{0,42}g+[\W\d_]{0,42}[a@]+(?!rd)/i,
priority: 1,
expandable: true
}, {
word: "nigger",
pattern: /(\b|^|[^s])n+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}g[\W\d_]{0,42}g+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}r+/i,
priority: 1,
expandable: true,
template: e.PRE
}, {
word: "migger",
pattern: /m+[i1]+gg+[e3]+r+/i,
priority: 1,
expandable: true
}, {
word: "yigger",
pattern: /y+[i1]+gg+[e3]+r+/i,
priority: 1,
expandable: true
}, {
word: "darkies",
pattern: /d+[a@]+r+k+[i1]+[e3]+s+/i,
priority: 0,
expandable: true
}, {
word: "darkie",
pattern: /d+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}r+[\W\d_]{0,42}k+[\W02-9_]{0,42}[i1]+[\W024-9_]{0,42}[e3]+/i,
priority: 1,
expandable: true
}, {
word: "shvatsas",
pattern: /[s$z]+h+v+[a@]+t+[s$z]+[a@]+[s$z]+/i,
priority: 0,
expandable: true
}, {
word: "shvatsa",
pattern: /[s$z]+h+v+[a@]+t+[s$z]+[a@]+/i,
priority: 1,
expandable: true
}, {
word: "spics",
pattern: /(\b|^)[s$]+p+[i1]+c+k{0,32}[s$]+/i,
priority: 0,
expandable: true,
template: e.PRE
}, {
word: "spic",
pattern: /(\b|^)[s$]+[\W\d_]{0,42}p+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}c+(\b|$)/i,
priority: 1,
expandable: true,
template: e.BETWEEN
}, {
word: "wetbacks",
pattern: /w+[e3]+t+b+[a@]+c+k+[s$z]+/i,
priority: 0,
expandable: true
}, {
word: "wetback",
pattern: /w+[e3]+t+b+[a@]+c+k+/i,
priority: 1,
expandable: true
}, {
word: "kikes",
pattern: /k+[i1]+k+[e3]+[s$z]+/i,
priority: 0,
expandable: true
}, {
word: "kike",
pattern: /k+[\W02-9_]{0,42}[i1]+[\W02-9_]{0,42}k+[\W0124-9_]{0,42}[e3]+(\b|$)/i,
priority: 1,
expandable: true,
template: e.POST
}, {
word: "gooks",
pattern: /g+[\W1-9_]{0,42}[o0][\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}k+[\W\d_]{0,42}[s$]+/i,
priority: 0,
expandable: true
}, {
word: "gook",
pattern: /(\b|^)g+[\W1-9_]{0,42}[o0][\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}k+(?!y)/i,
priority: 1,
expandable: true,
template: e.PRE
}, {
word: "ragheads",
pattern: /r+[a@]+g+[\W\d_]{0,42}h+[e3]+[a@]+d+[s$]+/i,
priority: 0,
expandable: true
}, {
word: "raghead",
pattern: /r+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}g+[\W\d_]{0,42}h+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}[a@]+[\W\d_]{0,42}d+/i,
priority: 1,
expandable: true
}, {
word: "towelheads",
pattern: /t+[o0]+w+[e3]+[l1]+[\W02-9_]{0,42}h+[e3]+[a@]+d+[s$]+/i,
priority: 0,
expandable: true
}, {
word: "towelhead",
pattern: /t+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}w+[\W0-24-9_]{0,42}[e3]+[\W024-9_]{0,42}[l1]+[\W02-9_]{0,42}h+[\W0-24-9_]{0,42}[e3]+[\W0-24-9_]{0,42}[a@]+[\W\d_]{0,42}d+/i,
priority: 1,
expandable: true
}, {
word: "injuns",
pattern: /[i1]+n+j+u+n+[s$]+/i,
priority: 0,
expandable: true
}, {
word: "injun",
pattern: /[i1]+[\W02-9_]{0,42}n+[\W\d_]{0,42}j+[\W\d_]{0,42}u+[\W\d_]{0,42}n+(\b|$)/i,
priority: 1,
expandable: true,
template: e.POST
}, {
word: "squaws",
pattern: /(\b|^)[s$]+q+u+[a@]+w+s+/i,
priority: 0,
expandable: true,
template: e.PRE
}, {
word: "squaw",
pattern: /(\b|^)[s$]+q+u+[a@]+w+(\b|$)/i,
priority: 1,
expandable: true,
template: e.BETWEEN
}, {
word: "golliwogs",
pattern: /g[o0][l1][l1][i1y]w[o0]g+[s$]/i,
priority: 0,
expandable: true
}, {
word: "golliwog",
pattern: /g[o0][l1][l1][i1y]w[o0]g+/i,
priority: 1,
expandable: true
}, {
word: "wogs",
pattern: /w+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}g+[\W\d_]{0,42}[s$]+/i,
priority: 1,
expandable: true
}, {
word: "wog",
pattern: /(\b|^)w+[\W1-9_]{0,42}[o0]+[\W1-9_]{0,42}g+(\b|$)/i,
priority: 2,
expandable: true,
template: e.BETWEEN
}, {
word: "kaffirs",
pattern: /[ck][a@]ff[ie3]r[s$z]/i,
priority: 0
}, {
word: "caffres",
pattern: /[ck][a@]ffr[e3][s$z]/i,
priority: 0
}, {
word: "caffre",
pattern: /[ck][\W\d_]{0,42}[a@][\W\d_]{0,42}f[\W\d_]{0,42}f[\W\d_]{0,42}r[\W0-24-9_]{0,42}[e3]/i,
priority: 1,
expandable: true
}, {
word: "kaffir",
pattern: /[ck]+[\W\d_]{0,42}[a@]+[\W\d_]{0,42}(?:f[\W024-9_]{0,42})+[i1e3]+[\W024-9_]{0,42}r+/i,
priority: 2,
expandable: true
}, {
word: "shitskins",
pattern: /[s$]h[i1]t[s$]k[i1]n[s$]/i,
priority: 0
}, {
word: "shitskin",
pattern: /[s$]h[i1]t[s$]k[i1]n/i,
priority: 1
}, {
word: "shit",
minPriority: 2
}, {
word: "latrinos",
pattern: /[l1][a@]tr[i1]n[o0][s$z]/i,
priority: 0
}, {
word: "latrino",
pattern: /[l1][a@]tr[i1]n[o0]/i,
priority: 1
}, {
word: "chinkerbell",
pattern: /ch[i1]nk[e3]rb[e3][l1][l1]+/i,
priority: 0,
expandable: true
}, {
word: "shvoogas",
pattern: /[s$]hv[o0][o0]g[a@][s$]/i,
priority: 0
}, {
word: "shvooga",
pattern: /[s$]hv[o0][o0]g[a@]/i,
priority: 1
}, {
word: "negress",
pattern: /n[e3]gr[e3][s$z][s$z]+/i,
priority: 0,
expandable: true
}, {
word: "sambos",
pattern: /[s$][a@]mb[o0][e3]*[s$]/i,
priority: 0
}, {
word: "sambo",
pattern: /[s$][\W\d_]{0,42}[a@][\W\d_]{0,42}m[\W\d_]{0,42}b[\W1-9_]{0,42}[o0]/i,
priority: 1
}];
a.exports = new d({
name: "grawlix-racism",
filters: h,
styles: [{
name: "nazi",
char: "卐"
}],
init: function (a) {
f.defaults(a, g);
if (a.style === false || f.isEmpty(a.style)) {
f.each(this.filters, function (a) {
if (f.has(a, "style")) {
delete a.style;
}
});
} else {
f.each(this.filters, function (b) {
if (f.has(b, "pattern")) {
b.style = a.style;
}
});
}
}
});
},
17: (a, b, c) => {
'use strict';
const d = c(50);
const e = {
PRE: "$1<%= word %>",
POST: "<%= word %>$1",
BETWEEN: "$1<%= word %>$2"
};
const f = function (a, b, c) {
this.word = a;
this.regex = b;
this.priority = 0;
this.template = null;
this.isExpandable = false;
this.style = null;
this.isValid = function () {
return !d.isEmpty(this.word) && d.isRegExp(this.regex);
};
this.isMatch = function (a) {
return a.search(this.regex) > -1;
};
this.getMatch = function (a) {
return this.regex.exec(a);
};
this.getMatchLen = function (a) {
var b = this.getMatch(a);
if (b === null || b.length === 0) {
return 0;
}
var c = b[0].length;
if (b.length > 1) {
for (var d = 1; d < b.length; d++) {
c -= b[d].length;
}
}
return c;
};
this.hasTemplate = function () {
return this.template !== null && d.isFunction(this.template);
};
this.hasStyle = function () {
return this.style !== null;
};
this.configure = function (a) {
if (!d.isUndefined(a)) {
if (d.has(a, "priority") && d.isNumber(a.priority)) {
this.priority = a.priority;
} else if (d.has(a, "minPriority") && d.isNumber(a.minPriority) && this.priority < a.minPriority) {
this.priority = a.minPriority;
}
if (d.has(a, "template") && d.isString(a.template)) {
this.template = d.template(a.template, {
variable: "word"
});
}
if (d.has(a, "expandable") && d.isBoolean(a.expandable)) {
this.isExpandable = a.expandable;
}
if (d.has(a, "style") && d.isString(a.style)) {
this.style = a.style;
}
}
};
this.clone = function () {
var a = new f(this.word, this.regex);
a.priority = this.priority;
a.template = this.template;
a.isExpandable = this.isExpandable;
a.style = this.style;
return a;
};
this.configure(c);
};
f.prototype = {};
const g = function (a) {
this.name = "GrawlixFilterError";
this.filter = d.has(a, "filter") ? a.filter : null;
this.plugin = d.has(a, "plugin") ? a.plugin : null;
if (d.has(a, "trace") && a.trace instanceof Error) {
this.stack = a.trace.stack;
} else {
this.stack = new Error().stack;
}
if (d.has(a, "msg")) {
this.message = a.msg;
} else if (d.has(a, "message")) {
this.message = a.message;
} else {
this.message = a;
}
};
(g.prototype = Object.create(Error.prototype)).constructor = g;
var h = [new f("motherfucker", /m[o0u]th(?:er|a)f+u+c+k+[e3]r/i, {
expandable: true
}), new f("motherfuck", /m[o0u]th(?:er|a)f+u+c+k+/i, {
priority: 1,
expandable: true
}), new f("fuck", /f+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}u+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}c+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}k+/i, {
priority: 2,
expandable: true
}), new f("shit", /[s$]+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}h+[\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s023456789_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t+(?!ake)/i, {
expandable: true
}), new f("cocksucker", /c+[o0]+c+k+s+u+c+k+[e3]+r+/i, {
expandable: true
}), new f("cocksuck", /c+[o0]+c+k+s+u+c+k+/i, {
priority: 1,
expandable: true
}), new f("assholes", /[a@][s\$][s\$]h[o0]l[e3][s\$]/i), new f("asshole", /[a@][s\$][s\$]h[o0]+l[e3]/i, {
priority: 1,
expandable: true
}), new f("asses", /(\b|^|[^glmp])[a@][s\$][s\$][e3][s\$](?:\b|$)/i, {
template: e.PRE
}), new f("dumbass", /\b(dumb)[a@][s\$][s\$]+/i, {
priority: 1,
expandable: true,
template: e.PRE
}), new f("ass", /(\b|^|\s|[^bcglmprstvu])[a@][\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$][\s\d_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$]+(?:\b|$)/i, {
priority: 2,
template: e.PRE,
expandable: true
}), new f("titties", /\bt[i1]tt[i1]e[s\$]/i), new f("tittie", /\bt[i1]tt[i1]e/i, {
priority: 1
}), new f("titty", /\bt[i1]tty/i), new f("tits", /\bt+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[s\$]+/i, {
priority: 1,
expandable: true
}), new f("tit", /\bt+[i1]+t([^ahilmrtu])/i, {
priority: 2,
template: e.POST,
expandable: true
}), new f("piss", /p[i1]+ss+(?!ant)/i, {
expandable: true
}), new f("dick", /d[i1]+c+k+(?!e|i)/i, {
expandable: true
}), new f("cunt", /(\b|[^s])c+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}u+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}n+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t/i, {
template: e.PRE,
expandable: true
}), new f("bastard", /\bb[a@]+st[a@]+r+d(?!ise|ize)/i, {
expandable: true
}), new f("bitch", /b+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}[i1]+[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}t[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}c[\s_\^\+\=\*\.\-,:"'>|\/\\]{0,42}h/i, {
expandable: true
})];
function i(a, b) {
if (a.priority === b.priority) {
return 0;
} else if (a.priority < b.priority) {
return -1;
} else {
return 1;
}
}
a.exports = {
GrawlixFilter: f,
GrawlixFilterError: g,
FilterSort: i,
FilterTemplate: e,
filters: h.sort(i),
toGrawlixFilter: function (a) {
if (!d.has(a, "word") || !d.isString(a.word)) {
throw new g({
msg: "word parameter is required",
filter: a
});
}
if (!d.has(a, "pattern") || !d.isRegExp(a.pattern)) {
throw new g({
msg: "pattern parameter is required",
filter: a
});
}
return new f(a.word, a.pattern, a);
}
};
},
6: (a, b, c) => {
'use strict';
const d = c(50);
const e = c(2);
const f = c(13).Style;
const g = c(434).GrawlixPlugin;
const h = c(434).GrawlixPluginError;
var i = {
style: f.ASCII,
randomize: true,
plugins: [],
filters: [],
styles: [],
allowed: []
};
var j = null;
function k(a, b) {
var c;
if (d.isUndefined(b) && j !== null) {
c = j;
} else if (d.isUndefined(b)) {
c = e.parseOptions(i);
j = c;
} else {
c = e.parseOptions(b, i);
}
return e.replaceMatches(a, c);
}
k.getDefaults = function () {
return i;
};
k.setDefaults = function (a) {
i = d.extend({}, i, a);
j = null;
};
k.isObscene = function (a, b, c) {
var f;
if (d.isUndefined(b) && d.isUndefined(c) && j !== null) {
f = j;
} else if (d.isArray(b) || d.isArray(c)) {
f = e.parseOptions({
filters: d.isUndefined(b) || b === null ? [] : b,
allowed: d.isUndefined(c) || c === null ? [] : c
}, i);
} else {
f = e.parseOptions(i);
j = f;
}
return e.isMatch(a, f);
};
k.loadPlugin = function (a, b) {
var c = {};
if (a instanceof g || d.isFunction(a)) {
c.plugin = a;
} else {
if (!d.isString(a)) {
throw new h({
message: "invalid plugin",
plugin: a,
trace: new Error()
});
}
c.module = a;
}
c.options = d.isUndefined(b) ? {} : b;
i.plugins.push(c);
return k;
};
k.hasPlugin = function (a) {
return e.hasPlugin(a, i);
};
k.Style = f;
k.GrawlixPlugin = g;
k.FilterTemplate = c(17).FilterTemplate;
k.error = {
GrawlixFilterError: c(17).GrawlixFilterError,
GrawlixPluginError: h,
GrawlixStyleError: c(13).GrawlixStyleError
};
a.exports = k;
},
434: (a, b, c) => {
'use strict';
const d = c(50);
const e = function (a) {
this.name = null;
this.filters = [];
this.styles = [];
this.init = function (a) {};
if (!d.isUndefined(a)) {
if (d.has(a, "name") && d.isString(a.name)) {
this.name = a.name;
} else if (d.isString(a)) {
this.name = a;
}
if (d.has(a, "filters") && d.isArray(a.filters)) {
this.filters = a.filters;
}
if (d.has(a, "styles") && d.isArray(a.styles)) {
this.styles = a.styles;
}
if (d.has(a, "init") && d.isFunction(a.init)) {
this.init = d.bind(a.init, this);
}
}
};
e.prototype = {};
const f = function (a) {
var b;
this.name = "GrawlixPluginError";
this.plugin = d.has(a, "plugin") ? a.plugin : null;
if (d.has(a, "trace") && a.trace instanceof Error) {
this.stack = a.trace.stack;
} else {
this.stack = new Error().stack;
}
b = d.has(a, "msg") ? a.msg : d.has(a, "message") ? a.message : a;
if (this.plugin !== null && d.has(this.plugin, "name")) {
this.message = "[plugin " + this.plugin.name + "] " + b;
} else {
this.message = b;
}
};
(f.prototype = Object.create(Error.prototype)).constructor = f;
a.exports = {
GrawlixPlugin: e,
GrawlixPluginError: f
};
},
13: (a, b, c) => {
'use strict';
const d = c(50);
const e = {
ASCII: "ascii",
ASTERIX: "asterix",
DINGBATS: "dingbats",
NEXTWAVE: "nextwave",
REDACTED: "redacted",
UNICODE: "unicode",
UNDERSCORE: "underscore"
};
const f = function (a, b) {
this.name = a;
this.chars = null;
this.fixed = {};
this.isOverrideAllowed = true;
this.isValid = function () {
return d.isString(this.name) && !d.isEmpty(this.name) && (d.isString(this.chars) && !d.isEmpty(this.chars) || d.isFunction(this.chars) || !d.isEmpty(this.fixed) && d.keys(this.fixed).length > 0);
};
this.canRandomize = function () {
return d.isFunction(this.chars) || d.isString(this.chars) && this.chars.length > 1;
};
this.getRandomGrawlix = function (a) {
if (!this.canRandomize()) {
throw new g({
msg: "Random grawlixes not supported",
style: this,
styleName: this.name
});
}
if (d.isFunction(this.chars)) {
return this.chars(a);
}
for (var b, c, e = []; e.length < a;) {
if ((b = this.chars.charAt(d.random(this.chars.length - 1))) !== c) {
if (b !== "!" || e.length !== a - 1) {
e.push(b);
c = b;
}
}
}
return e.join("");
};
this.getFillGrawlix = function (a) {
var b;
b = this.chars.length > 1 ? this.chars.charAt(0) : this.chars;
for (var c = [], d = 0; d < a; d++) {
c.push(b);
}
return c.join("");
};
this.hasFixed = function (a) {
return d.has(this.fixed, a) && !d.isEmpty(this.fixed[a]);
};
this.getFixed = function (a) {
return this.fixed[a];
};
this.addChars = function (a) {
var b = this;
var c = d.isArray(a) ? a : a.split("");
var e = 0;
d.each(c, function (a) {
if (b.chars.indexOf(a) === -1) {
b.chars += a;
e++;
}
});
return e;
};
this.removeChars = function (a) {
var b = this.chars.split("");
var c = d.filter(b, function (b) {
return a.indexOf(b) === -1;
});
this.chars = c.join("");
return b.length - c.length;
};
this.replaceChars = function (a) {
var b = this.chars.split("");
var c = 0;
var e = d.map(b, function (b) {
if (d.has(a, b) && d.isString(a[b])) {
c++;
return a[b];
} else {
return b;
}
});
this.chars = e.join("");
return c;
};
this.configure = function (a) {
if (d.has(a, "char") && d.isString(a.char)) {
this.chars = a.char;
} else if (d.has(a, "randomChars") && (d.isString(a.randomChars) || d.isFunction(a.randomChars))) {
this.chars = a.randomChars;
}
if (d.isString(this.chars) && d.has(a, "randomChars") && d.isObject(a.randomChars)) {
if (d.has(a.randomChars, "add")) {
this.addChars(a.randomChars.add);
}
if (d.has(a.randomChars, "remove")) {
this.removeChars(a.randomChars.remove);
}
if (d.has(a.randomChars, "replace") && d.isObject(a.randomChars.replace)) {
this.replaceChars(a.randomChars.replace);
}
}
if (d.has(a, "fixed") && d.isObject(a.fixed)) {
d.each(a.fixed, function (a, b) {
if (!d.has(this.fixed, b) || a !== false && d.isString(a)) {
this.fixed[b] = a;
} else {
delete this.fixed[b];
}
}, this);
}
if (d.has(a, "allowOverride") && d.isBoolean(a.allowOverride)) {
this.isOverrideAllowed = a.allowOverride;
}
};
this.clone = function () {
var a = new f(this.name);
a.chars = this.chars;
a.fixed = d.clone(this.fixed);
a.isOverrideAllowed = this.isOverrideAllowed;
return a;
};
if (!d.isUndefined(b)) {
this.configure(b);
}
};
f.prototype = {};
const g = function (a) {
var b;
this.name = "GrawlixStyleError";
this.styleName = d.has(a, "styleName") ? a.styleName : null;
this.style = d.has(a, "style") ? a.style : null;
this.plugin = d.has(a, "plugin") ? a.plugin : null;
if (d.has(a, "trace") && a.trace instanceof Error) {
this.stack = a.trace.stack;
} else {
this.stack = new Error().stack;
}
b = d.has(a, "msg") ? a.msg : d.has(a, "message") ? a.message : a;
if (this.styleName !== null) {
this.message = "[style " + this.styleName + "] " + b;
} else if (this.style !== null && d.has(this.style, "name")) {
this.styleName = this.style.name;
this.message = "[style " + this.style.name + "] " + b;
} else {
this.message = b;
}
};
g.prototype = Object.create(Error.prototype);
g.prototype.constructor = g;
const h = [new f(e.ASCII, {
randomChars: "@!#$%^&*",
fixed: {
fuck: "%!&#",
motherfuck: "%*^##*%!&#",
motherfucker: "%*^##*%!&##&",
shit: "$$#!%",
dick: "%!&#",
piss: "&!$$$$",
cunt: "#^&%",
cocksuck: "#*#%$$!#%",
cocksucker: "#*#%$$!#%#&",
ass: "@**",
asses: "@**#*",
asshole: "@**#%!&",
assholes: "@**#%!&*",
dumbass: "@**",
bastard: "%@$$%@*#",
bitch: "%!#*%",
tit: "%!%",
tits: "%!%$$",
titty: "%!%%^",
tittie: "%!%%!#",
titties: "%!%%!#$$"
}
}), new f(e.DINGBATS, {
randomChars: "★☒☎☠☢☣☹♡♢♤♧⚓⚔⚑⚡♯✓☝",
fixed: {
fuck: "⚑☠♧⚔",
motherfuck: "★☹⚓♯⚡☢⚑☠♧⚔",
motherfucker: "★☹⚓♯⚡☢⚑☠♧⚔⚡☢",
shit: "☠♯☝⚓",
dick: "♢☝♧⚔",
piss: "☣☝☠☠",
cunt: "♧♡⚔⚓",
cocksuck: "♧☹♧⚔☠♡♧⚔",
cocksucker: "♧☹♧⚔☠♡♧⚔⚡☢",
ass: "☹☠☠",
asses: "☹☠☠♯☠",
asshole: "☹☠☠♯☢✓⚡",
assholes: "☹☠☠♯☢✓⚡☠",
dumbass: "☹☠☠",
bastard: "☣☹☠⚓@☢♢",
bitch: "☣☝⚓♧♯",
tit: "⚓☝⚓",
tits: "⚓☝⚓☠",
titty: "⚓☝⚓⚓⚔",
tittie: "⚓☝⚓⚓☝♯",
titties: "⚓☝⚓⚓☝♯☠"
}
}), new f(e.UNICODE, {
randomChars: "!@#$%★☒☎☠☢☣☹♡♢♤♧⚓⚔⚑⚡",
fixed: {
fuck: "⚑☠♧⚔",
motherfuck: "★☹⚓#⚡☢⚑☠♧⚔",
motherfucker: "★☹⚓#⚡☢⚑☠♧⚔⚡☢",
shit: "$$#!⚓",
dick: "♢!♧⚔",
piss: "☣!$$$$",
cunt: "♧♡⚔⚓",
cocksuck: "♧☹♧⚔$$♡♧⚔",
cocksucker: "♧☹♧⚔$$♡♧⚔⚡☢",
ass: "@$$$$",
asses: "@$$$$#$$",
asshole: "@$$$$#☢!⚡",
assholes: "@$$$$#☢!⚡$$",
dumbass: "@$$$$",
bastard: "☣@$$⚓@☢♢",
bitch: "☣!⚓♧#",
tit: "⚓!⚓",
tits: "⚓!⚓$$",
titty: "⚓!⚓⚓⚔",
tittie: "⚓!⚓⚓!#",
titties: "⚓!⚓⚓!#$$"
}
}), new f(e.ASTERIX, {
char: "*"
}), new f(e.NEXTWAVE, {
char: "☠"
}), new f(e.REDACTED, {
char: "█"
}), new f(e.UNDERSCORE, {
char: "_"
})];
a.exports = {
styles: h,
Style: e,
GrawlixStyle: f,
GrawlixStyleError: g,
toGrawlixStyle: function (a) {
if (!d.has(a, "name") || !d.isString(a.name) || d.isEmpty(a.name)) {
throw new g({
msg: "name parameter is required",
style: a,
trace: new Error()
});
}
if (!d.has(a, "char") && !d.has(a, "randomChars") && !d.has(a, "fixed")) {
throw new g({
msg: "char, randomChars or fixed parameter required",
style: a,
trace: new Error()
});
}
return new f(a.name, a);
}
};
},
2: (a, b, c) => {
'use strict';
const d = c(50);
const e = c(17).filters;
const f = c(13).styles;
const g = c(17).FilterSort;
c(17).GrawlixFilter;
const h = c(17).toGrawlixFilter;
const i = c(13).GrawlixStyle;
const j = c(13).toGrawlixStyle;
const k = c(13).GrawlixStyleError;
const l = c(434).GrawlixPlugin;
const m = c(434).GrawlixPluginError;
b.parseOptions = function (a, b) {
if (!d.isUndefined(b)) {
d.defaults(a, b);
}
var c;
var h = new n();
h.isRandom = a.randomize;
d.each(e, function (b) {
var c = d.contains(a.allowed, b.word);
var e = d.some(a.filters, function (a) {
return d.has(a, "word") && a.word === b.word && d.has(a, "pattern");
});
if (!c && !e) {
h.filters.push(b.clone());
}
});
d.each(f, function (a) {
h.styles.push(a.clone());
});
if (a.plugins.length > 0) {
d.each(a.plugins, function (b) {
o(h, b, a);
});
}
p(h, a.filters, a.allowed);
h.filters.sort(g);
q(h, a.styles);
if (!d.has(a, "style") || a.style === null) {
throw new k({
msg: "main style not found",
style: a.style,
trace: new Error()
});
}
if (d.has(a.style, "name")) {
c = d.findWhere(h.styles, {
name: a.style.name
});
if (d.isUndefined(c)) {
c = j(a.style);
} else {
c.configure(a.style);
}
} else {
c = d.findWhere(h.styles, {
name: a.style
});
}
if (!(c instanceof i)) {
throw new k({
msg: "main style not found",
styleName: a.style,
style: a.style,
trace: new Error()
});
}
h.style = c;
return h;
};
function n() {
this.isRandom = true;
this.filters = [];
this.style = null;
this.styles = [];
this.loadedPlugins = [];
this.loadedModules = [];
}
n.prototype = {};
b.GrawlixSettings = n;
function o(a, b, e) {
var f;
if (d.has(b, "plugin")) {
f = b.plugin;
} else if (d.has(b, "module")) {
if (d.contains(a.loadedModules, b.module)) {
return a;
}
try {
f = c(717)(b.module);
} catch (a) {
throw new m({
msg: "cannot find module '" + b.module + "'",
plugin: b,
trace: new Error()
});
}
a.loadedModules.push(b.module);
} else {
f = b;
}
var g = d.has(b, "options") ? b.options : {};
if (d.isFunction(f)) {
f = f(g, e);
}
if (!(f instanceof l)) {
throw new m({
msg: "invalid plugin",
plugin: b
});
}
if (f.name === null || d.isEmpty(f.name)) {
throw new m({
msg: "invalid plugin - name property not provided",
plugin: b
});
}
if (d.contains(a.loadedPlugins, f.name)) {
return a;
}
f.init(g);
if (!d.isUndefined(f.filters) && d.isArray(f.filters)) {
try {
p(a, f.filters, e.allowed);
} catch (a) {
a.plugin = b;
throw a;
}
}
if (!d.isUndefined(f.styles) && d.isArray(f.styles)) {
try {
q(a, f.styles);
} catch (a) {
a.plugin = b;
throw a;
}
}
a.loadedPlugins.push(f.name);
return a;
}
b.loadPlugin = o;
function p(a, b, c) {
if (b.length > 0) {
d.each(b, function (b) {
if (d.has(b, "word")) {
if (d.has(b, "pattern")) {
if (!d.contains(c, b.word)) {
a.filters.push(h(b));
}
} else {
var e = d.findWhere(a.filters, {
word: b.word
});
if (!d.isUndefined(e)) {
e.configure(b);
}
}
}
});
}
return a;
}
b.loadFilters = p;
function q(a, b) {
if (d.isArray(b) && b.length > 0) {
d.each(b, function (b) {
if (d.has(b, "name")) {
var c = d.findWhere(a.styles, {
name: b.name
});
if (d.isUndefined(c)) {
a.styles.push(j(b));
} else {
c.configure(b);
}
}
});
}
return a;
}
b.loadStyles = q;
b.hasPlugin = function (a, b) {
if (d.has(b, "plugins") && d.isArray(b.plugins)) {
if (a instanceof l) {
return d.some(b.plugins, function (b) {
return d.has(b, "plugin") && b.plugin instanceof l && (b.plugin === a || b.plugin.name === a.name);
});
}
if (d.isFunction(a)) {
return d.some(b.plugins, function (b) {
return d.has(b, "plugin") && b.plugin === a;
});
}
if (d.isString(a)) {
return d.some(b.plugins, function (b) {
return d.has(b, "module") && b.module === a || d.has(b, "plugin") && b.plugin instanceof l && b.plugin.name === a;
});
}
}
return false;
};
b.isMatch = function (a, b) {
return b.filters.length !== 0 && d.some(b.filters, function (b) {
return b.isMatch(a);
});
};
b.replaceMatches = function (a, b) {
d.each(b.filters, function (c) {
while (c.isMatch(a)) {
a = r(a, c, b);
}
});
return a;
};
function r(a, b, c) {
var e;
var f;
if (b.hasStyle() && c.style.isOverrideAllowed) {
e = d.findWhere(c.styles, {
name: b.style
});
}
if (d.isUndefined(e)) {
e = c.style;
}
f = !c.isRandom && e.hasFixed(b.word) ? e.getFixed(b.word) : s(a, b, e);
if (b.hasTemplate()) {
f = b.template(f);
}
return a.replace(b.regex, f);
}
b.replaceMatch = r;
function s(a, b, c) {
var d;
d = b.isExpandable ? b.getMatchLen(a) : b.word.length;
if (c.canRandomize()) {
return c.getRandomGrawlix(d);
} else {
return c.getFillGrawlix(d);
}
}
b.generateGrawlix = s;
},
717: a => {
function b(a) {
var b = new Error("Cannot find module '" + a + "'");
b.code = "MODULE_NOT_FOUND";
throw b;
}
b.keys = () => [];
b.resolve = b;
b.id = 717;
a.exports = b;
},
405: (a, b, c) => {
'use strict';
var d = typeof Symbol != "undefined" && Symbol;
var e = c(419);
a.exports = function () {
return typeof d == "function" && typeof Symbol == "function" && typeof d("foo") == "symbol" && typeof Symbol("bar") == "symbol" && e();
};
},
419: a => {
'use strict';
a.exports = function () {
if (typeof Symbol != "function" || typeof Object.getOwnPropertySymbols != "function") {
return false;
}
if (typeof Symbol.iterator == "symbol") {
return true;
}
var a = {};
var b = Symbol("test");
var c = Object(b);
if (typeof b == "string") {
return false;
}
if (Object.prototype.toString.call(b) !== "[object Symbol]") {
return false;
}
if (Object.prototype.toString.call(c) !== "[object Symbol]") {
return false;
}
a[b] = 42;
for (b in a) {
return false;
}
if (typeof Object.keys == "function" && Object.keys(a).length !== 0) {
return false;
}
if (typeof Object.getOwnPropertyNames == "function" && Object.getOwnPropertyNames(a).length !== 0) {
return false;
}
var d = Object.getOwnPropertySymbols(a);
if (d.length !== 1 || d[0] !== b) {
return false;
}
if (!Object.prototype.propertyIsEnumerable.call(a, b)) {
return false;
}
if (typeof Object.getOwnPropertyDescriptor == "function") {
var e = Object.getOwnPropertyDescriptor(a, b);
if (e.value !== 42 || e.enumerable !== true) {
return false;
}
}
return true;
};
},
642: (a, b, c) => {
'use strict';
var d = c(612);
a.exports = d.call(Function.call, Object.prototype.hasOwnProperty);
},
514: function (a, b) {
var c;
var d;
if ((d = typeof (c = function () {
'use strict';
function a(a, b, c) {
this.low = a | 0;
this.high = b | 0;
this.unsigned = !!c;
}
function b(a) {
return (a && a.__isLong__) === true;
}
a.prototype.__isLong__;
Object.defineProperty(a.prototype, "__isLong__", {
value: true,
enumerable: false,
configurable: false
});
a.isLong = b;
var c = {};
var d = {};
function e(a, b) {
var e;
var f;
var h;
if (b) {
if ((h = (a >>>= 0) >= 0 && a < 256) && (f = d[a])) {
return f;
} else {
e = g(a, (a | 0) < 0 ? -1 : 0, true);
if (h) {
d[a] = e;
}
return e;
}
} else if ((h = (a |= 0) >= -128 && a < 128) && (f = c[a])) {
return f;
} else {
e = g(a, a < 0 ? -1 : 0, false);
if (h) {
c[a] = e;
}
return e;
}
}
function f(a, b) {
if (isNaN(a) || !isFinite(a)) {
if (b) {
return p;
} else {
return o;
}
}
if (b) {
if (a < 0) {
return p;
}
if (a >= l) {
return u;
}
} else {
if (a <= -m) {
return v;
}
if (a + 1 >= m) {
return t;
}
}
if (a < 0) {
return f(-a, b).neg();
} else {
return g(a % k | 0, a / k | 0, b);
}
}
function g(b, c, d) {
return new a(b, c, d);
}
a.fromInt = e;
a.fromNumber = f;
a.fromBits = g;
var h = Math.pow;
function i(a, b, c) {
if (a.length === 0) {
throw Error("empty string");
}
if (a === "NaN" || a === "Infinity" || a === "+Infinity" || a === "-Infinity") {
return o;
}
if (typeof b == "number") {
c = b;
b = false;
} else {
b = !!b;
}
if ((c = c || 10) < 2 || c > 36) {
throw RangeError("radix");
}
var d;
if ((d = a.indexOf("-")) > 0) {
throw Error("interior hyphen");
}
if (d === 0) {
return i(a.substring(1), b, c).neg();
}
for (var e = f(h(c, 8)), g = o, j = 0; j < a.length; j += 8) {
var k = Math.min(8, a.length - j);
var l = parseInt(a.substring(j, j + k), c);
if (k < 8) {
var m = f(h(c, k));
g = g.mul(m).add(f(l));
} else {
g = (g = g.mul(e)).add(f(l));
}
}
g.unsigned = b;
return g;
}
function j(b) {
if (b instanceof a) {
return b;
} else if (typeof b == "number") {
return f(b);
} else if (typeof b == "string") {
return i(b);
} else {
return g(b.low, b.high, b.unsigned);
}
}
a.fromString = i;
a.fromValue = j;
var k = 4294967296;
var l = k * k;
var m = l / 2;
var n = e(1 << 24);
var o = e(0);
a.ZERO = o;
var p = e(0, true);
a.UZERO = p;
var q = e(1);
a.ONE = q;
var r = e(1, true);
a.UONE = r;
var s = e(-1);
a.NEG_ONE = s;
var t = g(-1, 2147483647, false);
a.MAX_VALUE = t;
var u = g(-1, -1, true);
a.MAX_UNSIGNED_VALUE = u;
var v = g(0, -2147483648, false);
a.MIN_VALUE = v;
var w = a.prototype;
w.toInt = function () {
if (this.unsigned) {
return this.low >>> 0;
} else {
return this.low;
}
};
w.toNumber = function () {
if (this.unsigned) {
return (this.high >>> 0) * k + (this.low >>> 0);
} else {
return this.high * k + (this.low >>> 0);
}
};
w.toString = function (a) {
if ((a = a || 10) < 2 || a > 36) {
throw RangeError("radix");
}
if (this.isZero()) {
return "0";
}
if (this.isNegative()) {
if (this.eq(v)) {
var b = f(a);
var c = this.div(b);
var d = c.mul(b).sub(this);
return c.toString(a) + d.toInt().toString(a);
}
return "-" + this.neg().toString(a);
}
var e = f(h(a, 6), this.unsigned);
var g = this;
var i = "";
while (true) {
var j = g.div(e);
var k = (g.sub(j.mul(e)).toInt() >>> 0).toString(a);
if ((g = j).isZero()) {
return k + i;
}
while (k.length < 6) {
k = "0" + k;
}
i = "" + k + i;
}
};
w.getHighBits = function () {
return this.high;
};
w.getHighBitsUnsigned = function () {
return this.high >>> 0;
};
w.getLowBits = function () {
return this.low;
};
w.getLowBitsUnsigned = function () {
return this.low >>> 0;
};
w.getNumBitsAbs = function () {
if (this.isNegative()) {
if (this.eq(v)) {
return 64;
} else {
return this.neg().getNumBitsAbs();
}
}
for (var a = this.high != 0 ? this.high : this.low, b = 31; b > 0 && (a & 1 << b) == 0; b--);
if (this.high != 0) {
return b + 33;
} else {
return b + 1;
}
};
w.isZero = function () {
return this.high === 0 && this.low === 0;
};
w.isNegative = function () {
return !this.unsigned && this.high < 0;
};
w.isPositive = function () {
return this.unsigned || this.high >= 0;
};
w.isOdd = function () {
return (this.low & 1) == 1;
};
w.isEven = function () {
return (this.low & 1) == 0;
};
w.equals = function (a) {
if (!b(a)) {
a = j(a);
}
return (this.unsigned === a.unsigned || this.high >>> 31 != 1 || a.high >>> 31 != 1) && this.high === a.high && this.low === a.low;
};
w.eq = w.equals;
w.notEquals = function (a) {
return !this.eq(a);
};
w.neq = w.notEquals;
w.lessThan = function (a) {
return this.comp(a) < 0;
};
w.lt = w.lessThan;
w.lessThanOrEqual = function (a) {
return this.comp(a) <= 0;
};
w.lte = w.lessThanOrEqual;
w.greaterThan = function (a) {
return this.comp(a) > 0;
};
w.gt = w.greaterThan;
w.greaterThanOrEqual = function (a) {
return this.comp(a) >= 0;
};
w.gte = w.greaterThanOrEqual;
w.compare = function (a) {
if (!b(a)) {
a = j(a);
}
if (this.eq(a)) {
return 0;
}
var c = this.isNegative();
var d = a.isNegative();
if (c && !d) {
return -1;
} else if (!c && d) {
return 1;
} else if (this.unsigned) {
if (a.high >>> 0 > this.high >>> 0 || a.high === this.high && a.low >>> 0 > this.low >>> 0) {
return -1;
} else {
return 1;
}
} else if (this.sub(a).isNegative()) {
return -1;
} else {
return 1;
}
};
w.comp = w.compare;
w.negate = function () {
if (!this.unsigned && this.eq(v)) {
return v;
} else {
return this.not().add(q);
}
};
w.neg = w.negate;
w.add = function (a) {
if (!b(a)) {
a = j(a);
}
var c = this.high >>> 16;
var d = this.high & 65535;
var e = this.low >>> 16;
var f = this.low & 65535;
var h = a.high >>> 16;
var i = a.high & 65535;
var k = a.low >>> 16;
var l = 0;
var m = 0;
var n = 0;
var o = 0;
n += (o += f + (a.low & 65535)) >>> 16;
m += (n += e + k) >>> 16;
l += (m += d + i) >>> 16;
l += c + h;
return g((n &= 65535) << 16 | (o &= 65535), (l &= 65535) << 16 | (m &= 65535), this.unsigned);
};
w.subtract = function (a) {
if (!b(a)) {
a = j(a);
}
return this.add(a.neg());
};
w.sub = w.subtract;
w.multiply = function (a) {
if (this.isZero()) {
return o;
}
if (!b(a)) {
a = j(a);
}
if (a.isZero()) {
return o;
}
if (this.eq(v)) {
if (a.isOdd()) {
return v;
} else {
return o;
}
}
if (a.eq(v)) {
if (this.isOdd()) {
return v;
} else {
return o;
}
}
if (this.isNegative()) {
if (a.isNegative()) {
return this.neg().mul(a.neg());
} else {
return this.neg().mul(a).neg();
}
}
if (a.isNegative()) {
return this.mul(a.neg()).neg();
}
if (this.lt(n) && a.lt(n)) {
return f(this.toNumber() * a.toNumber(), this.unsigned);
}
var c = this.high >>> 16;
var d = this.high & 65535;
var e = this.low >>> 16;
var h = this.low & 65535;
var i = a.high >>> 16;
var k = a.high & 65535;
var l = a.low >>> 16;
var m = a.low & 65535;
var p = 0;
var q = 0;
var r = 0;
var s = 0;
r += (s += h * m) >>> 16;
q += (r += e * m) >>> 16;
r &= 65535;
q += (r += h * l) >>> 16;
p += (q += d * m) >>> 16;
q &= 65535;
p += (q += e * l) >>> 16;
q &= 65535;
p += (q += h * k) >>> 16;
p += c * m + d * l + e * k + h * i;
return g((r &= 65535) << 16 | (s &= 65535), (p &= 65535) << 16 | (q &= 65535), this.unsigned);
};
w.mul = w.multiply;
w.divide = function (a) {
if (!b(a)) {
a = j(a);
}
if (a.isZero()) {
throw Error("division by zero");
}
if (this.isZero()) {
if (this.unsigned) {
return p;
} else {
return o;
}
}
var c;
var d;
var e;
if (this.unsigned) {
if (!a.unsigned) {
a = a.toUnsigned();
}
if (a.gt(this)) {
return p;
}
if (a.gt(this.shru(1))) {
return r;
}
e = p;
} else {
if (this.eq(v)) {
if (a.eq(q) || a.eq(s)) {
return v;
} else if (a.eq(v)) {
return q;
} else if ((c = this.shr(1).div(a).shl(1)).eq(o)) {
if (a.isNegative()) {
return q;
} else {
return s;
}
} else {
d = this.sub(a.mul(c));
return e = c.add(d.div(a));
}
}
if (a.eq(v)) {
if (this.unsigned) {
return p;
} else {
return o;
}
}
if (this.isNegative()) {
if (a.isNegative()) {
return this.neg().div(a.neg());
} else {
return this.neg().div(a).neg();
}
}
if (a.isNegative()) {
return this.div(a.neg()).neg();
}
e = o;
}
for (d = this; d.gte(a);) {
c = Math.max(1, Math.floor(d.toNumber() / a.toNumber()));
for (var g = Math.ceil(Math.log(c) / Math.LN2), i = g <= 48 ? 1 : h(2, g - 48), k = f(c), l = k.mul(a); l.isNegative() || l.gt(d);) {
l = (k = f(c -= i, this.unsigned)).mul(a);
}
if (k.isZero()) {
k = q;
}
e = e.add(k);
d = d.sub(l);
}
return e;
};
w.div = w.divide;
w.modulo = function (a) {
if (!b(a)) {
a = j(a);
}
return this.sub(this.div(a).mul(a));
};
w.mod = w.modulo;
w.not = function () {
return g(~this.low, ~this.high, this.unsigned);
};
w.and = function (a) {
if (!b(a)) {
a = j(a);
}
return g(this.low & a.low, this.high & a.high, this.unsigned);
};
w.or = function (a) {
if (!b(a)) {
a = j(a);
}
return g(this.low | a.low, this.high | a.high, this.unsigned);
};
w.xor = function (a) {
if (!b(a)) {
a = j(a);
}
return g(this.low ^ a.low, this.high ^ a.high, this.unsigned);
};
w.shiftLeft = function (a) {
if (b(a)) {
a = a.toInt();
}
if ((a &= 63) == 0) {
return this;
} else if (a < 32) {
return g(this.low << a, this.high << a | this.low >>> 32 - a, this.unsigned);
} else {
return g(0, this.low << a - 32, this.unsigned);
}
};
w.shl = w.shiftLeft;
w.shiftRight = function (a) {
if (b(a)) {
a = a.toInt();
}
if ((a &= 63) == 0) {
return this;
} else if (a < 32) {
return g(this.low >>> a | this.high << 32 - a, this.high >> a, this.unsigned);
} else {
return g(this.high >> a - 32, this.high >= 0 ? 0 : -1, this.unsigned);
}
};
w.shr = w.shiftRight;
w.shiftRightUnsigned = function (a) {
if (b(a)) {
a = a.toInt();
}
if ((a &= 63) == 0) {
return this;
}
var c = this.high;
if (a < 32) {
return g(this.low >>> a | c << 32 - a, c >>> a, this.unsigned);
} else {
return g(a === 32 ? c : c >>> a - 32, 0, this.unsigned);
}
};
w.shru = w.shiftRightUnsigned;
w.toSigned = function () {
if (this.unsigned) {
return g(this.low, this.high, false);
} else {
return this;
}
};
w.toUnsigned = function () {
if (this.unsigned) {
return this;
} else {
return g(this.low, this.high, true);
}
};
w.toBytes = function (a) {
if (a) {
return this.toBytesLE();
} else {
return this.toBytesBE();
}
};
w.toBytesLE = function () {
var a = this.high;
var b = this.low;
return [b & 255, b >>> 8 & 255, b >>> 16 & 255, b >>> 24 & 255, a & 255, a >>> 8 & 255, a >>> 16 & 255, a >>> 24 & 255];
};
w.toBytesBE = function () {
var a = this.high;
var b = this.low;
return [a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, a & 255, b >>> 24 & 255, b >>> 16 & 255, b >>> 8 & 255, b & 255];
};
return a;
}) == "function" ? c.apply(b, []) : c) !== undefined) {
a.exports = d;
}
},
418: a => {
'use strict';
var b = Object.getOwnPropertySymbols;
var c = Object.prototype.hasOwnProperty;
var d = Object.prototype.propertyIsEnumerable;
a.exports = function () {
try {
if (!Object.assign) {
return false;
}
var a = new String("abc");
a[5] = "de";
if (Object.getOwnPropertyNames(a)[0] === "5") {
return false;
}
for (var b = {}, c = 0; c < 10; c++) {
b["_" + String.fromCharCode(c)] = c;
}
if (Object.getOwnPropertyNames(b).map(function (a) {
return b[a];
}).join("") !== "0123456789") {
return false;
}
var d = {};
"abcdefghijklmnopqrst".split("").forEach(function (a) {
d[a] = a;
});
return Object.keys(Object.assign({}, d)).join("") === "abcdefghijklmnopqrst";
} catch (a) {
return false;
}
}() ? Object.assign : function (a, e) {
for (var f, g, h = function (a) {
if (a == null) {
throw new TypeError("Object.assign cannot be called with null or undefined");
}
return Object(a);
}(a), i = 1; i < arguments.length; i++) {
for (var j in f = Object(arguments[i])) {
if (c.call(f, j)) {
h[j] = f[j];
}
}
if (b) {
g = b(f);
for (var k = 0; k < g.length; k++) {
if (d.call(f, g[k])) {
h[g[k]] = f[g[k]];
}
}
}
}
return h;
};
},
631: (a, b, c) => {
var d = typeof Map == "function" && Map.prototype;
var e = Object.getOwnPropertyDescriptor && d ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null;
var f = d && e && typeof e.get == "function" ? e.get : null;
var g = d && Map.prototype.forEach;
var h = typeof Set == "function" && Set.prototype;
var i = Object.getOwnPropertyDescriptor && h ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null;
var j = h && i && typeof i.get == "function" ? i.get : null;
var k = h && Set.prototype.forEach;
var l = typeof WeakMap == "function" && WeakMap.prototype ? WeakMap.prototype.has : null;
var m = typeof WeakSet == "function" && WeakSet.prototype ? WeakSet.prototype.has : null;
var n = typeof WeakRef == "function" && WeakRef.prototype ? WeakRef.prototype.deref : null;
var o = Boolean.prototype.valueOf;
var p = Object.prototype.toString;
var q = Function.prototype.toString;
var r = String.prototype.match;
var s = String.prototype.slice;
var t = String.prototype.replace;
var u = String.prototype.toUpperCase;
var v = String.prototype.toLowerCase;
var w = RegExp.prototype.test;
var x = Array.prototype.concat;
var y = Array.prototype.join;
var z = Array.prototype.slice;
var A = Math.floor;
var B = typeof BigInt == "function" ? BigInt.prototype.valueOf : null;
var C = Object.getOwnPropertySymbols;
var D = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? Symbol.prototype.toString : null;
var E = typeof Symbol == "function" && typeof Symbol.iterator == "object";
var F = typeof Symbol == "function" && Symbol.toStringTag && (Symbol.toStringTag, 1) ? Symbol.toStringTag : null;
var G = Object.prototype.propertyIsEnumerable;
var H = (typeof Reflect == "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function (a) {
return a.__proto__;
} : null);
function I(a, b) {
if (a === Infinity || a === -Infinity || a != a || a && a > -1000 && a < 1000 || w.call(/e/, b)) {
return b;
}
var c = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;
if (typeof a == "number") {
var d = a < 0 ? -A(-a) : A(a);
if (d !== a) {
var e = String(d);
var f = s.call(b, e.length + 1);
return t.call(e, c, "$&_") + "." + t.call(t.call(f, /([0-9]{3})/g, "$&_"), /_$/, "");
}
}
return t.call(b, c, "$&_");
}
var J = c(654);
var K = J.custom;
var L = Q(K) ? K : null;
function M(a, b, c) {
var d = (c.quoteStyle || b) === "double" ? "\"" : "'";
return d + a + d;
}
function N(a) {
return t.call(String(a), /"/g, """);
}
function O(a) {
return T(a) === "[object Array]" && (!F || typeof a != "object" || !(F in a));
}
function P(a) {
return T(a) === "[object RegExp]" && (!F || typeof a != "object" || !(F in a));
}
function Q(a) {
if (E) {
return a && typeof a == "object" && a instanceof Symbol;
}
if (typeof a == "symbol") {
return true;
}
if (!a || typeof a != "object" || !D) {
return false;
}
try {
D.call(a);
return true;
} catch (a) {}
return false;
}
a.exports = function e(a, b, c, d) {
var h = b || {};
if (S(h, "quoteStyle") && h.quoteStyle !== "single" && h.quoteStyle !== "double") {
throw new TypeError("option \"quoteStyle\" must be \"single\" or \"double\"");
}
if (S(h, "maxStringLength") && (typeof h.maxStringLength == "number" ? h.maxStringLength < 0 && h.maxStringLength !== Infinity : h.maxStringLength !== null)) {
throw new TypeError("option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`");
}
var i = !S(h, "customInspect") || h.customInspect;
if (typeof i != "boolean" && i !== "symbol") {
throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");
}
if (S(h, "indent") && h.indent !== null && h.indent !== "\t" && (parseInt(h.indent, 10) !== h.indent || h.indent <= 0)) {
throw new TypeError("option \"indent\" must be \"\\t\", an integer > 0, or `null`");
}
if (S(h, "numericSeparator") && typeof h.numericSeparator != "boolean") {
throw new TypeError("option \"numericSeparator\", if provided, must be `true` or `false`");
}
var p = h.numericSeparator;
if (a === undefined) {
return "undefined";
}
if (a === null) {
return "null";
}
if (typeof a == "boolean") {
if (a) {
return "true";
} else {
return "false";
}
}
if (typeof a == "string") {
return V(a, h);
}
if (typeof a == "number") {
if (a === 0) {
if (Infinity / a > 0) {
return "0";
} else {
return "-0";
}
}
var u = String(a);
if (p) {
return I(a, u);
} else {
return u;
}
}
if (typeof a == "bigint") {
var w = String(a) + "n";
if (p) {
return I(a, w);
} else {
return w;
}
}
var A = h.depth === undefined ? 5 : h.depth;
if (c === undefined) {
c = 0;
}
if (c >= A && A > 0 && typeof a == "object") {
if (O(a)) {
return "[Array]";
} else {
return "[Object]";
}
}
var C;
var K = function (a, b) {
var c;
if (a.indent === "\t") {
c = "\t";
} else {
if (typeof a.indent != "number" || a.indent <= 0) {
return null;
}
c = y.call(Array(a.indent + 1), " ");
}
return {
base: c,
prev: y.call(Array(b + 1), c)
};
}(h, c);
if (d === undefined) {
d = [];
} else if (U(d, a) >= 0) {
return "[Circular]";
}
function R(a, b, f) {
if (b) {
(d = z.call(d)).push(b);
}
if (f) {
var g = {
depth: h.depth
};
if (S(h, "quoteStyle")) {
g.quoteStyle = h.quoteStyle;
}
return e(a, g, c + 1, d);
}
return e(a, h, c + 1, d);
}
if (typeof a == "function" && !P(a)) {
var W = function (a) {
if (a.name) {
return a.name;
}
var b = r.call(q.call(a), /^function\s*([\w$]+)/);
if (b) {
return b[1];
} else {
return null;
}
}(a);
var aa = _(a, R);
return "[Function" + (W ? ": " + W : " (anonymous)") + "]" + (aa.length > 0 ? " { " + y.call(aa, ", ") + " }" : "");
}
if (Q(a)) {
var ba = E ? t.call(String(a), /^(Symbol\(.*\))_[^)]*$/, "$1") : D.call(a);
if (typeof a != "object" || E) {
return ba;
} else {
return X(ba);
}
}
if ((C = a) && typeof C == "object" && (typeof HTMLElement != "undefined" && C instanceof HTMLElement || typeof C.nodeName == "string" && typeof C.getAttribute == "function")) {
for (var ca = "<" + v.call(String(a.nodeName)), da = a.attributes || [], ea = 0; ea < da.length; ea++) {
ca += " " + da[ea].name + "=" + M(N(da[ea].value), "double", h);
}
ca += ">";
if (a.childNodes && a.childNodes.length) {
ca += "...";
}
return ca + "</" + v.call(String(a.nodeName)) + ">";
}
if (O(a)) {
if (a.length === 0) {
return "[]";
}
var fa = _(a, R);
if (K && ! function (a) {
for (var b = 0; b < a.length; b++) {
if (U(a[b], "\n") >= 0) {
return false;
}
}
return true;
}(fa)) {
return "[" + $(fa, K) + "]";
} else {
return "[ " + y.call(fa, ", ") + " ]";
}
}
if (function (a) {
return T(a) === "[object Error]" && (!F || typeof a != "object" || !(F in a));
}(a)) {
var ga = _(a, R);
if ("cause" in Error.prototype || !("cause" in a) || G.call(a, "cause")) {
if (ga.length === 0) {
return "[" + String(a) + "]";
} else {
return "{ [" + String(a) + "] " + y.call(ga, ", ") + " }";
}
} else {
return "{ [" + String(a) + "] " + y.call(x.call("[cause]: " + R(a.cause), ga), ", ") + " }";
}
}
if (typeof a == "object" && i) {
if (L && typeof a[L] == "function" && J) {
return J(a, {
depth: A - c
});
}
if (i !== "symbol" && typeof a.inspect == "function") {
return a.inspect();
}
}
if (function (a) {
if (!f || !a || typeof a != "object") {
return false;
}
try {
f.call(a);
try {
j.call(a);
} catch (a) {
return true;
}
return a instanceof Map;
} catch (a) {}
return false;
}(a)) {
var ha = [];
g.call(a, function (b, c) {
ha.push(R(c, a, true) + " => " + R(b, a));
});
return Z("Map", f.call(a), ha, K);
}
if (function (a) {
if (!j || !a || typeof a != "object") {
return false;
}
try {
j.call(a);
try {
f.call(a);
} catch (a) {
return true;
}
return a instanceof Set;
} catch (a) {}
return false;
}(a)) {
var ia = [];
k.call(a, function (b) {
ia.push(R(b, a));
});
return Z("Set", j.call(a), ia, K);
}
if (function (a) {
if (!l || !a || typeof a != "object") {
return false;
}
try {
l.call(a, l);
try {
m.call(a, m);
} catch (a) {
return true;
}
return a instanceof WeakMap;
} catch (a) {}
return false;
}(a)) {
return Y("WeakMap");
}
if (function (a) {
if (!m || !a || typeof a != "object") {
return false;
}
try {
m.call(a, m);
try {
l.call(a, l);
} catch (a) {
return true;
}
return a instanceof WeakSet;
} catch (a) {}
return false;
}(a)) {
return Y("WeakSet");
}
if (function (a) {
if (!n || !a || typeof a != "object") {
return false;
}
try {
n.call(a);
return true;
} catch (a) {}
return false;
}(a)) {
return Y("WeakRef");
}
if (function (a) {
return T(a) === "[object Number]" && (!F || typeof a != "object" || !(F in a));
}(a)) {
return X(R(Number(a)));
}
if (function (a) {
if (!a || typeof a != "object" || !B) {
return false;
}
try {
B.call(a);
return true;
} catch (a) {}
return false;
}(a)) {
return X(R(B.call(a)));
}
if (function (a) {
return T(a) === "[object Boolean]" && (!F || typeof a != "object" || !(F in a));
}(a)) {
return X(o.call(a));
}
if (function (a) {
return T(a) === "[object String]" && (!F || typeof a != "object" || !(F in a));
}(a)) {
return X(R(String(a)));
}
if (! function (a) {
return T(a) === "[object Date]" && (!F || typeof a != "object" || !(F in a));
}(a) && !P(a)) {
var ja = _(a, R);
var ka = H ? H(a) === Object.prototype : a instanceof Object || a.constructor === Object;
var la = a instanceof Object ? "" : "null prototype";
var ma = !ka && F && Object(a) === a && F in a ? s.call(T(a), 8, -1) : la ? "Object" : "";
var na = (ka || typeof a.constructor != "function" ? "" : a.constructor.name ? a.constructor.name + " " : "") + (ma || la ? "[" + y.call(x.call([], ma || [], la || []), ": ") + "] " : "");
if (ja.length === 0) {
return na + "{}";
} else if (K) {
return na + "{" + $(ja, K) + "}";
} else {
return na + "{ " + y.call(ja, ", ") + " }";
}
}
return String(a);
};
var R = Object.prototype.hasOwnProperty || function (a) {
return a in this;
};
function S(a, b) {
return R.call(a, b);
}
function T(a) {
return p.call(a);
}
function U(a, b) {
if (a.indexOf) {
return a.indexOf(b);
}
for (var c = 0, d = a.length; c < d; c++) {
if (a[c] === b) {
return c;
}
}
return -1;
}
function V(a, b) {
if (a.length > b.maxStringLength) {
var c = a.length - b.maxStringLength;
var d = "... " + c + " more character" + (c > 1 ? "s" : "");
return V(s.call(a, 0, b.maxStringLength), b) + d;
}
return M(t.call(t.call(a, /(['\\])/g, "\\$1"), /[\x00-\x1f]/g, W), "single", b);
}
function W(a) {
var b = a.charCodeAt(0);
var c = {
8: "b",
9: "t",
10: "n",
12: "f",
13: "r"
} [b];
if (c) {
return "\\" + c;
} else {
return "\\x" + (b < 16 ? "0" : "") + u.call(b.toString(16));
}
}
function X(a) {
return "Object(" + a + ")";
}
function Y(a) {
return a + " { ? }";
}
function Z(a, b, c, d) {
return a + " (" + b + ") {" + (d ? $(c, d) : y.call(c, ", ")) + "}";
}
function $(a, b) {
if (a.length === 0) {
return "";
}
var c = "\n" + b.prev + b.base;
return c + y.call(a, "," + c) + "\n" + b.prev;
}
function _(a, b) {
var c = O(a);
var d = [];
if (c) {
d.length = a.length;
for (var e = 0; e < a.length; e++) {
d[e] = S(a, e) ? b(a[e], a) : "";
}
}
var f;
var g = typeof C == "function" ? C(a) : [];
if (E) {
f = {};
for (var h = 0; h < g.length; h++) {
f["$" + g[h]] = g[h];
}
}
for (var i in a) {
if (S(a, i)) {
if ((!c || String(Number(i)) !== i || i >= a.length) && (!E || !(f["$" + i] instanceof Symbol))) {
if (w.call(/[^\w$]/, i)) {
d.push(b(i, a) + ": " + b(a[i], a));
} else {
d.push(i + ": " + b(a[i], a));
}
}
}
}
if (typeof C == "function") {
for (var j = 0; j < g.length; j++) {
if (G.call(a, g[j])) {
d.push("[" + b(g[j]) + "]: " + b(a[g[j]], a));
}
}
}
return d;
}
},
478: (a, b, c) => {
'use strict';
var d = c(210);
var e = c(924);
var f = c(631);
var g = d("%TypeError%");
var h = d("%WeakMap%", true);
var i = d("%Map%", true);
var j = e("WeakMap.prototype.get", true);
var k = e("WeakMap.prototype.set", true);
var l = e("WeakMap.prototype.has", true);
var m = e("Map.prototype.get", true);
var n = e("Map.prototype.set", true);
var o = e("Map.prototype.has", true);
function p(a, b) {
for (var c, d = a;
(c = d.next) !== null; d = c) {
if (c.key === b) {
d.next = c.next;
c.next = a.next;
a.next = c;
return c;
}
}
}
a.exports = function () {
var a;
var b;
var c;
var d = {
assert: function (a) {
if (!d.has(a)) {
throw new g("Side channel does not contain " + f(a));
}
},
get: function (d) {
if (h && d && (typeof d == "object" || typeof d == "function")) {
if (a) {
return j(a, d);
}
} else if (i) {
if (b) {
return m(b, d);
}
} else if (c) {
return function (a, b) {
var c = p(a, b);
return c && c.value;
}(c, d);
}
},
has: function (d) {
if (h && d && (typeof d == "object" || typeof d == "function")) {
if (a) {
return l(a, d);
}
} else if (i) {
if (b) {
return o(b, d);
}
} else if (c) {
return function (a, b) {
return !!p(a, b);
}(c, d);
}
return false;
},
set: function (d, e) {
if (h && d && (typeof d == "object" || typeof d == "function")) {
a ||= new h();
k(a, d, e);
} else if (i) {
b ||= new i();
n(b, d, e);
} else {
c ||= {
key: {},
next: null
};
(function (a, b, c) {
var d = p(a, b);
if (d) {
d.value = c;
} else {
a.next = {
key: b,
next: a.next,
value: c
};
}
})(c, d, e);
}
}
};
return d;
};
},
511: function (a, b, c) {
var d;
a = c.nmd(a);
(function (e) {
if (b) {
b.nodeType;
}
if (a) {
a.nodeType;
}
var f = typeof c.g == "object" && c.g;
if (f.global !== f && f.window !== f) {
f.self;
}
var g;
var h = 2147483647;
var i = 36;
var j = 26;
var k = 38;
var l = 700;
var m = /^xn--/;
var n = /[^\x20-\x7E]/;
var o = /[\x2E\u3002\uFF0E\uFF61]/g;
var p = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
};
var q = i - 1;
var r = Math.floor;
var s = String.fromCharCode;
function t(a) {
throw new RangeError(p[a]);
}
function u(a, b) {
for (var c = a.length, d = []; c--;) {
d[c] = b(a[c]);
}
return d;
}
function v(a, b) {
var c = a.split("@");
var d = "";
if (c.length > 1) {
d = c[0] + "@";
a = c[1];
}
return d + u((a = a.replace(o, ".")).split("."), b).join(".");
}
function w(a) {
for (var b, c, d = [], e = 0, f = a.length; e < f;) {
if ((b = a.charCodeAt(e++)) >= 55296 && b <= 56319 && e < f) {
if (((c = a.charCodeAt(e++)) & 64512) == 56320) {
d.push(((b & 1023) << 10) + (c & 1023) + 65536);
} else {
d.push(b);
e--;
}
} else {
d.push(b);
}
}
return d;
}
function x(a) {
return u(a, function (a) {
var b = "";
if (a > 65535) {
b += s((a -= 65536) >>> 10 & 1023 | 55296);
a = a & 1023 | 56320;
}
return b + s(a);
}).join("");
}
function y(a, b) {
return a + 22 + (a < 26) * 75 - ((b != 0) << 5);
}
function z(a, b, c) {
var d = 0;
a = c ? r(a / l) : a >> 1;
a += r(a / b);
for (; a > q * j >> 1; d += i) {
a = r(a / q);
}
return r(d + (q + 1) * a / (a + k));
}
function A(a) {
var b;
var c;
var d;
var e;
var f;
var g;
var k;
var l;
var m;
var n;
var o;
var p = [];
var q = a.length;
var s = 0;
var u = 128;
var v = 72;
if ((c = a.lastIndexOf("-")) < 0) {
c = 0;
}
d = 0;
for (; d < c; ++d) {
if (a.charCodeAt(d) >= 128) {
t("not-basic");
}
p.push(a.charCodeAt(d));
}
for (e = c > 0 ? c + 1 : 0; e < q;) {
f = s;
g = 1;
k = i;
for (; e >= q && t("invalid-input"), ((l = (o = a.charCodeAt(e++)) - 48 < 10 ? o - 22 : o - 65 < 26 ? o - 65 : o - 97 < 26 ? o - 97 : i) >= i || l > r((h - s) / g)) && t("overflow"), s += l * g, l >= (m = k <= v ? 1 : k >= v + j ? j : k - v); k += i) {
if (g > r(h / (n = i - m))) {
t("overflow");
}
g *= n;
}
v = z(s - f, b = p.length + 1, f == 0);
if (r(s / b) > h - u) {
t("overflow");
}
u += r(s / b);
s %= b;
p.splice(s++, 0, u);
}
return x(p);
}
function B(a) {
var b;
var c;
var d;
var e;
var f;
var g;
var k;
var l;
var m;
var n;
var o;
var p;
var q;
var u;
var v;
var x = [];
p = (a = w(a)).length;
b = 128;
c = 0;
f = 72;
g = 0;
for (; g < p; ++g) {
if ((o = a[g]) < 128) {
x.push(s(o));
}
}
d = e = x.length;
if (e) {
x.push("-");
}
while (d < p) {
k = h;
g = 0;
for (; g < p; ++g) {
if ((o = a[g]) >= b && o < k) {
k = o;
}
}
if (k - b > r((h - c) / (q = d + 1))) {
t("overflow");
}
c += (k - b) * q;
b = k;
g = 0;
for (; g < p; ++g) {
if ((o = a[g]) < b && ++c > h) {
t("overflow");
}
if (o == b) {
l = c;
m = i;
for (; l >= (n = m <= f ? 1 : m >= f + j ? j : m - f); m += i) {
v = l - n;
u = i - n;
x.push(s(y(n + v % u, 0)));
l = r(v / u);
}
x.push(s(y(l, 0)));
f = z(c, q, d == e);
c = 0;
++d;
}
}
++c;
++b;
}
return x.join("");
}
g = {
version: "1.4.1",
ucs2: {
decode: w,
encode: x
},
decode: A,
encode: B,
toASCII: function (a) {
return v(a, function (a) {
if (n.test(a)) {
return "xn--" + B(a);
} else {
return a;
}
});
},
toUnicode: function (a) {
return v(a, function (a) {
if (m.test(a)) {
return A(a.slice(4).toLowerCase());
} else {
return a;
}
});
}
};
if ((d = function () {
return g;
}.call(b, c, b, a)) !== undefined) {
a.exports = d;
}
})();
},
532: a => {
'use strict';
var b = String.prototype.replace;
var c = /%20/g;
var d = "RFC3986";
a.exports = {
default: d,
formatters: {
RFC1738: function (a) {
return b.call(a, c, "+");
},
RFC3986: function (a) {
return String(a);
}
},
RFC1738: "RFC1738",
RFC3986: d
};
},
984: (a, b, c) => {
'use strict';
var d = c(730);
var e = c(325);
var f = c(532);
a.exports = {
formats: f,
parse: e,
stringify: d
};
},
325: (a, b, c) => {
'use strict';
var d = c(368);
var e = Object.prototype.hasOwnProperty;
var f = Array.isArray;
var g = {
allowDots: false,
allowPrototypes: false,
allowSparse: false,
arrayLimit: 20,
charset: "utf-8",
charsetSentinel: false,
comma: false,
decoder: d.decode,
delimiter: "&",
depth: 5,
ignoreQueryPrefix: false,
interpretNumericEntities: false,
parameterLimit: 1000,
parseArrays: true,
plainObjects: false,
strictNullHandling: false
};
function h(a) {
return a.replace(/&#(\d+);/g, function (a, b) {
return String.fromCharCode(parseInt(b, 10));
});
}
function i(a, b) {
if (a && typeof a == "string" && b.comma && a.indexOf(",") > -1) {
return a.split(",");
} else {
return a;
}
}
function j(a, b, c, d) {
if (a) {
var f = c.allowDots ? a.replace(/\.([^.[]+)/g, "[$1]") : a;
var g = /(\[[^[\]]*])/g;
var h = c.depth > 0 && /(\[[^[\]]*])/.exec(f);
var j = h ? f.slice(0, h.index) : f;
var k = [];
if (j) {
if (!c.plainObjects && e.call(Object.prototype, j) && !c.allowPrototypes) {
return;
}
k.push(j);
}
for (var l = 0; c.depth > 0 && (h = g.exec(f)) !== null && l < c.depth;) {
l += 1;
if (!c.plainObjects && e.call(Object.prototype, h[1].slice(1, -1)) && !c.allowPrototypes) {
return;
}
k.push(h[1]);
}
if (h) {
k.push("[" + f.slice(h.index) + "]");
}
return function (a, b, c, d) {
for (var e = d ? b : i(b, c), f = a.length - 1; f >= 0; --f) {
var g;
var h = a[f];
if (h === "[]" && c.parseArrays) {
g = [].concat(e);
} else {
g = c.plainObjects ? Object.create(null) : {};
var j = h.charAt(0) === "[" && h.charAt(h.length - 1) === "]" ? h.slice(1, -1) : h;
var k = parseInt(j, 10);
if (c.parseArrays || j !== "") {
if (!isNaN(k) && h !== j && String(k) === j && k >= 0 && c.parseArrays && k <= c.arrayLimit) {
(g = [])[k] = e;
} else if (j !== "__proto__") {
g[j] = e;
}
} else {
g = {
0: e
};
}
}
e = g;
}
return e;
}(k, b, c, d);
}
}
a.exports = function (a, b) {
var c = function (a) {
if (!a) {
return g;
}
if (a.decoder !== null && a.decoder !== undefined && typeof a.decoder != "function") {
throw new TypeError("Decoder has to be a function.");
}
if (a.charset !== undefined && a.charset !== "utf-8" && a.charset !== "iso-8859-1") {
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
}
var b = a.charset === undefined ? g.charset : a.charset;
return {
allowDots: a.allowDots === undefined ? g.allowDots : !!a.allowDots,
allowPrototypes: typeof a.allowPrototypes == "boolean" ? a.allowPrototypes : g.allowPrototypes,
allowSparse: typeof a.allowSparse == "boolean" ? a.allowSparse : g.allowSparse,
arrayLimit: typeof a.arrayLimit == "number" ? a.arrayLimit : g.arrayLimit,
charset: b,
charsetSentinel: typeof a.charsetSentinel == "boolean" ? a.charsetSentinel : g.charsetSentinel,
comma: typeof a.comma == "boolean" ? a.comma : g.comma,
decoder: typeof a.decoder == "function" ? a.decoder : g.decoder,
delimiter: typeof a.delimiter == "string" || d.isRegExp(a.delimiter) ? a.delimiter : g.delimiter,
depth: typeof a.depth == "number" || a.depth === false ? +a.depth : g.depth,
ignoreQueryPrefix: a.ignoreQueryPrefix === true,
interpretNumericEntities: typeof a.interpretNumericEntities == "boolean" ? a.interpretNumericEntities : g.interpretNumericEntities,
parameterLimit: typeof a.parameterLimit == "number" ? a.parameterLimit : g.parameterLimit,
parseArrays: a.parseArrays !== false,
plainObjects: typeof a.plainObjects == "boolean" ? a.plainObjects : g.plainObjects,
strictNullHandling: typeof a.strictNullHandling == "boolean" ? a.strictNullHandling : g.strictNullHandling
};
}(b);
if (a === "" || a == null) {
if (c.plainObjects) {
return Object.create(null);
} else {
return {};
}
}
for (var k = typeof a == "string" ? function (a, b) {
var c;
var j = {
"__proto__": null
};
var k = b.ignoreQueryPrefix ? a.replace(/^\?/, "") : a;
var l = b.parameterLimit === Infinity ? undefined : b.parameterLimit;
var m = k.split(b.delimiter, l);
var n = -1;
var o = b.charset;
if (b.charsetSentinel) {
for (c = 0; c < m.length; ++c) {
if (m[c].indexOf("utf8=") === 0) {
if (m[c] === "utf8=%E2%9C%93") {
o = "utf-8";
} else if (m[c] === "utf8=%26%2310003%3B") {
o = "iso-8859-1";
}
n = c;
c = m.length;
}
}
}
for (c = 0; c < m.length; ++c) {
if (c !== n) {
var p;
var q;
var r = m[c];
var s = r.indexOf("]=");
var t = s === -1 ? r.indexOf("=") : s + 1;
if (t === -1) {
p = b.decoder(r, g.decoder, o, "key");
q = b.strictNullHandling ? null : "";
} else {
p = b.decoder(r.slice(0, t), g.decoder, o, "key");
q = d.maybeMap(i(r.slice(t + 1), b), function (a) {
return b.decoder(a, g.decoder, o, "value");
});
}
if (q && b.interpretNumericEntities && o === "iso-8859-1") {
q = h(q);
}
if (r.indexOf("[]=") > -1) {
q = f(q) ? [q] : q;
}
if (e.call(j, p)) {
j[p] = d.combine(j[p], q);
} else {
j[p] = q;
}
}
}
return j;
}(a, c) : a, l = c.plainObjects ? Object.create(null) : {}, m = Object.keys(k), n = 0; n < m.length; ++n) {
var o = m[n];
var p = j(o, k[o], c, typeof a == "string");
l = d.merge(l, p, c);
}
if (c.allowSparse === true) {
return l;
} else {
return d.compact(l);
}
};
},
730: (a, b, c) => {
'use strict';
var d = c(478);
var e = c(368);
var f = c(532);
var g = Object.prototype.hasOwnProperty;
var h = {
brackets: function (a) {
return a + "[]";
},
comma: "comma",
indices: function (a, b) {
return a + "[" + b + "]";
},
repeat: function (a) {
return a;
}
};
var i = Array.isArray;
var j = Array.prototype.push;
function k(a, b) {
j.apply(a, i(b) ? b : [b]);
}
var l = Date.prototype.toISOString;
var m = f.default;
var n = {
addQueryPrefix: false,
allowDots: false,
charset: "utf-8",
charsetSentinel: false,
delimiter: "&",
encode: true,
encoder: e.encode,
encodeValuesOnly: false,
format: m,
formatter: f.formatters[m],
indices: false,
serializeDate: function (a) {
return l.call(a);
},
skipNulls: false,
strictNullHandling: false
};
var o = {};
var p = function w(a, b, c, f, g, h, j, l, m, p, q, r, s, t, u, v) {
for (var x, y = a, z = v, A = 0, B = false;
(z = z.get(o)) !== undefined && !B;) {
var C = z.get(a);
A += 1;
if (C !== undefined) {
if (C === A) {
throw new RangeError("Cyclic object value");
}
B = true;
}
if (z.get(o) === undefined) {
A = 0;
}
}
if (typeof l == "function") {
y = l(b, y);
} else if (y instanceof Date) {
y = q(y);
} else if (c === "comma" && i(y)) {
y = e.maybeMap(y, function (a) {
if (a instanceof Date) {
return q(a);
} else {
return a;
}
});
}
if (y === null) {
if (g) {
if (j && !t) {
return j(b, n.encoder, u, "key", r);
} else {
return b;
}
}
y = "";
}
if (typeof (x = y) == "string" || typeof x == "number" || typeof x == "boolean" || typeof x == "symbol" || typeof x == "bigint" || e.isBuffer(y)) {
if (j) {
return [s(t ? b : j(b, n.encoder, u, "key", r)) + "=" + s(j(y, n.encoder, u, "value", r))];
} else {
return [s(b) + "=" + s(String(y))];
}
}
var D;
var E = [];
if (y === undefined) {
return E;
}
if (c === "comma" && i(y)) {
if (t && j) {
y = e.maybeMap(y, j);
}
D = [{
value: y.length > 0 ? y.join(",") || null : undefined
}];
} else if (i(l)) {
D = l;
} else {
var F = Object.keys(y);
D = m ? F.sort(m) : F;
}
for (var G = f && i(y) && y.length === 1 ? b + "[]" : b, H = 0; H < D.length; ++H) {
var I = D[H];
var J = typeof I == "object" && I.value !== undefined ? I.value : y[I];
if (!h || J !== null) {
var K = i(y) ? typeof c == "function" ? c(G, I) : G : G + (p ? "." + I : "[" + I + "]");
v.set(a, A);
var L = d();
L.set(o, v);
k(E, w(J, K, c, f, g, h, c === "comma" && t && i(y) ? null : j, l, m, p, q, r, s, t, u, L));
}
}
return E;
};
a.exports = function (a, b) {
var c;
var e = a;
var j = function (a) {
if (!a) {
return n;
}
if (a.encoder !== null && a.encoder !== undefined && typeof a.encoder != "function") {
throw new TypeError("Encoder has to be a function.");
}
var b = a.charset || n.charset;
if (a.charset !== undefined && a.charset !== "utf-8" && a.charset !== "iso-8859-1") {
throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");
}
var c = f.default;
if (a.format !== undefined) {
if (!g.call(f.formatters, a.format)) {
throw new TypeError("Unknown format option provided.");
}
c = a.format;
}
var d = f.formatters[c];
var e = n.filter;
if (typeof a.filter == "function" || i(a.filter)) {
e = a.filter;
}
return {
addQueryPrefix: typeof a.addQueryPrefix == "boolean" ? a.addQueryPrefix : n.addQueryPrefix,
allowDots: a.allowDots === undefined ? n.allowDots : !!a.allowDots,
charset: b,
charsetSentinel: typeof a.charsetSentinel == "boolean" ? a.charsetSentinel : n.charsetSentinel,
delimiter: a.delimiter === undefined ? n.delimiter : a.delimiter,
encode: typeof a.encode == "boolean" ? a.encode : n.encode,
encoder: typeof a.encoder == "function" ? a.encoder : n.encoder,
encodeValuesOnly: typeof a.encodeValuesOnly == "boolean" ? a.encodeValuesOnly : n.encodeValuesOnly,
filter: e,
format: c,
formatter: d,
serializeDate: typeof a.serializeDate == "function" ? a.serializeDate : n.serializeDate,
skipNulls: typeof a.skipNulls == "boolean" ? a.skipNulls : n.skipNulls,
sort: typeof a.sort == "function" ? a.sort : null,
strictNullHandling: typeof a.strictNullHandling == "boolean" ? a.strictNullHandling : n.strictNullHandling
};
}(b);
if (typeof j.filter == "function") {
e = (0, j.filter)("", e);
} else if (i(j.filter)) {
c = j.filter;
}
var l;
var m = [];
if (typeof e != "object" || e === null) {
return "";
}
l = b && b.arrayFormat in h ? b.arrayFormat : b && "indices" in b ? b.indices ? "indices" : "repeat" : "indices";
var o = h[l];
if (b && "commaRoundTrip" in b && typeof b.commaRoundTrip != "boolean") {
throw new TypeError("`commaRoundTrip` must be a boolean, or absent");
}
var q = o === "comma" && b && b.commaRoundTrip;
c ||= Object.keys(e);
if (j.sort) {
c.sort(j.sort);
}
for (var r = d(), s = 0; s < c.length; ++s) {
var t = c[s];
if (!j.skipNulls || e[t] !== null) {
k(m, p(e[t], t, o, q, j.strictNullHandling, j.skipNulls, j.encode ? j.encoder : null, j.filter, j.sort, j.allowDots, j.serializeDate, j.format, j.formatter, j.encodeValuesOnly, j.charset, r));
}
}
var u = m.join(j.delimiter);
var v = j.addQueryPrefix === true ? "?" : "";
if (j.charsetSentinel) {
if (j.charset === "iso-8859-1") {
v += "utf8=%26%2310003%3B&";
} else {
v += "utf8=%E2%9C%93&";
}
}
if (u.length > 0) {
return v + u;
} else {
return "";
}
};
},
368: (a, b, c) => {
'use strict';
var d = c(532);
var e = Object.prototype.hasOwnProperty;
var f = Array.isArray;
var g = function () {
for (var a = [], b = 0; b < 256; ++b) {
a.push("%" + ((b < 16 ? "0" : "") + b.toString(16)).toUpperCase());
}
return a;
}();
function h(a, b) {
for (var c = b && b.plainObjects ? Object.create(null) : {}, d = 0; d < a.length; ++d) {
if (a[d] !== undefined) {
c[d] = a[d];
}
}
return c;
}
a.exports = {
arrayToObject: h,
assign: function (a, b) {
return Object.keys(b).reduce(function (a, c) {
a[c] = b[c];
return a;
}, a);
},
combine: function (a, b) {
return [].concat(a, b);
},
compact: function (a) {
for (var b = [{
obj: {
o: a
},
prop: "o"
}], c = [], d = 0; d < b.length; ++d) {
for (var e = b[d], g = e.obj[e.prop], h = Object.keys(g), i = 0; i < h.length; ++i) {
var j = h[i];
var k = g[j];
if (typeof k == "object" && k !== null && c.indexOf(k) === -1) {
b.push({
obj: g,
prop: j
});
c.push(k);
}
}
}
(function (a) {
while (a.length > 1) {
var b = a.pop();
var c = b.obj[b.prop];
if (f(c)) {
for (var d = [], e = 0; e < c.length; ++e) {
if (c[e] !== undefined) {
d.push(c[e]);
}
}
b.obj[b.prop] = d;
}
}
})(b);
return a;
},
decode: function (a, b, c) {
var d = a.replace(/\+/g, " ");
if (c === "iso-8859-1") {
return d.replace(/%[0-9a-f]{2}/gi, unescape);
}
try {
return decodeURIComponent(d);
} catch (a) {
return d;
}
},
encode: function (a, b, c, e, f) {
if (a.length === 0) {
return a;
}
var h = a;
if (typeof a == "symbol") {
h = Symbol.prototype.toString.call(a);
} else if (typeof a != "string") {
h = String(a);
}
if (c === "iso-8859-1") {
return escape(h).replace(/%u[0-9a-f]{4}/gi, function (a) {
return "%26%23" + parseInt(a.slice(2), 16) + "%3B";
});
}
for (var i = "", j = 0; j < h.length; ++j) {
var k = h.charCodeAt(j);
if (k === 45 || k === 46 || k === 95 || k === 126 || k >= 48 && k <= 57 || k >= 65 && k <= 90 || k >= 97 && k <= 122 || f === d.RFC1738 && (k === 40 || k === 41)) {
i += h.charAt(j);
} else if (k < 128) {
i += g[k];
} else if (k < 2048) {
i += g[k >> 6 | 192] + g[k & 63 | 128];
} else if (k < 55296 || k >= 57344) {
i += g[k >> 12 | 224] + g[k >> 6 & 63 | 128] + g[k & 63 | 128];
} else {
j += 1;
k = 65536 + ((k & 1023) << 10 | h.charCodeAt(j) & 1023);
i += g[k >> 18 | 240] + g[k >> 12 & 63 | 128] + g[k >> 6 & 63 | 128] + g[k & 63 | 128];
}
}
return i;
},
isBuffer: function (a) {
return !!a && typeof a == "object" && !!a.constructor && !!a.constructor.isBuffer && !!a.constructor.isBuffer(a);
},
isRegExp: function (a) {
return Object.prototype.toString.call(a) === "[object RegExp]";
},
maybeMap: function (a, b) {
if (f(a)) {
for (var c = [], d = 0; d < a.length; d += 1) {
c.push(b(a[d]));
}
return c;
}
return b(a);
},
merge: function d(a, b, c) {
if (!b) {
return a;
}
if (typeof b != "object") {
if (f(a)) {
a.push(b);
} else {
if (!a || typeof a != "object") {
return [a, b];
}
if (c && (c.plainObjects || c.allowPrototypes) || !e.call(Object.prototype, b)) {
a[b] = true;
}
}
return a;
}
if (!a || typeof a != "object") {
return [a].concat(b);
}
var g = a;
if (f(a) && !f(b)) {
g = h(a, c);
}
if (f(a) && f(b)) {
b.forEach(function (b, f) {
if (e.call(a, f)) {
var g = a[f];
if (g && typeof g == "object" && b && typeof b == "object") {
a[f] = d(g, b, c);
} else {
a.push(b);
}
} else {
a[f] = b;
}
});
return a;
} else {
return Object.keys(b).reduce(function (a, f) {
var g = b[f];
if (e.call(a, f)) {
a[f] = d(a[f], g, c);
} else {
a[f] = g;
}
return a;
}, g);
}
}
};
},
575: (a, b, c) => {
'use strict';
var d = c(511);
function e() {
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 f = /^([a-z0-9.+-]+:)/i;
var g = /:[0-9]*$/;
var h = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/;
var i = ["{", "}", "|", "\\", "^", "`"].concat(["<", ">", "\"", "`", " ", "\r", "\n", "\t"]);
var j = ["'"].concat(i);
var k = ["%", "/", "?", ";", "#"].concat(j);
var l = ["/", "?", "#"];
var m = /^[+a-z0-9A-Z_-]{0,63}$/;
var n = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;
var o = {
javascript: true,
"javascript:": true
};
var p = {
javascript: true,
"javascript:": true
};
var q = {
http: true,
https: true,
ftp: true,
gopher: true,
file: true,
"http:": true,
"https:": true,
"ftp:": true,
"gopher:": true,
"file:": true
};
var r = c(984);
function s(a, b, c) {
if (a && typeof a == "object" && a instanceof e) {
return a;
}
var d = new e();
d.parse(a, b, c);
return d;
}
e.prototype.parse = function (a, b, c) {
if (typeof a != "string") {
throw new TypeError("Parameter 'url' must be a string, not " + typeof a);
}
var e = a.indexOf("?");
var g = e !== -1 && e < a.indexOf("#") ? "?" : "#";
var i = a.split(g);
i[0] = i[0].replace(/\\/g, "/");
var s = a = i.join(g);
s = s.trim();
if (!c && a.split("#").length === 1) {
var t = h.exec(s);
if (t) {
this.path = s;
this.href = s;
this.pathname = t[1];
if (t[2]) {
this.search = t[2];
this.query = b ? r.parse(this.search.substr(1)) : this.search.substr(1);
} else if (b) {
this.search = "";
this.query = {};
}
return this;
}
}
var u = f.exec(s);
if (u) {
var v = (u = u[0]).toLowerCase();
this.protocol = v;
s = s.substr(u.length);
}
if (c || u || s.match(/^\/\/[^@/]+@[^@/]+/)) {
var w = s.substr(0, 2) === "//";
if (!!w && (!u || !p[u])) {
s = s.substr(2);
this.slashes = true;
}
}
if (!p[u] && (w || u && !q[u])) {
for (var x, y, z = -1, A = 0; A < l.length; A++) {
if ((B = s.indexOf(l[A])) !== -1 && (z === -1 || B < z)) {
z = B;
}
}
if ((y = z === -1 ? s.lastIndexOf("@") : s.lastIndexOf("@", z)) !== -1) {
x = s.slice(0, y);
s = s.slice(y + 1);
this.auth = decodeURIComponent(x);
}
z = -1;
A = 0;
for (; A < k.length; A++) {
var B;
if ((B = s.indexOf(k[A])) !== -1 && (z === -1 || B < z)) {
z = B;
}
}
if (z === -1) {
z = s.length;
}
this.host = s.slice(0, z);
s = s.slice(z);
this.parseHost();
this.hostname = this.hostname || "";
var C = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
if (!C) {
for (var D = this.hostname.split(/\./), E = (A = 0, D.length); A < E; A++) {
var F = D[A];
if (F && !F.match(m)) {
for (var G = "", H = 0, I = F.length; H < I; H++) {
if (F.charCodeAt(H) > 127) {
G += "x";
} else {
G += F[H];
}
}
if (!G.match(m)) {
var J = D.slice(0, A);
var K = D.slice(A + 1);
var L = F.match(n);
if (L) {
J.push(L[1]);
K.unshift(L[2]);
}
if (K.length) {
s = "/" + K.join(".") + s;
}
this.hostname = J.join(".");
break;
}
}
}
}
if (this.hostname.length > 255) {
this.hostname = "";
} else {
this.hostname = this.hostname.toLowerCase();
}
if (!C) {
this.hostname = d.toASCII(this.hostname);
}
var M = this.port ? ":" + this.port : "";
var N = this.hostname || "";
this.host = N + M;
this.href += this.host;
if (C) {
this.hostname = this.hostname.substr(1, this.hostname.length - 2);
if (s[0] !== "/") {
s = "/" + s;
}
}
}
if (!o[v]) {
A = 0;
E = j.length;
A = 0;
E = j.length;
for (; A < E; A++) {
var O = j[A];
if (s.indexOf(O) !== -1) {
var P = encodeURIComponent(O);
if (P === O) {
P = escape(O);
}
s = s.split(O).join(P);
}
}
}
var Q = s.indexOf("#");
if (Q !== -1) {
this.hash = s.substr(Q);
s = s.slice(0, Q);
}
var R = s.indexOf("?");
if (R !== -1) {
this.search = s.substr(R);
this.query = s.substr(R + 1);
if (b) {
this.query = r.parse(this.query);
}
s = s.slice(0, R);
} else if (b) {
this.search = "";
this.query = {};
}
if (s) {
this.pathname = s;
}
if (q[v] && this.hostname && !this.pathname) {
this.pathname = "/";
}
if (this.pathname || this.search) {
M = this.pathname || "";
var S = this.search || "";
this.path = M + S;
}
this.href = this.format();
return this;
};
e.prototype.format = function () {
var a = this.auth || "";
if (a) {
a = (a = encodeURIComponent(a)).replace(/%3A/i, ":");
a += "@";
}
var b = this.protocol || "";
var c = this.pathname || "";
var d = this.hash || "";
var e = false;
var f = "";
if (this.host) {
e = a + this.host;
} else if (this.hostname) {
e = a + (this.hostname.indexOf(":") === -1 ? this.hostname : "[" + this.hostname + "]");
if (this.port) {
e += ":" + this.port;
}
}
if (this.query && typeof this.query == "object" && Object.keys(this.query).length) {
f = r.stringify(this.query, {
arrayFormat: "repeat",
addQueryPrefix: false
});
}
var g = this.search || f && "?" + f || "";
if (b && b.substr(-1) !== ":") {
b += ":";
}
if (this.slashes || (!b || q[b]) && e !== false) {
e = "//" + (e || "");
if (c && c.charAt(0) !== "/") {
c = "/" + c;
}
} else {
e ||= "";
}
if (d && d.charAt(0) !== "#") {
d = "#" + d;
}
if (g && g.charAt(0) !== "?") {
g = "?" + g;
}
return b + e + (c = c.replace(/[?#]/g, function (a) {
return encodeURIComponent(a);
})) + (g = g.replace("#", "%23")) + d;
};
e.prototype.resolve = function (a) {
return this.resolveObject(s(a, false, true)).format();
};
e.prototype.resolveObject = function (a) {
if (typeof a == "string") {
var b = new e();
b.parse(a, false, true);
a = b;
}
for (var c = new e(), d = Object.keys(this), f = 0; f < d.length; f++) {
var g = d[f];
c[g] = this[g];
}
c.hash = a.hash;
if (a.href === "") {
c.href = c.format();
return c;
}
if (a.slashes && !a.protocol) {
for (var h = Object.keys(a), i = 0; i < h.length; i++) {
var j = h[i];
if (j !== "protocol") {
c[j] = a[j];
}
}
if (q[c.protocol] && c.hostname && !c.pathname) {
c.pathname = "/";
c.path = c.pathname;
}
c.href = c.format();
return c;
}
if (a.protocol && a.protocol !== c.protocol) {
if (!q[a.protocol]) {
for (var k = Object.keys(a), l = 0; l < k.length; l++) {
var m = k[l];
c[m] = a[m];
}
c.href = c.format();
return c;
}
c.protocol = a.protocol;
if (a.host || p[a.protocol]) {
c.pathname = a.pathname;
} else {
for (var n = (a.pathname || "").split("/"); n.length && !(a.host = n.shift()););
a.host ||= "";
a.hostname ||= "";
if (n[0] !== "") {
n.unshift("");
}
if (n.length < 2) {
n.unshift("");
}
c.pathname = n.join("/");
}
c.search = a.search;
c.query = a.query;
c.host = a.host || "";
c.auth = a.auth;
c.hostname = a.hostname || a.host;
c.port = a.port;
if (c.pathname || c.search) {
var o = c.pathname || "";
var r = c.search || "";
c.path = o + r;
}
c.slashes = c.slashes || a.slashes;
c.href = c.format();
return c;
}
var s = c.pathname && c.pathname.charAt(0) === "/";
var t = a.host || a.pathname && a.pathname.charAt(0) === "/";
var u = t || s || c.host && a.pathname;
var v = u;
var w = c.pathname && c.pathname.split("/") || [];
n = a.pathname && a.pathname.split("/") || [];
var x = c.protocol && !q[c.protocol];
if (x) {
c.hostname = "";
c.port = null;
if (c.host) {
if (w[0] === "") {
w[0] = c.host;
} else {
w.unshift(c.host);
}
}
c.host = "";
if (a.protocol) {
a.hostname = null;
a.port = null;
if (a.host) {
if (n[0] === "") {
n[0] = a.host;
} else {
n.unshift(a.host);
}
}
a.host = null;
}
u = u && (n[0] === "" || w[0] === "");
}
if (t) {
c.host = a.host || a.host === "" ? a.host : c.host;
c.hostname = a.hostname || a.hostname === "" ? a.hostname : c.hostname;
c.search = a.search;
c.query = a.query;
w = n;
} else if (n.length) {
w ||= [];
w.pop();
w = w.concat(n);
c.search = a.search;
c.query = a.query;
} else if (a.search != null) {
if (x) {
c.host = w.shift();
c.hostname = c.host;
if (C = !!c.host && c.host.indexOf("@") > 0 && c.host.split("@")) {
c.auth = C.shift();
c.hostname = C.shift();
c.host = c.hostname;
}
}
c.search = a.search;
c.query = a.query;
if (c.pathname !== null || c.search !== null) {
c.path = (c.pathname ? c.pathname : "") + (c.search ? c.search : "");
}
c.href = c.format();
return c;
}
if (!w.length) {
c.pathname = null;
if (c.search) {
c.path = "/" + c.search;
} else {
c.path = null;
}
c.href = c.format();
return c;
}
for (var y = w.slice(-1)[0], z = (c.host || a.host || w.length > 1) && (y === "." || y === "..") || y === "", A = 0, B = w.length; B >= 0; B--) {
if ((y = w[B]) === ".") {
w.splice(B, 1);
} else if (y === "..") {
w.splice(B, 1);
A++;
} else if (A) {
w.splice(B, 1);
A--;
}
}
if (!u && !v) {
for (; A--; A) {
w.unshift("..");
}
}
if (!!u && w[0] !== "" && (!w[0] || w[0].charAt(0) !== "/")) {
w.unshift("");
}
if (z && w.join("/").substr(-1) !== "/") {
w.push("");
}
var C;
var D = w[0] === "" || w[0] && w[0].charAt(0) === "/";
if (x) {
c.hostname = D ? "" : w.length ? w.shift() : "";
c.host = c.hostname;
if (C = !!c.host && c.host.indexOf("@") > 0 && c.host.split("@")) {
c.auth = C.shift();
c.hostname = C.shift();
c.host = c.hostname;
}
}
if ((u = u || c.host && w.length) && !D) {
w.unshift("");
}
if (w.length > 0) {
c.pathname = w.join("/");
} else {
c.pathname = null;
c.path = null;
}
if (c.pathname !== null || c.search !== null) {
c.path = (c.pathname ? c.pathname : "") + (c.search ? c.search : "");
}
c.auth = a.auth || c.auth;
c.slashes = c.slashes || a.slashes;
c.href = c.format();
return c;
};
e.prototype.parseHost = function () {
var a = this.host;
var b = g.exec(a);
if (b) {
if ((b = b[0]) !== ":") {
this.port = b.substr(1);
}
a = a.substr(0, a.length - b.length);
}
if (a) {
this.hostname = a;
}
};
b.Qc = s;
b.DB = function (a, b) {
return s(a, false, true).resolve(b);
};
b.WU = function (a) {
if (typeof a == "string") {
a = s(a);
}
if (a instanceof e) {
return a.format();
} else {
return e.prototype.format.call(a);
}
};
},
241: (a, b, c) => {
'use strict';
c.d(b, {
c: () => f
});
var d = c(911);
var e = c(42);
class f {
constructor() {
this.visible = false;
this.ticks = 0;
this.averageServerFrameTime = 0;
this.lastByteSizes = [];
}
init() {
document.body.insertAdjacentHTML("beforeend", "<div id=\"hud-debug-container\" class=\"hud-debug-container\"></div>");
this.stats = new e.j();
this.stats.domElement.addEventListener("mousedown", this.onMouseClick);
this.stats.domElement.style = "position: relative; transform: scale(1.5); transform-origin: 0 0; cursor:pointer; width: min-content;";
document.getElementById("hud-debug-container").appendChild(this.stats.domElement);
this.debugElem = document.createElement("div");
this.debugElem.id = "hud-debug";
this.debugElem.className = "hud-debug";
this.debugElem.style = "color:#ffffff;font-family:sans-serif;background-color:rgba(0,0,0,0.8); margin-top: 30px;";
document.getElementById("hud-debug-container").appendChild(this.debugElem);
this.debugElem.addEventListener("mousedown", this.onMouseClick);
d.l.eventEmitter.on("RendererUpdated", this.onRendererTick.bind(this));
d.l.eventEmitter.on("117Up", this.onKeyRelease.bind(this));
d.l.eventEmitter.on("EntityUpdate", this.onEntityUpdate.bind(this));
if (this.visible) {
this.show();
} else {
this.hide();
}
}
onEntityUpdate(a) {
this.averageServerFrameTime = a.averageServerFrameTime;
this.lastByteSize = a.byteSize;
this.lastByteSizes.push(this.lastByteSize);
if (this.lastByteSizes.length > 1000 / d.l.renderer.replicator.msPerTick) {
this.lastByteSizes.shift();
}
}
onMouseClick(a) {
a.stopPropagation();
a.preventDefault();
}
begin() {
if (this.stats && this.visible) {
this.stats.begin();
}
}
end() {
if (this.stats && this.visible) {
this.stats.end();
}
}
show() {
this.visible = true;
document.getElementById("hud-debug-container").style.display = "block";
}
hide() {
this.visible = false;
document.getElementById("hud-debug-container").style.display = "none";
}
onRendererTick() {
if (!this.visible) {
return;
}
if (this.ticks >= 20) {
this.ticks = 0;
}
this.ticks++;
if (this.ticks % 20 != 0) {
return;
}
const a = d.l.renderer.world.entities[d.l.renderer.world.localPlayer]?.targetTick;
this.debugElem.innerHTML = "\n Ping: " + d.l.network.getPing() + " ms<br>\n FPS: " + Math.round(d.l.renderer.replicator.getFps()) + "<br>\n X: " + a?.position.x + "<br>\n Y: " + a?.position.y + "<br>\n Server Uptime: " + Math.floor(d.l.renderer.replicator.getServerTime()).toLocaleString() + " ms<br>\n Entities shared with client: " + Object.keys(d.l.renderer.world.entities).length + "<br>\n Tick flow rate: " + Math.floor(d.l.network.entityUpdateTimeDelta) + " ms<br>\n Average server frame time: " + this.averageServerFrameTime + " ms<br>\n Last byte size: " + this.lastByteSize + " bytes (" + g(eval(this.lastByteSizes.join("+")), 3) + "b/sec)<br>\n Frame stutters: " + d.l.renderer.replicator.frameStutters + "<br>\n ";
}
onKeyRelease() {
if (this.visible) {
this.hide();
} else {
this.show();
}
}
}
const g = (a, b) => {
const c = ["k", "m", "g"];
b = Math.pow(10, b);
for (let d = c.length - 1; d >= 0; d--) {
const e = Math.pow(10, (d + 1) * 3);
if (e <= a) {
if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) {
a = 1;
d++;
}
a += " " + c[d];
break;
}
}
return a;
};
},
911: (a, b, c) => {
'use strict';
c.d(b, {
l: () => Jj
});
class d {
constructor(a) {
this.element = a;
}
show() {
this.element.style.display = "block";
}
hide() {
this.element.style.display = "none";
}
isVisible() {
return window.getComputedStyle(this.element).display !== "none";
}
}
class e extends d {
constructor() {
super(document.getElementById("hud-intro"));
this.nameElem = this.element.querySelector(".hud-intro-name");
this.serversElem = this.element.querySelector(".hud-intro-servers");
this.playElem = this.element.querySelector(".hud-intro-play");
this.errorElem = this.element.querySelector(".hud-intro-error");
this.partyKey = "";
this.socketIntentionallyClosed = false;
window.addEventListener("load", this.onPageLoad.bind(this));
const a = ["tree", "stone"];
const b = Math.floor(Math.random() * 15) + 7;
for (let c = 0; c < b; c++) {
let b = document.createElement("span");
b.className = "hud-intro-" + a[Math.floor(Math.random() * a.length)] + "-" + (Math.floor(Math.random() * 2) + 1);
b.style = "top:" + Math.floor(Math.random() * 100) + "%;\n left: " + Math.floor(Math.random() * 100) + "%;\n transform: rotate(" + Math.floor(Math.random() * 360) + "deg);";
this.element.appendChild(b);
}
this.servers = JSON.parse(window.servers);
if (this.servers.length == 0) {
this.servers = [{
id: "v1001",
country: "Local",
city: "Local",
status: "Low"
}];
}
let c = {};
for (let a of this.servers) {
if (!(a.country in c)) {
c[a.country] = {};
}
c[a.country][a.id] = a;
}
for (let a in c) {
let b = document.createElement("optgroup");
b.label = a;
this.serversElem.appendChild(b);
let d = 1;
for (let e in c[a]) {
const f = document.createElement("option");
f.value = e;
const g = c[a][e];
f.textContent = a + " (" + g.city + ") #" + d++ + " [" + g.status + "]";
b.appendChild(f);
}
}
this.playElem.addEventListener("mouseup", this.connect.bind(this));
this.nameElem.addEventListener("keyup", a => {
if (a.key == "Enter") {
this.connect();
}
});
if (document.location.hash !== "") {
const [a, b] = document.location.hash.substring(2).split("/");
this.partyKey = b || "";
if (this.servers.find(b => b.id == a) !== undefined) {
this.serversElem.querySelector("option[value=" + a + "]").setAttribute("selected", "true");
}
}
if (window.storage.getItem("settings-preload") == null) {
window.storage.setItem("settings-preload", "true");
}
document.getElementsByClassName("hud-settings-preload")[0].checked = window.storage.getItem("settings-preload") === "true";
}
init() {
Jj.eventEmitter.on("SocketClosed", this.onSocketClosed.bind(this));
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorldResponse.bind(this));
}
connect() {
if (!this.playElem.classList.contains("disabled")) {
this.playElem.innerHTML = "<span class='hud-loading'></span>";
Jj.network.setConnectionData(this.nameElem.value, this.partyKey, this.servers.find(a => a.id == this.serversElem.value));
Jj.network.connect();
}
}
onPageLoad() {
this.nameElem.value = window.storage.getItem("displayName") || "";
}
onSocketClosed() {
if (this.socketIntentionallyClosed !== true) {
if (!Jj.getInWorld()) {
this.playElem.innerHTML = "Play";
this.serversElem.classList.add("has-error");
this.errorElem.style.display = "block";
this.errorElem.innerText = "You were not able to connect to this server for unknown reasons. Check your internet connection then try again.";
}
} else {
this.socketIntentionallyClosed = false;
}
}
onEnterWorldResponse(a) {
window.storage.setItem("displayName", a.name);
this.hide();
}
setFailure(a) {
this.socketIntentionallyClosed = true;
let b = "Unknown reason.";
if (a.reason) {
switch (a.reason) {
case "MaxPlayerCount":
b = "This server is currently full. Please try again later or select another server.";
break;
case "MaxIpLimit":
b = "You've reached the maximum number of tabs.";
}
}
this.playElem.innerHTML = "Play";
this.errorElem.innerText = b;
this.serversElem.classList.add("has-error");
this.errorElem.style.display = "block";
}
}
class f extends d {
constructor() {
super(document.getElementsByClassName("hud-intro-leaderboard")[0]);
this.leaderboardToggle = document.getElementsByClassName("hud-intro-leaderboard-toggle")[0];
this.leaderboardWrapper = this.element.querySelector(".hud-intro-leaderboard-wrapper");
this.categoryElem = this.element.querySelector(".hud-intro-leaderboard-category");
this.timeElem = this.element.querySelector(".hud-intro-leaderboard-time");
this.leaderboardToggle.addEventListener("click", () => {
this.element.classList.add("visible");
this.leaderboardToggle.style.display = "none";
});
this.element.querySelector(".hud-grid-exit").addEventListener("click", () => {
this.element.classList.remove("visible");
this.leaderboardToggle.style.display = "block";
});
this.categoryElem.addEventListener("change", this.requestLeaderboard.bind(this));
this.timeElem.addEventListener("change", this.requestLeaderboard.bind(this));
this.requestLeaderboard();
this.element.addEventListener("click", a => {
if (a.target == this.element) {
this.element.classList.remove("visible");
this.leaderboardToggle.style.display = "block";
}
});
}
requestLeaderboard() {
this.leaderboardWrapper.innerHTML = "<div class='hud-loading'></div>";
const a = new XMLHttpRequest();
a.open("GET", "http://zombia.io/leaderboard/data?category=" + this.categoryElem.value + "&time=" + this.timeElem.value);
a.onreadystatechange = () => {
if (a.readyState !== 4) {
return;
}
const b = JSON.parse(a.responseText);
if (b.length == 0) {
this.leaderboardWrapper.innerHTML = "<span>We couldn't find any entries with that query.</span>";
return;
}
let c = "<div class='hud-intro-leaderboard-results'>";
const d = new Intl.ListFormat("en", {
style: "long",
type: "conjunction"
});
for (let a = 0; a < b.length; a++) {
const e = b[a];
if (this.categoryElem.value == "wave") {
c += "<div class=\"hud-intro-leaderboard-result\"><strong style=\"float: left; font-style: italic;\">" + (a + 1) + "</strong><div>" + d.format(e.players) + " — <strong>" + e.wave.toLocaleString() + "</strong></div></div>";
} else if (this.categoryElem.value == "score") {
c += "<div class=\"hud-intro-leaderboard-result\"><strong style=\"float: left; font-style: italic;\">" + (a + 1) + "</strong><div>" + d.format(e.players) + " — <strong>" + e.score.toLocaleString() + "</strong></div></div>";
}
}
c += "</div>";
this.leaderboardWrapper.innerHTML = c;
};
a.send();
}
}
class g extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-reconnect";
document.getElementById("hud").appendChild(a);
super(a);
}
updateReconnectionText() {
this.element.innerHTML = "\n <div class=\"hud-reconnect-wrapper\">\n <div class=\"hud-reconnect-main\">\n <span class=\"hud-loading\"></span>\n <p>You've lost connection to the server.</p>\n <small>Not your internet? Report to the <a target=\"_blank\" href=\"https://discord.gg/4cxREnV4WE\">Discord server</a>.</small>\n <p style=\"position:absolute;bottom:0;left:50%;transform:translateX(-50%);\">Server ID: " + Jj.network.options.serverData.id + "</p>\n </div>\n </div>\n ";
}
show() {
if (!this.isVisible()) {
this.updateReconnectionText();
}
super.show();
}
}
class h extends d {
constructor(a) {
const b = document.createElement("div");
b.className = "hud-buildingbar-building";
if (a !== "Factory") {
b.textContent = Jj.ui.buildingData[a].hotkey;
} else {
b.classList.add("gold-stash");
}
super(b);
this.type = a;
this.element.setAttribute("BuildingType", a);
this.element.addEventListener("mouseenter", () => {
this.element.style.cursor = "pointer";
Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element);
});
this.element.addEventListener("mouseleave", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.hide();
});
this.element.addEventListener("mouseup", this.onMouseUp.bind(this));
this.tier = null;
this.update();
}
init() {
Jj.eventEmitter.on("BuildingsUpdated", this.updateBuildingData.bind(this));
if (Jj.ui.buildingData[this.type].hotkey) {
Jj.eventEmitter.on(Jj.ui.buildingData[this.type].hotkey.toString().charCodeAt(0) + "Up", () => {
this.onMouseUp();
});
}
Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.updateBuildingData.bind(this));
}
updateBuildingData() {
if (Jj.ui.factory !== null) {
this.update(Jj.ui.factory.tier);
} else {
this.update();
}
}
update(a = 1) {
if (this.type !== "Factory") {
if (Jj.ui.factory !== null) {
const a = Jj.ui.buildingData[this.type];
this.element.classList[a.built >= a.limit ? "add" : "remove"]("disabled");
this.show();
Jj.ui.components.uiBuildingBar.unlock();
} else {
this.hide();
Jj.ui.components.uiBuildingBar.lock();
}
} else if (Jj.ui.factory !== null) {
this.hide();
} else {
this.show();
}
if (a !== this.tier) {
this.tier = a;
this.element.style["background-image"] = "url('http://zombia.io/asset/images/Ui/Buildings/" + this.type + "/" + this.type + "Tier" + a + ".svg')";
}
}
onMouseUp(a) {
for (let b in Jj.ui.components.uiTopBar.menuIcons) {
Jj.ui.components.uiTopBar.menuIcons[b].hide();
}
if (Jj.network.connected === true && Jj.ui.playerTick.health > 0 && Jj.ui.buildingData[this.type].built < Jj.ui.buildingData[this.type].limit && (Jj.ui.factory == null && this.type == "Factory" || Jj.ui.factory !== null && this.type !== "Factory")) {
Jj.ui.components.uiPlacementOverlay.startPlacing(this.type);
Jj.ui.components.uiBuildingBar.buildingTooltip.hide();
}
}
}
const i = new class {
constructor() {
this.checkedIfMobile = false;
this.actuallyIsMobile = false;
}
lerp(a, b, c) {
return a * (1 - c) + b * c;
}
mod(a, b) {
return (a % b + b) % b;
}
interpolateYaw(a, b) {
const c = Math.min(1, Jj.renderer.replicator.getMsInThisTick() / Jj.renderer.replicator.msPerTick);
let d = a + this.lerp(0, this.mod(b - a + 180, 360) - 180, c);
if (d < 0) {
d += 360;
}
if (d >= 360) {
d -= 360;
}
return d;
}
angleTo(a, b) {
return (Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI + 90 + 360) % 360;
}
measureDistance(a, b) {
if (a.x === undefined || a.y === undefined || b.x === undefined || b.y === undefined) {
return Infinity;
}
let c = b.x - a.x;
let d = b.y - a.y;
return Math.abs(c ** 2 + d ** 2);
}
isMobile() {
if (!this.checkedIfMobile) {
this.actuallyIsMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
this.checkedIfMobile = true;
}
return this.actuallyIsMobile;
}
hexToRgb(a) {
a = a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (a, b, c, d) {
return b + b + c + c + d + d;
});
var b = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);
if (b) {
return {
r: parseInt(b[1], 16),
g: parseInt(b[2], 16),
b: parseInt(b[3], 16)
};
} else {
return null;
}
}
createResourceCostString(a, b = 1, c = 1, d = true) {
const e = ["wood", "stone", "gold", "tokens"];
const f = [];
const g = Jj.ui.getPlayerTick();
for (const h of e) {
const e = h + "Costs";
if (e in a) {
const i = a[e][b - 1] * c;
if (i === 0) {
continue;
}
f.push("<span class=\"" + (g !== null && d === true ? g[h] >= i ? "" : "hud-resource-low" : "") + "\">" + this.abbreviateNumber(i, 3).toLocaleString() + " " + h + "</span>");
}
}
if (f.length > 0) {
return {
elem: f.join(", ")
};
} else {
return {
elem: "<span class='hud-resource-free'>Free</span>",
lowResource: false
};
}
}
createResourceRefundString(a, b = 1, c = 0) {
const d = ["wood", "stone", "gold", "tokens"];
const e = [];
for (const f of d) {
const d = f + "Costs";
if (a[d]) {
const g = Math.floor(a[d].slice(0, b).reduce((a, b) => a + b) * c * 0.75);
if (g > 0) {
e.push(this.abbreviateNumber(g, 3).toLocaleString() + " " + f);
}
}
}
if (e.length > 0) {
return "" + e.join(", ");
} else {
return "<span class='hud-resource-free'>None</span>";
}
}
abbreviateNumber(a, b) {
const c = ["K", "M", "B", "T", "q", "Q", "s", "S", "O", "N", "D"];
b = Math.pow(10, b);
for (let d = c.length - 1; d >= 0; d--) {
const e = Math.pow(10, (d + 1) * 3);
if (e <= a) {
if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) {
a = 1;
d++;
}
a += c[d];
break;
}
}
return a;
}
}();
class j extends d {
constructor(a) {
document.body.insertAdjacentHTML("beforeend", "<div id=\"hud-tooltip\" class=\"hud-tooltip\"></div>");
super(document.getElementById("hud-tooltip"));
this.direction = a;
this.element.classList.add("hud-tooltip-" + a);
}
moveTo(a) {
this.show();
this.element.classList.remove("hud-tooltip-" + this.direction);
if (a.getAttribute("BuildingType") !== null) {
this.direction = "top";
const b = Jj.ui.buildingData[a.getAttribute("BuildingType")];
if (b !== undefined) {
this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <span class=\"hud-tooltip-built\"><strong " + (b.built >= b.limit ? "class='hud-resource-low'" : "") + ">" + b.built + "</strong>/" + b.limit + "</span>\n <div class=\"hud-tooltip-body\">" + b.description + "</div>\n <div class=\"hud-tooltip-body\">" + i.createResourceCostString(b).elem + "</div>\n </div>";
}
} else if (a.getAttribute("potion-type") !== null) {
this.direction = "top";
const b = Jj.ui.toolData[a.getAttribute("potion-type")];
if (b !== undefined) {
this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <span>" + b.description + "</span>\n <div class=\"hud-tooltip-body\">" + i.createResourceCostString(b).elem + "</div>\n </div>";
}
} else if (a.getAttribute("item-type") !== null) {
this.direction = "top";
const b = Jj.ui.toolData[a.getAttribute("item-type")];
if (b.name === "ZombieShield") {
this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b.name.split(/(?=[A-Z])/).join(" ") + "</h2>\n <h3>Tier " + Jj.ui.components.uiArmourIndicator.tier + "</h3>\n <h3>" + b.description + "</h3>\n </div>";
}
} else if (a.getAttribute("icon-type") !== undefined) {
this.direction = "bottom";
const b = a.getAttribute("icon-type");
this.element.innerHTML = "\n <div class=\"hud-tooltip-toolbar\">\n <h2>" + b + "</h2>\n </div>\n ";
}
this.element.classList.add("hud-tooltip-" + this.direction);
const b = a.getBoundingClientRect();
const c = {
left: 0,
top: 0
};
if (this.direction == "top") {
c.left = b.left + b.width / 2 - this.element.offsetWidth / 2;
c.top = b.top - this.element.offsetHeight - 30;
} else if (this.direction == "bottom") {
c.left = b.left + b.width / 2 - this.element.offsetWidth / 2;
c.top = b.top + b.height + 70;
} else if (this.direction == "left") {
c.left = b.left - this.element.offsetWidth - 30;
c.top = b.top + b.height / 2 - this.element.offsetHeight / 2;
} else if (this.direction == "right") {
c.left = b.left + b.width + 30;
c.top = b.top + b.height / 2 - this.element.offsetHeight / 2;
}
this.element.style.left = c.left + "px";
this.element.style.top = c.top + "px";
}
}
class k extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-buildingbar";
a.id = "hud-buildingbar";
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.buildingButtons = [];
this.buildingTooltip = new j("top");
this.element.addEventListener("mouseenter", () => {
window.storage.setItem("walkthrough_BuildingBar", "true");
Jj.ui.components.uiWalkthrough.hideBuildingBarIndicator();
});
this.element.addEventListener("mousedown", a => {
a.stopPropagation();
});
}
init() {
Jj.eventEmitter.on("BuildingDataReceived", this.onDataReceived.bind(this));
}
unlock() {
this.element.classList.remove("locked");
}
lock() {
this.element.classList.add("locked");
}
onDataReceived() {
const a = Jj.ui.buildingData;
for (let a = 0; a < this.buildingButtons.length; a++) {
this.buildingButtons[a].element.remove();
this.buildingButtons.shift();
a--;
}
for (const b in a) {
const c = new h(a[b].name);
this.element.appendChild(c.element);
this.buildingButtons.push(c);
c.init();
}
}
}
function l(a, b) {
this.name = "AggregateError";
this.errors = a;
this.message = b || "";
}
l.prototype = Error.prototype;
var m = setTimeout;
function n(a) {
return Boolean(a && a.length !== undefined);
}
function o() {}
function p(a) {
if (!(this instanceof p)) {
throw new TypeError("Promises must be constructed via new");
}
if (typeof a != "function") {
throw new TypeError("not a function");
}
this._state = 0;
this._handled = false;
this._value = undefined;
this._deferreds = [];
v(a, this);
}
function q(a, b) {
while (a._state === 3) {
a = a._value;
}
if (a._state !== 0) {
a._handled = true;
p._immediateFn(function () {
var c = a._state === 1 ? b.onFulfilled : b.onRejected;
if (c !== null) {
var d;
try {
d = c(a._value);
} catch (a) {
s(b.promise, a);
return;
}
r(b.promise, d);
} else {
(a._state === 1 ? r : s)(b.promise, a._value);
}
});
} else {
a._deferreds.push(b);
}
}
function r(a, b) {
try {
if (b === a) {
throw new TypeError("A promise cannot be resolved with itself.");
}
if (b && (typeof b == "object" || typeof b == "function")) {
var c = b.then;
if (b instanceof p) {
a._state = 3;
a._value = b;
t(a);
return;
}
if (typeof c == "function") {
v((d = c, e = b, function () {
d.apply(e, arguments);
}), a);
return;
}
}
a._state = 1;
a._value = b;
t(a);
} catch (b) {
s(a, b);
}
var d;
var e;
}
function s(a, b) {
a._state = 2;
a._value = b;
t(a);
}
function t(a) {
if (a._state === 2 && a._deferreds.length === 0) {
p._immediateFn(function () {
if (!a._handled) {
p._unhandledRejectionFn(a._value);
}
});
}
for (var b = 0, c = a._deferreds.length; b < c; b++) {
q(a, a._deferreds[b]);
}
a._deferreds = null;
}
function u(a, b, c) {
this.onFulfilled = typeof a == "function" ? a : null;
this.onRejected = typeof b == "function" ? b : null;
this.promise = c;
}
function v(a, b) {
var c = false;
try {
a(function (a) {
if (!c) {
c = true;
r(b, a);
}
}, function (a) {
if (!c) {
c = true;
s(b, a);
}
});
} catch (a) {
if (c) {
return;
}
c = true;
s(b, a);
}
}
p.prototype.catch = function (a) {
return this.then(null, a);
};
p.prototype.then = function (a, b) {
var c = new this.constructor(o);
q(this, new u(a, b, c));
return c;
};
p.prototype.finally = function (a) {
var b = this.constructor;
return this.then(function (c) {
return b.resolve(a()).then(function () {
return c;
});
}, function (c) {
return b.resolve(a()).then(function () {
return b.reject(c);
});
});
};
p.all = function (a) {
return new p(function (b, c) {
if (!n(a)) {
return c(new TypeError("Promise.all accepts an array"));
}
var d = Array.prototype.slice.call(a);
if (d.length === 0) {
return b([]);
}
var e = d.length;
function f(a, g) {
try {
if (g && (typeof g == "object" || typeof g == "function")) {
var h = g.then;
if (typeof h == "function") {
h.call(g, function (b) {
f(a, b);
}, c);
return;
}
}
d[a] = g;
if (--e == 0) {
b(d);
}
} catch (a) {
c(a);
}
}
for (var g = 0; g < d.length; g++) {
f(g, d[g]);
}
});
};
p.any = function (a) {
var b = this;
return new b(function (c, d) {
if (!a || a.length === undefined) {
return d(new TypeError("Promise.any accepts an array"));
}
var e = Array.prototype.slice.call(a);
if (e.length === 0) {
return d();
}
for (var f = [], g = 0; g < e.length; g++) {
try {
b.resolve(e[g]).then(c).catch(function (a) {
f.push(a);
if (f.length === e.length) {
d(new l(f, "All promises were rejected"));
}
});
} catch (a) {
d(a);
}
}
});
};
p.allSettled = function (a) {
return new this(function (b, c) {
if (!a || a.length === undefined) {
return c(new TypeError(typeof a + " " + a + " is not iterable(cannot read property Symbol(Symbol.iterator))"));
}
var d = Array.prototype.slice.call(a);
if (d.length === 0) {
return b([]);
}
var e = d.length;
function f(a, c) {
if (c && (typeof c == "object" || typeof c == "function")) {
var g = c.then;
if (typeof g == "function") {
g.call(c, function (b) {
f(a, b);
}, function (c) {
d[a] = {
status: "rejected",
reason: c
};
if (--e == 0) {
b(d);
}
});
return;
}
}
d[a] = {
status: "fulfilled",
value: c
};
if (--e == 0) {
b(d);
}
}
for (var g = 0; g < d.length; g++) {
f(g, d[g]);
}
});
};
p.resolve = function (a) {
if (a && typeof a == "object" && a.constructor === p) {
return a;
} else {
return new p(function (b) {
b(a);
});
}
};
p.reject = function (a) {
return new p(function (b, c) {
c(a);
});
};
p.race = function (a) {
return new p(function (b, c) {
if (!n(a)) {
return c(new TypeError("Promise.race accepts an array"));
}
for (var d = 0, e = a.length; d < e; d++) {
p.resolve(a[d]).then(b, c);
}
});
};
p._immediateFn = typeof setImmediate == "function" && function (a) {
setImmediate(a);
} || function (a) {
m(a, 0);
};
p._unhandledRejectionFn = function (a) {
if (typeof console != "undefined" && console) {
console.warn("Possible Unhandled Promise Rejection:", a);
}
};
const w = p;
var x = c(418);
var y = c.n(x);
if (typeof globalThis == "undefined") {
if (typeof self != "undefined") {
self.globalThis = self;
} else if (c.g !== undefined) {
c.g.globalThis = c.g;
}
}
globalThis.Promise ||= w;
Object.assign ||= y();
if (!Date.now || !Date.prototype.getTime) {
Date.now = function () {
return new Date().getTime();
};
}
if (!globalThis.performance || !globalThis.performance.now) {
var z = Date.now();
globalThis.performance ||= {};
globalThis.performance.now = function () {
return Date.now() - z;
};
}
for (var A = Date.now(), B = ["ms", "moz", "webkit", "o"], C = 0; C < B.length && !globalThis.requestAnimationFrame; ++C) {
var D = B[C];
globalThis.requestAnimationFrame = globalThis[D + "RequestAnimationFrame"];
globalThis.cancelAnimationFrame = globalThis[D + "CancelAnimationFrame"] || globalThis[D + "CancelRequestAnimationFrame"];
}
globalThis.requestAnimationFrame ||= function (a) {
if (typeof a != "function") {
throw new TypeError(a + "is not a function");
}
var b = Date.now();
var c = 16 + A - b;
if (c < 0) {
c = 0;
}
A = b;
return globalThis.self.setTimeout(function () {
A = Date.now();
a(performance.now());
}, c);
};
globalThis.cancelAnimationFrame ||= function (a) {
return clearTimeout(a);
};
Math.sign ||= function (a) {
if ((a = Number(a)) === 0 || isNaN(a)) {
return a;
} else if (a > 0) {
return 1;
} else {
return -1;
}
};
Number.isInteger ||= function (a) {
return typeof a == "number" && isFinite(a) && Math.floor(a) === a;
};
globalThis.ArrayBuffer ||= Array;
globalThis.Float32Array ||= Array;
globalThis.Uint32Array ||= Array;
globalThis.Uint16Array ||= Array;
globalThis.Uint8Array ||= Array;
globalThis.Int32Array ||= Array;
var E;
var F;
var G;
var H;
var I;
var J;
var K;
var L;
var M;
var N;
var O;
var P;
var Q;
var R;
var S;
var T;
var U;
var V;
var W;
var X = /iPhone/i;
var Y = /iPod/i;
var Z = /iPad/i;
var $ = /\biOS-universal(?:.+)Mac\b/i;
var _ = /\bAndroid(?:.+)Mobile\b/i;
var aa = /Android/i;
var ba = /(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i;
var ca = /Silk/i;
var da = /Windows Phone/i;
var ea = /\bWindows(?:.+)ARM\b/i;
var fa = /BlackBerry/i;
var ga = /BB10/i;
var ha = /Opera Mini/i;
var ia = /\b(CriOS|Chrome)(?:.+)Mobile/i;
var ja = /Mobile(?:.+)Firefox\b/i;
function ka(a) {
return a !== undefined && a.platform === "MacIntel" && typeof a.maxTouchPoints == "number" && a.maxTouchPoints > 1 && typeof MSStream == "undefined";
}
var la = function (a) {
var b = {
userAgent: "",
platform: "",
maxTouchPoints: 0
};
if (a || typeof navigator == "undefined") {
if (typeof a == "string") {
b.userAgent = a;
} else if (a && a.userAgent) {
b = {
userAgent: a.userAgent,
platform: a.platform,
maxTouchPoints: a.maxTouchPoints || 0
};
}
} else {
b = {
userAgent: navigator.userAgent,
platform: navigator.platform,
maxTouchPoints: navigator.maxTouchPoints || 0
};
}
var c = b.userAgent;
var d = c.split("[FBAN");
if (d[1] !== undefined) {
c = d[0];
}
if ((d = c.split("Twitter"))[1] !== undefined) {
c = d[0];
}
var e = function (a) {
return function (b) {
return b.test(a);
};
}(c);
var f = {
apple: {
phone: e(X) && !e(da),
ipod: e(Y),
tablet: !e(X) && (e(Z) || ka(b)) && !e(da),
universal: e($),
device: (e(X) || e(Y) || e(Z) || e($) || ka(b)) && !e(da)
},
amazon: {
phone: e(ba),
tablet: !e(ba) && e(ca),
device: e(ba) || e(ca)
},
android: {
phone: !e(da) && e(ba) || !e(da) && e(_),
tablet: !e(da) && !e(ba) && !e(_) && (e(ca) || e(aa)),
device: !e(da) && (e(ba) || e(ca) || e(_) || e(aa)) || e(/\bokhttp\b/i)
},
windows: {
phone: e(da),
tablet: e(ea),
device: e(da) || e(ea)
},
other: {
blackberry: e(fa),
blackberry10: e(ga),
opera: e(ha),
firefox: e(ja),
chrome: e(ia),
device: e(fa) || e(ga) || e(ha) || e(ja) || e(ia)
},
any: false,
phone: false,
tablet: false
};
f.any = f.apple.device || f.android.device || f.windows.device || f.other.device;
f.phone = f.apple.phone || f.android.phone || f.windows.phone;
f.tablet = f.apple.tablet || f.android.tablet || f.windows.tablet;
return f;
}(globalThis.navigator);
(function (a) {
a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY";
a[a.WEBGL = 1] = "WEBGL";
a[a.WEBGL2 = 2] = "WEBGL2";
})(E ||= {});
(function (a) {
a[a.UNKNOWN = 0] = "UNKNOWN";
a[a.WEBGL = 1] = "WEBGL";
a[a.CANVAS = 2] = "CANVAS";
})(F ||= {});
(function (a) {
a[a.COLOR = 16384] = "COLOR";
a[a.DEPTH = 256] = "DEPTH";
a[a.STENCIL = 1024] = "STENCIL";
})(G ||= {});
(function (a) {
a[a.NORMAL = 0] = "NORMAL";
a[a.ADD = 1] = "ADD";
a[a.MULTIPLY = 2] = "MULTIPLY";
a[a.SCREEN = 3] = "SCREEN";
a[a.OVERLAY = 4] = "OVERLAY";
a[a.DARKEN = 5] = "DARKEN";
a[a.LIGHTEN = 6] = "LIGHTEN";
a[a.COLOR_DODGE = 7] = "COLOR_DODGE";
a[a.COLOR_BURN = 8] = "COLOR_BURN";
a[a.HARD_LIGHT = 9] = "HARD_LIGHT";
a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT";
a[a.DIFFERENCE = 11] = "DIFFERENCE";
a[a.EXCLUSION = 12] = "EXCLUSION";
a[a.HUE = 13] = "HUE";
a[a.SATURATION = 14] = "SATURATION";
a[a.COLOR = 15] = "COLOR";
a[a.LUMINOSITY = 16] = "LUMINOSITY";
a[a.NORMAL_NPM = 17] = "NORMAL_NPM";
a[a.ADD_NPM = 18] = "ADD_NPM";
a[a.SCREEN_NPM = 19] = "SCREEN_NPM";
a[a.NONE = 20] = "NONE";
a[a.SRC_OVER = 0] = "SRC_OVER";
a[a.SRC_IN = 21] = "SRC_IN";
a[a.SRC_OUT = 22] = "SRC_OUT";
a[a.SRC_ATOP = 23] = "SRC_ATOP";
a[a.DST_OVER = 24] = "DST_OVER";
a[a.DST_IN = 25] = "DST_IN";
a[a.DST_OUT = 26] = "DST_OUT";
a[a.DST_ATOP = 27] = "DST_ATOP";
a[a.ERASE = 26] = "ERASE";
a[a.SUBTRACT = 28] = "SUBTRACT";
a[a.XOR = 29] = "XOR";
})(H ||= {});
(function (a) {
a[a.POINTS = 0] = "POINTS";
a[a.LINES = 1] = "LINES";
a[a.LINE_LOOP = 2] = "LINE_LOOP";
a[a.LINE_STRIP = 3] = "LINE_STRIP";
a[a.TRIANGLES = 4] = "TRIANGLES";
a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP";
a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN";
})(I ||= {});
(function (a) {
a[a.RGBA = 6408] = "RGBA";
a[a.RGB = 6407] = "RGB";
a[a.RG = 33319] = "RG";
a[a.RED = 6403] = "RED";
a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER";
a[a.RGB_INTEGER = 36248] = "RGB_INTEGER";
a[a.RG_INTEGER = 33320] = "RG_INTEGER";
a[a.RED_INTEGER = 36244] = "RED_INTEGER";
a[a.ALPHA = 6406] = "ALPHA";
a[a.LUMINANCE = 6409] = "LUMINANCE";
a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA";
a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT";
a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL";
})(J ||= {});
(function (a) {
a[a.TEXTURE_2D = 3553] = "TEXTURE_2D";
a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP";
a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY";
a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z";
})(K ||= {});
(function (a) {
a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE";
a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT";
a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5";
a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4";
a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1";
a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT";
a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV";
a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV";
a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8";
a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV";
a[a.BYTE = 5120] = "BYTE";
a[a.SHORT = 5122] = "SHORT";
a[a.INT = 5124] = "INT";
a[a.FLOAT = 5126] = "FLOAT";
a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV";
a[a.HALF_FLOAT = 36193] = "HALF_FLOAT";
})(L ||= {});
(function (a) {
a[a.FLOAT = 0] = "FLOAT";
a[a.INT = 1] = "INT";
a[a.UINT = 2] = "UINT";
})(M ||= {});
(function (a) {
a[a.NEAREST = 0] = "NEAREST";
a[a.LINEAR = 1] = "LINEAR";
})(N ||= {});
(function (a) {
a[a.CLAMP = 33071] = "CLAMP";
a[a.REPEAT = 10497] = "REPEAT";
a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT";
})(O ||= {});
(function (a) {
a[a.OFF = 0] = "OFF";
a[a.POW2 = 1] = "POW2";
a[a.ON = 2] = "ON";
a[a.ON_MANUAL = 3] = "ON_MANUAL";
})(P ||= {});
(function (a) {
a[a.NPM = 0] = "NPM";
a[a.UNPACK = 1] = "UNPACK";
a[a.PMA = 2] = "PMA";
a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA";
a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD";
a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA";
a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA";
})(Q ||= {});
(function (a) {
a[a.NO = 0] = "NO";
a[a.YES = 1] = "YES";
a[a.AUTO = 2] = "AUTO";
a[a.BLEND = 0] = "BLEND";
a[a.CLEAR = 1] = "CLEAR";
a[a.BLIT = 2] = "BLIT";
})(R ||= {});
(function (a) {
a[a.AUTO = 0] = "AUTO";
a[a.MANUAL = 1] = "MANUAL";
})(S ||= {});
(function (a) {
a.LOW = "lowp";
a.MEDIUM = "mediump";
a.HIGH = "highp";
})(T ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.SCISSOR = 1] = "SCISSOR";
a[a.STENCIL = 2] = "STENCIL";
a[a.SPRITE = 3] = "SPRITE";
})(U ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.LOW = 2] = "LOW";
a[a.MEDIUM = 4] = "MEDIUM";
a[a.HIGH = 8] = "HIGH";
})(V ||= {});
(function (a) {
a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER";
a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER";
a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER";
})(W ||= {});
var ma;
var na;
var oa;
var pa;
var qa;
var ra;
var sa;
var ta;
var ua;
var va;
var wa;
var xa;
var ya;
var za;
var Aa;
var Ba;
var Ca;
var Da;
var Ea;
var Fa = {
MIPMAP_TEXTURES: P.POW2,
ANISOTROPIC_LEVEL: 0,
RESOLUTION: 1,
FILTER_RESOLUTION: 1,
FILTER_MULTISAMPLE: V.NONE,
SPRITE_MAX_TEXTURES: function (a) {
var b;
var c = true;
if (la.tablet || la.phone) {
if (la.apple.device && (b = navigator.userAgent.match(/OS (\d+)_(\d+)?/)) && parseInt(b[1], 10) < 11) {
c = false;
}
if (la.android.device && (b = navigator.userAgent.match(/Android\s([0-9.]*)/)) && parseInt(b[1], 10) < 7) {
c = false;
}
}
if (c) {
return 32;
} else {
return 4;
}
}(),
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
},
GC_MODE: S.AUTO,
GC_MAX_IDLE: 3600,
GC_MAX_CHECK_COUNT: 600,
WRAP_MODE: O.CLAMP,
SCALE_MODE: N.LINEAR,
PRECISION_VERTEX: T.HIGH,
PRECISION_FRAGMENT: la.apple.device ? T.HIGH : T.MEDIUM,
CAN_UPLOAD_SAME_BUFFER: !la.apple.device,
CREATE_IMAGE_BITMAP: false,
ROUND_PIXELS: false
};
var Ga = c(729);
var Ha = c.n(Ga);
var Ia = c(187);
var Ja = c.n(Ia);
var Ka = c(575);
(function (a) {
a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY";
a[a.WEBGL = 1] = "WEBGL";
a[a.WEBGL2 = 2] = "WEBGL2";
})(ma ||= {});
(function (a) {
a[a.UNKNOWN = 0] = "UNKNOWN";
a[a.WEBGL = 1] = "WEBGL";
a[a.CANVAS = 2] = "CANVAS";
})(na ||= {});
(function (a) {
a[a.COLOR = 16384] = "COLOR";
a[a.DEPTH = 256] = "DEPTH";
a[a.STENCIL = 1024] = "STENCIL";
})(oa ||= {});
(function (a) {
a[a.NORMAL = 0] = "NORMAL";
a[a.ADD = 1] = "ADD";
a[a.MULTIPLY = 2] = "MULTIPLY";
a[a.SCREEN = 3] = "SCREEN";
a[a.OVERLAY = 4] = "OVERLAY";
a[a.DARKEN = 5] = "DARKEN";
a[a.LIGHTEN = 6] = "LIGHTEN";
a[a.COLOR_DODGE = 7] = "COLOR_DODGE";
a[a.COLOR_BURN = 8] = "COLOR_BURN";
a[a.HARD_LIGHT = 9] = "HARD_LIGHT";
a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT";
a[a.DIFFERENCE = 11] = "DIFFERENCE";
a[a.EXCLUSION = 12] = "EXCLUSION";
a[a.HUE = 13] = "HUE";
a[a.SATURATION = 14] = "SATURATION";
a[a.COLOR = 15] = "COLOR";
a[a.LUMINOSITY = 16] = "LUMINOSITY";
a[a.NORMAL_NPM = 17] = "NORMAL_NPM";
a[a.ADD_NPM = 18] = "ADD_NPM";
a[a.SCREEN_NPM = 19] = "SCREEN_NPM";
a[a.NONE = 20] = "NONE";
a[a.SRC_OVER = 0] = "SRC_OVER";
a[a.SRC_IN = 21] = "SRC_IN";
a[a.SRC_OUT = 22] = "SRC_OUT";
a[a.SRC_ATOP = 23] = "SRC_ATOP";
a[a.DST_OVER = 24] = "DST_OVER";
a[a.DST_IN = 25] = "DST_IN";
a[a.DST_OUT = 26] = "DST_OUT";
a[a.DST_ATOP = 27] = "DST_ATOP";
a[a.ERASE = 26] = "ERASE";
a[a.SUBTRACT = 28] = "SUBTRACT";
a[a.XOR = 29] = "XOR";
})(pa ||= {});
(function (a) {
a[a.POINTS = 0] = "POINTS";
a[a.LINES = 1] = "LINES";
a[a.LINE_LOOP = 2] = "LINE_LOOP";
a[a.LINE_STRIP = 3] = "LINE_STRIP";
a[a.TRIANGLES = 4] = "TRIANGLES";
a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP";
a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN";
})(qa ||= {});
(function (a) {
a[a.RGBA = 6408] = "RGBA";
a[a.RGB = 6407] = "RGB";
a[a.RG = 33319] = "RG";
a[a.RED = 6403] = "RED";
a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER";
a[a.RGB_INTEGER = 36248] = "RGB_INTEGER";
a[a.RG_INTEGER = 33320] = "RG_INTEGER";
a[a.RED_INTEGER = 36244] = "RED_INTEGER";
a[a.ALPHA = 6406] = "ALPHA";
a[a.LUMINANCE = 6409] = "LUMINANCE";
a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA";
a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT";
a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL";
})(ra ||= {});
(function (a) {
a[a.TEXTURE_2D = 3553] = "TEXTURE_2D";
a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP";
a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY";
a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z";
})(sa ||= {});
(function (a) {
a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE";
a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT";
a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5";
a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4";
a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1";
a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT";
a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV";
a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV";
a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8";
a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV";
a[a.BYTE = 5120] = "BYTE";
a[a.SHORT = 5122] = "SHORT";
a[a.INT = 5124] = "INT";
a[a.FLOAT = 5126] = "FLOAT";
a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV";
a[a.HALF_FLOAT = 36193] = "HALF_FLOAT";
})(ta ||= {});
(function (a) {
a[a.FLOAT = 0] = "FLOAT";
a[a.INT = 1] = "INT";
a[a.UINT = 2] = "UINT";
})(ua ||= {});
(function (a) {
a[a.NEAREST = 0] = "NEAREST";
a[a.LINEAR = 1] = "LINEAR";
})(va ||= {});
(function (a) {
a[a.CLAMP = 33071] = "CLAMP";
a[a.REPEAT = 10497] = "REPEAT";
a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT";
})(wa ||= {});
(function (a) {
a[a.OFF = 0] = "OFF";
a[a.POW2 = 1] = "POW2";
a[a.ON = 2] = "ON";
a[a.ON_MANUAL = 3] = "ON_MANUAL";
})(xa ||= {});
(function (a) {
a[a.NPM = 0] = "NPM";
a[a.UNPACK = 1] = "UNPACK";
a[a.PMA = 2] = "PMA";
a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA";
a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD";
a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA";
a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA";
})(ya ||= {});
(function (a) {
a[a.NO = 0] = "NO";
a[a.YES = 1] = "YES";
a[a.AUTO = 2] = "AUTO";
a[a.BLEND = 0] = "BLEND";
a[a.CLEAR = 1] = "CLEAR";
a[a.BLIT = 2] = "BLIT";
})(za ||= {});
(function (a) {
a[a.AUTO = 0] = "AUTO";
a[a.MANUAL = 1] = "MANUAL";
})(Aa ||= {});
(function (a) {
a.LOW = "lowp";
a.MEDIUM = "mediump";
a.HIGH = "highp";
})(Ba ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.SCISSOR = 1] = "SCISSOR";
a[a.STENCIL = 2] = "STENCIL";
a[a.SPRITE = 3] = "SPRITE";
})(Ca ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.LOW = 2] = "LOW";
a[a.MEDIUM = 4] = "MEDIUM";
a[a.HIGH = 8] = "HIGH";
})(Da ||= {});
(function (a) {
a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER";
a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER";
a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER";
})(Ea ||= {});
var La = {
parse: Ka.Qc,
format: Ka.WU,
resolve: Ka.DB
};
Fa.RETINA_PREFIX = /@([0-9\.]+)x/;
Fa.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT = false;
var Ma;
var Na = false;
var Oa = {
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
goldenrod: "#daa520",
gold: "#ffd700",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavenderblush: "#fff0f5",
lavender: "#e6e6fa",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
rebeccapurple: "#663399",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
};
function Pa(a, b) {
if (b === undefined) {
b = [];
}
b[0] = (a >> 16 & 255) / 255;
b[1] = (a >> 8 & 255) / 255;
b[2] = (a & 255) / 255;
return b;
}
function Qa(a) {
var b = a.toString(16);
return "#" + ("000000".substring(0, 6 - b.length) + b);
}
function Ra(a) {
if (typeof a == "string" && (a = Oa[a.toLowerCase()] || a)[0] === "#") {
a = a.slice(1);
}
return parseInt(a, 16);
}
var Sa = function () {
for (var a = [], b = [], c = 0; c < 32; c++) {
a[c] = c;
b[c] = c;
}
a[pa.NORMAL_NPM] = pa.NORMAL;
a[pa.ADD_NPM] = pa.ADD;
a[pa.SCREEN_NPM] = pa.SCREEN;
b[pa.NORMAL] = pa.NORMAL_NPM;
b[pa.ADD] = pa.ADD_NPM;
b[pa.SCREEN] = pa.SCREEN_NPM;
var d = [];
d.push(b);
d.push(a);
return d;
}();
function Ta(a, b) {
return Sa[b ? 1 : 0][a];
}
function Ua(a, b) {
if (b === 1) {
return (b * 255 << 24) + a;
}
if (b === 0) {
return 0;
}
var c = a >> 16 & 255;
var d = a >> 8 & 255;
var e = a & 255;
return (b * 255 << 24) + ((c = c * b + 0.5 | 0) << 16) + ((d = d * b + 0.5 | 0) << 8) + (e * b + 0.5 | 0);
}
function Va(a, b, c, d) {
(c = c || new Float32Array(4))[0] = (a >> 16 & 255) / 255;
c[1] = (a >> 8 & 255) / 255;
c[2] = (a & 255) / 255;
if (d || d === undefined) {
c[0] *= b;
c[1] *= b;
c[2] *= b;
}
c[3] = b;
return c;
}
function Wa(a) {
if (a.BYTES_PER_ELEMENT === 4) {
if (a instanceof Float32Array) {
return "Float32Array";
} else if (a instanceof Uint32Array) {
return "Uint32Array";
} else {
return "Int32Array";
}
}
if (a.BYTES_PER_ELEMENT === 2) {
if (a instanceof Uint16Array) {
return "Uint16Array";
}
} else if (a.BYTES_PER_ELEMENT === 1 && a instanceof Uint8Array) {
return "Uint8Array";
}
return null;
}
function Xa(a) {
a += a === 0 ? 1 : 0;
--a;
a |= a >>> 1;
a |= a >>> 2;
a |= a >>> 4;
a |= a >>> 8;
return 1 + (a |= a >>> 16);
}
function Ya(a) {
return !(a & a - 1) && !!a;
}
function Za(a) {
var b = (a > 65535 ? 1 : 0) << 4;
var c = ((a >>>= b) > 255 ? 1 : 0) << 3;
b |= c;
b |= c = ((a >>>= c) > 15 ? 1 : 0) << 2;
return (b |= c = ((a >>>= c) > 3 ? 1 : 0) << 1) | (a >>>= c) >> 1;
}
function $a(a, b, c) {
var d;
var e = a.length;
if (b < e && c !== 0) {
var f = e - (c = b + c > e ? e - b : c);
for (d = b; d < f; ++d) {
a[d] = a[d + c];
}
a.length = f;
}
}
function _a(a) {
if (a === 0) {
return 0;
} else if (a < 0) {
return -1;
} else {
return 1;
}
}
Float32Array;
Uint32Array;
Int32Array;
Uint8Array;
var ab = 0;
function bb() {
return ++ab;
}
var cb = {};
function db(a, b, c) {
if (c === undefined) {
c = 3;
}
if (!cb[b]) {
var d = new Error().stack;
if (d === undefined) {
console.warn("PixiJS Deprecation Warning: ", b + "\nDeprecated since v" + a);
} else {
d = d.split("\n").splice(c).join("\n");
if (console.groupCollapsed) {
console.groupCollapsed("%cPixiJS Deprecation Warning: %c%s", "color:#614108;background:#fffbe6", "font-weight:normal;color:#614108;background:#fffbe6", b + "\nDeprecated since v" + a);
console.warn(d);
console.groupEnd();
} else {
console.warn("PixiJS Deprecation Warning: ", b + "\nDeprecated since v" + a);
console.warn(d);
}
}
cb[b] = true;
}
}
var eb;
var fb = {};
var gb = Object.create(null);
var hb = Object.create(null);
var ib = function () {
function a(a, b, c) {
this.canvas = document.createElement("canvas");
this.context = this.canvas.getContext("2d");
this.resolution = c || Fa.RESOLUTION;
this.resize(a, b);
}
a.prototype.clear = function () {
this.context.setTransform(1, 0, 0, 1, 0, 0);
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
};
a.prototype.resize = function (a, b) {
this.canvas.width = Math.round(a * this.resolution);
this.canvas.height = Math.round(b * this.resolution);
};
a.prototype.destroy = function () {
this.context = null;
this.canvas = null;
};
Object.defineProperty(a.prototype, "width", {
get: function () {
return this.canvas.width;
},
set: function (a) {
this.canvas.width = Math.round(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "height", {
get: function () {
return this.canvas.height;
},
set: function (a) {
this.canvas.height = Math.round(a);
},
enumerable: false,
configurable: true
});
return a;
}();
function jb(a, b) {
var c = Fa.RETINA_PREFIX.exec(a);
if (c) {
return parseFloat(c[1]);
} else if (b !== undefined) {
return b;
} else {
return 1;
}
}
var kb;
var lb = Math.PI * 2;
var mb = 180 / Math.PI;
var nb = Math.PI / 180;
(function (a) {
a[a.POLY = 0] = "POLY";
a[a.RECT = 1] = "RECT";
a[a.CIRC = 2] = "CIRC";
a[a.ELIP = 3] = "ELIP";
a[a.RREC = 4] = "RREC";
})(kb ||= {});
var ob = function () {
function a(a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
this.x = 0;
this.y = 0;
this.x = a;
this.y = b;
}
a.prototype.clone = function () {
return new a(this.x, this.y);
};
a.prototype.copyFrom = function (a) {
this.set(a.x, a.y);
return this;
};
a.prototype.copyTo = function (a) {
a.set(this.x, this.y);
return a;
};
a.prototype.equals = function (a) {
return a.x === this.x && a.y === this.y;
};
a.prototype.set = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = a;
}
this.x = a;
this.y = b;
return this;
};
a.prototype.toString = function () {
return "[@pixi/math:Point x=" + this.x + " y=" + this.y + "]";
};
return a;
}();
var pb = [new ob(), new ob(), new ob(), new ob()];
var qb = function () {
function a(a, b, c, d) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 0;
}
this.x = Number(a);
this.y = Number(b);
this.width = Number(c);
this.height = Number(d);
this.type = kb.RECT;
}
Object.defineProperty(a.prototype, "left", {
get: function () {
return this.x;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "right", {
get: function () {
return this.x + this.width;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "top", {
get: function () {
return this.y;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "bottom", {
get: function () {
return this.y + this.height;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "EMPTY", {
get: function () {
return new a(0, 0, 0, 0);
},
enumerable: false,
configurable: true
});
a.prototype.clone = function () {
return new a(this.x, this.y, this.width, this.height);
};
a.prototype.copyFrom = function (a) {
this.x = a.x;
this.y = a.y;
this.width = a.width;
this.height = a.height;
return this;
};
a.prototype.copyTo = function (a) {
a.x = this.x;
a.y = this.y;
a.width = this.width;
a.height = this.height;
return a;
};
a.prototype.contains = function (a, b) {
return this.width > 0 && this.height > 0 && a >= this.x && a < this.x + this.width && b >= this.y && b < this.y + this.height;
};
a.prototype.intersects = function (a, b) {
if (!b) {
var c = this.x < a.x ? a.x : this.x;
if ((this.right > a.right ? a.right : this.right) <= c) {
return false;
}
var d = this.y < a.y ? a.y : this.y;
return (this.bottom > a.bottom ? a.bottom : this.bottom) > d;
}
var e = this.left;
var f = this.right;
var g = this.top;
var h = this.bottom;
if (f <= e || h <= g) {
return false;
}
var i = pb[0].set(a.left, a.top);
var j = pb[1].set(a.left, a.bottom);
var k = pb[2].set(a.right, a.top);
var l = pb[3].set(a.right, a.bottom);
if (k.x <= i.x || j.y <= i.y) {
return false;
}
var m = Math.sign(b.a * b.d - b.b * b.c);
if (m === 0) {
return false;
}
b.apply(i, i);
b.apply(j, j);
b.apply(k, k);
b.apply(l, l);
if (Math.max(i.x, j.x, k.x, l.x) <= e || Math.min(i.x, j.x, k.x, l.x) >= f || Math.max(i.y, j.y, k.y, l.y) <= g || Math.min(i.y, j.y, k.y, l.y) >= h) {
return false;
}
var n = m * (j.y - i.y);
var o = m * (i.x - j.x);
var p = n * e + o * g;
var q = n * f + o * g;
var r = n * e + o * h;
var s = n * f + o * h;
if (Math.max(p, q, r, s) <= n * i.x + o * i.y || Math.min(p, q, r, s) >= n * l.x + o * l.y) {
return false;
}
var t = m * (i.y - k.y);
var u = m * (k.x - i.x);
var v = t * e + u * g;
var w = t * f + u * g;
var x = t * e + u * h;
var y = t * f + u * h;
return Math.max(v, w, x, y) > t * i.x + u * i.y && Math.min(v, w, x, y) < t * l.x + u * l.y;
};
a.prototype.pad = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = a;
}
this.x -= a;
this.y -= b;
this.width += a * 2;
this.height += b * 2;
return this;
};
a.prototype.fit = function (a) {
var b = Math.max(this.x, a.x);
var c = Math.min(this.x + this.width, a.x + a.width);
var d = Math.max(this.y, a.y);
var e = Math.min(this.y + this.height, a.y + a.height);
this.x = b;
this.width = Math.max(c - b, 0);
this.y = d;
this.height = Math.max(e - d, 0);
return this;
};
a.prototype.ceil = function (a, b) {
if (a === undefined) {
a = 1;
}
if (b === undefined) {
b = 0.001;
}
var c = Math.ceil((this.x + this.width - b) * a) / a;
var d = Math.ceil((this.y + this.height - b) * a) / a;
this.x = Math.floor((this.x + b) * a) / a;
this.y = Math.floor((this.y + b) * a) / a;
this.width = c - this.x;
this.height = d - this.y;
return this;
};
a.prototype.enlarge = function (a) {
var b = Math.min(this.x, a.x);
var c = Math.max(this.x + this.width, a.x + a.width);
var d = Math.min(this.y, a.y);
var e = Math.max(this.y + this.height, a.y + a.height);
this.x = b;
this.width = c - b;
this.y = d;
this.height = e - d;
return this;
};
a.prototype.toString = function () {
return "[@pixi/math:Rectangle x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + "]";
};
return a;
}();
var rb = function () {
function a(a, b, c) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 0;
}
this.x = a;
this.y = b;
this.radius = c;
this.type = kb.CIRC;
}
a.prototype.clone = function () {
return new a(this.x, this.y, this.radius);
};
a.prototype.contains = function (a, b) {
if (this.radius <= 0) {
return false;
}
var c = this.radius * this.radius;
var d = this.x - a;
var e = this.y - b;
return (d *= d) + (e *= e) <= c;
};
a.prototype.getBounds = function () {
return new qb(this.x - this.radius, this.y - this.radius, this.radius * 2, this.radius * 2);
};
a.prototype.toString = function () {
return "[@pixi/math:Circle x=" + this.x + " y=" + this.y + " radius=" + this.radius + "]";
};
return a;
}();
var sb = function () {
function a(a, b, c, d) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 0;
}
this.x = a;
this.y = b;
this.width = c;
this.height = d;
this.type = kb.ELIP;
}
a.prototype.clone = function () {
return new a(this.x, this.y, this.width, this.height);
};
a.prototype.contains = function (a, b) {
if (this.width <= 0 || this.height <= 0) {
return false;
}
var c = (a - this.x) / this.width;
var d = (b - this.y) / this.height;
return (c *= c) + (d *= d) <= 1;
};
a.prototype.getBounds = function () {
return new qb(this.x - this.width, this.y - this.height, this.width, this.height);
};
a.prototype.toString = function () {
return "[@pixi/math:Ellipse x=" + this.x + " y=" + this.y + " width=" + this.width + " height=" + this.height + "]";
};
return a;
}();
var tb = function () {
function a() {
for (var a = arguments, b = [], c = 0; c < arguments.length; c++) {
b[c] = a[c];
}
var d = Array.isArray(b[0]) ? b[0] : b;
if (typeof d[0] != "number") {
for (var e = [], f = 0, g = d.length; f < g; f++) {
e.push(d[f].x, d[f].y);
}
d = e;
}
this.points = d;
this.type = kb.POLY;
this.closeStroke = true;
}
a.prototype.clone = function () {
var b = new a(this.points.slice());
b.closeStroke = this.closeStroke;
return b;
};
a.prototype.contains = function (a, b) {
for (var c = false, d = this.points.length / 2, e = 0, f = d - 1; e < d; f = e++) {
var g = this.points[e * 2];
var h = this.points[e * 2 + 1];
var i = this.points[f * 2];
var j = this.points[f * 2 + 1];
if (h > b != j > b && a < (b - h) / (j - h) * (i - g) + g) {
c = !c;
}
}
return c;
};
a.prototype.toString = function () {
return "[@pixi/math:PolygoncloseStroke=" + this.closeStroke + "points=" + this.points.reduce(function (a, b) {
return a + ", " + b;
}, "") + "]";
};
return a;
}();
var ub = function () {
function a(a, b, c, d, e) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 0;
}
if (e === undefined) {
e = 20;
}
this.x = a;
this.y = b;
this.width = c;
this.height = d;
this.radius = e;
this.type = kb.RREC;
}
a.prototype.clone = function () {
return new a(this.x, this.y, this.width, this.height, this.radius);
};
a.prototype.contains = function (a, b) {
if (this.width <= 0 || this.height <= 0) {
return false;
}
if (a >= this.x && a <= this.x + this.width && b >= this.y && b <= this.y + this.height) {
var c = Math.max(0, Math.min(this.radius, Math.min(this.width, this.height) / 2));
if (b >= this.y + c && b <= this.y + this.height - c || a >= this.x + c && a <= this.x + this.width - c) {
return true;
}
var d = a - (this.x + c);
var e = b - (this.y + c);
var f = c * c;
if (d * d + e * e <= f) {
return true;
}
if ((d = a - (this.x + this.width - c)) * d + e * e <= f) {
return true;
}
if (d * d + (e = b - (this.y + this.height - c)) * e <= f) {
return true;
}
if ((d = a - (this.x + c)) * d + e * e <= f) {
return true;
}
}
return false;
};
a.prototype.toString = function () {
return "[@pixi/math:RoundedRectangle x=" + this.x + " y=" + this.y + "width=" + this.width + " height=" + this.height + " radius=" + this.radius + "]";
};
return a;
}();
var vb = function () {
function a(a, b, c, d) {
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 0;
}
this._x = c;
this._y = d;
this.cb = a;
this.scope = b;
}
a.prototype.clone = function (b, c) {
if (b === undefined) {
b = this.cb;
}
if (c === undefined) {
c = this.scope;
}
return new a(b, c, this._x, this._y);
};
a.prototype.set = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = a;
}
if (this._x !== a || this._y !== b) {
this._x = a;
this._y = b;
this.cb.call(this.scope);
}
return this;
};
a.prototype.copyFrom = function (a) {
if (this._x !== a.x || this._y !== a.y) {
this._x = a.x;
this._y = a.y;
this.cb.call(this.scope);
}
return this;
};
a.prototype.copyTo = function (a) {
a.set(this._x, this._y);
return a;
};
a.prototype.equals = function (a) {
return a.x === this._x && a.y === this._y;
};
a.prototype.toString = function () {
return "[@pixi/math:ObservablePoint x=0 y=0 scope=" + this.scope + "]";
};
Object.defineProperty(a.prototype, "x", {
get: function () {
return this._x;
},
set: function (a) {
if (this._x !== a) {
this._x = a;
this.cb.call(this.scope);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "y", {
get: function () {
return this._y;
},
set: function (a) {
if (this._y !== a) {
this._y = a;
this.cb.call(this.scope);
}
},
enumerable: false,
configurable: true
});
return a;
}();
var wb = function () {
function a(a, b, c, d, e, f) {
if (a === undefined) {
a = 1;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 1;
}
if (e === undefined) {
e = 0;
}
if (f === undefined) {
f = 0;
}
this.array = null;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = e;
this.ty = f;
}
a.prototype.fromArray = function (a) {
this.a = a[0];
this.b = a[1];
this.c = a[3];
this.d = a[4];
this.tx = a[2];
this.ty = a[5];
};
a.prototype.set = function (a, b, c, d, e, f) {
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.tx = e;
this.ty = f;
return this;
};
a.prototype.toArray = function (a, b) {
this.array ||= new Float32Array(9);
var c = b || this.array;
if (a) {
c[0] = this.a;
c[1] = this.b;
c[2] = 0;
c[3] = this.c;
c[4] = this.d;
c[5] = 0;
c[6] = this.tx;
c[7] = this.ty;
c[8] = 1;
} else {
c[0] = this.a;
c[1] = this.c;
c[2] = this.tx;
c[3] = this.b;
c[4] = this.d;
c[5] = this.ty;
c[6] = 0;
c[7] = 0;
c[8] = 1;
}
return c;
};
a.prototype.apply = function (a, b) {
b = b || new ob();
var c = a.x;
var d = a.y;
b.x = this.a * c + this.c * d + this.tx;
b.y = this.b * c + this.d * d + this.ty;
return b;
};
a.prototype.applyInverse = function (a, b) {
b = b || new ob();
var c = 1 / (this.a * this.d + this.c * -this.b);
var d = a.x;
var e = a.y;
b.x = this.d * c * d + -this.c * c * e + (this.ty * this.c - this.tx * this.d) * c;
b.y = this.a * c * e + -this.b * c * d + (-this.ty * this.a + this.tx * this.b) * c;
return b;
};
a.prototype.translate = function (a, b) {
this.tx += a;
this.ty += b;
return this;
};
a.prototype.scale = function (a, b) {
this.a *= a;
this.d *= b;
this.c *= a;
this.b *= b;
this.tx *= a;
this.ty *= b;
return this;
};
a.prototype.rotate = function (a) {
var b = Math.cos(a);
var c = Math.sin(a);
var d = this.a;
var e = this.c;
var f = this.tx;
this.a = d * b - this.b * c;
this.b = d * c + this.b * b;
this.c = e * b - this.d * c;
this.d = e * c + this.d * b;
this.tx = f * b - this.ty * c;
this.ty = f * c + this.ty * b;
return this;
};
a.prototype.append = function (a) {
var b = this.a;
var c = this.b;
var d = this.c;
var e = this.d;
this.a = a.a * b + a.b * d;
this.b = a.a * c + a.b * e;
this.c = a.c * b + a.d * d;
this.d = a.c * c + a.d * e;
this.tx = a.tx * b + a.ty * d + this.tx;
this.ty = a.tx * c + a.ty * e + this.ty;
return this;
};
a.prototype.setTransform = function (a, b, c, d, e, f, g, h, i) {
this.a = Math.cos(g + i) * e;
this.b = Math.sin(g + i) * e;
this.c = -Math.sin(g - h) * f;
this.d = Math.cos(g - h) * f;
this.tx = a - (c * this.a + d * this.c);
this.ty = b - (c * this.b + d * this.d);
return this;
};
a.prototype.prepend = function (a) {
var b = this.tx;
if (a.a !== 1 || a.b !== 0 || a.c !== 0 || a.d !== 1) {
var c = this.a;
var d = this.c;
this.a = c * a.a + this.b * a.c;
this.b = c * a.b + this.b * a.d;
this.c = d * a.a + this.d * a.c;
this.d = d * a.b + this.d * a.d;
}
this.tx = b * a.a + this.ty * a.c + a.tx;
this.ty = b * a.b + this.ty * a.d + a.ty;
return this;
};
a.prototype.decompose = function (a) {
var b = this.a;
var c = this.b;
var d = this.c;
var e = this.d;
var f = a.pivot;
var g = -Math.atan2(-d, e);
var h = Math.atan2(c, b);
var i = Math.abs(g + h);
if (i < 0.00001 || Math.abs(lb - i) < 0.00001) {
a.rotation = h;
a.skew.x = a.skew.y = 0;
} else {
a.rotation = 0;
a.skew.x = g;
a.skew.y = h;
}
a.scale.x = Math.sqrt(b * b + c * c);
a.scale.y = Math.sqrt(d * d + e * e);
a.position.x = this.tx + (f.x * b + f.y * d);
a.position.y = this.ty + (f.x * c + f.y * e);
return a;
};
a.prototype.invert = function () {
var a = this.a;
var b = this.b;
var c = this.c;
var d = this.d;
var e = this.tx;
var f = a * d - b * c;
this.a = d / f;
this.b = -b / f;
this.c = -c / f;
this.d = a / f;
this.tx = (c * this.ty - d * e) / f;
this.ty = -(a * this.ty - b * e) / f;
return this;
};
a.prototype.identity = function () {
this.a = 1;
this.b = 0;
this.c = 0;
this.d = 1;
this.tx = 0;
this.ty = 0;
return this;
};
a.prototype.clone = function () {
var b = new a();
b.a = this.a;
b.b = this.b;
b.c = this.c;
b.d = this.d;
b.tx = this.tx;
b.ty = this.ty;
return b;
};
a.prototype.copyTo = function (a) {
a.a = this.a;
a.b = this.b;
a.c = this.c;
a.d = this.d;
a.tx = this.tx;
a.ty = this.ty;
return a;
};
a.prototype.copyFrom = function (a) {
this.a = a.a;
this.b = a.b;
this.c = a.c;
this.d = a.d;
this.tx = a.tx;
this.ty = a.ty;
return this;
};
a.prototype.toString = function () {
return "[@pixi/math:Matrix a=" + this.a + " b=" + this.b + " c=" + this.c + " d=" + this.d + " tx=" + this.tx + " ty=" + this.ty + "]";
};
Object.defineProperty(a, "IDENTITY", {
get: function () {
return new a();
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "TEMP_MATRIX", {
get: function () {
return new a();
},
enumerable: false,
configurable: true
});
return a;
}();
var xb = [1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1, 0, 1];
var yb = [0, 1, 1, 1, 0, -1, -1, -1, 0, 1, 1, 1, 0, -1, -1, -1];
var zb = [0, -1, -1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 0, -1, -1, -1];
var Ab = [1, 1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, 1, 0, -1];
var Bb = [];
var Cb = [];
var Db = Math.sign;
(function () {
for (var a = 0; a < 16; a++) {
var b = [];
Bb.push(b);
for (var c = 0; c < 16; c++) {
for (var d = Db(xb[a] * xb[c] + zb[a] * yb[c]), e = Db(yb[a] * xb[c] + Ab[a] * yb[c]), f = Db(xb[a] * zb[c] + zb[a] * Ab[c]), g = Db(yb[a] * zb[c] + Ab[a] * Ab[c]), h = 0; h < 16; h++) {
if (xb[h] === d && yb[h] === e && zb[h] === f && Ab[h] === g) {
b.push(h);
break;
}
}
}
}
for (a = 0; a < 16; a++) {
var i = new wb();
i.set(xb[a], yb[a], zb[a], Ab[a], 0, 0);
Cb.push(i);
}
})();
var Eb = {
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: function (a) {
return xb[a];
},
uY: function (a) {
return yb[a];
},
vX: function (a) {
return zb[a];
},
vY: function (a) {
return Ab[a];
},
inv: function (a) {
if (a & 8) {
return a & 15;
} else {
return -a & 7;
}
},
add: function (a, b) {
return Bb[a][b];
},
sub: function (a, b) {
return Bb[a][Eb.inv(b)];
},
rotate180: function (a) {
return a ^ 4;
},
isVertical: function (a) {
return (a & 3) == 2;
},
byDirection: function (a, b) {
if (Math.abs(a) * 2 <= Math.abs(b)) {
if (b >= 0) {
return Eb.S;
} else {
return Eb.N;
}
} else if (Math.abs(b) * 2 <= Math.abs(a)) {
if (a > 0) {
return Eb.E;
} else {
return Eb.W;
}
} else if (b > 0) {
if (a > 0) {
return Eb.SE;
} else {
return Eb.SW;
}
} else if (a > 0) {
return Eb.NE;
} else {
return Eb.NW;
}
},
matrixAppendRotationInv: function (a, b, c, d) {
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = 0;
}
var e = Cb[Eb.inv(b)];
e.tx = c;
e.ty = d;
a.append(e);
}
};
var Fb = function () {
function a() {
this.worldTransform = new wb();
this.localTransform = new wb();
this.position = new vb(this.onChange, this, 0, 0);
this.scale = new vb(this.onChange, this, 1, 1);
this.pivot = new vb(this.onChange, this, 0, 0);
this.skew = new vb(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;
}
a.prototype.onChange = function () {
this._localID++;
};
a.prototype.updateSkew = function () {
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++;
};
a.prototype.toString = function () {
return "[@pixi/math:Transform position=(" + this.position.x + ", " + this.position.y + ") rotation=" + this.rotation + " scale=(" + this.scale.x + ", " + this.scale.y + ") skew=(" + this.skew.x + ", " + this.skew.y + ") ]";
};
a.prototype.updateLocalTransform = function () {
var a = this.localTransform;
if (this._localID !== this._currentLocalID) {
a.a = this._cx * this.scale.x;
a.b = this._sx * this.scale.x;
a.c = this._cy * this.scale.y;
a.d = this._sy * this.scale.y;
a.tx = this.position.x - (this.pivot.x * a.a + this.pivot.y * a.c);
a.ty = this.position.y - (this.pivot.x * a.b + this.pivot.y * a.d);
this._currentLocalID = this._localID;
this._parentID = -1;
}
};
a.prototype.updateTransform = function (a) {
var b = this.localTransform;
if (this._localID !== this._currentLocalID) {
b.a = this._cx * this.scale.x;
b.b = this._sx * this.scale.x;
b.c = this._cy * this.scale.y;
b.d = this._sy * this.scale.y;
b.tx = this.position.x - (this.pivot.x * b.a + this.pivot.y * b.c);
b.ty = this.position.y - (this.pivot.x * b.b + this.pivot.y * b.d);
this._currentLocalID = this._localID;
this._parentID = -1;
}
if (this._parentID !== a._worldID) {
var c = a.worldTransform;
var d = this.worldTransform;
d.a = b.a * c.a + b.b * c.c;
d.b = b.a * c.b + b.b * c.d;
d.c = b.c * c.a + b.d * c.c;
d.d = b.c * c.b + b.d * c.d;
d.tx = b.tx * c.a + b.ty * c.c + c.tx;
d.ty = b.tx * c.b + b.ty * c.d + c.ty;
this._parentID = a._worldID;
this._worldID++;
}
};
a.prototype.setFromMatrix = function (a) {
a.decompose(this);
this._localID++;
};
Object.defineProperty(a.prototype, "rotation", {
get: function () {
return this._rotation;
},
set: function (a) {
if (this._rotation !== a) {
this._rotation = a;
this.updateSkew();
}
},
enumerable: false,
configurable: true
});
a.IDENTITY = new a();
return a;
}();
Fa.SORTABLE_CHILDREN = false;
var Gb = function () {
function a() {
this.minX = Infinity;
this.minY = Infinity;
this.maxX = -Infinity;
this.maxY = -Infinity;
this.rect = null;
this.updateID = -1;
}
a.prototype.isEmpty = function () {
return this.minX > this.maxX || this.minY > this.maxY;
};
a.prototype.clear = function () {
this.minX = Infinity;
this.minY = Infinity;
this.maxX = -Infinity;
this.maxY = -Infinity;
};
a.prototype.getRectangle = function (a) {
if (this.minX > this.maxX || this.minY > this.maxY) {
return qb.EMPTY;
} else {
(a = a || new qb(0, 0, 1, 1)).x = this.minX;
a.y = this.minY;
a.width = this.maxX - this.minX;
a.height = this.maxY - this.minY;
return a;
}
};
a.prototype.addPoint = function (a) {
this.minX = Math.min(this.minX, a.x);
this.maxX = Math.max(this.maxX, a.x);
this.minY = Math.min(this.minY, a.y);
this.maxY = Math.max(this.maxY, a.y);
};
a.prototype.addPointMatrix = function (a, b) {
var c = a.a;
var d = a.b;
var e = a.c;
var f = a.d;
var g = a.tx;
var h = a.ty;
var i = c * b.x + e * b.y + g;
var j = d * b.x + f * b.y + h;
this.minX = Math.min(this.minX, i);
this.maxX = Math.max(this.maxX, i);
this.minY = Math.min(this.minY, j);
this.maxY = Math.max(this.maxY, j);
};
a.prototype.addQuad = function (a) {
var b = this.minX;
var c = this.minY;
var d = this.maxX;
var e = this.maxY;
var f = a[0];
var g = a[1];
b = f < b ? f : b;
c = g < c ? g : c;
d = f > d ? f : d;
e = g > e ? g : e;
b = (f = a[2]) < b ? f : b;
c = (g = a[3]) < c ? g : c;
d = f > d ? f : d;
e = g > e ? g : e;
b = (f = a[4]) < b ? f : b;
c = (g = a[5]) < c ? g : c;
d = f > d ? f : d;
e = g > e ? g : e;
b = (f = a[6]) < b ? f : b;
c = (g = a[7]) < c ? g : c;
d = f > d ? f : d;
e = g > e ? g : e;
this.minX = b;
this.minY = c;
this.maxX = d;
this.maxY = e;
};
a.prototype.addFrame = function (a, b, c, d, e) {
this.addFrameMatrix(a.worldTransform, b, c, d, e);
};
a.prototype.addFrameMatrix = function (a, b, c, d, e) {
var f = a.a;
var g = a.b;
var h = a.c;
var i = a.d;
var j = a.tx;
var k = a.ty;
var l = this.minX;
var m = this.minY;
var n = this.maxX;
var o = this.maxY;
var p = f * b + h * c + j;
var q = g * b + i * c + k;
l = p < l ? p : l;
m = q < m ? q : m;
n = p > n ? p : n;
o = q > o ? q : o;
l = (p = f * d + h * c + j) < l ? p : l;
m = (q = g * d + i * c + k) < m ? q : m;
n = p > n ? p : n;
o = q > o ? q : o;
l = (p = f * b + h * e + j) < l ? p : l;
m = (q = g * b + i * e + k) < m ? q : m;
n = p > n ? p : n;
o = q > o ? q : o;
l = (p = f * d + h * e + j) < l ? p : l;
m = (q = g * d + i * e + k) < m ? q : m;
n = p > n ? p : n;
o = q > o ? q : o;
this.minX = l;
this.minY = m;
this.maxX = n;
this.maxY = o;
};
a.prototype.addVertexData = function (a, b, c) {
for (var d = this.minX, e = this.minY, f = this.maxX, g = this.maxY, h = b; h < c; h += 2) {
var i = a[h];
var j = a[h + 1];
d = i < d ? i : d;
e = j < e ? j : e;
f = i > f ? i : f;
g = j > g ? j : g;
}
this.minX = d;
this.minY = e;
this.maxX = f;
this.maxY = g;
};
a.prototype.addVertices = function (a, b, c, d) {
this.addVerticesMatrix(a.worldTransform, b, c, d);
};
a.prototype.addVerticesMatrix = function (a, b, c, d, e, f) {
if (e === undefined) {
e = 0;
}
if (f === undefined) {
f = e;
}
for (var g = a.a, h = a.b, i = a.c, j = a.d, k = a.tx, l = a.ty, m = this.minX, n = this.minY, o = this.maxX, p = this.maxY, q = c; q < d; q += 2) {
var r = b[q];
var s = b[q + 1];
var t = g * r + i * s + k;
var u = j * s + h * r + l;
m = Math.min(m, t - e);
o = Math.max(o, t + e);
n = Math.min(n, u - f);
p = Math.max(p, u + f);
}
this.minX = m;
this.minY = n;
this.maxX = o;
this.maxY = p;
};
a.prototype.addBounds = function (a) {
var b = this.minX;
var c = this.minY;
var d = this.maxX;
var e = this.maxY;
this.minX = a.minX < b ? a.minX : b;
this.minY = a.minY < c ? a.minY : c;
this.maxX = a.maxX > d ? a.maxX : d;
this.maxY = a.maxY > e ? a.maxY : e;
};
a.prototype.addBoundsMask = function (a, b) {
var c = a.minX > b.minX ? a.minX : b.minX;
var d = a.minY > b.minY ? a.minY : b.minY;
var e = a.maxX < b.maxX ? a.maxX : b.maxX;
var f = a.maxY < b.maxY ? a.maxY : b.maxY;
if (c <= e && d <= f) {
var g = this.minX;
var h = this.minY;
var i = this.maxX;
var j = this.maxY;
this.minX = c < g ? c : g;
this.minY = d < h ? d : h;
this.maxX = e > i ? e : i;
this.maxY = f > j ? f : j;
}
};
a.prototype.addBoundsMatrix = function (a, b) {
this.addFrameMatrix(b, a.minX, a.minY, a.maxX, a.maxY);
};
a.prototype.addBoundsArea = function (a, b) {
var c = a.minX > b.x ? a.minX : b.x;
var d = a.minY > b.y ? a.minY : b.y;
var e = a.maxX < b.x + b.width ? a.maxX : b.x + b.width;
var f = a.maxY < b.y + b.height ? a.maxY : b.y + b.height;
if (c <= e && d <= f) {
var g = this.minX;
var h = this.minY;
var i = this.maxX;
var j = this.maxY;
this.minX = c < g ? c : g;
this.minY = d < h ? d : h;
this.maxX = e > i ? e : i;
this.maxY = f > j ? f : j;
}
};
a.prototype.pad = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = a;
}
if (!this.isEmpty()) {
this.minX -= a;
this.maxX += a;
this.minY -= b;
this.maxY += b;
}
};
a.prototype.addFramePad = function (a, b, c, d, e, f) {
a -= e;
b -= f;
c += e;
d += f;
this.minX = this.minX < a ? this.minX : a;
this.maxX = this.maxX > c ? this.maxX : c;
this.minY = this.minY < b ? this.minY : b;
this.maxY = this.maxY > d ? this.maxY : d;
};
return a;
}();
function Hb(a, b) {
Hb = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Hb(a, b);
}
function Ib(a, b) {
function c() {
this.constructor = a;
}
Hb(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var Jb;
var Kb;
var Lb;
var Mb;
var Nb;
var Ob;
var Pb;
var Qb;
var Rb;
var Sb;
var Tb;
var Ub;
var Vb;
var Wb;
var Xb;
var Yb;
var Zb;
var $b;
var _b;
var ac = function (a) {
function b() {
var b = a.call(this) || this;
b.tempDisplayObjectParent = null;
b.transform = new Fb();
b.alpha = 1;
b.visible = true;
b.renderable = true;
b.cullable = false;
b.cullArea = null;
b.parent = null;
b.worldAlpha = 1;
b._lastSortedIndex = 0;
b._zIndex = 0;
b.filterArea = null;
b.filters = null;
b._enabledFilters = null;
b._bounds = new Gb();
b._localBounds = null;
b._boundsID = 0;
b._boundsRect = null;
b._localBoundsRect = null;
b._mask = null;
b._maskRefCount = 0;
b._destroyed = false;
b.isSprite = false;
b.isMask = false;
return b;
}
Ib(b, a);
b.mixin = function (a) {
for (var c = Object.keys(a), d = 0; d < c.length; ++d) {
var e = c[d];
Object.defineProperty(b.prototype, e, Object.getOwnPropertyDescriptor(a, e));
}
};
Object.defineProperty(b.prototype, "destroyed", {
get: function () {
return this._destroyed;
},
enumerable: false,
configurable: true
});
b.prototype._recursivePostUpdateTransform = function () {
if (this.parent) {
this.parent._recursivePostUpdateTransform();
this.transform.updateTransform(this.parent.transform);
} else {
this.transform.updateTransform(this._tempDisplayObjectParent.transform);
}
};
b.prototype.updateTransform = function () {
this._boundsID++;
this.transform.updateTransform(this.parent.transform);
this.worldAlpha = this.alpha * this.parent.worldAlpha;
};
b.prototype.getBounds = function (a, b) {
if (!a) {
if (this.parent) {
this._recursivePostUpdateTransform();
this.updateTransform();
} else {
this.parent = this._tempDisplayObjectParent;
this.updateTransform();
this.parent = null;
}
}
if (this._bounds.updateID !== this._boundsID) {
this.calculateBounds();
this._bounds.updateID = this._boundsID;
}
if (!b) {
this._boundsRect ||= new qb();
b = this._boundsRect;
}
return this._bounds.getRectangle(b);
};
b.prototype.getLocalBounds = function (a) {
if (!a) {
this._localBoundsRect ||= new qb();
a = this._localBoundsRect;
}
this._localBounds ||= new Gb();
var b = this.transform;
var c = this.parent;
this.parent = null;
this.transform = this._tempDisplayObjectParent.transform;
var d = this._bounds;
var e = this._boundsID;
this._bounds = this._localBounds;
var f = this.getBounds(false, a);
this.parent = c;
this.transform = b;
this._bounds = d;
this._bounds.updateID += this._boundsID - e;
return f;
};
b.prototype.toGlobal = function (a, b, c) {
if (c === undefined) {
c = false;
}
if (!c) {
this._recursivePostUpdateTransform();
if (this.parent) {
this.displayObjectUpdateTransform();
} else {
this.parent = this._tempDisplayObjectParent;
this.displayObjectUpdateTransform();
this.parent = null;
}
}
return this.worldTransform.apply(a, b);
};
b.prototype.toLocal = function (a, b, c, d) {
if (b) {
a = b.toGlobal(a, c, d);
}
if (!d) {
this._recursivePostUpdateTransform();
if (this.parent) {
this.displayObjectUpdateTransform();
} else {
this.parent = this._tempDisplayObjectParent;
this.displayObjectUpdateTransform();
this.parent = null;
}
}
return this.worldTransform.applyInverse(a, c);
};
b.prototype.setParent = function (a) {
if (!a || !a.addChild) {
throw new Error("setParent: Argument must be a Container");
}
a.addChild(this);
return a;
};
b.prototype.setTransform = function (a, b, c, d, e, f, g, h, i) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 1;
}
if (d === undefined) {
d = 1;
}
if (e === undefined) {
e = 0;
}
if (f === undefined) {
f = 0;
}
if (g === undefined) {
g = 0;
}
if (h === undefined) {
h = 0;
}
if (i === undefined) {
i = 0;
}
this.position.x = a;
this.position.y = b;
this.scale.x = c || 1;
this.scale.y = d || 1;
this.rotation = e;
this.skew.x = f;
this.skew.y = g;
this.pivot.x = h;
this.pivot.y = i;
return this;
};
b.prototype.destroy = function (a) {
if (this.parent) {
this.parent.removeChild(this);
}
this.emit("destroyed");
this.removeAllListeners();
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._destroyed = true;
};
Object.defineProperty(b.prototype, "_tempDisplayObjectParent", {
get: function () {
if (this.tempDisplayObjectParent === null) {
this.tempDisplayObjectParent = new bc();
}
return this.tempDisplayObjectParent;
},
enumerable: false,
configurable: true
});
b.prototype.enableTempParent = function () {
var a = this.parent;
this.parent = this._tempDisplayObjectParent;
return a;
};
b.prototype.disableTempParent = function (a) {
this.parent = a;
};
Object.defineProperty(b.prototype, "x", {
get: function () {
return this.position.x;
},
set: function (a) {
this.transform.position.x = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "y", {
get: function () {
return this.position.y;
},
set: function (a) {
this.transform.position.y = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "worldTransform", {
get: function () {
return this.transform.worldTransform;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "localTransform", {
get: function () {
return this.transform.localTransform;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "position", {
get: function () {
return this.transform.position;
},
set: function (a) {
this.transform.position.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "scale", {
get: function () {
return this.transform.scale;
},
set: function (a) {
this.transform.scale.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "pivot", {
get: function () {
return this.transform.pivot;
},
set: function (a) {
this.transform.pivot.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "skew", {
get: function () {
return this.transform.skew;
},
set: function (a) {
this.transform.skew.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "rotation", {
get: function () {
return this.transform.rotation;
},
set: function (a) {
this.transform.rotation = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "angle", {
get: function () {
return this.transform.rotation * mb;
},
set: function (a) {
this.transform.rotation = a * nb;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "zIndex", {
get: function () {
return this._zIndex;
},
set: function (a) {
this._zIndex = a;
if (this.parent) {
this.parent.sortDirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "worldVisible", {
get: function () {
var a = this;
do {
if (!a.visible) {
return false;
}
a = a.parent;
} while (a);
return true;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "mask", {
get: function () {
return this._mask;
},
set: function (a) {
var b;
if (this._mask !== a) {
if (this._mask) {
(b = this._mask.maskObject || this._mask)._maskRefCount--;
if (b._maskRefCount === 0) {
b.renderable = true;
b.isMask = false;
}
}
this._mask = a;
if (this._mask) {
if ((b = this._mask.maskObject || this._mask)._maskRefCount === 0) {
b.renderable = false;
b.isMask = true;
}
b._maskRefCount++;
}
}
},
enumerable: false,
configurable: true
});
return b;
}(Ha());
var bc = function (a) {
function b() {
var b = a !== null && a.apply(this, arguments) || this;
b.sortDirty = null;
return b;
}
Ib(b, a);
return b;
}(ac);
function cc(a, b) {
if (a.zIndex === b.zIndex) {
return a._lastSortedIndex - b._lastSortedIndex;
} else {
return a.zIndex - b.zIndex;
}
}
ac.prototype.displayObjectUpdateTransform = ac.prototype.updateTransform;
(function (a) {
a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY";
a[a.WEBGL = 1] = "WEBGL";
a[a.WEBGL2 = 2] = "WEBGL2";
})(Jb ||= {});
(function (a) {
a[a.UNKNOWN = 0] = "UNKNOWN";
a[a.WEBGL = 1] = "WEBGL";
a[a.CANVAS = 2] = "CANVAS";
})(Kb ||= {});
(function (a) {
a[a.COLOR = 16384] = "COLOR";
a[a.DEPTH = 256] = "DEPTH";
a[a.STENCIL = 1024] = "STENCIL";
})(Lb ||= {});
(function (a) {
a[a.NORMAL = 0] = "NORMAL";
a[a.ADD = 1] = "ADD";
a[a.MULTIPLY = 2] = "MULTIPLY";
a[a.SCREEN = 3] = "SCREEN";
a[a.OVERLAY = 4] = "OVERLAY";
a[a.DARKEN = 5] = "DARKEN";
a[a.LIGHTEN = 6] = "LIGHTEN";
a[a.COLOR_DODGE = 7] = "COLOR_DODGE";
a[a.COLOR_BURN = 8] = "COLOR_BURN";
a[a.HARD_LIGHT = 9] = "HARD_LIGHT";
a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT";
a[a.DIFFERENCE = 11] = "DIFFERENCE";
a[a.EXCLUSION = 12] = "EXCLUSION";
a[a.HUE = 13] = "HUE";
a[a.SATURATION = 14] = "SATURATION";
a[a.COLOR = 15] = "COLOR";
a[a.LUMINOSITY = 16] = "LUMINOSITY";
a[a.NORMAL_NPM = 17] = "NORMAL_NPM";
a[a.ADD_NPM = 18] = "ADD_NPM";
a[a.SCREEN_NPM = 19] = "SCREEN_NPM";
a[a.NONE = 20] = "NONE";
a[a.SRC_OVER = 0] = "SRC_OVER";
a[a.SRC_IN = 21] = "SRC_IN";
a[a.SRC_OUT = 22] = "SRC_OUT";
a[a.SRC_ATOP = 23] = "SRC_ATOP";
a[a.DST_OVER = 24] = "DST_OVER";
a[a.DST_IN = 25] = "DST_IN";
a[a.DST_OUT = 26] = "DST_OUT";
a[a.DST_ATOP = 27] = "DST_ATOP";
a[a.ERASE = 26] = "ERASE";
a[a.SUBTRACT = 28] = "SUBTRACT";
a[a.XOR = 29] = "XOR";
})(Mb ||= {});
(function (a) {
a[a.POINTS = 0] = "POINTS";
a[a.LINES = 1] = "LINES";
a[a.LINE_LOOP = 2] = "LINE_LOOP";
a[a.LINE_STRIP = 3] = "LINE_STRIP";
a[a.TRIANGLES = 4] = "TRIANGLES";
a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP";
a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN";
})(Nb ||= {});
(function (a) {
a[a.RGBA = 6408] = "RGBA";
a[a.RGB = 6407] = "RGB";
a[a.RG = 33319] = "RG";
a[a.RED = 6403] = "RED";
a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER";
a[a.RGB_INTEGER = 36248] = "RGB_INTEGER";
a[a.RG_INTEGER = 33320] = "RG_INTEGER";
a[a.RED_INTEGER = 36244] = "RED_INTEGER";
a[a.ALPHA = 6406] = "ALPHA";
a[a.LUMINANCE = 6409] = "LUMINANCE";
a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA";
a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT";
a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL";
})(Ob ||= {});
(function (a) {
a[a.TEXTURE_2D = 3553] = "TEXTURE_2D";
a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP";
a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY";
a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z";
})(Pb ||= {});
(function (a) {
a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE";
a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT";
a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5";
a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4";
a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1";
a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT";
a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV";
a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV";
a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8";
a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV";
a[a.BYTE = 5120] = "BYTE";
a[a.SHORT = 5122] = "SHORT";
a[a.INT = 5124] = "INT";
a[a.FLOAT = 5126] = "FLOAT";
a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV";
a[a.HALF_FLOAT = 36193] = "HALF_FLOAT";
})(Qb ||= {});
(function (a) {
a[a.FLOAT = 0] = "FLOAT";
a[a.INT = 1] = "INT";
a[a.UINT = 2] = "UINT";
})(Rb ||= {});
(function (a) {
a[a.NEAREST = 0] = "NEAREST";
a[a.LINEAR = 1] = "LINEAR";
})(Sb ||= {});
(function (a) {
a[a.CLAMP = 33071] = "CLAMP";
a[a.REPEAT = 10497] = "REPEAT";
a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT";
})(Tb ||= {});
(function (a) {
a[a.OFF = 0] = "OFF";
a[a.POW2 = 1] = "POW2";
a[a.ON = 2] = "ON";
a[a.ON_MANUAL = 3] = "ON_MANUAL";
})(Ub ||= {});
(function (a) {
a[a.NPM = 0] = "NPM";
a[a.UNPACK = 1] = "UNPACK";
a[a.PMA = 2] = "PMA";
a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA";
a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD";
a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA";
a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA";
})(Vb ||= {});
(function (a) {
a[a.NO = 0] = "NO";
a[a.YES = 1] = "YES";
a[a.AUTO = 2] = "AUTO";
a[a.BLEND = 0] = "BLEND";
a[a.CLEAR = 1] = "CLEAR";
a[a.BLIT = 2] = "BLIT";
})(Wb ||= {});
(function (a) {
a[a.AUTO = 0] = "AUTO";
a[a.MANUAL = 1] = "MANUAL";
})(Xb ||= {});
(function (a) {
a.LOW = "lowp";
a.MEDIUM = "mediump";
a.HIGH = "highp";
})(Yb ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.SCISSOR = 1] = "SCISSOR";
a[a.STENCIL = 2] = "STENCIL";
a[a.SPRITE = 3] = "SPRITE";
})(Zb ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.LOW = 2] = "LOW";
a[a.MEDIUM = 4] = "MEDIUM";
a[a.HIGH = 8] = "HIGH";
})($b ||= {});
(function (a) {
a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER";
a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER";
a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER";
})(_b ||= {});
var dc = function (a) {
function b() {
var b = a.call(this) || this;
b.children = [];
b.sortableChildren = Fa.SORTABLE_CHILDREN;
b.sortDirty = false;
return b;
}
Ib(b, a);
b.prototype.onChildrenChange = function (a) {};
b.prototype.addChild = function () {
for (var a = arguments, b = [], c = 0; c < arguments.length; c++) {
b[c] = a[c];
}
if (b.length > 1) {
for (var d = 0; d < b.length; d++) {
this.addChild(b[d]);
}
} else {
var e = b[0];
if (e.parent) {
e.parent.removeChild(e);
}
e.parent = this;
this.sortDirty = true;
e.transform._parentID = -1;
this.children.push(e);
this._boundsID++;
this.onChildrenChange(this.children.length - 1);
this.emit("childAdded", e, this, this.children.length - 1);
e.emit("added", this);
}
return b[0];
};
b.prototype.addChildAt = function (a, b) {
if (b < 0 || b > this.children.length) {
throw new Error(a + "addChildAt: The index " + b + " supplied is out of bounds " + this.children.length);
}
if (a.parent) {
a.parent.removeChild(a);
}
a.parent = this;
this.sortDirty = true;
a.transform._parentID = -1;
this.children.splice(b, 0, a);
this._boundsID++;
this.onChildrenChange(b);
a.emit("added", this);
this.emit("childAdded", a, this, b);
return a;
};
b.prototype.swapChildren = function (a, b) {
if (a !== b) {
var c = this.getChildIndex(a);
var d = this.getChildIndex(b);
this.children[c] = b;
this.children[d] = a;
this.onChildrenChange(c < d ? c : d);
}
};
b.prototype.getChildIndex = function (a) {
var b = this.children.indexOf(a);
if (b === -1) {
throw new Error("The supplied DisplayObject must be a child of the caller");
}
return b;
};
b.prototype.setChildIndex = function (a, b) {
if (b < 0 || b >= this.children.length) {
throw new Error("The index " + b + " supplied is out of bounds " + this.children.length);
}
var c = this.getChildIndex(a);
$a(this.children, c, 1);
this.children.splice(b, 0, a);
this.onChildrenChange(b);
};
b.prototype.getChildAt = function (a) {
if (a < 0 || a >= this.children.length) {
throw new Error("getChildAt: Index (" + a + ") does not exist.");
}
return this.children[a];
};
b.prototype.removeChild = function () {
for (var a = arguments, b = [], c = 0; c < arguments.length; c++) {
b[c] = a[c];
}
if (b.length > 1) {
for (var d = 0; d < b.length; d++) {
this.removeChild(b[d]);
}
} else {
var e = b[0];
var f = this.children.indexOf(e);
if (f === -1) {
return null;
}
e.parent = null;
e.transform._parentID = -1;
$a(this.children, f, 1);
this._boundsID++;
this.onChildrenChange(f);
e.emit("removed", this);
this.emit("childRemoved", e, this, f);
}
return b[0];
};
b.prototype.removeChildAt = function (a) {
var b = this.getChildAt(a);
b.parent = null;
b.transform._parentID = -1;
$a(this.children, a, 1);
this._boundsID++;
this.onChildrenChange(a);
b.emit("removed", this);
this.emit("childRemoved", b, this, a);
return b;
};
b.prototype.removeChildren = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = this.children.length;
}
var c;
var d = a;
var e = b - d;
if (e > 0 && e <= b) {
c = this.children.splice(d, e);
for (var f = 0; f < c.length; ++f) {
c[f].parent = null;
if (c[f].transform) {
c[f].transform._parentID = -1;
}
}
this._boundsID++;
this.onChildrenChange(a);
f = 0;
for (; f < c.length; ++f) {
c[f].emit("removed", this);
this.emit("childRemoved", c[f], this, f);
}
return c;
}
if (e === 0 && this.children.length === 0) {
return [];
}
throw new RangeError("removeChildren: numeric values are outside the acceptable range.");
};
b.prototype.sortChildren = function () {
for (var a = false, b = 0, c = this.children.length; b < c; ++b) {
var d = this.children[b];
d._lastSortedIndex = b;
if (!a && d.zIndex !== 0) {
a = true;
}
}
if (a && this.children.length > 1) {
this.children.sort(cc);
}
this.sortDirty = false;
};
b.prototype.updateTransform = function () {
if (this.sortableChildren && this.sortDirty) {
this.sortChildren();
}
this._boundsID++;
this.transform.updateTransform(this.parent.transform);
this.worldAlpha = this.alpha * this.parent.worldAlpha;
for (var a = 0, b = this.children.length; a < b; ++a) {
var c = this.children[a];
if (c.visible) {
c.updateTransform();
}
}
};
b.prototype.calculateBounds = function () {
this._bounds.clear();
this._calculateBounds();
for (var a = 0; a < this.children.length; a++) {
var b = this.children[a];
if (b.visible && b.renderable) {
b.calculateBounds();
if (b._mask) {
var c = b._mask.maskObject || b._mask;
c.calculateBounds();
this._bounds.addBoundsMask(b._bounds, c._bounds);
} else if (b.filterArea) {
this._bounds.addBoundsArea(b._bounds, b.filterArea);
} else {
this._bounds.addBounds(b._bounds);
}
}
}
this._bounds.updateID = this._boundsID;
};
b.prototype.getLocalBounds = function (b, c) {
if (c === undefined) {
c = false;
}
var d = a.prototype.getLocalBounds.call(this, b);
if (!c) {
for (var e = 0, f = this.children.length; e < f; ++e) {
var g = this.children[e];
if (g.visible) {
g.updateTransform();
}
}
}
return d;
};
b.prototype._calculateBounds = function () {};
b.prototype._renderWithCulling = function (a) {
var c = a.renderTexture.sourceFrame;
if (c.width > 0 && c.height > 0) {
var d;
var e;
if (this.cullArea) {
d = this.cullArea;
e = this.worldTransform;
} else if (this._render !== b.prototype._render) {
d = this.getBounds(true);
}
if (d && c.intersects(d, e)) {
this._render(a);
} else if (this.cullArea) {
return;
}
for (var f = 0, g = this.children.length; f < g; ++f) {
var h = this.children[f];
var i = h.cullable;
h.cullable = i || !this.cullArea;
h.render(a);
h.cullable = i;
}
}
};
b.prototype.render = function (a) {
if (this.visible && this.worldAlpha > 0 && this.renderable) {
if (this._mask || this.filters && this.filters.length) {
this.renderAdvanced(a);
} else if (this.cullable) {
this._renderWithCulling(a);
} else {
this._render(a);
for (var b = 0, c = this.children.length; b < c; ++b) {
this.children[b].render(a);
}
}
}
};
b.prototype.renderAdvanced = function (a) {
var b = this.filters;
var c = this._mask;
if (b) {
this._enabledFilters ||= [];
this._enabledFilters.length = 0;
for (var d = 0; d < b.length; d++) {
if (b[d].enabled) {
this._enabledFilters.push(b[d]);
}
}
}
var e = b && this._enabledFilters && this._enabledFilters.length || c && (!c.isMaskData || c.enabled && (c.autoDetect || c.type !== Zb.NONE));
if (e) {
a.batch.flush();
}
if (b && this._enabledFilters && this._enabledFilters.length) {
a.filter.push(this, this._enabledFilters);
}
if (c) {
a.mask.push(this, this._mask);
}
if (this.cullable) {
this._renderWithCulling(a);
} else {
this._render(a);
d = 0;
for (var f = this.children.length; d < f; ++d) {
this.children[d].render(a);
}
}
if (e) {
a.batch.flush();
}
if (c) {
a.mask.pop(this);
}
if (b && this._enabledFilters && this._enabledFilters.length) {
a.filter.pop();
}
};
b.prototype._render = function (a) {};
b.prototype.destroy = function (b) {
a.prototype.destroy.call(this);
this.sortDirty = false;
var c = typeof b == "boolean" ? b : b && b.children;
var d = this.removeChildren(0, this.children.length);
if (c) {
for (var e = 0; e < d.length; ++e) {
d[e].destroy(b);
}
}
};
Object.defineProperty(b.prototype, "width", {
get: function () {
return this.scale.x * this.getLocalBounds().width;
},
set: function (a) {
var b = this.getLocalBounds().width;
this.scale.x = b !== 0 ? a / b : 1;
this._width = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return this.scale.y * this.getLocalBounds().height;
},
set: function (a) {
var b = this.getLocalBounds().height;
this.scale.y = b !== 0 ? a / b : 1;
this._height = a;
},
enumerable: false,
configurable: true
});
return b;
}(ac);
dc.prototype.containerUpdateTransform = dc.prototype.updateTransform;
ac.mixin({
accessible: false,
accessibleTitle: null,
accessibleHint: null,
tabIndex: 0,
_accessibleActive: false,
_accessibleDiv: null,
accessibleType: "button",
accessiblePointerEvents: "auto",
accessibleChildren: true,
renderId: -1
});
var ec;
var fc = 100;
var gc = function () {
function a(a) {
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 (la.tablet || la.phone) {
this.createTouchHook();
}
var b = document.createElement("div");
b.style.width = fc + "px";
b.style.height = fc + "px";
b.style.position = "absolute";
b.style.top = "0px";
b.style.left = "0px";
b.style.zIndex = 2 .toString();
this.div = b;
this.renderer = a;
this._onKeyDown = this._onKeyDown.bind(this);
this._onMouseMove = this._onMouseMove.bind(this);
globalThis.addEventListener("keydown", this._onKeyDown, false);
}
Object.defineProperty(a.prototype, "isActive", {
get: function () {
return this._isActive;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "isMobileAccessibility", {
get: function () {
return this._isMobileAccessibility;
},
enumerable: false,
configurable: true
});
a.prototype.createTouchHook = function () {
var a = this;
var b = document.createElement("button");
b.style.width = "1px";
b.style.height = "1px";
b.style.position = "absolute";
b.style.top = "-1000px";
b.style.left = "-1000px";
b.style.zIndex = 2 .toString();
b.style.backgroundColor = "#FF0000";
b.title = "select to enable accessibility for this content";
b.addEventListener("focus", function () {
a._isMobileAccessibility = true;
a.activate();
a.destroyTouchHook();
});
document.body.appendChild(b);
this._hookDiv = b;
};
a.prototype.destroyTouchHook = function () {
if (this._hookDiv) {
document.body.removeChild(this._hookDiv);
this._hookDiv = null;
}
};
a.prototype.activate = function () {
var a;
if (!this._isActive) {
this._isActive = true;
globalThis.document.addEventListener("mousemove", this._onMouseMove, true);
globalThis.removeEventListener("keydown", this._onKeyDown, false);
this.renderer.on("postrender", this.update, this);
if ((a = this.renderer.view.parentNode) !== null && a !== undefined) {
a.appendChild(this.div);
}
}
};
a.prototype.deactivate = function () {
var a;
if (this._isActive && !this._isMobileAccessibility) {
this._isActive = false;
globalThis.document.removeEventListener("mousemove", this._onMouseMove, true);
globalThis.addEventListener("keydown", this._onKeyDown, false);
this.renderer.off("postrender", this.update);
if ((a = this.div.parentNode) !== null && a !== undefined) {
a.removeChild(this.div);
}
}
};
a.prototype.updateAccessibleObjects = function (a) {
if (a.visible && a.accessibleChildren) {
if (a.accessible && a.interactive) {
if (!a._accessibleActive) {
this.addChild(a);
}
a.renderId = this.renderId;
}
var b = a.children;
if (b) {
for (var c = 0; c < b.length; c++) {
this.updateAccessibleObjects(b[c]);
}
}
}
};
a.prototype.update = function () {
var a = performance.now();
if ((!la.android.device || a >= this.androidUpdateCount) && (this.androidUpdateCount = a + this.androidUpdateFrequency, this.renderer.renderingToScreen)) {
if (this.renderer._lastObjectRendered) {
this.updateAccessibleObjects(this.renderer._lastObjectRendered);
}
var b = this.renderer.view.getBoundingClientRect();
var c = b.left;
var d = b.top;
var e = b.width;
var f = b.height;
var g = this.renderer;
var h = g.width;
var i = g.height;
var j = g.resolution;
var k = e / h * j;
var l = f / i * j;
var m = this.div;
m.style.left = c + "px";
m.style.top = d + "px";
m.style.width = h + "px";
m.style.height = i + "px";
for (var n = 0; n < this.children.length; n++) {
var o = this.children[n];
if (o.renderId !== this.renderId) {
o._accessibleActive = false;
$a(this.children, n, 1);
this.div.removeChild(o._accessibleDiv);
this.pool.push(o._accessibleDiv);
o._accessibleDiv = null;
n--;
} else {
m = o._accessibleDiv;
var p = o.hitArea;
var q = o.worldTransform;
if (o.hitArea) {
m.style.left = (q.tx + p.x * q.a) * k + "px";
m.style.top = (q.ty + p.y * q.d) * l + "px";
m.style.width = p.width * q.a * k + "px";
m.style.height = p.height * q.d * l + "px";
} else {
p = o.getBounds();
this.capHitArea(p);
m.style.left = p.x * k + "px";
m.style.top = p.y * l + "px";
m.style.width = p.width * k + "px";
m.style.height = p.height * l + "px";
if (m.title !== o.accessibleTitle && o.accessibleTitle !== null) {
m.title = o.accessibleTitle;
}
if (m.getAttribute("aria-label") !== o.accessibleHint && o.accessibleHint !== null) {
m.setAttribute("aria-label", o.accessibleHint);
}
}
if (o.accessibleTitle !== m.title || o.tabIndex !== m.tabIndex) {
m.title = o.accessibleTitle;
m.tabIndex = o.tabIndex;
if (this.debug) {
this.updateDebugHTML(m);
}
}
}
}
this.renderId++;
}
};
a.prototype.updateDebugHTML = function (a) {
a.innerHTML = "type: " + a.type + "</br> title : " + a.title + "</br> tabIndex: " + a.tabIndex;
};
a.prototype.capHitArea = function (a) {
if (a.x < 0) {
a.width += a.x;
a.x = 0;
}
if (a.y < 0) {
a.height += a.y;
a.y = 0;
}
var b = this.renderer;
var c = b.width;
var d = b.height;
if (a.x + a.width > c) {
a.width = c - a.x;
}
if (a.y + a.height > d) {
a.height = d - a.y;
}
};
a.prototype.addChild = function (a) {
var b = this.pool.pop();
if (!b) {
(b = document.createElement("button")).style.width = fc + "px";
b.style.height = fc + "px";
b.style.backgroundColor = this.debug ? "rgba(255,255,255,0.5)" : "transparent";
b.style.position = "absolute";
b.style.zIndex = 2 .toString();
b.style.borderStyle = "none";
if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
b.setAttribute("aria-live", "off");
} else {
b.setAttribute("aria-live", "polite");
}
if (navigator.userAgent.match(/rv:.*Gecko\//)) {
b.setAttribute("aria-relevant", "additions");
} else {
b.setAttribute("aria-relevant", "text");
}
b.addEventListener("click", this._onClick.bind(this));
b.addEventListener("focus", this._onFocus.bind(this));
b.addEventListener("focusout", this._onFocusOut.bind(this));
}
b.style.pointerEvents = a.accessiblePointerEvents;
b.type = a.accessibleType;
if (a.accessibleTitle && a.accessibleTitle !== null) {
b.title = a.accessibleTitle;
} else if (!a.accessibleHint || a.accessibleHint === null) {
b.title = "displayObject " + a.tabIndex;
}
if (a.accessibleHint && a.accessibleHint !== null) {
b.setAttribute("aria-label", a.accessibleHint);
}
if (this.debug) {
this.updateDebugHTML(b);
}
a._accessibleActive = true;
a._accessibleDiv = b;
b.displayObject = a;
this.children.push(a);
this.div.appendChild(a._accessibleDiv);
a._accessibleDiv.tabIndex = a.tabIndex;
};
a.prototype._onClick = function (a) {
var b = this.renderer.plugins.interaction;
var c = a.target.displayObject;
var d = b.eventData;
b.dispatchEvent(c, "click", d);
b.dispatchEvent(c, "pointertap", d);
b.dispatchEvent(c, "tap", d);
};
a.prototype._onFocus = function (a) {
if (!a.target.getAttribute("aria-live")) {
a.target.setAttribute("aria-live", "assertive");
}
var b = this.renderer.plugins.interaction;
var c = a.target.displayObject;
var d = b.eventData;
b.dispatchEvent(c, "mouseover", d);
};
a.prototype._onFocusOut = function (a) {
if (!a.target.getAttribute("aria-live")) {
a.target.setAttribute("aria-live", "polite");
}
var b = this.renderer.plugins.interaction;
var c = a.target.displayObject;
var d = b.eventData;
b.dispatchEvent(c, "mouseout", d);
};
a.prototype._onKeyDown = function (a) {
if (a.keyCode === 9) {
this.activate();
}
};
a.prototype._onMouseMove = function (a) {
if (a.movementX !== 0 || a.movementY !== 0) {
this.deactivate();
}
};
a.prototype.destroy = function () {
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;
};
return a;
}();
Fa.TARGET_FPMS = 0.06;
(function (a) {
a[a.INTERACTION = 50] = "INTERACTION";
a[a.HIGH = 25] = "HIGH";
a[a.NORMAL = 0] = "NORMAL";
a[a.LOW = -25] = "LOW";
a[a.UTILITY = -50] = "UTILITY";
})(ec ||= {});
var hc = function () {
function a(a, b, c, d) {
if (b === undefined) {
b = null;
}
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = false;
}
this.next = null;
this.previous = null;
this._destroyed = false;
this.fn = a;
this.context = b;
this.priority = c;
this.once = d;
}
a.prototype.match = function (a, b) {
if (b === undefined) {
b = null;
}
return this.fn === a && this.context === b;
};
a.prototype.emit = function (a) {
if (this.fn) {
if (this.context) {
this.fn.call(this.context, a);
} else {
this.fn(a);
}
}
var b = this.next;
if (this.once) {
this.destroy(true);
}
if (this._destroyed) {
this.next = null;
}
return b;
};
a.prototype.connect = function (a) {
this.previous = a;
if (a.next) {
a.next.previous = this;
}
this.next = a.next;
a.next = this;
};
a.prototype.destroy = function (a) {
if (a === undefined) {
a = 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;
}
var b = this.next;
this.next = a ? null : b;
this.previous = null;
return b;
};
return a;
}();
var ic = function () {
function a() {
var a = this;
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 hc(null, null, Infinity);
this.deltaMS = 1 / Fa.TARGET_FPMS;
this.elapsedMS = 1 / Fa.TARGET_FPMS;
this._tick = function (b) {
a._requestId = null;
if (a.started) {
a.update(b);
if (a.started && a._requestId === null && a._head.next) {
a._requestId = requestAnimationFrame(a._tick);
}
}
};
}
a.prototype._requestIfNeeded = function () {
if (this._requestId === null && this._head.next) {
this.lastTime = performance.now();
this._lastFrame = this.lastTime;
this._requestId = requestAnimationFrame(this._tick);
}
};
a.prototype._cancelIfNeeded = function () {
if (this._requestId !== null) {
cancelAnimationFrame(this._requestId);
this._requestId = null;
}
};
a.prototype._startIfPossible = function () {
if (this.started) {
this._requestIfNeeded();
} else if (this.autoStart) {
this.start();
}
};
a.prototype.add = function (a, b, c) {
if (c === undefined) {
c = ec.NORMAL;
}
return this._addListener(new hc(a, b, c));
};
a.prototype.addOnce = function (a, b, c) {
if (c === undefined) {
c = ec.NORMAL;
}
return this._addListener(new hc(a, b, c, true));
};
a.prototype._addListener = function (a) {
var b = this._head.next;
var c = this._head;
if (b) {
while (b) {
if (a.priority > b.priority) {
a.connect(c);
break;
}
c = b;
b = b.next;
}
if (!a.previous) {
a.connect(c);
}
} else {
a.connect(c);
}
this._startIfPossible();
return this;
};
a.prototype.remove = function (a, b) {
for (var c = this._head.next; c;) {
c = c.match(a, b) ? c.destroy() : c.next;
}
if (!this._head.next) {
this._cancelIfNeeded();
}
return this;
};
Object.defineProperty(a.prototype, "count", {
get: function () {
if (!this._head) {
return 0;
}
for (var a = 0, b = this._head; b = b.next;) {
a++;
}
return a;
},
enumerable: false,
configurable: true
});
a.prototype.start = function () {
if (!this.started) {
this.started = true;
this._requestIfNeeded();
}
};
a.prototype.stop = function () {
if (this.started) {
this.started = false;
this._cancelIfNeeded();
}
};
a.prototype.destroy = function () {
if (!this._protected) {
this.stop();
for (var a = this._head.next; a;) {
a = a.destroy(true);
}
this._head.destroy();
this._head = null;
}
};
a.prototype.update = function (a) {
var b;
if (a === undefined) {
a = performance.now();
}
if (a > this.lastTime) {
if ((b = this.elapsedMS = a - this.lastTime) > this._maxElapsedMS) {
b = this._maxElapsedMS;
}
b *= this.speed;
if (this._minElapsedMS) {
var c = a - this._lastFrame | 0;
if (c < this._minElapsedMS) {
return;
}
this._lastFrame = a - c % this._minElapsedMS;
}
this.deltaMS = b;
this.deltaTime = this.deltaMS * Fa.TARGET_FPMS;
for (var d = this._head, e = d.next; e;) {
e = e.emit(this.deltaTime);
}
if (!d.next) {
this._cancelIfNeeded();
}
} else {
this.deltaTime = this.deltaMS = this.elapsedMS = 0;
}
this.lastTime = a;
};
Object.defineProperty(a.prototype, "FPS", {
get: function () {
return 1000 / this.elapsedMS;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "minFPS", {
get: function () {
return 1000 / this._maxElapsedMS;
},
set: function (a) {
var b = Math.min(this.maxFPS, a);
var c = Math.min(Math.max(0, b) / 1000, Fa.TARGET_FPMS);
this._maxElapsedMS = 1 / c;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "maxFPS", {
get: function () {
if (this._minElapsedMS) {
return Math.round(1000 / this._minElapsedMS);
} else {
return 0;
}
},
set: function (a) {
if (a === 0) {
this._minElapsedMS = 0;
} else {
var b = Math.max(this.minFPS, a);
this._minElapsedMS = 1 / (b / 1000);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "shared", {
get: function () {
if (!a._shared) {
var b = a._shared = new a();
b.autoStart = true;
b._protected = true;
}
return a._shared;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "system", {
get: function () {
if (!a._system) {
var b = a._system = new a();
b.autoStart = true;
b._protected = true;
}
return a._system;
},
enumerable: false,
configurable: true
});
return a;
}();
var jc = function () {
function a() {}
a.init = function (a) {
var b = this;
a = Object.assign({
autoStart: true,
sharedTicker: false
}, a);
Object.defineProperty(this, "ticker", {
set: function (a) {
if (this._ticker) {
this._ticker.remove(this.render, this);
}
this._ticker = a;
if (a) {
a.add(this.render, this, ec.LOW);
}
},
get: function () {
return this._ticker;
}
});
this.stop = function () {
b._ticker.stop();
};
this.start = function () {
b._ticker.start();
};
this._ticker = null;
this.ticker = a.sharedTicker ? ic.shared : new ic();
if (a.autoStart) {
this.start();
}
};
a.destroy = function () {
if (this._ticker) {
var a = this._ticker;
this.ticker = null;
a.destroy();
}
};
return a;
}();
var kc = function () {
function a() {
this.pressure = 0;
this.rotationAngle = 0;
this.twist = 0;
this.tangentialPressure = 0;
this.global = new ob();
this.target = null;
this.originalEvent = null;
this.identifier = null;
this.isPrimary = false;
this.button = 0;
this.buttons = 0;
this.width = 0;
this.height = 0;
this.tiltX = 0;
this.tiltY = 0;
this.pointerType = null;
this.pressure = 0;
this.rotationAngle = 0;
this.twist = 0;
this.tangentialPressure = 0;
}
Object.defineProperty(a.prototype, "pointerId", {
get: function () {
return this.identifier;
},
enumerable: false,
configurable: true
});
a.prototype.getLocalPosition = function (a, b, c) {
return a.worldTransform.applyInverse(c || this.global, b);
};
a.prototype.copyEvent = function (a) {
if ("isPrimary" in a && a.isPrimary) {
this.isPrimary = true;
}
this.button = "button" in a && a.button;
var b = "buttons" in a && a.buttons;
this.buttons = Number.isInteger(b) ? b : "which" in a && a.which;
this.width = "width" in a && a.width;
this.height = "height" in a && a.height;
this.tiltX = "tiltX" in a && a.tiltX;
this.tiltY = "tiltY" in a && a.tiltY;
this.pointerType = "pointerType" in a && a.pointerType;
this.pressure = "pressure" in a && a.pressure;
this.rotationAngle = "rotationAngle" in a && a.rotationAngle;
this.twist = "twist" in a && a.twist || 0;
this.tangentialPressure = "tangentialPressure" in a && a.tangentialPressure || 0;
};
a.prototype.reset = function () {
this.isPrimary = false;
};
return a;
}();
function lc(a, b) {
lc = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return lc(a, b);
}
var mc = function () {
function a() {
this.stopped = false;
this.stopsPropagatingAt = null;
this.stopPropagationHint = false;
this.target = null;
this.currentTarget = null;
this.type = null;
this.data = null;
}
a.prototype.stopPropagation = function () {
this.stopped = true;
this.stopPropagationHint = true;
this.stopsPropagatingAt = this.currentTarget;
};
a.prototype.reset = function () {
this.stopped = false;
this.stopsPropagatingAt = null;
this.stopPropagationHint = false;
this.currentTarget = null;
this.target = null;
};
return a;
}();
var nc = function () {
function a(b) {
this._pointerId = b;
this._flags = a.FLAGS.NONE;
}
a.prototype._doSet = function (a, b) {
this._flags = b ? this._flags | a : this._flags & ~a;
};
Object.defineProperty(a.prototype, "pointerId", {
get: function () {
return this._pointerId;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "flags", {
get: function () {
return this._flags;
},
set: function (a) {
this._flags = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "none", {
get: function () {
return this._flags === a.FLAGS.NONE;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "over", {
get: function () {
return (this._flags & a.FLAGS.OVER) != 0;
},
set: function (b) {
this._doSet(a.FLAGS.OVER, b);
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "rightDown", {
get: function () {
return (this._flags & a.FLAGS.RIGHT_DOWN) != 0;
},
set: function (b) {
this._doSet(a.FLAGS.RIGHT_DOWN, b);
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "leftDown", {
get: function () {
return (this._flags & a.FLAGS.LEFT_DOWN) != 0;
},
set: function (b) {
this._doSet(a.FLAGS.LEFT_DOWN, b);
},
enumerable: false,
configurable: true
});
a.FLAGS = Object.freeze({
NONE: 0,
OVER: 1,
LEFT_DOWN: 2,
RIGHT_DOWN: 4
});
return a;
}();
var oc = function () {
function a() {
this._tempPoint = new ob();
}
a.prototype.recursiveFindHit = function (a, b, c, d, e) {
if (!b || !b.visible) {
return false;
}
var f = a.data.global;
var g = false;
var h = e = b.interactive || e;
var i = true;
if (b.hitArea) {
if (d) {
b.worldTransform.applyInverse(f, this._tempPoint);
if (b.hitArea.contains(this._tempPoint.x, this._tempPoint.y)) {
g = true;
} else {
d = false;
i = false;
}
}
h = false;
} else if (b._mask && d) {
if (!b._mask.containsPoint || !b._mask.containsPoint(f)) {
d = false;
}
}
if (i && b.interactiveChildren && b.children) {
for (var j = b.children, k = j.length - 1; k >= 0; k--) {
var l = j[k];
var m = this.recursiveFindHit(a, l, c, d, h);
if (m) {
if (!l.parent) {
continue;
}
h = false;
if (m) {
if (a.target) {
d = false;
}
g = true;
}
}
}
}
if (e) {
if (d && !a.target && !b.hitArea && b.containsPoint && b.containsPoint(f)) {
g = true;
}
if (b.interactive) {
if (g && !a.target) {
a.target = b;
}
if (c) {
c(a, b, !!g);
}
}
}
return g;
};
a.prototype.findHit = function (a, b, c, d) {
this.recursiveFindHit(a, b, c, d, false);
};
return a;
}();
var pc = {
interactive: false,
interactiveChildren: true,
hitArea: null,
get buttonMode() {
return this.cursor === "pointer";
},
set buttonMode(a) {
if (a) {
this.cursor = "pointer";
} else if (this.cursor === "pointer") {
this.cursor = null;
}
},
cursor: null,
get trackedPointers() {
if (this._trackedPointers === undefined) {
this._trackedPointers = {};
}
return this._trackedPointers;
},
_trackedPointers: undefined
};
ac.mixin(pc);
var qc = {
target: null,
data: {
global: null
}
};
var rc = function (a) {
function b(b, c) {
var d = a.call(this) || this;
c = c || {};
d.renderer = b;
d.autoPreventDefault = c.autoPreventDefault === undefined || c.autoPreventDefault;
d.interactionFrequency = c.interactionFrequency || 10;
d.mouse = new kc();
d.mouse.identifier = 1;
d.mouse.global.set(-999999);
d.activeInteractionData = {};
d.activeInteractionData[1] = d.mouse;
d.interactionDataPool = [];
d.eventData = new mc();
d.interactionDOMElement = null;
d.moveWhenInside = false;
d.eventsAdded = false;
d.tickerAdded = false;
d.mouseOverRenderer = !("PointerEvent" in globalThis);
d.supportsTouchEvents = "ontouchstart" in globalThis;
d.supportsPointerEvents = !!globalThis.PointerEvent;
d.onPointerUp = d.onPointerUp.bind(d);
d.processPointerUp = d.processPointerUp.bind(d);
d.onPointerCancel = d.onPointerCancel.bind(d);
d.processPointerCancel = d.processPointerCancel.bind(d);
d.onPointerDown = d.onPointerDown.bind(d);
d.processPointerDown = d.processPointerDown.bind(d);
d.onPointerMove = d.onPointerMove.bind(d);
d.processPointerMove = d.processPointerMove.bind(d);
d.onPointerOut = d.onPointerOut.bind(d);
d.processPointerOverOut = d.processPointerOverOut.bind(d);
d.onPointerOver = d.onPointerOver.bind(d);
d.cursorStyles = {
default: "inherit",
pointer: "pointer"
};
d.currentCursorMode = null;
d.cursor = null;
d.resolution = 1;
d.delayedEvents = [];
d.search = new oc();
d._tempDisplayObject = new bc();
d._eventListenerOptions = {
capture: true,
passive: false
};
d._useSystemTicker = c.useSystemTicker === undefined || c.useSystemTicker;
d.setTargetElement(d.renderer.view, d.renderer.resolution);
return d;
}
(function (a, b) {
function c() {
this.constructor = a;
}
lc(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
Object.defineProperty(b.prototype, "useSystemTicker", {
get: function () {
return this._useSystemTicker;
},
set: function (a) {
this._useSystemTicker = a;
if (a) {
this.addTickerListener();
} else {
this.removeTickerListener();
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "lastObjectRendered", {
get: function () {
return this.renderer._lastObjectRendered || this._tempDisplayObject;
},
enumerable: false,
configurable: true
});
b.prototype.hitTest = function (a, b) {
qc.target = null;
qc.data.global = a;
b ||= this.lastObjectRendered;
this.processInteractive(qc, b, null, true);
return qc.target;
};
b.prototype.setTargetElement = function (a, b) {
if (b === undefined) {
b = 1;
}
this.removeTickerListener();
this.removeEvents();
this.interactionDOMElement = a;
this.resolution = b;
this.addEvents();
this.addTickerListener();
};
b.prototype.addTickerListener = function () {
if (!this.tickerAdded && this.interactionDOMElement && this._useSystemTicker) {
ic.system.add(this.tickerUpdate, this, ec.INTERACTION);
this.tickerAdded = true;
}
};
b.prototype.removeTickerListener = function () {
if (this.tickerAdded) {
ic.system.remove(this.tickerUpdate, this);
this.tickerAdded = false;
}
};
b.prototype.addEvents = function () {
if (!this.eventsAdded && this.interactionDOMElement) {
var a = this.interactionDOMElement.style;
if (globalThis.navigator.msPointerEnabled) {
a.msContentZooming = "none";
a.msTouchAction = "none";
} else if (this.supportsPointerEvents) {
a.touchAction = "none";
}
if (this.supportsPointerEvents) {
globalThis.document.addEventListener("pointermove", this.onPointerMove, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("pointerdown", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("pointerleave", this.onPointerOut, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("pointerover", this.onPointerOver, this._eventListenerOptions);
globalThis.addEventListener("pointercancel", this.onPointerCancel, this._eventListenerOptions);
globalThis.addEventListener("pointerup", this.onPointerUp, this._eventListenerOptions);
} else {
globalThis.document.addEventListener("mousemove", this.onPointerMove, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("mousedown", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("mouseout", this.onPointerOut, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("mouseover", this.onPointerOver, this._eventListenerOptions);
globalThis.addEventListener("mouseup", this.onPointerUp, this._eventListenerOptions);
}
if (this.supportsTouchEvents) {
this.interactionDOMElement.addEventListener("touchstart", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("touchcancel", this.onPointerCancel, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("touchend", this.onPointerUp, this._eventListenerOptions);
this.interactionDOMElement.addEventListener("touchmove", this.onPointerMove, this._eventListenerOptions);
}
this.eventsAdded = true;
}
};
b.prototype.removeEvents = function () {
if (this.eventsAdded && this.interactionDOMElement) {
var a = this.interactionDOMElement.style;
if (globalThis.navigator.msPointerEnabled) {
a.msContentZooming = "";
a.msTouchAction = "";
} else if (this.supportsPointerEvents) {
a.touchAction = "";
}
if (this.supportsPointerEvents) {
globalThis.document.removeEventListener("pointermove", this.onPointerMove, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("pointerdown", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("pointerleave", this.onPointerOut, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("pointerover", this.onPointerOver, this._eventListenerOptions);
globalThis.removeEventListener("pointercancel", this.onPointerCancel, this._eventListenerOptions);
globalThis.removeEventListener("pointerup", this.onPointerUp, this._eventListenerOptions);
} else {
globalThis.document.removeEventListener("mousemove", this.onPointerMove, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("mousedown", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("mouseout", this.onPointerOut, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("mouseover", this.onPointerOver, this._eventListenerOptions);
globalThis.removeEventListener("mouseup", this.onPointerUp, this._eventListenerOptions);
}
if (this.supportsTouchEvents) {
this.interactionDOMElement.removeEventListener("touchstart", this.onPointerDown, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("touchcancel", this.onPointerCancel, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("touchend", this.onPointerUp, this._eventListenerOptions);
this.interactionDOMElement.removeEventListener("touchmove", this.onPointerMove, this._eventListenerOptions);
}
this.interactionDOMElement = null;
this.eventsAdded = false;
}
};
b.prototype.tickerUpdate = function (a) {
this._deltaTime += a;
if (this._deltaTime >= this.interactionFrequency) {
this._deltaTime = 0;
this.update();
}
};
b.prototype.update = function () {
if (this.interactionDOMElement) {
if (this._didMove) {
this._didMove = false;
} else {
this.cursor = null;
for (var a in this.activeInteractionData) {
if (this.activeInteractionData.hasOwnProperty(a)) {
var b = this.activeInteractionData[a];
if (b.originalEvent && b.pointerType !== "touch") {
var c = this.configureInteractionEventForDOMEvent(this.eventData, b.originalEvent, b);
this.processInteractive(c, this.lastObjectRendered, this.processPointerOverOut, true);
}
}
}
this.setCursorMode(this.cursor);
}
}
};
b.prototype.setCursorMode = function (a) {
a = a || "default";
var b = true;
if (globalThis.OffscreenCanvas && this.interactionDOMElement instanceof OffscreenCanvas) {
b = false;
}
if (this.currentCursorMode !== a) {
this.currentCursorMode = a;
var c = this.cursorStyles[a];
if (c) {
switch (typeof c) {
case "string":
if (b) {
this.interactionDOMElement.style.cursor = c;
}
break;
case "function":
c(a);
break;
case "object":
if (b) {
Object.assign(this.interactionDOMElement.style, c);
}
}
} else if (b && typeof a == "string" && !Object.prototype.hasOwnProperty.call(this.cursorStyles, a)) {
this.interactionDOMElement.style.cursor = a;
}
}
};
b.prototype.dispatchEvent = function (a, b, c) {
if (!c.stopPropagationHint || a === c.stopsPropagatingAt) {
c.currentTarget = a;
c.type = b;
a.emit(b, c);
if (a[b]) {
a[b](c);
}
}
};
b.prototype.delayDispatchEvent = function (a, b, c) {
this.delayedEvents.push({
displayObject: a,
eventString: b,
eventData: c
});
};
b.prototype.mapPositionToPoint = function (a, b, c) {
var d;
d = this.interactionDOMElement.parentElement ? this.interactionDOMElement.getBoundingClientRect() : {
x: 0,
y: 0,
width: this.interactionDOMElement.width,
height: this.interactionDOMElement.height,
left: 0,
top: 0
};
var e = 1 / this.resolution;
a.x = (b - d.left) * (this.interactionDOMElement.width / d.width) * e;
a.y = (c - d.top) * (this.interactionDOMElement.height / d.height) * e;
};
b.prototype.processInteractive = function (a, b, c, d) {
var e = this.search.findHit(a, b, c, d);
var f = this.delayedEvents;
if (!f.length) {
return e;
}
a.stopPropagationHint = false;
var g = f.length;
this.delayedEvents = [];
for (var h = 0; h < g; h++) {
var i = f[h];
var j = i.displayObject;
var k = i.eventString;
var l = i.eventData;
if (l.stopsPropagatingAt === j) {
l.stopPropagationHint = true;
}
this.dispatchEvent(j, k, l);
}
return e;
};
b.prototype.onPointerDown = function (a) {
if (!this.supportsTouchEvents || a.pointerType !== "touch") {
var b = this.normalizeToPointerData(a);
if (this.autoPreventDefault && b[0].isNormalized && (a.cancelable || !("cancelable" in a))) {
a.preventDefault();
}
for (var c = b.length, d = 0; d < c; d++) {
var e = b[d];
var f = this.getInteractionDataForPointerId(e);
var g = this.configureInteractionEventForDOMEvent(this.eventData, e, f);
g.data.originalEvent = a;
this.processInteractive(g, this.lastObjectRendered, this.processPointerDown, true);
this.emit("pointerdown", g);
if (e.pointerType === "touch") {
this.emit("touchstart", g);
} else if (e.pointerType === "mouse" || e.pointerType === "pen") {
var h = e.button === 2;
this.emit(h ? "rightdown" : "mousedown", this.eventData);
}
}
}
};
b.prototype.processPointerDown = function (a, b, c) {
var d = a.data;
var e = a.data.identifier;
if (c) {
b.trackedPointers[e] ||= new nc(e);
this.dispatchEvent(b, "pointerdown", a);
if (d.pointerType === "touch") {
this.dispatchEvent(b, "touchstart", a);
} else if (d.pointerType === "mouse" || d.pointerType === "pen") {
var f = d.button === 2;
if (f) {
b.trackedPointers[e].rightDown = true;
} else {
b.trackedPointers[e].leftDown = true;
}
this.dispatchEvent(b, f ? "rightdown" : "mousedown", a);
}
}
};
b.prototype.onPointerComplete = function (a, b, c) {
for (var d = this.normalizeToPointerData(a), e = d.length, f = a.target !== this.interactionDOMElement ? "outside" : "", g = 0; g < e; g++) {
var h = d[g];
var i = this.getInteractionDataForPointerId(h);
var j = this.configureInteractionEventForDOMEvent(this.eventData, h, i);
j.data.originalEvent = a;
this.processInteractive(j, this.lastObjectRendered, c, b || !f);
this.emit(b ? "pointercancel" : "pointerup" + f, j);
if (h.pointerType === "mouse" || h.pointerType === "pen") {
var k = h.button === 2;
this.emit(k ? "rightup" + f : "mouseup" + f, j);
} else if (h.pointerType === "touch") {
this.emit(b ? "touchcancel" : "touchend" + f, j);
this.releaseInteractionDataForPointerId(h.pointerId);
}
}
};
b.prototype.onPointerCancel = function (a) {
if (!this.supportsTouchEvents || a.pointerType !== "touch") {
this.onPointerComplete(a, true, this.processPointerCancel);
}
};
b.prototype.processPointerCancel = function (a, b) {
var c = a.data;
var d = a.data.identifier;
if (b.trackedPointers[d] !== undefined) {
delete b.trackedPointers[d];
this.dispatchEvent(b, "pointercancel", a);
if (c.pointerType === "touch") {
this.dispatchEvent(b, "touchcancel", a);
}
}
};
b.prototype.onPointerUp = function (a) {
if (!this.supportsTouchEvents || a.pointerType !== "touch") {
this.onPointerComplete(a, false, this.processPointerUp);
}
};
b.prototype.processPointerUp = function (a, b, c) {
var d = a.data;
var e = a.data.identifier;
var f = b.trackedPointers[e];
var g = d.pointerType === "touch";
var h = d.pointerType === "mouse" || d.pointerType === "pen";
var i = false;
if (h) {
var j = d.button === 2;
var k = nc.FLAGS;
var l = j ? k.RIGHT_DOWN : k.LEFT_DOWN;
var m = f !== undefined && f.flags & l;
if (c) {
this.dispatchEvent(b, j ? "rightup" : "mouseup", a);
if (m) {
this.dispatchEvent(b, j ? "rightclick" : "click", a);
i = true;
}
} else if (m) {
this.dispatchEvent(b, j ? "rightupoutside" : "mouseupoutside", a);
}
if (f) {
if (j) {
f.rightDown = false;
} else {
f.leftDown = false;
}
}
}
if (c) {
this.dispatchEvent(b, "pointerup", a);
if (g) {
this.dispatchEvent(b, "touchend", a);
}
if (f) {
if (!h || !!i) {
this.dispatchEvent(b, "pointertap", a);
}
if (g) {
this.dispatchEvent(b, "tap", a);
f.over = false;
}
}
} else if (f) {
this.dispatchEvent(b, "pointerupoutside", a);
if (g) {
this.dispatchEvent(b, "touchendoutside", a);
}
}
if (f && f.none) {
delete b.trackedPointers[e];
}
};
b.prototype.onPointerMove = function (a) {
if (!this.supportsTouchEvents || a.pointerType !== "touch") {
var b = this.normalizeToPointerData(a);
if (b[0].pointerType === "mouse" || b[0].pointerType === "pen") {
this._didMove = true;
this.cursor = null;
}
for (var c = b.length, d = 0; d < c; d++) {
var e = b[d];
var f = this.getInteractionDataForPointerId(e);
var g = this.configureInteractionEventForDOMEvent(this.eventData, e, f);
g.data.originalEvent = a;
this.processInteractive(g, this.lastObjectRendered, this.processPointerMove, true);
this.emit("pointermove", g);
if (e.pointerType === "touch") {
this.emit("touchmove", g);
}
if (e.pointerType === "mouse" || e.pointerType === "pen") {
this.emit("mousemove", g);
}
}
if (b[0].pointerType === "mouse") {
this.setCursorMode(this.cursor);
}
}
};
b.prototype.processPointerMove = function (a, b, c) {
var d = a.data;
var e = d.pointerType === "touch";
var f = d.pointerType === "mouse" || d.pointerType === "pen";
if (f) {
this.processPointerOverOut(a, b, c);
}
if (!this.moveWhenInside || !!c) {
this.dispatchEvent(b, "pointermove", a);
if (e) {
this.dispatchEvent(b, "touchmove", a);
}
if (f) {
this.dispatchEvent(b, "mousemove", a);
}
}
};
b.prototype.onPointerOut = function (a) {
if (!this.supportsTouchEvents || a.pointerType !== "touch") {
var b = this.normalizeToPointerData(a)[0];
if (b.pointerType === "mouse") {
this.mouseOverRenderer = false;
this.setCursorMode(null);
}
var c = this.getInteractionDataForPointerId(b);
var d = this.configureInteractionEventForDOMEvent(this.eventData, b, c);
d.data.originalEvent = b;
this.processInteractive(d, this.lastObjectRendered, this.processPointerOverOut, false);
this.emit("pointerout", d);
if (b.pointerType === "mouse" || b.pointerType === "pen") {
this.emit("mouseout", d);
} else {
this.releaseInteractionDataForPointerId(c.identifier);
}
}
};
b.prototype.processPointerOverOut = function (a, b, c) {
var d = a.data;
var e = a.data.identifier;
var f = d.pointerType === "mouse" || d.pointerType === "pen";
var g = b.trackedPointers[e];
if (c && !g) {
g = b.trackedPointers[e] = new nc(e);
}
if (g !== undefined) {
if (c && this.mouseOverRenderer) {
if (!g.over) {
g.over = true;
this.delayDispatchEvent(b, "pointerover", a);
if (f) {
this.delayDispatchEvent(b, "mouseover", a);
}
}
if (f && this.cursor === null) {
this.cursor = b.cursor;
}
} else if (g.over) {
g.over = false;
this.dispatchEvent(b, "pointerout", this.eventData);
if (f) {
this.dispatchEvent(b, "mouseout", a);
}
if (g.none) {
delete b.trackedPointers[e];
}
}
}
};
b.prototype.onPointerOver = function (a) {
var b = this.normalizeToPointerData(a)[0];
var c = this.getInteractionDataForPointerId(b);
var d = this.configureInteractionEventForDOMEvent(this.eventData, b, c);
d.data.originalEvent = b;
if (b.pointerType === "mouse") {
this.mouseOverRenderer = true;
}
this.emit("pointerover", d);
if (b.pointerType === "mouse" || b.pointerType === "pen") {
this.emit("mouseover", d);
}
};
b.prototype.getInteractionDataForPointerId = function (a) {
var b;
var c = a.pointerId;
if (c === 1 || a.pointerType === "mouse") {
b = this.mouse;
} else if (this.activeInteractionData[c]) {
b = this.activeInteractionData[c];
} else {
(b = this.interactionDataPool.pop() || new kc()).identifier = c;
this.activeInteractionData[c] = b;
}
b.copyEvent(a);
return b;
};
b.prototype.releaseInteractionDataForPointerId = function (a) {
var b = this.activeInteractionData[a];
if (b) {
delete this.activeInteractionData[a];
b.reset();
this.interactionDataPool.push(b);
}
};
b.prototype.configureInteractionEventForDOMEvent = function (a, b, c) {
a.data = c;
this.mapPositionToPoint(c.global, b.clientX, b.clientY);
if (b.pointerType === "touch") {
b.globalX = c.global.x;
b.globalY = c.global.y;
}
c.originalEvent = b;
a.reset();
return a;
};
b.prototype.normalizeToPointerData = function (a) {
var b = [];
if (this.supportsTouchEvents && a instanceof TouchEvent) {
for (var c = 0, d = a.changedTouches.length; c < d; c++) {
var e = a.changedTouches[c];
if (e.button === undefined) {
e.button = a.touches.length ? 1 : 0;
}
if (e.buttons === undefined) {
e.buttons = a.touches.length ? 1 : 0;
}
if (e.isPrimary === undefined) {
e.isPrimary = a.touches.length === 1 && a.type === "touchstart";
}
if (e.width === undefined) {
e.width = e.radiusX || 1;
}
if (e.height === undefined) {
e.height = e.radiusY || 1;
}
if (e.tiltX === undefined) {
e.tiltX = 0;
}
if (e.tiltY === undefined) {
e.tiltY = 0;
}
if (e.pointerType === undefined) {
e.pointerType = "touch";
}
if (e.pointerId === undefined) {
e.pointerId = e.identifier || 0;
}
if (e.pressure === undefined) {
e.pressure = e.force || 0.5;
}
if (e.twist === undefined) {
e.twist = 0;
}
if (e.tangentialPressure === undefined) {
e.tangentialPressure = 0;
}
if (e.layerX === undefined) {
e.layerX = e.offsetX = e.clientX;
}
if (e.layerY === undefined) {
e.layerY = e.offsetY = e.clientY;
}
e.isNormalized = true;
b.push(e);
}
} else if (!globalThis.MouseEvent || a instanceof MouseEvent && (!this.supportsPointerEvents || !(a instanceof globalThis.PointerEvent))) {
var f = a;
if (f.isPrimary === undefined) {
f.isPrimary = true;
}
if (f.width === undefined) {
f.width = 1;
}
if (f.height === undefined) {
f.height = 1;
}
if (f.tiltX === undefined) {
f.tiltX = 0;
}
if (f.tiltY === undefined) {
f.tiltY = 0;
}
if (f.pointerType === undefined) {
f.pointerType = "mouse";
}
if (f.pointerId === undefined) {
f.pointerId = 1;
}
if (f.pressure === undefined) {
f.pressure = 0.5;
}
if (f.twist === undefined) {
f.twist = 0;
}
if (f.tangentialPressure === undefined) {
f.tangentialPressure = 0;
}
f.isNormalized = true;
b.push(f);
} else {
b.push(a);
}
return b;
};
b.prototype.destroy = function () {
this.removeEvents();
this.removeTickerListener();
this.removeAllListeners();
this.renderer = null;
this.mouse = null;
this.eventData = null;
this.interactionDOMElement = null;
this.onPointerDown = null;
this.processPointerDown = null;
this.onPointerUp = null;
this.processPointerUp = null;
this.onPointerCancel = null;
this.processPointerCancel = null;
this.onPointerMove = null;
this.processPointerMove = null;
this.onPointerOut = null;
this.processPointerOverOut = null;
this.onPointerOver = null;
this.search = null;
};
return b;
}(Ha());
var sc = function () {
function a(a) {
this.items = [];
this._name = a;
this._aliasCount = 0;
}
a.prototype.emit = function (a, b, c, d, e, f, g, h) {
if (arguments.length > 8) {
throw new Error("max arguments reached");
}
var i = this.name;
var j = this.items;
this._aliasCount++;
for (var k = 0, l = j.length; k < l; k++) {
j[k][i](a, b, c, d, e, f, g, h);
}
if (j === this.items) {
this._aliasCount--;
}
return this;
};
a.prototype.ensureNonAliasedItems = function () {
if (this._aliasCount > 0 && this.items.length > 1) {
this._aliasCount = 0;
this.items = this.items.slice(0);
}
};
a.prototype.add = function (a) {
if (a[this._name]) {
this.ensureNonAliasedItems();
this.remove(a);
this.items.push(a);
}
return this;
};
a.prototype.remove = function (a) {
var b = this.items.indexOf(a);
if (b !== -1) {
this.ensureNonAliasedItems();
this.items.splice(b, 1);
}
return this;
};
a.prototype.contains = function (a) {
return this.items.indexOf(a) !== -1;
};
a.prototype.removeAll = function () {
this.ensureNonAliasedItems();
this.items.length = 0;
return this;
};
a.prototype.destroy = function () {
this.removeAll();
this.items = null;
this._name = null;
};
Object.defineProperty(a.prototype, "empty", {
get: function () {
return this.items.length === 0;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "name", {
get: function () {
return this._name;
},
enumerable: false,
configurable: true
});
return a;
}();
Object.defineProperties(sc.prototype, {
dispatch: {
value: sc.prototype.emit
},
run: {
value: sc.prototype.emit
}
});
Fa.PREFER_ENV = la.any ? ma.WEBGL : ma.WEBGL2;
Fa.STRICT_TEXTURE_CACHE = false;
var tc = [];
function uc(a, b) {
if (!a) {
return null;
}
var c = "";
if (typeof a == "string") {
var d = /\.(\w{3,4})(?:$|\?|#)/i.exec(a);
if (d) {
c = d[1].toLowerCase();
}
}
for (var e = tc.length - 1; e >= 0; --e) {
var f = tc[e];
if (f.test && f.test(a, c)) {
return new f(a, b);
}
}
throw new Error("Unrecognized source type to auto-detect Resource");
}
function vc(a, b) {
vc = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return vc(a, b);
}
function wc(a, b) {
function c() {
this.constructor = a;
}
vc(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
function xc() {
xc = Object.assign || function (a) {
for (var b, c = arguments, d = 1, e = arguments.length; d < e; d++) {
for (var f in b = c[d]) {
if (Object.prototype.hasOwnProperty.call(b, f)) {
a[f] = b[f];
}
}
}
return a;
};
return xc.apply(this, arguments);
}
var yc = function () {
function a(a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
this._width = a;
this._height = b;
this.destroyed = false;
this.internal = false;
this.onResize = new sc("setRealSize");
this.onUpdate = new sc("update");
this.onError = new sc("onError");
}
a.prototype.bind = function (a) {
this.onResize.add(a);
this.onUpdate.add(a);
this.onError.add(a);
if (this._width || this._height) {
this.onResize.emit(this._width, this._height);
}
};
a.prototype.unbind = function (a) {
this.onResize.remove(a);
this.onUpdate.remove(a);
this.onError.remove(a);
};
a.prototype.resize = function (a, b) {
if (a !== this._width || b !== this._height) {
this._width = a;
this._height = b;
this.onResize.emit(a, b);
}
};
Object.defineProperty(a.prototype, "valid", {
get: function () {
return !!this._width && !!this._height;
},
enumerable: false,
configurable: true
});
a.prototype.update = function () {
if (!this.destroyed) {
this.onUpdate.emit();
}
};
a.prototype.load = function () {
return Promise.resolve(this);
};
Object.defineProperty(a.prototype, "width", {
get: function () {
return this._width;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "height", {
get: function () {
return this._height;
},
enumerable: false,
configurable: true
});
a.prototype.style = function (a, b, c) {
return false;
};
a.prototype.dispose = function () {};
a.prototype.destroy = function () {
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;
}
};
a.test = function (a, b) {
return false;
};
return a;
}();
var zc = function (a) {
function b(b, c) {
var d = this;
var e = c || {};
var f = e.width;
var g = e.height;
if (!f || !g) {
throw new Error("BufferResource width or height invalid");
}
(d = a.call(this, f, g) || this).data = b;
return d;
}
wc(b, a);
b.prototype.upload = function (a, b, c) {
var d = a.gl;
d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK);
var e = b.realWidth;
var f = b.realHeight;
if (c.width === e && c.height === f) {
d.texSubImage2D(b.target, 0, 0, 0, e, f, b.format, c.type, this.data);
} else {
c.width = e;
c.height = f;
d.texImage2D(b.target, 0, c.internalFormat, e, f, 0, b.format, c.type, this.data);
}
return true;
};
b.prototype.dispose = function () {
this.data = null;
};
b.test = function (a) {
return a instanceof Float32Array || a instanceof Uint8Array || a instanceof Uint32Array;
};
return b;
}(yc);
var Ac = {
scaleMode: va.NEAREST,
format: ra.RGBA,
alphaMode: ya.NPM
};
var Bc = function (a) {
function b(b, c) {
if (b === undefined) {
b = null;
}
if (c === undefined) {
c = null;
}
var d = a.call(this) || this;
var e = (c = c || {}).alphaMode;
var f = c.mipmap;
var g = c.anisotropicLevel;
var h = c.scaleMode;
var i = c.width;
var j = c.height;
var k = c.wrapMode;
var l = c.format;
var m = c.type;
var n = c.target;
var o = c.resolution;
var p = c.resourceOptions;
if (!!b && !(b instanceof yc)) {
(b = uc(b, p)).internal = true;
}
d.resolution = o || Fa.RESOLUTION;
d.width = Math.round((i || 0) * d.resolution) / d.resolution;
d.height = Math.round((j || 0) * d.resolution) / d.resolution;
d._mipmap = f !== undefined ? f : Fa.MIPMAP_TEXTURES;
d.anisotropicLevel = g !== undefined ? g : Fa.ANISOTROPIC_LEVEL;
d._wrapMode = k || Fa.WRAP_MODE;
d._scaleMode = h !== undefined ? h : Fa.SCALE_MODE;
d.format = l || ra.RGBA;
d.type = m || ta.UNSIGNED_BYTE;
d.target = n || sa.TEXTURE_2D;
d.alphaMode = e !== undefined ? e : ya.UNPACK;
d.uid = bb();
d.touched = 0;
d.isPowerOfTwo = false;
d._refreshPOT();
d._glTextures = {};
d.dirtyId = 0;
d.dirtyStyleId = 0;
d.cacheId = null;
d.valid = i > 0 && j > 0;
d.textureCacheIds = [];
d.destroyed = false;
d.resource = null;
d._batchEnabled = 0;
d._batchLocation = 0;
d.parentTextureArray = null;
d.setResource(b);
return d;
}
wc(b, a);
Object.defineProperty(b.prototype, "realWidth", {
get: function () {
return Math.round(this.width * this.resolution);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "realHeight", {
get: function () {
return Math.round(this.height * this.resolution);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "mipmap", {
get: function () {
return this._mipmap;
},
set: function (a) {
if (this._mipmap !== a) {
this._mipmap = a;
this.dirtyStyleId++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "scaleMode", {
get: function () {
return this._scaleMode;
},
set: function (a) {
if (this._scaleMode !== a) {
this._scaleMode = a;
this.dirtyStyleId++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "wrapMode", {
get: function () {
return this._wrapMode;
},
set: function (a) {
if (this._wrapMode !== a) {
this._wrapMode = a;
this.dirtyStyleId++;
}
},
enumerable: false,
configurable: true
});
b.prototype.setStyle = function (a, b) {
var c;
if (a !== undefined && a !== this.scaleMode) {
this.scaleMode = a;
c = true;
}
if (b !== undefined && b !== this.mipmap) {
this.mipmap = b;
c = true;
}
if (c) {
this.dirtyStyleId++;
}
return this;
};
b.prototype.setSize = function (a, b, c) {
c = c || this.resolution;
return this.setRealSize(a * c, b * c, c);
};
b.prototype.setRealSize = function (a, b, c) {
this.resolution = c || this.resolution;
this.width = Math.round(a) / this.resolution;
this.height = Math.round(b) / this.resolution;
this._refreshPOT();
this.update();
return this;
};
b.prototype._refreshPOT = function () {
this.isPowerOfTwo = Ya(this.realWidth) && Ya(this.realHeight);
};
b.prototype.setResolution = function (a) {
var b = this.resolution;
if (b !== a) {
this.resolution = a;
if (this.valid) {
this.width = Math.round(this.width * b) / a;
this.height = Math.round(this.height * b) / a;
this.emit("update", this);
}
this._refreshPOT();
}
return this;
};
b.prototype.setResource = function (a) {
if (this.resource === a) {
return this;
}
if (this.resource) {
throw new Error("Resource can be set only once");
}
a.bind(this);
this.resource = a;
return this;
};
b.prototype.update = function () {
if (this.valid) {
this.dirtyId++;
this.dirtyStyleId++;
this.emit("update", this);
} else if (this.width > 0 && this.height > 0) {
this.valid = true;
this.emit("loaded", this);
this.emit("update", this);
}
};
b.prototype.onError = function (a) {
this.emit("error", this, a);
};
b.prototype.destroy = function () {
if (this.resource) {
this.resource.unbind(this);
if (this.resource.internal) {
this.resource.destroy();
}
this.resource = null;
}
if (this.cacheId) {
delete hb[this.cacheId];
delete gb[this.cacheId];
this.cacheId = null;
}
this.dispose();
b.removeFromCache(this);
this.textureCacheIds = null;
this.destroyed = true;
};
b.prototype.dispose = function () {
this.emit("dispose", this);
};
b.prototype.castToBaseTexture = function () {
return this;
};
b.from = function (a, c, d) {
if (d === undefined) {
d = Fa.STRICT_TEXTURE_CACHE;
}
var e = typeof a == "string";
var f = null;
if (e) {
f = a;
} else {
if (!a._pixiId) {
var g = c && c.pixiIdPrefix || "pixiid";
a._pixiId = g + "_" + bb();
}
f = a._pixiId;
}
var h = hb[f];
if (e && d && !h) {
throw new Error("The cacheId \"" + f + "\" does not exist in BaseTextureCache.");
}
if (!h) {
(h = new b(a, c)).cacheId = f;
b.addToCache(h, f);
}
return h;
};
b.fromBuffer = function (a, c, d, e) {
a = a || new Float32Array(c * d * 4);
var f = new zc(a, {
width: c,
height: d
});
var g = a instanceof Float32Array ? ta.FLOAT : ta.UNSIGNED_BYTE;
return new b(f, Object.assign(Ac, e || {
width: c,
height: d,
type: g
}));
};
b.addToCache = function (a, b) {
if (b) {
if (a.textureCacheIds.indexOf(b) === -1) {
a.textureCacheIds.push(b);
}
if (hb[b]) {
console.warn("BaseTexture added to the cache with an id [" + b + "] that already had an entry");
}
hb[b] = a;
}
};
b.removeFromCache = function (a) {
if (typeof a == "string") {
var b = hb[a];
if (b) {
var c = b.textureCacheIds.indexOf(a);
if (c > -1) {
b.textureCacheIds.splice(c, 1);
}
delete hb[a];
return b;
}
} else if (a && a.textureCacheIds) {
for (var d = 0; d < a.textureCacheIds.length; ++d) {
delete hb[a.textureCacheIds[d]];
}
a.textureCacheIds.length = 0;
return a;
}
return null;
};
b._globalBatch = 0;
return b;
}(Ha());
var Cc = function (a) {
function b(b, c) {
var d = this;
var e = c || {};
var f = e.width;
var g = e.height;
(d = a.call(this, f, g) || this).items = [];
d.itemDirtyIds = [];
for (var h = 0; h < b; h++) {
var i = new Bc();
d.items.push(i);
d.itemDirtyIds.push(-2);
}
d.length = b;
d._load = null;
d.baseTexture = null;
return d;
}
wc(b, a);
b.prototype.initFromArray = function (a, b) {
for (var c = 0; c < this.length; c++) {
if (a[c]) {
if (a[c].castToBaseTexture) {
this.addBaseTextureAt(a[c].castToBaseTexture(), c);
} else if (a[c] instanceof yc) {
this.addResourceAt(a[c], c);
} else {
this.addResourceAt(uc(a[c], b), c);
}
}
}
};
b.prototype.dispose = function () {
for (var a = 0, b = this.length; a < b; a++) {
this.items[a].destroy();
}
this.items = null;
this.itemDirtyIds = null;
this._load = null;
};
b.prototype.addResourceAt = function (a, b) {
if (!this.items[b]) {
throw new Error("Index " + b + " is out of bounds");
}
if (a.valid && !this.valid) {
this.resize(a.width, a.height);
}
this.items[b].setResource(a);
return this;
};
b.prototype.bind = function (b) {
if (this.baseTexture !== null) {
throw new Error("Only one base texture per TextureArray is allowed");
}
a.prototype.bind.call(this, b);
for (var c = 0; c < this.length; c++) {
this.items[c].parentTextureArray = b;
this.items[c].on("update", b.update, b);
}
};
b.prototype.unbind = function (b) {
a.prototype.unbind.call(this, b);
for (var c = 0; c < this.length; c++) {
this.items[c].parentTextureArray = null;
this.items[c].off("update", b.update, b);
}
};
b.prototype.load = function () {
var a = this;
if (this._load) {
return this._load;
}
var b = this.items.map(function (a) {
return a.resource;
}).filter(function (a) {
return a;
}).map(function (a) {
return a.load();
});
this._load = Promise.all(b).then(function () {
var b = a.items[0];
var c = b.realWidth;
var d = b.realHeight;
a.resize(c, d);
return Promise.resolve(a);
});
return this._load;
};
return b;
}(yc);
var Dc = function (a) {
function b(b, c) {
var d;
var e;
var f = this;
var g = c || {};
var h = g.width;
var i = g.height;
if (Array.isArray(b)) {
d = b;
e = b.length;
} else {
e = b;
}
f = a.call(this, e, {
width: h,
height: i
}) || this;
if (d) {
f.initFromArray(d, c);
}
return f;
}
wc(b, a);
b.prototype.addBaseTextureAt = function (a, b) {
if (!a.resource) {
throw new Error("ArrayResource does not support RenderTexture");
}
this.addResourceAt(a.resource, b);
return this;
};
b.prototype.bind = function (b) {
a.prototype.bind.call(this, b);
b.target = sa.TEXTURE_2D_ARRAY;
};
b.prototype.upload = function (a, b, c) {
var d = this;
var e = d.length;
var f = d.itemDirtyIds;
var g = d.items;
var h = a.gl;
if (c.dirtyId < 0) {
h.texImage3D(h.TEXTURE_2D_ARRAY, 0, c.internalFormat, this._width, this._height, e, 0, b.format, c.type, null);
}
for (var i = 0; i < e; i++) {
var j = g[i];
if (f[i] < j.dirtyId) {
f[i] = j.dirtyId;
if (j.valid) {
h.texSubImage3D(h.TEXTURE_2D_ARRAY, 0, 0, 0, i, j.resource.width, j.resource.height, 1, b.format, c.type, j.resource.source);
}
}
}
return true;
};
return b;
}(Cc);
var Ec = function (a) {
function b(b) {
var c = this;
var d = b;
var e = d.naturalWidth || d.videoWidth || d.width;
var f = d.naturalHeight || d.videoHeight || d.height;
(c = a.call(this, e, f) || this).source = b;
c.noSubImage = false;
return c;
}
wc(b, a);
b.crossOrigin = function (a, b, c) {
if (c === undefined && b.indexOf("data:") !== 0) {
a.crossOrigin = function (a, b) {
if (b === undefined) {
b = globalThis.location;
}
if (a.indexOf("data:") === 0) {
return "";
}
b = b || globalThis.location;
eb ||= document.createElement("a");
eb.href = a;
var c = La.parse(eb.href);
var d = !c.port && b.port === "" || c.port === b.port;
if (c.hostname === b.hostname && d && c.protocol === b.protocol) {
return "";
} else {
return "anonymous";
}
}(b);
} else if (c !== false) {
a.crossOrigin = typeof c == "string" ? c : "anonymous";
}
};
b.prototype.upload = function (a, b, c, d) {
var e = a.gl;
var f = b.realWidth;
var g = b.realHeight;
if ((d = d || this.source) instanceof HTMLImageElement) {
if (!d.complete || d.naturalWidth === 0) {
return false;
}
} else if (d instanceof HTMLVideoElement && d.readyState <= 1) {
return false;
}
e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK);
if (this.noSubImage || b.target !== e.TEXTURE_2D || c.width !== f || c.height !== g) {
c.width = f;
c.height = g;
e.texImage2D(b.target, 0, c.internalFormat, b.format, c.type, d);
} else {
e.texSubImage2D(e.TEXTURE_2D, 0, 0, 0, b.format, c.type, d);
}
return true;
};
b.prototype.update = function () {
if (!this.destroyed) {
var b = this.source;
var c = b.naturalWidth || b.videoWidth || b.width;
var d = b.naturalHeight || b.videoHeight || b.height;
this.resize(c, d);
a.prototype.update.call(this);
}
};
b.prototype.dispose = function () {
this.source = null;
};
return b;
}(yc);
var Fc = function (a) {
function b(b) {
return a.call(this, b) || this;
}
wc(b, a);
b.test = function (a) {
var b = globalThis.OffscreenCanvas;
return !!b && !!(a instanceof b) || globalThis.HTMLCanvasElement && a instanceof HTMLCanvasElement;
};
return b;
}(Ec);
var Gc = function (a) {
function b(c, d) {
var e = this;
var f = d || {};
var g = f.width;
var h = f.height;
var i = f.autoLoad;
var j = f.linkBaseTexture;
if (c && c.length !== b.SIDES) {
throw new Error("Invalid length. Got " + c.length + ", expected 6");
}
e = a.call(this, 6, {
width: g,
height: h
}) || this;
for (var k = 0; k < b.SIDES; k++) {
e.items[k].target = sa.TEXTURE_CUBE_MAP_POSITIVE_X + k;
}
e.linkBaseTexture = j !== false;
if (c) {
e.initFromArray(c, d);
}
if (i !== false) {
e.load();
}
return e;
}
wc(b, a);
b.prototype.bind = function (b) {
a.prototype.bind.call(this, b);
b.target = sa.TEXTURE_CUBE_MAP;
};
b.prototype.addBaseTextureAt = function (a, b, c) {
if (!this.items[b]) {
throw new Error("Index " + b + " is out of bounds");
}
if (!this.linkBaseTexture || a.parentTextureArray || Object.keys(a._glTextures).length > 0) {
if (!a.resource) {
throw new Error("CubeResource does not support copying of renderTexture.");
}
this.addResourceAt(a.resource, b);
} else {
a.target = sa.TEXTURE_CUBE_MAP_POSITIVE_X + b;
a.parentTextureArray = this.baseTexture;
this.items[b] = a;
}
if (a.valid && !this.valid) {
this.resize(a.realWidth, a.realHeight);
}
this.items[b] = a;
return this;
};
b.prototype.upload = function (a, c, d) {
for (var e = this.itemDirtyIds, f = 0; f < b.SIDES; f++) {
var g = this.items[f];
if (e[f] < g.dirtyId) {
if (g.valid && g.resource) {
g.resource.upload(a, g, d);
e[f] = g.dirtyId;
} else if (e[f] < -1) {
a.gl.texImage2D(g.target, 0, d.internalFormat, c.realWidth, c.realHeight, 0, c.format, d.type, null);
e[f] = -1;
}
}
}
return true;
};
b.test = function (a) {
return Array.isArray(a) && a.length === b.SIDES;
};
b.SIDES = 6;
return b;
}(Cc);
var Hc = function (a) {
function b(b, c) {
var d = this;
c = c || {};
if (!(b instanceof HTMLImageElement)) {
var e = new Image();
Ec.crossOrigin(e, b, c.crossorigin);
e.src = b;
b = e;
}
d = a.call(this, b) || this;
if (!b.complete && d._width && d._height) {
d._width = 0;
d._height = 0;
}
d.url = b.src;
d._process = null;
d.preserveBitmap = false;
d.createBitmap = (c.createBitmap !== undefined ? c.createBitmap : Fa.CREATE_IMAGE_BITMAP) && !!globalThis.createImageBitmap;
d.alphaMode = typeof c.alphaMode == "number" ? c.alphaMode : null;
d.bitmap = null;
d._load = null;
if (c.autoLoad !== false) {
d.load();
}
return d;
}
wc(b, a);
b.prototype.load = function (a) {
var b = this;
if (!this._load) {
if (a !== undefined) {
this.createBitmap = a;
}
this._load = new Promise(function (a, c) {
var d = b.source;
b.url = d.src;
function e() {
if (!b.destroyed) {
d.onload = null;
d.onerror = null;
b.resize(d.width, d.height);
b._load = null;
if (b.createBitmap) {
a(b.process());
} else {
a(b);
}
}
}
if (d.complete && d.src) {
e();
} else {
d.onload = e;
d.onerror = function (a) {
c(a);
b.onError.emit(a);
};
}
});
}
return this._load;
};
b.prototype.process = function () {
var a = this;
var b = this.source;
if (this._process !== null) {
return this._process;
}
if (this.bitmap !== null || !globalThis.createImageBitmap) {
return Promise.resolve(this);
}
var c = globalThis.createImageBitmap;
var d = !b.crossOrigin || b.crossOrigin === "anonymous";
this._process = fetch(b.src, {
mode: d ? "cors" : "no-cors"
}).then(function (a) {
return a.blob();
}).then(function (d) {
return c(d, 0, 0, b.width, b.height, {
premultiplyAlpha: a.alphaMode === ya.UNPACK ? "premultiply" : "none"
});
}).then(function (b) {
if (a.destroyed) {
return Promise.reject();
} else {
a.bitmap = b;
a.update();
a._process = null;
return Promise.resolve(a);
}
});
return this._process;
};
b.prototype.upload = function (b, c, d) {
if (typeof this.alphaMode == "number") {
c.alphaMode = this.alphaMode;
}
if (!this.createBitmap) {
return a.prototype.upload.call(this, b, c, d);
}
if (!this.bitmap && (this.process(), !this.bitmap)) {
return false;
}
a.prototype.upload.call(this, b, c, d, this.bitmap);
if (!this.preserveBitmap) {
var e = true;
var f = c._glTextures;
for (var g in f) {
var h = f[g];
if (h !== d && h.dirtyId !== c.dirtyId) {
e = false;
break;
}
}
if (e) {
if (this.bitmap.close) {
this.bitmap.close();
}
this.bitmap = null;
}
}
return true;
};
b.prototype.dispose = function () {
this.source.onload = null;
this.source.onerror = null;
a.prototype.dispose.call(this);
if (this.bitmap) {
this.bitmap.close();
this.bitmap = null;
}
this._process = null;
this._load = null;
};
b.test = function (a) {
return typeof a == "string" || a instanceof HTMLImageElement;
};
return b;
}(Ec);
var Ic = function (a) {
function b(b, c) {
var d = this;
c = c || {};
(d = a.call(this, document.createElement("canvas")) || this)._width = 0;
d._height = 0;
d.svg = b;
d.scale = c.scale || 1;
d._overrideWidth = c.width;
d._overrideHeight = c.height;
d._resolve = null;
d._crossorigin = c.crossorigin;
d._load = null;
if (c.autoLoad !== false) {
d.load();
}
return d;
}
wc(b, a);
b.prototype.load = function () {
var a = this;
this._load ||= new Promise(function (c) {
a._resolve = function () {
a.resize(a.source.width, a.source.height);
c(a);
};
if (b.SVG_XML.test(a.svg.trim())) {
if (!btoa) {
throw new Error("Your browser doesn't support base64 conversions.");
}
a.svg = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(a.svg)));
}
a._loadSvg();
});
return this._load;
};
b.prototype._loadSvg = function () {
var a = this;
var b = new Image();
Ec.crossOrigin(b, this.svg, this._crossorigin);
b.src = this.svg;
b.onerror = function (c) {
if (a._resolve) {
b.onerror = null;
a.onError.emit(c);
}
};
b.onload = function () {
if (a._resolve) {
var c = b.width;
var d = b.height;
if (!c || !d) {
throw new Error("The SVG image must have width and height defined (in pixels), canvas API needs them.");
}
var e = c * a.scale;
var f = d * a.scale;
if (a._overrideWidth || a._overrideHeight) {
e = a._overrideWidth || a._overrideHeight / d * c;
f = a._overrideHeight || a._overrideWidth / c * d;
}
e = Math.round(e);
f = Math.round(f);
var g = a.source;
g.width = e;
g.height = f;
g._pixiId = "canvas_" + bb();
g.getContext("2d").drawImage(b, 0, 0, c, d, 0, 0, e, f);
a._resolve();
a._resolve = null;
}
};
};
b.getSize = function (a) {
var c = b.SVG_SIZE.exec(a);
var d = {};
if (c) {
d[c[1]] = Math.round(parseFloat(c[3]));
d[c[5]] = Math.round(parseFloat(c[7]));
}
return d;
};
b.prototype.dispose = function () {
a.prototype.dispose.call(this);
this._resolve = null;
this._crossorigin = null;
};
b.test = function (a, c) {
return c === "svg" || typeof a == "string" && /^data:image\/svg\+xml(;(charset=utf8|utf8))?;base64/.test(a) || typeof a == "string" && b.SVG_XML.test(a);
};
b.SVG_XML = /^(<\?xml[^?]+\?>)?\s*(<!--[^(-->)]*-->)?\s*\<svg/m;
b.SVG_SIZE = /<svg[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*(?:\s(width|height)=('|")(\d*(?:\.\d+)?)(?:px)?('|"))[^>]*>/i;
return b;
}(Ec);
var Jc = function (a) {
function b(c, d) {
var e = this;
d = d || {};
if (!(c instanceof HTMLVideoElement)) {
var f = document.createElement("video");
f.setAttribute("preload", "auto");
f.setAttribute("webkit-playsinline", "");
f.setAttribute("playsinline", "");
if (typeof c == "string") {
c = [c];
}
var g = c[0].src || c[0];
Ec.crossOrigin(f, g, d.crossorigin);
for (var h = 0; h < c.length; ++h) {
var i = document.createElement("source");
var j = c[h];
var k = j.src;
var l = j.mime;
var m = (k = k || c[h]).split("?").shift().toLowerCase();
var n = m.slice(m.lastIndexOf(".") + 1);
l = l || b.MIME_TYPES[n] || "video/" + n;
i.src = k;
i.type = l;
f.appendChild(i);
}
c = f;
}
(e = a.call(this, c) || this).noSubImage = true;
e._autoUpdate = true;
e._isConnectedToTicker = false;
e._updateFPS = d.updateFPS || 0;
e._msToNextUpdate = 0;
e.autoPlay = d.autoPlay !== false;
e._load = null;
e._resolve = null;
e._onCanPlay = e._onCanPlay.bind(e);
e._onError = e._onError.bind(e);
if (d.autoLoad !== false) {
e.load();
}
return e;
}
wc(b, a);
b.prototype.update = function (b) {
if (!this.destroyed) {
var c = ic.shared.elapsedMS * this.source.playbackRate;
this._msToNextUpdate = Math.floor(this._msToNextUpdate - c);
if (!this._updateFPS || this._msToNextUpdate <= 0) {
a.prototype.update.call(this);
this._msToNextUpdate = this._updateFPS ? Math.floor(1000 / this._updateFPS) : 0;
}
}
};
b.prototype.load = function () {
var a = this;
if (this._load) {
return this._load;
}
var b = this.source;
if ((b.readyState === b.HAVE_ENOUGH_DATA || b.readyState === b.HAVE_FUTURE_DATA) && b.width && b.height) {
b.complete = true;
}
b.addEventListener("play", this._onPlayStart.bind(this));
b.addEventListener("pause", this._onPlayStop.bind(this));
if (this._isSourceReady()) {
this._onCanPlay();
} else {
b.addEventListener("canplay", this._onCanPlay);
b.addEventListener("canplaythrough", this._onCanPlay);
b.addEventListener("error", this._onError, true);
}
this._load = new Promise(function (c) {
if (a.valid) {
c(a);
} else {
a._resolve = c;
b.load();
}
});
return this._load;
};
b.prototype._onError = function (a) {
this.source.removeEventListener("error", this._onError, true);
this.onError.emit(a);
};
b.prototype._isSourcePlaying = function () {
var a = this.source;
return a.currentTime > 0 && a.paused === false && a.ended === false && a.readyState > 2;
};
b.prototype._isSourceReady = function () {
var a = this.source;
return a.readyState === 3 || a.readyState === 4;
};
b.prototype._onPlayStart = function () {
if (!this.valid) {
this._onCanPlay();
}
if (this.autoUpdate && !this._isConnectedToTicker) {
ic.shared.add(this.update, this);
this._isConnectedToTicker = true;
}
};
b.prototype._onPlayStop = function () {
if (this._isConnectedToTicker) {
ic.shared.remove(this.update, this);
this._isConnectedToTicker = false;
}
};
b.prototype._onCanPlay = function () {
var a = this.source;
a.removeEventListener("canplay", this._onCanPlay);
a.removeEventListener("canplaythrough", this._onCanPlay);
var b = this.valid;
this.resize(a.videoWidth, a.videoHeight);
if (!b && this._resolve) {
this._resolve(this);
this._resolve = null;
}
if (this._isSourcePlaying()) {
this._onPlayStart();
} else if (this.autoPlay) {
a.play();
}
};
b.prototype.dispose = function () {
if (this._isConnectedToTicker) {
ic.shared.remove(this.update, this);
this._isConnectedToTicker = false;
}
var b = this.source;
if (b) {
b.removeEventListener("error", this._onError, true);
b.pause();
b.src = "";
b.load();
}
a.prototype.dispose.call(this);
};
Object.defineProperty(b.prototype, "autoUpdate", {
get: function () {
return this._autoUpdate;
},
set: function (a) {
if (a !== this._autoUpdate) {
this._autoUpdate = a;
if (!this._autoUpdate && this._isConnectedToTicker) {
ic.shared.remove(this.update, this);
this._isConnectedToTicker = false;
} else if (this._autoUpdate && !this._isConnectedToTicker && this._isSourcePlaying()) {
ic.shared.add(this.update, this);
this._isConnectedToTicker = true;
}
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "updateFPS", {
get: function () {
return this._updateFPS;
},
set: function (a) {
if (a !== this._updateFPS) {
this._updateFPS = a;
}
},
enumerable: false,
configurable: true
});
b.test = function (a, c) {
return globalThis.HTMLVideoElement && a instanceof HTMLVideoElement || b.TYPES.indexOf(c) > -1;
};
b.TYPES = ["mp4", "m4v", "webm", "ogg", "ogv", "h264", "avi", "mov"];
b.MIME_TYPES = {
ogv: "video/ogg",
mov: "video/quicktime",
m4v: "video/mp4"
};
return b;
}(Ec);
var Kc = function (a) {
function b(b) {
return a.call(this, b) || this;
}
wc(b, a);
b.test = function (a) {
return !!globalThis.createImageBitmap && a instanceof ImageBitmap;
};
return b;
}(Ec);
tc.push(Hc, Kc, Fc, Jc, Ic, zc, Gc, Dc);
var Lc = {
"__proto__": null,
Resource: yc,
BaseImageResource: Ec,
INSTALLED: tc,
autoDetectResource: uc,
AbstractMultiResource: Cc,
ArrayResource: Dc,
BufferResource: zc,
CanvasResource: Fc,
CubeResource: Gc,
ImageResource: Hc,
SVGResource: Ic,
VideoResource: Jc,
ImageBitmapResource: Kc
};
var Mc = function (a) {
function b() {
return a !== null && a.apply(this, arguments) || this;
}
wc(b, a);
b.prototype.upload = function (a, b, c) {
var d = a.gl;
d.pixelStorei(d.UNPACK_PREMULTIPLY_ALPHA_WEBGL, b.alphaMode === ya.UNPACK);
var e = b.realWidth;
var f = b.realHeight;
if (c.width === e && c.height === f) {
d.texSubImage2D(b.target, 0, 0, 0, e, f, b.format, c.type, this.data);
} else {
c.width = e;
c.height = f;
d.texImage2D(b.target, 0, c.internalFormat, e, f, 0, b.format, c.type, this.data);
}
return true;
};
return b;
}(zc);
var Nc = function () {
function a(a, b) {
this.width = Math.round(a || 100);
this.height = Math.round(b || 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 sc("disposeFramebuffer");
this.multisample = Da.NONE;
}
Object.defineProperty(a.prototype, "colorTexture", {
get: function () {
return this.colorTextures[0];
},
enumerable: false,
configurable: true
});
a.prototype.addColorTexture = function (a, b) {
if (a === undefined) {
a = 0;
}
this.colorTextures[a] = b || new Bc(null, {
scaleMode: va.NEAREST,
resolution: 1,
mipmap: xa.OFF,
width: this.width,
height: this.height
});
this.dirtyId++;
this.dirtyFormat++;
return this;
};
a.prototype.addDepthTexture = function (a) {
this.depthTexture = a || new Bc(new Mc(null, {
width: this.width,
height: this.height
}), {
scaleMode: va.NEAREST,
resolution: 1,
width: this.width,
height: this.height,
mipmap: xa.OFF,
format: ra.DEPTH_COMPONENT,
type: ta.UNSIGNED_SHORT
});
this.dirtyId++;
this.dirtyFormat++;
return this;
};
a.prototype.enableDepth = function () {
this.depth = true;
this.dirtyId++;
this.dirtyFormat++;
return this;
};
a.prototype.enableStencil = function () {
this.stencil = true;
this.dirtyId++;
this.dirtyFormat++;
return this;
};
a.prototype.resize = function (a, b) {
a = Math.round(a);
b = Math.round(b);
if (a !== this.width || b !== this.height) {
this.width = a;
this.height = b;
this.dirtyId++;
this.dirtySize++;
for (var c = 0; c < this.colorTextures.length; c++) {
var d = this.colorTextures[c];
var e = d.resolution;
d.setSize(a / e, b / e);
}
if (this.depthTexture) {
e = this.depthTexture.resolution;
this.depthTexture.setSize(a / e, b / e);
}
}
};
a.prototype.dispose = function () {
this.disposeRunner.emit(this, false);
};
a.prototype.destroyDepthTexture = function () {
if (this.depthTexture) {
this.depthTexture.destroy();
this.depthTexture = null;
++this.dirtyId;
++this.dirtyFormat;
}
};
return a;
}();
var Oc = function (a) {
function b(b) {
if (b === undefined) {
b = {};
}
var c = this;
if (typeof b == "number") {
b = {
width: arguments[0],
height: arguments[1],
scaleMode: arguments[2],
resolution: arguments[3]
};
}
b.width = b.width || 100;
b.height = b.height || 100;
b.multisample = b.multisample !== undefined ? b.multisample : Da.NONE;
(c = a.call(this, null, b) || this).mipmap = xa.OFF;
c.valid = true;
c.clearColor = [0, 0, 0, 0];
c.framebuffer = new Nc(c.realWidth, c.realHeight).addColorTexture(0, c);
c.framebuffer.multisample = b.multisample;
c.maskStack = [];
c.filterStack = [{}];
return c;
}
wc(b, a);
b.prototype.resize = function (a, b) {
this.framebuffer.resize(a * this.resolution, b * this.resolution);
this.setRealSize(this.framebuffer.width, this.framebuffer.height);
};
b.prototype.dispose = function () {
this.framebuffer.dispose();
a.prototype.dispose.call(this);
};
b.prototype.destroy = function () {
a.prototype.destroy.call(this);
this.framebuffer.destroyDepthTexture();
this.framebuffer = null;
};
return b;
}(Bc);
var Pc = function () {
function a() {
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);
}
a.prototype.set = function (a, b, c) {
var d = b.width;
var e = b.height;
if (c) {
var f = a.width / 2 / d;
var g = a.height / 2 / e;
var h = a.x / d + f;
var i = a.y / e + g;
c = Eb.add(c, Eb.NW);
this.x0 = h + f * Eb.uX(c);
this.y0 = i + g * Eb.uY(c);
c = Eb.add(c, 2);
this.x1 = h + f * Eb.uX(c);
this.y1 = i + g * Eb.uY(c);
c = Eb.add(c, 2);
this.x2 = h + f * Eb.uX(c);
this.y2 = i + g * Eb.uY(c);
c = Eb.add(c, 2);
this.x3 = h + f * Eb.uX(c);
this.y3 = i + g * Eb.uY(c);
} else {
this.x0 = a.x / d;
this.y0 = a.y / e;
this.x1 = (a.x + a.width) / d;
this.y1 = a.y / e;
this.x2 = (a.x + a.width) / d;
this.y2 = (a.y + a.height) / e;
this.x3 = a.x / d;
this.y3 = (a.y + a.height) / e;
}
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;
};
a.prototype.toString = function () {
return "[@pixi/core:TextureUvs x0=" + this.x0 + " y0=" + this.y0 + " x1=" + this.x1 + " y1=" + this.y1 + " x2=" + this.x2 + " y2=" + this.y2 + " x3=" + this.x3 + " y3=" + this.y3 + "]";
};
return a;
}();
var Qc = new Pc();
function Rc(a) {
a.destroy = function () {};
a.on = function () {};
a.once = function () {};
a.emit = function () {};
}
var Sc = function (a) {
function b(c, d, e, f, g, h) {
var i = a.call(this) || this;
i.noFrame = false;
if (!d) {
i.noFrame = true;
d = new qb(0, 0, 1, 1);
}
if (c instanceof b) {
c = c.baseTexture;
}
i.baseTexture = c;
i._frame = d;
i.trim = f;
i.valid = false;
i._uvs = Qc;
i.uvMatrix = null;
i.orig = e || d;
i._rotate = Number(g || 0);
if (g === true) {
i._rotate = 2;
} else if (i._rotate % 2 != 0) {
throw new Error("attempt to use diamond-shaped UVs. If you are sure, set rotation manually");
}
i.defaultAnchor = h ? new ob(h.x, h.y) : new ob(0, 0);
i._updateID = 0;
i.textureCacheIds = [];
if (c.valid) {
if (i.noFrame) {
if (c.valid) {
i.onBaseTextureUpdated(c);
}
} else {
i.frame = d;
}
} else {
c.once("loaded", i.onBaseTextureUpdated, i);
}
if (i.noFrame) {
c.on("update", i.onBaseTextureUpdated, i);
}
return i;
}
wc(b, a);
b.prototype.update = function () {
if (this.baseTexture.resource) {
this.baseTexture.resource.update();
}
};
b.prototype.onBaseTextureUpdated = function (a) {
if (this.noFrame) {
if (!this.baseTexture.valid) {
return;
}
this._frame.width = a.width;
this._frame.height = a.height;
this.valid = true;
this.updateUvs();
} else {
this.frame = this._frame;
}
this.emit("update", this);
};
b.prototype.destroy = function (a) {
if (this.baseTexture) {
if (a) {
var c = this.baseTexture.resource;
if (c && c.url && gb[c.url]) {
b.removeFromCache(c.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;
b.removeFromCache(this);
this.textureCacheIds = null;
};
b.prototype.clone = function () {
var a = this._frame.clone();
var c = this._frame === this.orig ? a : this.orig.clone();
var d = new b(this.baseTexture, !this.noFrame && a, c, this.trim && this.trim.clone(), this.rotate, this.defaultAnchor);
if (this.noFrame) {
d._frame = a;
}
return d;
};
b.prototype.updateUvs = function () {
if (this._uvs === Qc) {
this._uvs = new Pc();
}
this._uvs.set(this._frame, this.baseTexture, this.rotate);
this._updateID++;
};
b.from = function (a, c, d) {
if (c === undefined) {
c = {};
}
if (d === undefined) {
d = Fa.STRICT_TEXTURE_CACHE;
}
var e = typeof a == "string";
var f = null;
if (e) {
f = a;
} else if (a instanceof Bc) {
if (!a.cacheId) {
var g = c && c.pixiIdPrefix || "pixiid";
a.cacheId = g + "-" + bb();
Bc.addToCache(a, a.cacheId);
}
f = a.cacheId;
} else {
if (!a._pixiId) {
g = c && c.pixiIdPrefix || "pixiid";
a._pixiId = g + "_" + bb();
}
f = a._pixiId;
}
var h = gb[f];
if (e && d && !h) {
throw new Error("The cacheId \"" + f + "\" does not exist in TextureCache.");
}
if (h || a instanceof Bc) {
if (!h && a instanceof Bc) {
h = new b(a);
b.addToCache(h, f);
}
} else {
c.resolution ||= jb(a);
(h = new b(new Bc(a, c))).baseTexture.cacheId = f;
Bc.addToCache(h.baseTexture, f);
b.addToCache(h, f);
}
return h;
};
b.fromURL = function (a, c) {
var d = Object.assign({
autoLoad: false
}, c == null ? undefined : c.resourceOptions);
var e = b.from(a, Object.assign({
resourceOptions: d
}, c), false);
var f = e.baseTexture.resource;
if (e.baseTexture.valid) {
return Promise.resolve(e);
} else {
return f.load().then(function () {
return Promise.resolve(e);
});
}
};
b.fromBuffer = function (a, c, d, e) {
return new b(Bc.fromBuffer(a, c, d, e));
};
b.fromLoader = function (a, c, d, e) {
var f = new Bc(a, Object.assign({
scaleMode: Fa.SCALE_MODE,
resolution: jb(c)
}, e));
var g = f.resource;
if (g instanceof Hc) {
g.url = c;
}
var h = new b(f);
d ||= c;
Bc.addToCache(h.baseTexture, d);
b.addToCache(h, d);
if (d !== c) {
Bc.addToCache(h.baseTexture, c);
b.addToCache(h, c);
}
if (h.baseTexture.valid) {
return Promise.resolve(h);
} else {
return new Promise(function (a) {
h.baseTexture.once("loaded", function () {
return a(h);
});
});
}
};
b.addToCache = function (a, b) {
if (b) {
if (a.textureCacheIds.indexOf(b) === -1) {
a.textureCacheIds.push(b);
}
if (gb[b]) {
console.warn("Texture added to the cache with an id [" + b + "] that already had an entry");
}
gb[b] = a;
}
};
b.removeFromCache = function (a) {
if (typeof a == "string") {
var b = gb[a];
if (b) {
var c = b.textureCacheIds.indexOf(a);
if (c > -1) {
b.textureCacheIds.splice(c, 1);
}
delete gb[a];
return b;
}
} else if (a && a.textureCacheIds) {
for (var d = 0; d < a.textureCacheIds.length; ++d) {
if (gb[a.textureCacheIds[d]] === a) {
delete gb[a.textureCacheIds[d]];
}
}
a.textureCacheIds.length = 0;
return a;
}
return null;
};
Object.defineProperty(b.prototype, "resolution", {
get: function () {
return this.baseTexture.resolution;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "frame", {
get: function () {
return this._frame;
},
set: function (a) {
this._frame = a;
this.noFrame = false;
var b = a.x;
var c = a.y;
var d = a.width;
var e = a.height;
var f = b + d > this.baseTexture.width;
var g = c + e > this.baseTexture.height;
if (f || g) {
var h = f && g ? "and" : "or";
var i = "X: " + b + " + " + d + " = " + (b + d) + " > " + this.baseTexture.width;
var j = "Y: " + c + " + " + e + " = " + (c + e) + " > " + this.baseTexture.height;
throw new Error("Texture Error: frame does not fit inside the base Texture dimensions: " + i + " " + h + " " + j);
}
this.valid = d && e && this.baseTexture.valid;
if (!this.trim && !this.rotate) {
this.orig = a;
}
if (this.valid) {
this.updateUvs();
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "rotate", {
get: function () {
return this._rotate;
},
set: function (a) {
this._rotate = a;
if (this.valid) {
this.updateUvs();
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "width", {
get: function () {
return this.orig.width;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return this.orig.height;
},
enumerable: false,
configurable: true
});
b.prototype.castToBaseTexture = function () {
return this.baseTexture;
};
Object.defineProperty(b, "EMPTY", {
get: function () {
if (!b._EMPTY) {
b._EMPTY = new b(new Bc());
Rc(b._EMPTY);
Rc(b._EMPTY.baseTexture);
}
return b._EMPTY;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b, "WHITE", {
get: function () {
if (!b._WHITE) {
var a = document.createElement("canvas");
var c = a.getContext("2d");
a.width = 16;
a.height = 16;
c.fillStyle = "white";
c.fillRect(0, 0, 16, 16);
b._WHITE = new b(new Bc(new Fc(a)));
Rc(b._WHITE);
Rc(b._WHITE.baseTexture);
}
return b._WHITE;
},
enumerable: false,
configurable: true
});
return b;
}(Ha());
var Tc = function (a) {
function b(b, c) {
var d = a.call(this, b, c) || this;
d.valid = true;
d.filterFrame = null;
d.filterPoolKey = null;
d.updateUvs();
return d;
}
wc(b, a);
Object.defineProperty(b.prototype, "framebuffer", {
get: function () {
return this.baseTexture.framebuffer;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "multisample", {
get: function () {
return this.framebuffer.multisample;
},
set: function (a) {
this.framebuffer.multisample = a;
},
enumerable: false,
configurable: true
});
b.prototype.resize = function (a, b, c) {
if (c === undefined) {
c = true;
}
var d = this.baseTexture.resolution;
var e = Math.round(a * d) / d;
var f = Math.round(b * d) / d;
this.valid = e > 0 && f > 0;
this._frame.width = this.orig.width = e;
this._frame.height = this.orig.height = f;
if (c) {
this.baseTexture.resize(e, f);
}
this.updateUvs();
};
b.prototype.setResolution = function (a) {
var b = this.baseTexture;
if (b.resolution !== a) {
b.setResolution(a);
this.resize(b.width, b.height, false);
}
};
b.create = function (a) {
for (var c = arguments, d = [], e = 1; e < arguments.length; e++) {
d[e - 1] = c[e];
}
if (typeof a == "number") {
db("6.0.0", "Arguments (width, height, scaleMode, resolution) have been deprecated.");
a = {
width: a,
height: d[0],
scaleMode: d[1],
resolution: d[2]
};
}
return new b(new Oc(a));
};
return b;
}(Sc);
var Uc = function () {
function a(a) {
this.texturePool = {};
this.textureOptions = a || {};
this.enableFullScreen = false;
this._pixelsWidth = 0;
this._pixelsHeight = 0;
}
a.prototype.createTexture = function (a, b, c) {
if (c === undefined) {
c = Da.NONE;
}
var d = new Oc(Object.assign({
width: a,
height: b,
resolution: 1,
multisample: c
}, this.textureOptions));
return new Tc(d);
};
a.prototype.getOptimalTexture = function (a, b, c, d) {
var e;
if (c === undefined) {
c = 1;
}
if (d === undefined) {
d = Da.NONE;
}
a = Math.ceil(a * c - 0.000001);
b = Math.ceil(b * c - 0.000001);
if (this.enableFullScreen && a === this._pixelsWidth && b === this._pixelsHeight) {
e = d > 1 ? -d : -1;
} else {
e = (((a = Xa(a)) & 65535) << 16 | (b = Xa(b)) & 65535) >>> 0;
if (d > 1) {
e += d * 4294967296;
}
}
this.texturePool[e] ||= [];
var f = this.texturePool[e].pop();
f ||= this.createTexture(a, b, d);
f.filterPoolKey = e;
f.setResolution(c);
return f;
};
a.prototype.getFilterTexture = function (a, b, c) {
var d = this.getOptimalTexture(a.width, a.height, b || a.resolution, c || Da.NONE);
d.filterFrame = a.filterFrame;
return d;
};
a.prototype.returnTexture = function (a) {
var b = a.filterPoolKey;
a.filterFrame = null;
this.texturePool[b].push(a);
};
a.prototype.returnFilterTexture = function (a) {
this.returnTexture(a);
};
a.prototype.clear = function (a) {
if (a = a !== false) {
for (var b in this.texturePool) {
var c = this.texturePool[b];
if (c) {
for (var d = 0; d < c.length; d++) {
c[d].destroy(true);
}
}
}
}
this.texturePool = {};
};
a.prototype.setScreenSize = function (a) {
if (a.width !== this._pixelsWidth || a.height !== this._pixelsHeight) {
this.enableFullScreen = a.width > 0 && a.height > 0;
for (var b in this.texturePool) {
if (Number(b) < 0) {
var c = this.texturePool[b];
if (c) {
for (var d = 0; d < c.length; d++) {
c[d].destroy(true);
}
}
this.texturePool[b] = [];
}
}
this._pixelsWidth = a.width;
this._pixelsHeight = a.height;
}
};
a.SCREEN_KEY = -1;
return a;
}();
var Vc = function () {
function a(a, b, c, d, e, f, g) {
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = false;
}
if (d === undefined) {
d = ta.FLOAT;
}
this.buffer = a;
this.size = b;
this.normalized = c;
this.type = d;
this.stride = e;
this.start = f;
this.instance = g;
}
a.prototype.destroy = function () {
this.buffer = null;
};
a.from = function (b, c, d, e, f) {
return new a(b, c, d, e, f);
};
return a;
}();
var Wc = 0;
var Xc = function () {
function a(a, b, c) {
if (b === undefined) {
b = true;
}
if (c === undefined) {
c = false;
}
this.data = a || new Float32Array(1);
this._glBuffers = {};
this._updateID = 0;
this.index = c;
this.static = b;
this.id = Wc++;
this.disposeRunner = new sc("disposeBuffer");
}
a.prototype.update = function (a) {
if (a instanceof Array) {
a = new Float32Array(a);
}
this.data = a || this.data;
this._updateID++;
};
a.prototype.dispose = function () {
this.disposeRunner.emit(this, false);
};
a.prototype.destroy = function () {
this.dispose();
this.data = null;
};
Object.defineProperty(a.prototype, "index", {
get: function () {
return this.type === Ea.ELEMENT_ARRAY_BUFFER;
},
set: function (a) {
this.type = a ? Ea.ELEMENT_ARRAY_BUFFER : Ea.ARRAY_BUFFER;
},
enumerable: false,
configurable: true
});
a.from = function (b) {
if (b instanceof Array) {
b = new Float32Array(b);
}
return new a(b);
};
return a;
}();
var Yc = {
Float32Array: Float32Array,
Uint32Array: Uint32Array,
Int32Array: Int32Array,
Uint8Array: Uint8Array
};
var Zc = {
5126: 4,
5123: 2,
5121: 1
};
var $c = 0;
var _c = {
Float32Array: Float32Array,
Uint32Array: Uint32Array,
Int32Array: Int32Array,
Uint8Array: Uint8Array,
Uint16Array: Uint16Array
};
var ad = function () {
function a(a, b) {
if (a === undefined) {
a = [];
}
if (b === undefined) {
b = {};
}
this.buffers = a;
this.indexBuffer = null;
this.attributes = b;
this.glVertexArrayObjects = {};
this.id = $c++;
this.instanced = false;
this.instanceCount = 1;
this.disposeRunner = new sc("disposeGeometry");
this.refCount = 0;
}
a.prototype.addAttribute = function (a, b, c, d, e, f, g, h) {
if (c === undefined) {
c = 0;
}
if (d === undefined) {
d = false;
}
if (h === undefined) {
h = false;
}
if (!b) {
throw new Error("You must pass a buffer when creating an attribute");
}
if (!(b instanceof Xc)) {
if (b instanceof Array) {
b = new Float32Array(b);
}
b = new Xc(b);
}
var i = a.split("|");
if (i.length > 1) {
for (var j = 0; j < i.length; j++) {
this.addAttribute(i[j], b, c, d, e);
}
return this;
}
var k = this.buffers.indexOf(b);
if (k === -1) {
this.buffers.push(b);
k = this.buffers.length - 1;
}
this.attributes[a] = new Vc(k, c, d, e, f, g, h);
this.instanced = this.instanced || h;
return this;
};
a.prototype.getAttribute = function (a) {
return this.attributes[a];
};
a.prototype.getBuffer = function (a) {
return this.buffers[this.getAttribute(a).buffer];
};
a.prototype.addIndex = function (a) {
if (!(a instanceof Xc)) {
if (a instanceof Array) {
a = new Uint16Array(a);
}
a = new Xc(a);
}
a.type = Ea.ELEMENT_ARRAY_BUFFER;
this.indexBuffer = a;
if (this.buffers.indexOf(a) === -1) {
this.buffers.push(a);
}
return this;
};
a.prototype.getIndex = function () {
return this.indexBuffer;
};
a.prototype.interleave = function () {
if (this.buffers.length === 1 || this.buffers.length === 2 && this.indexBuffer) {
return this;
}
var a;
var b = [];
var c = [];
var d = new Xc();
for (a in this.attributes) {
var e = this.attributes[a];
var f = this.buffers[e.buffer];
b.push(f.data);
c.push(e.size * Zc[e.type] / 4);
e.buffer = 0;
}
d.data = function (a, b) {
for (var c = 0, d = 0, e = {}, f = 0; f < a.length; f++) {
d += b[f];
c += a[f].length;
}
var g = new ArrayBuffer(c * 4);
var h = null;
var i = 0;
for (f = 0; f < a.length; f++) {
var j = b[f];
var k = a[f];
var l = Wa(k);
e[l] ||= new Yc[l](g);
h = e[l];
for (var m = 0; m < k.length; m++) {
h[(m / j | 0) * d + i + m % j] = k[m];
}
i += j;
}
return new Float32Array(g);
}(b, c);
a = 0;
for (; a < this.buffers.length; a++) {
if (this.buffers[a] !== this.indexBuffer) {
this.buffers[a].destroy();
}
}
this.buffers = [d];
if (this.indexBuffer) {
this.buffers.push(this.indexBuffer);
}
return this;
};
a.prototype.getSize = function () {
for (var a in this.attributes) {
var b = this.attributes[a];
return this.buffers[b.buffer].data.length / (b.stride / 4 || b.size);
}
return 0;
};
a.prototype.dispose = function () {
this.disposeRunner.emit(this, false);
};
a.prototype.destroy = function () {
this.dispose();
this.buffers = null;
this.indexBuffer = null;
this.attributes = null;
};
a.prototype.clone = function () {
for (var b = new a(), c = 0; c < this.buffers.length; c++) {
b.buffers[c] = new Xc(this.buffers[c].data.slice(0));
}
for (var c in this.attributes) {
var d = this.attributes[c];
b.attributes[c] = new Vc(d.buffer, d.size, d.normalized, d.type, d.stride, d.start, d.instance);
}
if (this.indexBuffer) {
b.indexBuffer = b.buffers[this.buffers.indexOf(this.indexBuffer)];
b.indexBuffer.type = Ea.ELEMENT_ARRAY_BUFFER;
}
return b;
};
a.merge = function (b) {
for (var c, d = new a(), e = [], f = [], g = [], h = 0; h < b.length; h++) {
c = b[h];
for (var i = 0; i < c.buffers.length; i++) {
f[i] = f[i] || 0;
f[i] += c.buffers[i].data.length;
g[i] = 0;
}
}
for (h = 0; h < c.buffers.length; h++) {
e[h] = new _c[Wa(c.buffers[h].data)](f[h]);
d.buffers[h] = new Xc(e[h]);
}
for (h = 0; h < b.length; h++) {
c = b[h];
i = 0;
c = b[h];
i = 0;
for (; i < c.buffers.length; i++) {
e[i].set(c.buffers[i].data, g[i]);
g[i] += c.buffers[i].data.length;
}
}
d.attributes = c.attributes;
if (c.indexBuffer) {
d.indexBuffer = d.buffers[c.buffers.indexOf(c.indexBuffer)];
d.indexBuffer.type = Ea.ELEMENT_ARRAY_BUFFER;
var j = 0;
var k = 0;
var l = 0;
var m = 0;
for (h = 0; h < c.buffers.length; h++) {
if (c.buffers[h] !== c.indexBuffer) {
m = h;
break;
}
}
for (var h in c.attributes) {
var n = c.attributes[h];
if ((n.buffer | 0) === m) {
k += n.size * Zc[n.type] / 4;
}
}
for (h = 0; h < b.length; h++) {
var o = b[h].indexBuffer.data;
for (i = 0; i < o.length; i++) {
d.indexBuffer.data[i + l] += j;
}
j += b[h].buffers[m].data.length / k;
l += o.length;
}
}
return d;
};
return a;
}();
var bd = function (a) {
function b() {
var b = a.call(this) || this;
b.addAttribute("aVertexPosition", new Float32Array([0, 0, 1, 0, 1, 1, 0, 1])).addIndex([0, 1, 3, 2]);
return b;
}
wc(b, a);
return b;
}(ad);
var cd = function (a) {
function b() {
var b = a.call(this) || this;
b.vertices = new Float32Array([-1, -1, 1, -1, 1, 1, -1, 1]);
b.uvs = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);
b.vertexBuffer = new Xc(b.vertices);
b.uvBuffer = new Xc(b.uvs);
b.addAttribute("aVertexPosition", b.vertexBuffer).addAttribute("aTextureCoord", b.uvBuffer).addIndex([0, 1, 2, 0, 2, 3]);
return b;
}
wc(b, a);
b.prototype.map = function (a, b) {
var c = 0;
var d = 0;
this.uvs[0] = c;
this.uvs[1] = d;
this.uvs[2] = c + b.width / a.width;
this.uvs[3] = d;
this.uvs[4] = c + b.width / a.width;
this.uvs[5] = d + b.height / a.height;
this.uvs[6] = c;
this.uvs[7] = d + b.height / a.height;
c = b.x;
d = b.y;
this.vertices[0] = c;
this.vertices[1] = d;
this.vertices[2] = c + b.width;
this.vertices[3] = d;
this.vertices[4] = c + b.width;
this.vertices[5] = d + b.height;
this.vertices[6] = c;
this.vertices[7] = d + b.height;
this.invalidate();
return this;
};
b.prototype.invalidate = function () {
this.vertexBuffer._updateID++;
this.uvBuffer._updateID++;
return this;
};
return b;
}(ad);
var dd = 0;
var ed = function () {
function a(a, b, c) {
this.group = true;
this.syncUniforms = {};
this.dirtyId = 0;
this.id = dd++;
this.static = !!b;
this.ubo = !!c;
if (a instanceof Xc) {
this.buffer = a;
this.buffer.type = Ea.UNIFORM_BUFFER;
this.autoManage = false;
this.ubo = true;
} else {
this.uniforms = a;
if (this.ubo) {
this.buffer = new Xc(new Float32Array(1));
this.buffer.type = Ea.UNIFORM_BUFFER;
this.autoManage = true;
}
}
}
a.prototype.update = function () {
this.dirtyId++;
if (!this.autoManage && this.buffer) {
this.buffer.update();
}
};
a.prototype.add = function (b, c, d) {
if (this.ubo) {
throw new Error("[UniformGroup] uniform groups in ubo mode cannot be modified, or have uniform groups nested in them");
}
this.uniforms[b] = new a(c, d);
};
a.from = function (b, c, d) {
return new a(b, c, d);
};
a.uboFrom = function (b, c) {
return new a(b, c == null || c, true);
};
return a;
}();
var fd = function () {
function a() {
this.renderTexture = null;
this.target = null;
this.legacy = false;
this.resolution = 1;
this.multisample = Da.NONE;
this.sourceFrame = new qb();
this.destinationFrame = new qb();
this.bindingSourceFrame = new qb();
this.bindingDestinationFrame = new qb();
this.filters = [];
this.transform = null;
}
a.prototype.clear = function () {
this.target = null;
this.filters = null;
this.renderTexture = null;
};
return a;
}();
var gd = [new ob(), new ob(), new ob(), new ob()];
var hd = new wb();
var id = function () {
function a(a) {
this.renderer = a;
this.defaultFilterStack = [{}];
this.texturePool = new Uc();
this.texturePool.setScreenSize(a.view);
this.statePool = [];
this.quad = new bd();
this.quadUv = new cd();
this.tempRect = new qb();
this.activeState = {};
this.globalUniforms = new ed({
outputFrame: new qb(),
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;
}
a.prototype.push = function (a, b) {
for (var c, d, e = this.renderer, f = this.defaultFilterStack, g = this.statePool.pop() || new fd(), h = this.renderer.renderTexture, i = b[0].resolution, j = b[0].multisample, k = b[0].padding, l = b[0].autoFit, m = (c = b[0].legacy) === null || c === undefined || c, n = 1; n < b.length; n++) {
var o = b[n];
i = Math.min(i, o.resolution);
j = Math.min(j, o.multisample);
k = this.useMaxPadding ? Math.max(k, o.padding) : k + o.padding;
l = l && o.autoFit;
m = m || (d = o.legacy) === null || d === undefined || d;
}
if (f.length === 1) {
this.defaultFilterStack[0].renderTexture = h.current;
}
f.push(g);
g.resolution = i;
g.multisample = j;
g.legacy = m;
g.target = a;
g.sourceFrame.copyFrom(a.filterArea || a.getBounds(true));
g.sourceFrame.pad(k);
var p = this.tempRect.copyFrom(h.sourceFrame);
if (e.projection.transform) {
this.transformAABB(hd.copyFrom(e.projection.transform).invert(), p);
}
if (l) {
g.sourceFrame.fit(p);
if (g.sourceFrame.width <= 0 || g.sourceFrame.height <= 0) {
g.sourceFrame.width = 0;
g.sourceFrame.height = 0;
}
} else if (!g.sourceFrame.intersects(p)) {
g.sourceFrame.width = 0;
g.sourceFrame.height = 0;
}
this.roundFrame(g.sourceFrame, h.current ? h.current.resolution : e.resolution, h.sourceFrame, h.destinationFrame, e.projection.transform);
g.renderTexture = this.getOptimalFilterTexture(g.sourceFrame.width, g.sourceFrame.height, i, j);
g.filters = b;
g.destinationFrame.width = g.renderTexture.width;
g.destinationFrame.height = g.renderTexture.height;
var q = this.tempRect;
q.x = 0;
q.y = 0;
q.width = g.sourceFrame.width;
q.height = g.sourceFrame.height;
g.renderTexture.filterFrame = g.sourceFrame;
g.bindingSourceFrame.copyFrom(h.sourceFrame);
g.bindingDestinationFrame.copyFrom(h.destinationFrame);
g.transform = e.projection.transform;
e.projection.transform = null;
h.bind(g.renderTexture, g.sourceFrame, q);
e.framebuffer.clear(0, 0, 0, 0);
};
a.prototype.pop = function () {
var a = this.defaultFilterStack;
var b = a.pop();
var c = b.filters;
this.activeState = b;
var d = this.globalUniforms.uniforms;
d.outputFrame = b.sourceFrame;
d.resolution = b.resolution;
var e = d.inputSize;
var f = d.inputPixel;
var g = d.inputClamp;
e[0] = b.destinationFrame.width;
e[1] = b.destinationFrame.height;
e[2] = 1 / e[0];
e[3] = 1 / e[1];
f[0] = Math.round(e[0] * b.resolution);
f[1] = Math.round(e[1] * b.resolution);
f[2] = 1 / f[0];
f[3] = 1 / f[1];
g[0] = f[2] * 0.5;
g[1] = f[3] * 0.5;
g[2] = b.sourceFrame.width * e[2] - f[2] * 0.5;
g[3] = b.sourceFrame.height * e[3] - f[3] * 0.5;
if (b.legacy) {
var h = d.filterArea;
h[0] = b.destinationFrame.width;
h[1] = b.destinationFrame.height;
h[2] = b.sourceFrame.x;
h[3] = b.sourceFrame.y;
d.filterClamp = d.inputClamp;
}
this.globalUniforms.update();
var i = a[a.length - 1];
this.renderer.framebuffer.blit();
if (c.length === 1) {
c[0].apply(this, b.renderTexture, i.renderTexture, za.BLEND, b);
this.returnFilterTexture(b.renderTexture);
} else {
var j = b.renderTexture;
var k = this.getOptimalFilterTexture(j.width, j.height, b.resolution);
k.filterFrame = j.filterFrame;
var l = 0;
for (l = 0; l < c.length - 1; ++l) {
if (l === 1 && b.multisample > 1) {
(k = this.getOptimalFilterTexture(j.width, j.height, b.resolution)).filterFrame = j.filterFrame;
}
c[l].apply(this, j, k, za.CLEAR, b);
var m = j;
j = k;
k = m;
}
c[l].apply(this, j, i.renderTexture, za.BLEND, b);
if (l > 1 && b.multisample > 1) {
this.returnFilterTexture(b.renderTexture);
}
this.returnFilterTexture(j);
this.returnFilterTexture(k);
}
b.clear();
this.statePool.push(b);
};
a.prototype.bindAndClear = function (a, b) {
if (b === undefined) {
b = za.CLEAR;
}
var c = this.renderer;
var d = c.renderTexture;
var e = c.state;
if (a === this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {
this.renderer.projection.transform = this.activeState.transform;
} else {
this.renderer.projection.transform = null;
}
if (a && a.filterFrame) {
var f = this.tempRect;
f.x = 0;
f.y = 0;
f.width = a.filterFrame.width;
f.height = a.filterFrame.height;
d.bind(a, a.filterFrame, f);
} else if (a !== this.defaultFilterStack[this.defaultFilterStack.length - 1].renderTexture) {
d.bind(a);
} else {
this.renderer.renderTexture.bind(a, this.activeState.bindingSourceFrame, this.activeState.bindingDestinationFrame);
}
var g = e.stateId & 1 || this.forceClear;
if (b === za.CLEAR || b === za.BLIT && g) {
this.renderer.framebuffer.clear(0, 0, 0, 0);
}
};
a.prototype.applyFilter = function (a, b, c, d) {
var e = this.renderer;
e.state.set(a.state);
this.bindAndClear(c, d);
a.uniforms.uSampler = b;
a.uniforms.filterGlobals = this.globalUniforms;
e.shader.bind(a);
a.legacy = !!a.program.attributeData.aTextureCoord;
if (a.legacy) {
this.quadUv.map(b._frame, b.filterFrame);
e.geometry.bind(this.quadUv);
e.geometry.draw(qa.TRIANGLES);
} else {
e.geometry.bind(this.quad);
e.geometry.draw(qa.TRIANGLE_STRIP);
}
};
a.prototype.calculateSpriteMatrix = function (a, b) {
var c = this.activeState;
var d = c.sourceFrame;
var e = c.destinationFrame;
var f = b._texture.orig;
var g = a.set(e.width, 0, 0, e.height, d.x, d.y);
var h = b.worldTransform.copyTo(wb.TEMP_MATRIX);
h.invert();
g.prepend(h);
g.scale(1 / f.width, 1 / f.height);
g.translate(b.anchor.x, b.anchor.y);
return g;
};
a.prototype.destroy = function () {
this.renderer = null;
this.texturePool.clear(false);
};
a.prototype.getOptimalFilterTexture = function (a, b, c, d) {
if (c === undefined) {
c = 1;
}
if (d === undefined) {
d = Da.NONE;
}
return this.texturePool.getOptimalTexture(a, b, c, d);
};
a.prototype.getFilterTexture = function (a, b, c) {
if (typeof a == "number") {
var d = a;
a = b;
b = d;
}
a = a || this.activeState.renderTexture;
var e = this.texturePool.getOptimalTexture(a.width, a.height, b || a.resolution, c || Da.NONE);
e.filterFrame = a.filterFrame;
return e;
};
a.prototype.returnFilterTexture = function (a) {
this.texturePool.returnTexture(a);
};
a.prototype.emptyPool = function () {
this.texturePool.clear(true);
};
a.prototype.resize = function () {
this.texturePool.setScreenSize(this.renderer.view);
};
a.prototype.transformAABB = function (a, b) {
var c = gd[0];
var d = gd[1];
var e = gd[2];
var f = gd[3];
c.set(b.left, b.top);
d.set(b.left, b.bottom);
e.set(b.right, b.top);
f.set(b.right, b.bottom);
a.apply(c, c);
a.apply(d, d);
a.apply(e, e);
a.apply(f, f);
var g = Math.min(c.x, d.x, e.x, f.x);
var h = Math.min(c.y, d.y, e.y, f.y);
var i = Math.max(c.x, d.x, e.x, f.x);
var j = Math.max(c.y, d.y, e.y, f.y);
b.x = g;
b.y = h;
b.width = i - g;
b.height = j - h;
};
a.prototype.roundFrame = function (a, b, c, d, e) {
if (a.width > 0 && a.height > 0 && c.width > 0 && c.height > 0) {
if (e) {
var f = e.a;
var g = e.b;
var h = e.c;
var i = e.d;
if ((Math.abs(g) > 0.0001 || Math.abs(h) > 0.0001) && (Math.abs(f) > 0.0001 || Math.abs(i) > 0.0001)) {
return;
}
}
(e = e ? hd.copyFrom(e) : hd.identity()).translate(-c.x, -c.y).scale(d.width / c.width, d.height / c.height).translate(d.x, d.y);
this.transformAABB(e, a);
a.ceil(b);
this.transformAABB(e.invert(), a);
}
};
return a;
}();
var jd = function () {
function a(a) {
this.renderer = a;
}
a.prototype.flush = function () {};
a.prototype.destroy = function () {
this.renderer = null;
};
a.prototype.start = function () {};
a.prototype.stop = function () {
this.flush();
};
a.prototype.render = function (a) {};
return a;
}();
var kd = function () {
function a(a) {
this.renderer = a;
this.emptyRenderer = new jd(a);
this.currentRenderer = this.emptyRenderer;
}
a.prototype.setObjectRenderer = function (a) {
if (this.currentRenderer !== a) {
this.currentRenderer.stop();
this.currentRenderer = a;
this.currentRenderer.start();
}
};
a.prototype.flush = function () {
this.setObjectRenderer(this.emptyRenderer);
};
a.prototype.reset = function () {
this.setObjectRenderer(this.emptyRenderer);
};
a.prototype.copyBoundTextures = function (a, b) {
for (var c = this.renderer.texture.boundTextures, d = b - 1; d >= 0; --d) {
a[d] = c[d] || null;
if (a[d]) {
a[d]._batchLocation = d;
}
}
};
a.prototype.boundArray = function (a, b, c, d) {
for (var e = a.elements, f = a.ids, g = a.count, h = 0, i = 0; i < g; i++) {
var j = e[i];
var k = j._batchLocation;
if (k >= 0 && k < d && b[k] === j) {
f[i] = k;
} else {
while (h < d) {
var l = b[h];
if (!l || l._batchEnabled !== c || l._batchLocation !== h) {
f[i] = h;
j._batchLocation = h;
b[h] = j;
break;
}
h++;
}
}
}
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var ld = 0;
var md = function () {
function a(a) {
this.renderer = a;
this.webGLVersion = 1;
this.extensions = {};
this.supports = {
uint32Indices: false
};
this.handleContextLost = this.handleContextLost.bind(this);
this.handleContextRestored = this.handleContextRestored.bind(this);
a.view.addEventListener("webglcontextlost", this.handleContextLost, false);
a.view.addEventListener("webglcontextrestored", this.handleContextRestored, false);
}
Object.defineProperty(a.prototype, "isLost", {
get: function () {
return !this.gl || this.gl.isContextLost();
},
enumerable: false,
configurable: true
});
a.prototype.contextChange = function (a) {
this.gl = a;
this.renderer.gl = a;
this.renderer.CONTEXT_UID = ld++;
if (a.isContextLost() && a.getExtension("WEBGL_lose_context")) {
a.getExtension("WEBGL_lose_context").restoreContext();
}
};
a.prototype.initFromContext = function (a) {
this.gl = a;
this.validateContext(a);
this.renderer.gl = a;
this.renderer.CONTEXT_UID = ld++;
this.renderer.runners.contextChange.emit(a);
};
a.prototype.initFromOptions = function (a) {
var b = this.createContext(this.renderer.view, a);
this.initFromContext(b);
};
a.prototype.createContext = function (a, b) {
var c;
if (Fa.PREFER_ENV >= ma.WEBGL2) {
c = a.getContext("webgl2", b);
}
if (c) {
this.webGLVersion = 2;
} else {
this.webGLVersion = 1;
if (!(c = a.getContext("webgl", b) || a.getContext("experimental-webgl", b))) {
throw new Error("This browser does not support WebGL. Try using the canvas renderer");
}
}
this.gl = c;
this.getExtensions();
return this.gl;
};
a.prototype.getExtensions = function () {
var a = this.gl;
var b = {
anisotropicFiltering: a.getExtension("EXT_texture_filter_anisotropic"),
floatTextureLinear: a.getExtension("OES_texture_float_linear"),
s3tc: a.getExtension("WEBGL_compressed_texture_s3tc"),
s3tc_sRGB: a.getExtension("WEBGL_compressed_texture_s3tc_srgb"),
etc: a.getExtension("WEBGL_compressed_texture_etc"),
etc1: a.getExtension("WEBGL_compressed_texture_etc1"),
pvrtc: a.getExtension("WEBGL_compressed_texture_pvrtc") || a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),
atc: a.getExtension("WEBGL_compressed_texture_atc"),
astc: a.getExtension("WEBGL_compressed_texture_astc")
};
if (this.webGLVersion === 1) {
Object.assign(this.extensions, b, {
drawBuffers: a.getExtension("WEBGL_draw_buffers"),
depthTexture: a.getExtension("WEBGL_depth_texture"),
loseContext: a.getExtension("WEBGL_lose_context"),
vertexArrayObject: a.getExtension("OES_vertex_array_object") || a.getExtension("MOZ_OES_vertex_array_object") || a.getExtension("WEBKIT_OES_vertex_array_object"),
uint32ElementIndex: a.getExtension("OES_element_index_uint"),
floatTexture: a.getExtension("OES_texture_float"),
floatTextureLinear: a.getExtension("OES_texture_float_linear"),
textureHalfFloat: a.getExtension("OES_texture_half_float"),
textureHalfFloatLinear: a.getExtension("OES_texture_half_float_linear")
});
} else if (this.webGLVersion === 2) {
Object.assign(this.extensions, b, {
colorBufferFloat: a.getExtension("EXT_color_buffer_float")
});
}
};
a.prototype.handleContextLost = function (a) {
a.preventDefault();
};
a.prototype.handleContextRestored = function () {
this.renderer.runners.contextChange.emit(this.gl);
};
a.prototype.destroy = function () {
var a = this.renderer.view;
this.renderer = null;
a.removeEventListener("webglcontextlost", this.handleContextLost);
a.removeEventListener("webglcontextrestored", this.handleContextRestored);
this.gl.useProgram(null);
if (this.extensions.loseContext) {
this.extensions.loseContext.loseContext();
}
};
a.prototype.postrender = function () {
if (this.renderer.renderingToScreen) {
this.gl.flush();
}
};
a.prototype.validateContext = function (a) {
var b = a.getContextAttributes();
var c = "WebGL2RenderingContext" in globalThis && a instanceof globalThis.WebGL2RenderingContext;
if (c) {
this.webGLVersion = 2;
}
if (!b.stencil) {
console.warn("Provided WebGL context does not have a stencil buffer, masks may not render correctly");
}
var d = c || !!a.getExtension("OES_element_index_uint");
this.supports.uint32Indices = d;
if (!d) {
console.warn("Provided WebGL context does not support 32 index buffer, complex graphics may not render correctly");
}
};
return a;
}();
function nd(a) {
this.framebuffer = a;
this.stencil = null;
this.dirtyId = -1;
this.dirtyFormat = -1;
this.dirtySize = -1;
this.multisample = Da.NONE;
this.msaaBuffer = null;
this.blitFramebuffer = null;
this.mipLevel = 0;
}
var od = new qb();
var pd = function () {
function a(a) {
this.renderer = a;
this.managedFramebuffers = [];
this.unknownFramebuffer = new Nc(10, 10);
this.msaaSamples = null;
}
a.prototype.contextChange = function () {
var a = this.gl = this.renderer.gl;
this.CONTEXT_UID = this.renderer.CONTEXT_UID;
this.current = this.unknownFramebuffer;
this.viewport = new qb();
this.hasMRT = true;
this.writeDepthTexture = true;
this.disposeAll(true);
if (this.renderer.context.webGLVersion === 1) {
var b = this.renderer.context.extensions.drawBuffers;
var c = this.renderer.context.extensions.depthTexture;
if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) {
b = null;
c = null;
}
if (b) {
a.drawBuffers = function (a) {
return b.drawBuffersWEBGL(a);
};
} else {
this.hasMRT = false;
a.drawBuffers = function () {};
}
if (!c) {
this.writeDepthTexture = false;
}
} else {
this.msaaSamples = a.getInternalformatParameter(a.RENDERBUFFER, a.RGBA8, a.SAMPLES);
}
};
a.prototype.bind = function (a, b, c) {
if (c === undefined) {
c = 0;
}
var d = this.gl;
if (a) {
var e = a.glFramebuffers[this.CONTEXT_UID] || this.initFramebuffer(a);
if (this.current !== a) {
this.current = a;
d.bindFramebuffer(d.FRAMEBUFFER, e.framebuffer);
}
if (e.mipLevel !== c) {
a.dirtyId++;
a.dirtyFormat++;
e.mipLevel = c;
}
if (e.dirtyId !== a.dirtyId) {
e.dirtyId = a.dirtyId;
if (e.dirtyFormat !== a.dirtyFormat) {
e.dirtyFormat = a.dirtyFormat;
e.dirtySize = a.dirtySize;
this.updateFramebuffer(a, c);
} else if (e.dirtySize !== a.dirtySize) {
e.dirtySize = a.dirtySize;
this.resizeFramebuffer(a);
}
}
for (var f = 0; f < a.colorTextures.length; f++) {
var g = a.colorTextures[f];
this.renderer.texture.unbind(g.parentTextureArray || g);
}
if (a.depthTexture) {
this.renderer.texture.unbind(a.depthTexture);
}
if (b) {
var h = b.width >> c;
var i = b.height >> c;
var j = h / b.width;
this.setViewport(b.x * j, b.y * j, h, i);
} else {
h = a.width >> c;
i = a.height >> c;
this.setViewport(0, 0, h, i);
}
} else {
if (this.current) {
this.current = null;
d.bindFramebuffer(d.FRAMEBUFFER, null);
}
if (b) {
this.setViewport(b.x, b.y, b.width, b.height);
} else {
this.setViewport(0, 0, this.renderer.width, this.renderer.height);
}
}
};
a.prototype.setViewport = function (a, b, c, d) {
var e = this.viewport;
a = Math.round(a);
b = Math.round(b);
c = Math.round(c);
d = Math.round(d);
if (e.width !== c || e.height !== d || e.x !== a || e.y !== b) {
e.x = a;
e.y = b;
e.width = c;
e.height = d;
this.gl.viewport(a, b, c, d);
}
};
Object.defineProperty(a.prototype, "size", {
get: function () {
if (this.current) {
return {
x: 0,
y: 0,
width: this.current.width,
height: this.current.height
};
} else {
return {
x: 0,
y: 0,
width: this.renderer.width,
height: this.renderer.height
};
}
},
enumerable: false,
configurable: true
});
a.prototype.clear = function (a, b, c, d, e) {
if (e === undefined) {
e = oa.COLOR | oa.DEPTH;
}
var f = this.gl;
f.clearColor(a, b, c, d);
f.clear(e);
};
a.prototype.initFramebuffer = function (a) {
var b = this.gl;
var c = new nd(b.createFramebuffer());
c.multisample = this.detectSamples(a.multisample);
a.glFramebuffers[this.CONTEXT_UID] = c;
this.managedFramebuffers.push(a);
a.disposeRunner.add(this);
return c;
};
a.prototype.resizeFramebuffer = function (a) {
var b = this.gl;
var c = a.glFramebuffers[this.CONTEXT_UID];
if (c.msaaBuffer) {
b.bindRenderbuffer(b.RENDERBUFFER, c.msaaBuffer);
b.renderbufferStorageMultisample(b.RENDERBUFFER, c.multisample, b.RGBA8, a.width, a.height);
}
if (c.stencil) {
b.bindRenderbuffer(b.RENDERBUFFER, c.stencil);
if (c.msaaBuffer) {
b.renderbufferStorageMultisample(b.RENDERBUFFER, c.multisample, b.DEPTH24_STENCIL8, a.width, a.height);
} else {
b.renderbufferStorage(b.RENDERBUFFER, b.DEPTH_STENCIL, a.width, a.height);
}
}
var d = a.colorTextures;
var e = d.length;
if (!b.drawBuffers) {
e = Math.min(e, 1);
}
for (var f = 0; f < e; f++) {
var g = d[f];
var h = g.parentTextureArray || g;
this.renderer.texture.bind(h, 0);
}
if (a.depthTexture && this.writeDepthTexture) {
this.renderer.texture.bind(a.depthTexture, 0);
}
};
a.prototype.updateFramebuffer = function (a, b) {
var c = this.gl;
var d = a.glFramebuffers[this.CONTEXT_UID];
var e = a.colorTextures;
var f = e.length;
if (!c.drawBuffers) {
f = Math.min(f, 1);
}
if (d.multisample > 1 && this.canMultisampleFramebuffer(a)) {
d.msaaBuffer = d.msaaBuffer || c.createRenderbuffer();
c.bindRenderbuffer(c.RENDERBUFFER, d.msaaBuffer);
c.renderbufferStorageMultisample(c.RENDERBUFFER, d.multisample, c.RGBA8, a.width, a.height);
c.framebufferRenderbuffer(c.FRAMEBUFFER, c.COLOR_ATTACHMENT0, c.RENDERBUFFER, d.msaaBuffer);
} else if (d.msaaBuffer) {
c.deleteRenderbuffer(d.msaaBuffer);
d.msaaBuffer = null;
if (d.blitFramebuffer) {
d.blitFramebuffer.dispose();
d.blitFramebuffer = null;
}
}
for (var g = [], h = 0; h < f; h++) {
var i = e[h];
var j = i.parentTextureArray || i;
this.renderer.texture.bind(j, 0);
if (h !== 0 || !d.msaaBuffer) {
c.framebufferTexture2D(c.FRAMEBUFFER, c.COLOR_ATTACHMENT0 + h, i.target, j._glTextures[this.CONTEXT_UID].texture, b);
g.push(c.COLOR_ATTACHMENT0 + h);
}
}
if (g.length > 1) {
c.drawBuffers(g);
}
if (a.depthTexture && this.writeDepthTexture) {
var k = a.depthTexture;
this.renderer.texture.bind(k, 0);
c.framebufferTexture2D(c.FRAMEBUFFER, c.DEPTH_ATTACHMENT, c.TEXTURE_2D, k._glTextures[this.CONTEXT_UID].texture, b);
}
if (!a.stencil && !a.depth || a.depthTexture && this.writeDepthTexture) {
if (d.stencil) {
c.deleteRenderbuffer(d.stencil);
d.stencil = null;
}
} else {
d.stencil = d.stencil || c.createRenderbuffer();
c.bindRenderbuffer(c.RENDERBUFFER, d.stencil);
if (d.msaaBuffer) {
c.renderbufferStorageMultisample(c.RENDERBUFFER, d.multisample, c.DEPTH24_STENCIL8, a.width, a.height);
} else {
c.renderbufferStorage(c.RENDERBUFFER, c.DEPTH_STENCIL, a.width, a.height);
}
c.framebufferRenderbuffer(c.FRAMEBUFFER, c.DEPTH_STENCIL_ATTACHMENT, c.RENDERBUFFER, d.stencil);
}
};
a.prototype.canMultisampleFramebuffer = function (a) {
return this.renderer.context.webGLVersion !== 1 && a.colorTextures.length <= 1 && !a.depthTexture;
};
a.prototype.detectSamples = function (a) {
var b = this.msaaSamples;
var c = Da.NONE;
if (a <= 1 || b === null) {
return c;
}
for (var d = 0; d < b.length; d++) {
if (b[d] <= a) {
c = b[d];
break;
}
}
if (c === 1) {
c = Da.NONE;
}
return c;
};
a.prototype.blit = function (a, b, c) {
var d = this;
var e = d.current;
var f = d.renderer;
var g = d.gl;
var h = d.CONTEXT_UID;
if (f.context.webGLVersion === 2 && e) {
var i = e.glFramebuffers[h];
if (i) {
if (!a) {
if (!i.msaaBuffer) {
return;
}
var j = e.colorTextures[0];
if (!j) {
return;
}
if (!i.blitFramebuffer) {
i.blitFramebuffer = new Nc(e.width, e.height);
i.blitFramebuffer.addColorTexture(0, j);
}
if ((a = i.blitFramebuffer).colorTextures[0] !== j) {
a.colorTextures[0] = j;
a.dirtyId++;
a.dirtyFormat++;
}
if (a.width !== e.width || a.height !== e.height) {
a.width = e.width;
a.height = e.height;
a.dirtyId++;
a.dirtySize++;
}
}
if (!b) {
(b = od).width = e.width;
b.height = e.height;
}
c ||= b;
var k = b.width === c.width && b.height === c.height;
this.bind(a);
g.bindFramebuffer(g.READ_FRAMEBUFFER, i.framebuffer);
g.blitFramebuffer(b.left, b.top, b.right, b.bottom, c.left, c.top, c.right, c.bottom, g.COLOR_BUFFER_BIT, k ? g.NEAREST : g.LINEAR);
}
}
};
a.prototype.disposeFramebuffer = function (a, b) {
var c = a.glFramebuffers[this.CONTEXT_UID];
var d = this.gl;
if (c) {
delete a.glFramebuffers[this.CONTEXT_UID];
var e = this.managedFramebuffers.indexOf(a);
if (e >= 0) {
this.managedFramebuffers.splice(e, 1);
}
a.disposeRunner.remove(this);
if (!b) {
d.deleteFramebuffer(c.framebuffer);
if (c.msaaBuffer) {
d.deleteRenderbuffer(c.msaaBuffer);
}
if (c.stencil) {
d.deleteRenderbuffer(c.stencil);
}
}
if (c.blitFramebuffer) {
c.blitFramebuffer.dispose();
}
}
};
a.prototype.disposeAll = function (a) {
var b = this.managedFramebuffers;
this.managedFramebuffers = [];
for (var c = 0; c < b.length; c++) {
this.disposeFramebuffer(b[c], a);
}
};
a.prototype.forceStencil = function () {
var a = this.current;
if (a) {
var b = a.glFramebuffers[this.CONTEXT_UID];
if (b && !b.stencil) {
a.stencil = true;
var c = a.width;
var d = a.height;
var e = this.gl;
var f = e.createRenderbuffer();
e.bindRenderbuffer(e.RENDERBUFFER, f);
if (b.msaaBuffer) {
e.renderbufferStorageMultisample(e.RENDERBUFFER, b.multisample, e.DEPTH24_STENCIL8, c, d);
} else {
e.renderbufferStorage(e.RENDERBUFFER, e.DEPTH_STENCIL, c, d);
}
b.stencil = f;
e.framebufferRenderbuffer(e.FRAMEBUFFER, e.DEPTH_STENCIL_ATTACHMENT, e.RENDERBUFFER, f);
}
}
};
a.prototype.reset = function () {
this.current = this.unknownFramebuffer;
this.viewport = new qb();
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var qd = {
5126: 4,
5123: 2,
5121: 1
};
var rd = function () {
function a(a) {
this.renderer = a;
this._activeGeometry = null;
this._activeVao = null;
this.hasVao = true;
this.hasInstance = true;
this.canUseUInt32ElementIndex = false;
this.managedGeometries = {};
}
a.prototype.contextChange = function () {
this.disposeAll(true);
var a = this.gl = this.renderer.gl;
var b = this.renderer.context;
this.CONTEXT_UID = this.renderer.CONTEXT_UID;
if (b.webGLVersion !== 2) {
var c = this.renderer.context.extensions.vertexArrayObject;
if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) {
c = null;
}
if (c) {
a.createVertexArray = function () {
return c.createVertexArrayOES();
};
a.bindVertexArray = function (a) {
return c.bindVertexArrayOES(a);
};
a.deleteVertexArray = function (a) {
return c.deleteVertexArrayOES(a);
};
} else {
this.hasVao = false;
a.createVertexArray = function () {
return null;
};
a.bindVertexArray = function () {
return null;
};
a.deleteVertexArray = function () {
return null;
};
}
}
if (b.webGLVersion !== 2) {
var d = a.getExtension("ANGLE_instanced_arrays");
if (d) {
a.vertexAttribDivisor = function (a, b) {
return d.vertexAttribDivisorANGLE(a, b);
};
a.drawElementsInstanced = function (a, b, c, e, f) {
return d.drawElementsInstancedANGLE(a, b, c, e, f);
};
a.drawArraysInstanced = function (a, b, c, e) {
return d.drawArraysInstancedANGLE(a, b, c, e);
};
} else {
this.hasInstance = false;
}
}
this.canUseUInt32ElementIndex = b.webGLVersion === 2 || !!b.extensions.uint32ElementIndex;
};
a.prototype.bind = function (a, b) {
b = b || this.renderer.shader.shader;
var c = this.gl;
var d = a.glVertexArrayObjects[this.CONTEXT_UID];
var e = false;
if (!d) {
this.managedGeometries[a.id] = a;
a.disposeRunner.add(this);
a.glVertexArrayObjects[this.CONTEXT_UID] = d = {};
e = true;
}
var f = d[b.program.id] || this.initGeometryVao(a, b, e);
this._activeGeometry = a;
if (this._activeVao !== f) {
this._activeVao = f;
if (this.hasVao) {
c.bindVertexArray(f);
} else {
this.activateVao(a, b.program);
}
}
this.updateBuffers();
};
a.prototype.reset = function () {
this.unbind();
};
a.prototype.updateBuffers = function () {
for (var a = this._activeGeometry, b = this.renderer.buffer, c = 0; c < a.buffers.length; c++) {
var d = a.buffers[c];
b.update(d);
}
};
a.prototype.checkCompatibility = function (a, b) {
var c = a.attributes;
var d = b.attributeData;
for (var e in d) {
if (!c[e]) {
throw new Error("shader and geometry incompatible, geometry missing the \"" + e + "\" attribute");
}
}
};
a.prototype.getSignature = function (a, b) {
var c = a.attributes;
var d = b.attributeData;
var e = ["g", a.id];
for (var f in c) {
if (d[f]) {
e.push(f, d[f].location);
}
}
return e.join("-");
};
a.prototype.initGeometryVao = function (a, b, c) {
if (c === undefined) {
c = true;
}
var d = this.gl;
var e = this.CONTEXT_UID;
var f = this.renderer.buffer;
var g = b.program;
if (!g.glPrograms[e]) {
this.renderer.shader.generateProgram(b);
}
this.checkCompatibility(a, g);
var h = this.getSignature(a, g);
var i = a.glVertexArrayObjects[this.CONTEXT_UID];
var j = i[h];
if (j) {
i[g.id] = j;
return j;
}
var k = a.buffers;
var l = a.attributes;
var m = {};
var n = {};
for (var o in k) {
m[o] = 0;
n[o] = 0;
}
for (var o in l) {
if (!l[o].size && g.attributeData[o]) {
l[o].size = g.attributeData[o].size;
} else if (!l[o].size) {
console.warn("PIXI Geometry attribute '" + o + "' size cannot be determined (likely the bound shader does not have the attribute)");
}
m[l[o].buffer] += l[o].size * qd[l[o].type];
}
for (var o in l) {
var p = l[o];
var q = p.size;
if (p.stride === undefined) {
if (m[p.buffer] === q * qd[p.type]) {
p.stride = 0;
} else {
p.stride = m[p.buffer];
}
}
if (p.start === undefined) {
p.start = n[p.buffer];
n[p.buffer] += q * qd[p.type];
}
}
j = d.createVertexArray();
d.bindVertexArray(j);
for (var r = 0; r < k.length; r++) {
var s = k[r];
f.bind(s);
if (c) {
s._glBuffers[e].refCount++;
}
}
this.activateVao(a, g);
this._activeVao = j;
i[g.id] = j;
i[h] = j;
return j;
};
a.prototype.disposeGeometry = function (a, b) {
if (this.managedGeometries[a.id]) {
delete this.managedGeometries[a.id];
var c = a.glVertexArrayObjects[this.CONTEXT_UID];
var d = this.gl;
var e = a.buffers;
var f = this.renderer?.buffer;
a.disposeRunner.remove(this);
if (c) {
if (f) {
for (var g = 0; g < e.length; g++) {
var h = e[g]._glBuffers[this.CONTEXT_UID];
if (h) {
h.refCount--;
if (h.refCount === 0 && !b) {
f.dispose(e[g], b);
}
}
}
}
if (!b) {
for (var i in c) {
if (i[0] === "g") {
var j = c[i];
if (this._activeVao === j) {
this.unbind();
}
d.deleteVertexArray(j);
}
}
}
delete a.glVertexArrayObjects[this.CONTEXT_UID];
}
}
};
a.prototype.disposeAll = function (a) {
for (var b = Object.keys(this.managedGeometries), c = 0; c < b.length; c++) {
this.disposeGeometry(this.managedGeometries[b[c]], a);
}
};
a.prototype.activateVao = function (a, b) {
var c = this.gl;
var d = this.CONTEXT_UID;
var e = this.renderer.buffer;
var f = a.buffers;
var g = a.attributes;
if (a.indexBuffer) {
e.bind(a.indexBuffer);
}
var h = null;
for (var i in g) {
var j = g[i];
var k = f[j.buffer];
var l = k._glBuffers[d];
if (b.attributeData[i]) {
if (h !== l) {
e.bind(k);
h = l;
}
var m = b.attributeData[i].location;
c.enableVertexAttribArray(m);
c.vertexAttribPointer(m, j.size, j.type || c.FLOAT, j.normalized, j.stride, j.start);
if (j.instance) {
if (!this.hasInstance) {
throw new Error("geometry error, GPU Instancing is not supported on this device");
}
c.vertexAttribDivisor(m, 1);
}
}
}
};
a.prototype.draw = function (a, b, c, d) {
var e = this.gl;
var f = this._activeGeometry;
if (f.indexBuffer) {
var g = f.indexBuffer.data.BYTES_PER_ELEMENT;
var h = g === 2 ? e.UNSIGNED_SHORT : e.UNSIGNED_INT;
if (g === 2 || g === 4 && this.canUseUInt32ElementIndex) {
if (f.instanced) {
e.drawElementsInstanced(a, b || f.indexBuffer.data.length, h, (c || 0) * g, d || 1);
} else {
e.drawElements(a, b || f.indexBuffer.data.length, h, (c || 0) * g);
}
} else {
console.warn("unsupported index buffer type: uint32");
}
} else if (f.instanced) {
e.drawArraysInstanced(a, c, b || f.getSize(), d || 1);
} else {
e.drawArrays(a, c, b || f.getSize());
}
return this;
};
a.prototype.unbind = function () {
this.gl.bindVertexArray(null);
this._activeVao = null;
this._activeGeometry = null;
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var sd = function () {
function a(a) {
if (a === undefined) {
a = null;
}
this.type = Ca.NONE;
this.autoDetect = true;
this.maskObject = a || null;
this.pooled = false;
this.isMaskData = true;
this.resolution = null;
this.multisample = Fa.FILTER_MULTISAMPLE;
this.enabled = true;
this._filters = null;
this._stencilCounter = 0;
this._scissorCounter = 0;
this._scissorRect = null;
this._scissorRectLocal = null;
this._target = null;
}
Object.defineProperty(a.prototype, "filter", {
get: function () {
if (this._filters) {
return this._filters[0];
} else {
return null;
}
},
set: function (a) {
if (a) {
if (this._filters) {
this._filters[0] = a;
} else {
this._filters = [a];
}
} else {
this._filters = null;
}
},
enumerable: false,
configurable: true
});
a.prototype.reset = function () {
if (this.pooled) {
this.maskObject = null;
this.type = Ca.NONE;
this.autoDetect = true;
}
this._target = null;
this._scissorRectLocal = null;
};
a.prototype.copyCountersOrReset = function (a) {
if (a) {
this._stencilCounter = a._stencilCounter;
this._scissorCounter = a._scissorCounter;
this._scissorRect = a._scissorRect;
} else {
this._stencilCounter = 0;
this._scissorCounter = 0;
this._scissorRect = null;
}
};
return a;
}();
function td(a, b, c) {
var d = a.createShader(b);
a.shaderSource(d, c);
a.compileShader(d);
return d;
}
function ud(a, b) {
var c = a.getShaderSource(b).split("\n").map(function (a, b) {
return b + ": " + a;
});
var d = a.getShaderInfoLog(b);
var e = d.split("\n");
var f = {};
var g = e.map(function (a) {
return parseFloat(a.replace(/^ERROR\: 0\:([\d]+)\:.*$/, "$1"));
}).filter(function (a) {
return !!a && !f[a] && !(f[a] = true, 0);
});
var h = [""];
g.forEach(function (a) {
c[a - 1] = "%c" + c[a - 1] + "%c";
h.push("background: #FF0000; color:#FFFFFF; font-size: 10px", "font-size: 10px");
});
var i = c.join("\n");
h[0] = i;
console.error(d);
console.groupCollapsed("click to view full shader code");
console.warn.apply(console, h);
console.groupEnd();
}
function vd(a) {
for (var b = new Array(a), c = 0; c < b.length; c++) {
b[c] = false;
}
return b;
}
function wd(a, b) {
switch (a) {
case "float":
case "int":
case "uint":
case "sampler2D":
case "sampler2DArray":
return 0;
case "vec2":
return new Float32Array(b * 2);
case "vec3":
return new Float32Array(b * 3);
case "vec4":
return new Float32Array(b * 4);
case "ivec2":
return new Int32Array(b * 2);
case "ivec3":
return new Int32Array(b * 3);
case "ivec4":
return new Int32Array(b * 4);
case "uvec2":
return new Uint32Array(b * 2);
case "uvec3":
return new Uint32Array(b * 3);
case "uvec4":
return new Uint32Array(b * 4);
case "bool":
return false;
case "bvec2":
return vd(b * 2);
case "bvec3":
return vd(b * 3);
case "bvec4":
return vd(b * 4);
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;
}
var xd;
var yd = {};
var zd = yd;
function Ad(a, b, c) {
if (a.substring(0, 9) !== "precision") {
var d = b;
if (b === Ba.HIGH && c !== Ba.HIGH) {
d = Ba.MEDIUM;
}
return "precision " + d + " float;\n" + a;
}
if (c !== Ba.HIGH && a.substring(0, 15) === "precision highp") {
return a.replace("precision highp", "precision mediump");
} else {
return a;
}
}
var Bd = {
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 Cd(a) {
return Bd[a];
}
var Dd = null;
var Ed = {
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 Fd(a, b) {
if (!Dd) {
var c = Object.keys(Ed);
Dd = {};
for (var d = 0; d < c.length; ++d) {
var e = c[d];
Dd[a[e]] = Ed[e];
}
}
return Dd[b];
}
var Gd;
var Hd = [{
test: function (a) {
return a.type === "float" && a.size === 1;
},
code: function (a) {
return "\n if(uv[\"" + a + "\"] !== ud[\"" + a + "\"].value)\n {\n ud[\"" + a + "\"].value = uv[\"" + a + "\"]\n gl.uniform1f(ud[\"" + a + "\"].location, uv[\"" + a + "\"])\n }\n ";
}
}, {
test: function (a) {
return (a.type === "sampler2D" || a.type === "samplerCube" || a.type === "sampler2DArray") && a.size === 1 && !a.isArray;
},
code: function (a) {
return "t = syncData.textureCount++;\n\n renderer.texture.bind(uv[\"" + a + "\"], t);\n\n if(ud[\"" + a + "\"].value !== t)\n {\n ud[\"" + a + "\"].value = t;\n gl.uniform1i(ud[\"" + a + "\"].location, t);\n; // eslint-disable-line max-len\n }";
}
}, {
test: function (a, b) {
return a.type === "mat3" && a.size === 1 && b.a !== undefined;
},
code: function (a) {
return "\n gl.uniformMatrix3fv(ud[\"" + a + "\"].location, false, uv[\"" + a + "\"].toArray(true));\n ";
},
codeUbo: function (a) {
return "\n var " + a + "_matrix = uv." + a + ".toArray(true);\n\n data[offset] = " + a + "_matrix[0];\n data[offset+1] = " + a + "_matrix[1];\n data[offset+2] = " + a + "_matrix[2];\n \n data[offset + 4] = " + a + "_matrix[3];\n data[offset + 5] = " + a + "_matrix[4];\n data[offset + 6] = " + a + "_matrix[5];\n \n data[offset + 8] = " + a + "_matrix[6];\n data[offset + 9] = " + a + "_matrix[7];\n data[offset + 10] = " + a + "_matrix[8];\n ";
}
}, {
test: function (a, b) {
return a.type === "vec2" && a.size === 1 && b.x !== undefined;
},
code: function (a) {
return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\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[\"" + a + "\"].location, v.x, v.y);\n }";
},
codeUbo: function (a) {
return "\n v = uv." + a + ";\n\n data[offset] = v.x;\n data[offset+1] = v.y;\n ";
}
}, {
test: function (a) {
return a.type === "vec2" && a.size === 1;
},
code: function (a) {
return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\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[\"" + a + "\"].location, v[0], v[1]);\n }\n ";
}
}, {
test: function (a, b) {
return a.type === "vec4" && a.size === 1 && b.width !== undefined;
},
code: function (a) {
return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\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[\"" + a + "\"].location, v.x, v.y, v.width, v.height)\n }";
},
codeUbo: function (a) {
return "\n v = uv." + a + ";\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 ";
}
}, {
test: function (a) {
return a.type === "vec4" && a.size === 1;
},
code: function (a) {
return "\n cv = ud[\"" + a + "\"].value;\n v = uv[\"" + a + "\"];\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[\"" + a + "\"].location, v[0], v[1], v[2], v[3])\n }";
}
}];
var Id = {
float: "\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1f(location, v);\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 }",
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 }",
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 }",
int: "\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1i(location, v);\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 }",
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 }",
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 }",
uint: "\n if (cv !== v)\n {\n cu.value = v;\n\n gl.uniform1ui(location, v);\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 }",
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 }",
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 }",
bool: "\n if (cv !== v)\n {\n cu.value = v;\n gl.uniform1i(location, v);\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 }",
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 }",
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 }",
mat2: "gl.uniformMatrix2fv(location, false, v)",
mat3: "gl.uniformMatrix3fv(location, false, v)",
mat4: "gl.uniformMatrix4fv(location, false, v)",
sampler2D: "gl.uniform1i(location, v)",
samplerCube: "gl.uniform1i(location, v)",
sampler2DArray: "gl.uniform1i(location, v)"
};
var Jd = {
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)"
};
var Kd = ["precision mediump float;", "void main(void){", "float test = 0.1;", "%forloop%", "gl_FragColor = vec4(0.0);", "}"].join("\n");
function Ld(a) {
for (var b = "", c = 0; c < a; ++c) {
if (c > 0) {
b += "\nelse ";
}
if (c < a - 1) {
b += "if(test == " + c + ".0){}";
}
}
return b;
}
var Md = 0;
var Nd = {};
var Od = function () {
function a(b, c, d) {
if (d === undefined) {
d = "pixi-shader";
}
this.id = Md++;
this.vertexSrc = b || a.defaultVertexSrc;
this.fragmentSrc = c || a.defaultFragmentSrc;
this.vertexSrc = this.vertexSrc.trim();
this.fragmentSrc = this.fragmentSrc.trim();
if (this.vertexSrc.substring(0, 8) !== "#version") {
d = d.replace(/\s+/g, "-");
if (Nd[d]) {
Nd[d]++;
d += "-" + Nd[d];
} else {
Nd[d] = 1;
}
this.vertexSrc = "#define SHADER_NAME " + d + "\n" + this.vertexSrc;
this.fragmentSrc = "#define SHADER_NAME " + d + "\n" + this.fragmentSrc;
this.vertexSrc = Ad(this.vertexSrc, Fa.PRECISION_VERTEX, Ba.HIGH);
this.fragmentSrc = Ad(this.fragmentSrc, Fa.PRECISION_FRAGMENT, function () {
if (!xd) {
xd = Ba.MEDIUM;
var a = function () {
if (zd === yd || zd && zd.isContextLost()) {
var a = document.createElement("canvas");
var b = undefined;
if (Fa.PREFER_ENV >= ma.WEBGL2) {
b = a.getContext("webgl2", {});
}
if (!b) {
if (b = a.getContext("webgl", {}) || a.getContext("experimental-webgl", {})) {
b.getExtension("WEBGL_draw_buffers");
} else {
b = null;
}
}
zd = b;
}
return zd;
}();
if (a && a.getShaderPrecisionFormat) {
var b = a.getShaderPrecisionFormat(a.FRAGMENT_SHADER, a.HIGH_FLOAT);
xd = b.precision ? Ba.HIGH : Ba.MEDIUM;
}
}
return xd;
}());
}
this.glPrograms = {};
this.syncUniforms = null;
}
Object.defineProperty(a, "defaultVertexSrc", {
get: function () {
return "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";
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "defaultFragmentSrc", {
get: function () {
return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor *= texture2D(uSampler, vTextureCoord);\n}";
},
enumerable: false,
configurable: true
});
a.from = function (b, c, d) {
var e = b + c;
var f = fb[e];
if (!f) {
fb[e] = f = new a(b, c, d);
}
return f;
};
return a;
}();
var Pd = function () {
function a(a, b) {
this.uniformBindCount = 0;
this.program = a;
this.uniformGroup = b ? b instanceof ed ? b : new ed(b) : new ed({});
}
a.prototype.checkUniformExists = function (a, b) {
if (b.uniforms[a]) {
return true;
}
for (var c in b.uniforms) {
var d = b.uniforms[c];
if (d.group && this.checkUniformExists(a, d)) {
return true;
}
}
return false;
};
a.prototype.destroy = function () {
this.uniformGroup = null;
};
Object.defineProperty(a.prototype, "uniforms", {
get: function () {
return this.uniformGroup.uniforms;
},
enumerable: false,
configurable: true
});
a.from = function (b, c, d) {
return new a(Od.from(b, c), d);
};
return a;
}();
var Qd = function () {
function a() {
this.data = 0;
this.blendMode = pa.NORMAL;
this.polygonOffset = 0;
this.blend = true;
this.depthMask = true;
}
Object.defineProperty(a.prototype, "blend", {
get: function () {
return !!(this.data & 1);
},
set: function (a) {
if (!!(this.data & 1) !== a) {
this.data ^= 1;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "offsets", {
get: function () {
return !!(this.data & 2);
},
set: function (a) {
if (!!(this.data & 2) !== a) {
this.data ^= 2;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "culling", {
get: function () {
return !!(this.data & 4);
},
set: function (a) {
if (!!(this.data & 4) !== a) {
this.data ^= 4;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "depthTest", {
get: function () {
return !!(this.data & 8);
},
set: function (a) {
if (!!(this.data & 8) !== a) {
this.data ^= 8;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "depthMask", {
get: function () {
return !!(this.data & 32);
},
set: function (a) {
if (!!(this.data & 32) !== a) {
this.data ^= 32;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "clockwiseFrontFace", {
get: function () {
return !!(this.data & 16);
},
set: function (a) {
if (!!(this.data & 16) !== a) {
this.data ^= 16;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "blendMode", {
get: function () {
return this._blendMode;
},
set: function (a) {
this.blend = a !== pa.NONE;
this._blendMode = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "polygonOffset", {
get: function () {
return this._polygonOffset;
},
set: function (a) {
this.offsets = !!a;
this._polygonOffset = a;
},
enumerable: false,
configurable: true
});
a.prototype.toString = function () {
return "[@pixi/core:State blendMode=" + this.blendMode + " clockwiseFrontFace=" + this.clockwiseFrontFace + " culling=" + this.culling + " depthMask=" + this.depthMask + " polygonOffset=" + this.polygonOffset + "]";
};
a.for2d = function () {
var b = new a();
b.depthTest = false;
b.blend = true;
return b;
};
return a;
}();
var Rd = function (a) {
function b(c, d, e) {
var f = this;
var g = Od.from(c || b.defaultVertexSrc, d || b.defaultFragmentSrc);
(f = a.call(this, g, e) || this).padding = 0;
f.resolution = Fa.FILTER_RESOLUTION;
f.multisample = Fa.FILTER_MULTISAMPLE;
f.enabled = true;
f.autoFit = true;
f.state = new Qd();
return f;
}
wc(b, a);
b.prototype.apply = function (a, b, c, d, e) {
a.applyFilter(this, b, c, d);
};
Object.defineProperty(b.prototype, "blendMode", {
get: function () {
return this.state.blendMode;
},
set: function (a) {
this.state.blendMode = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "resolution", {
get: function () {
return this._resolution;
},
set: function (a) {
this._resolution = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b, "defaultVertexSrc", {
get: function () {
return "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";
},
enumerable: false,
configurable: true
});
Object.defineProperty(b, "defaultFragmentSrc", {
get: function () {
return "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\n\nvoid main(void){\n gl_FragColor = texture2D(uSampler, vTextureCoord);\n}\n";
},
enumerable: false,
configurable: true
});
return b;
}(Pd);
var Sd = new wb();
var Td = function () {
function a(a, b) {
this._texture = a;
this.mapCoord = new wb();
this.uClampFrame = new Float32Array(4);
this.uClampOffset = new Float32Array(2);
this._textureID = -1;
this._updateID = 0;
this.clampOffset = 0;
this.clampMargin = b === undefined ? 0.5 : b;
this.isSimple = false;
}
Object.defineProperty(a.prototype, "texture", {
get: function () {
return this._texture;
},
set: function (a) {
this._texture = a;
this._textureID = -1;
},
enumerable: false,
configurable: true
});
a.prototype.multiplyUvs = function (a, b) {
if (b === undefined) {
b = a;
}
for (var c = this.mapCoord, d = 0; d < a.length; d += 2) {
var e = a[d];
var f = a[d + 1];
b[d] = e * c.a + f * c.c + c.tx;
b[d + 1] = e * c.b + f * c.d + c.ty;
}
return b;
};
a.prototype.update = function (a) {
var b = this._texture;
if (!b || !b.valid) {
return false;
}
if (!a && this._textureID === b._updateID) {
return false;
}
this._textureID = b._updateID;
this._updateID++;
var c = b._uvs;
this.mapCoord.set(c.x1 - c.x0, c.y1 - c.y0, c.x3 - c.x0, c.y3 - c.y0, c.x0, c.y0);
var d = b.orig;
var e = b.trim;
if (e) {
Sd.set(d.width / e.width, 0, 0, d.height / e.height, -e.x / e.width, -e.y / e.height);
this.mapCoord.append(Sd);
}
var f = b.baseTexture;
var g = this.uClampFrame;
var h = this.clampMargin / f.resolution;
var i = this.clampOffset;
g[0] = (b._frame.x + h + i) / f.width;
g[1] = (b._frame.y + h + i) / f.height;
g[2] = (b._frame.x + b._frame.width - h + i) / f.width;
g[3] = (b._frame.y + b._frame.height - h + i) / f.height;
this.uClampOffset[0] = i / f.realWidth;
this.uClampOffset[1] = i / f.realHeight;
this.isSimple = b._frame.width === f.width && b._frame.height === f.height && b.rotate === 0;
return true;
};
return a;
}();
var Ud = function (a) {
function b(b, c, d) {
var e = this;
var f = null;
if (typeof b != "string" && c === undefined && d === undefined) {
f = b;
b = undefined;
c = undefined;
d = undefined;
}
(e = a.call(this, b || "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", c || "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", d) || this).maskSprite = f;
e.maskMatrix = new wb();
return e;
}
wc(b, a);
Object.defineProperty(b.prototype, "maskSprite", {
get: function () {
return this._maskSprite;
},
set: function (a) {
this._maskSprite = a;
if (this._maskSprite) {
this._maskSprite.renderable = false;
}
},
enumerable: false,
configurable: true
});
b.prototype.apply = function (a, b, c, d) {
var e = this._maskSprite;
var f = e._texture;
if (f.valid) {
f.uvMatrix ||= new Td(f, 0);
f.uvMatrix.update();
this.uniforms.npmAlpha = f.baseTexture.alphaMode ? 0 : 1;
this.uniforms.mask = f;
this.uniforms.otherMatrix = a.calculateSpriteMatrix(this.maskMatrix, e).prepend(f.uvMatrix.mapCoord);
this.uniforms.alpha = e.worldAlpha;
this.uniforms.maskClamp = f.uvMatrix.uClampFrame;
a.applyFilter(this, b, c, d);
}
};
return b;
}(Rd);
var Vd = function () {
function a(a) {
this.renderer = a;
this.enableScissor = true;
this.alphaMaskPool = [];
this.maskDataPool = [];
this.maskStack = [];
this.alphaMaskIndex = 0;
}
a.prototype.setMaskStack = function (a) {
this.maskStack = a;
this.renderer.scissor.setMaskStack(a);
this.renderer.stencil.setMaskStack(a);
};
a.prototype.push = function (a, b) {
var c = b;
if (!c.isMaskData) {
var d = this.maskDataPool.pop() || new sd();
d.pooled = true;
d.maskObject = b;
c = d;
}
var e = this.maskStack.length !== 0 ? this.maskStack[this.maskStack.length - 1] : null;
c.copyCountersOrReset(e);
if (c.autoDetect) {
this.detect(c);
}
c._target = a;
if (c.type !== Ca.SPRITE) {
this.maskStack.push(c);
}
if (c.enabled) {
switch (c.type) {
case Ca.SCISSOR:
this.renderer.scissor.push(c);
break;
case Ca.STENCIL:
this.renderer.stencil.push(c);
break;
case Ca.SPRITE:
c.copyCountersOrReset(null);
this.pushSpriteMask(c);
}
}
if (c.type === Ca.SPRITE) {
this.maskStack.push(c);
}
};
a.prototype.pop = function (a) {
var b = this.maskStack.pop();
if (b && b._target === a) {
if (b.enabled) {
switch (b.type) {
case Ca.SCISSOR:
this.renderer.scissor.pop();
break;
case Ca.STENCIL:
this.renderer.stencil.pop(b.maskObject);
break;
case Ca.SPRITE:
this.popSpriteMask(b);
}
}
b.reset();
if (b.pooled) {
this.maskDataPool.push(b);
}
if (this.maskStack.length !== 0) {
var c = this.maskStack[this.maskStack.length - 1];
if (c.type === Ca.SPRITE && c._filters) {
c._filters[0].maskSprite = c.maskObject;
}
}
}
};
a.prototype.detect = function (a) {
if (a.maskObject.isSprite) {
a.type = Ca.SPRITE;
} else if (this.enableScissor && this.renderer.scissor.testScissor(a)) {
a.type = Ca.SCISSOR;
} else {
a.type = Ca.STENCIL;
}
};
a.prototype.pushSpriteMask = function (a) {
var b = a.maskObject;
var c = a._target;
var d = a._filters;
if (!(d ||= this.alphaMaskPool[this.alphaMaskIndex])) {
d = this.alphaMaskPool[this.alphaMaskIndex] = [new Ud()];
}
var e;
var f;
var g = this.renderer;
var h = g.renderTexture;
if (h.current) {
var i = h.current;
e = a.resolution || i.resolution;
f = a.multisample ?? i.multisample;
} else {
e = a.resolution || g.resolution;
f = a.multisample ?? g.multisample;
}
d[0].resolution = e;
d[0].multisample = f;
d[0].maskSprite = b;
var j = c.filterArea;
c.filterArea = b.getBounds(true);
g.filter.push(c, d);
c.filterArea = j;
if (!a._filters) {
this.alphaMaskIndex++;
}
};
a.prototype.popSpriteMask = function (a) {
this.renderer.filter.pop();
if (a._filters) {
a._filters[0].maskSprite = null;
} else {
this.alphaMaskIndex--;
this.alphaMaskPool[this.alphaMaskIndex][0].maskSprite = null;
}
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var Wd = function () {
function a(a) {
this.renderer = a;
this.maskStack = [];
this.glConst = 0;
}
a.prototype.getStackLength = function () {
return this.maskStack.length;
};
a.prototype.setMaskStack = function (a) {
var b = this.renderer.gl;
var c = this.getStackLength();
this.maskStack = a;
var d = this.getStackLength();
if (d !== c) {
if (d === 0) {
b.disable(this.glConst);
} else {
b.enable(this.glConst);
this._useCurrent();
}
}
};
a.prototype._useCurrent = function () {};
a.prototype.destroy = function () {
this.renderer = null;
this.maskStack = null;
};
return a;
}();
var Xd = new wb();
var Yd = function (a) {
function b(b) {
var c = a.call(this, b) || this;
c.glConst = WebGLRenderingContext.SCISSOR_TEST;
return c;
}
wc(b, a);
b.prototype.getStackLength = function () {
var a = this.maskStack[this.maskStack.length - 1];
if (a) {
return a._scissorCounter;
} else {
return 0;
}
};
b.prototype.calcScissorRect = function (a) {
if (!a._scissorRectLocal) {
var b = a._scissorRect;
var c = a.maskObject;
var d = this.renderer;
var e = d.renderTexture;
c.renderable = true;
var f = c.getBounds();
this.roundFrameToPixels(f, e.current ? e.current.resolution : d.resolution, e.sourceFrame, e.destinationFrame, d.projection.transform);
c.renderable = false;
if (b) {
f.fit(b);
}
a._scissorRectLocal = f;
}
};
b.isMatrixRotated = function (a) {
if (!a) {
return false;
}
var b = a.a;
var c = a.b;
var d = a.c;
var e = a.d;
return (Math.abs(c) > 0.0001 || Math.abs(d) > 0.0001) && (Math.abs(b) > 0.0001 || Math.abs(e) > 0.0001);
};
b.prototype.testScissor = function (a) {
var c = a.maskObject;
if (!c.isFastRect || !c.isFastRect()) {
return false;
}
if (b.isMatrixRotated(c.worldTransform)) {
return false;
}
if (b.isMatrixRotated(this.renderer.projection.transform)) {
return false;
}
this.calcScissorRect(a);
var d = a._scissorRectLocal;
return d.width > 0 && d.height > 0;
};
b.prototype.roundFrameToPixels = function (a, c, d, e, f) {
if (!b.isMatrixRotated(f)) {
(f = f ? Xd.copyFrom(f) : Xd.identity()).translate(-d.x, -d.y).scale(e.width / d.width, e.height / d.height).translate(e.x, e.y);
this.renderer.filter.transformAABB(f, a);
a.fit(e);
a.x = Math.round(a.x * c);
a.y = Math.round(a.y * c);
a.width = Math.round(a.width * c);
a.height = Math.round(a.height * c);
}
};
b.prototype.push = function (a) {
if (!a._scissorRectLocal) {
this.calcScissorRect(a);
}
var b = this.renderer.gl;
if (!a._scissorRect) {
b.enable(b.SCISSOR_TEST);
}
a._scissorCounter++;
a._scissorRect = a._scissorRectLocal;
this._useCurrent();
};
b.prototype.pop = function () {
var a = this.renderer.gl;
if (this.getStackLength() > 0) {
this._useCurrent();
} else {
a.disable(a.SCISSOR_TEST);
}
};
b.prototype._useCurrent = function () {
var a;
var b = this.maskStack[this.maskStack.length - 1]._scissorRect;
a = this.renderer.renderTexture.current ? b.y : this.renderer.height - b.height - b.y;
this.renderer.gl.scissor(b.x, a, b.width, b.height);
};
return b;
}(Wd);
var Zd = function (a) {
function b(b) {
var c = a.call(this, b) || this;
c.glConst = WebGLRenderingContext.STENCIL_TEST;
return c;
}
wc(b, a);
b.prototype.getStackLength = function () {
var a = this.maskStack[this.maskStack.length - 1];
if (a) {
return a._stencilCounter;
} else {
return 0;
}
};
b.prototype.push = function (a) {
var b = a.maskObject;
var c = this.renderer.gl;
var d = a._stencilCounter;
if (d === 0) {
this.renderer.framebuffer.forceStencil();
c.clearStencil(0);
c.clear(c.STENCIL_BUFFER_BIT);
c.enable(c.STENCIL_TEST);
}
a._stencilCounter++;
c.colorMask(false, false, false, false);
c.stencilFunc(c.EQUAL, d, 4294967295);
c.stencilOp(c.KEEP, c.KEEP, c.INCR);
b.renderable = true;
b.render(this.renderer);
this.renderer.batch.flush();
b.renderable = false;
this._useCurrent();
};
b.prototype.pop = function (a) {
var b = this.renderer.gl;
if (this.getStackLength() === 0) {
b.disable(b.STENCIL_TEST);
} else {
b.colorMask(false, false, false, false);
b.stencilOp(b.KEEP, b.KEEP, b.DECR);
a.renderable = true;
a.render(this.renderer);
this.renderer.batch.flush();
a.renderable = false;
this._useCurrent();
}
};
b.prototype._useCurrent = function () {
var a = this.renderer.gl;
a.colorMask(true, true, true, true);
a.stencilFunc(a.EQUAL, this.getStackLength(), 4294967295);
a.stencilOp(a.KEEP, a.KEEP, a.KEEP);
};
return b;
}(Wd);
var $d = function () {
function a(a) {
this.renderer = a;
this.destinationFrame = null;
this.sourceFrame = null;
this.defaultFrame = null;
this.projectionMatrix = new wb();
this.transform = null;
}
a.prototype.update = function (a, b, c, d) {
this.destinationFrame = a || this.destinationFrame || this.defaultFrame;
this.sourceFrame = b || this.sourceFrame || a;
this.calculateProjection(this.destinationFrame, this.sourceFrame, c, d);
if (this.transform) {
this.projectionMatrix.append(this.transform);
}
var e = this.renderer;
e.globalUniforms.uniforms.projectionMatrix = this.projectionMatrix;
e.globalUniforms.update();
if (e.shader.shader) {
e.shader.syncUniformGroup(e.shader.shader.uniforms.globals);
}
};
a.prototype.calculateProjection = function (a, b, c, d) {
var e = this.projectionMatrix;
var f = d ? -1 : 1;
e.identity();
e.a = 1 / b.width * 2;
e.d = f * (1 / b.height * 2);
e.tx = -1 - b.x * e.a;
e.ty = -f - b.y * e.d;
};
a.prototype.setTransform = function (a) {};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var _d = new qb();
var ae = new qb();
var be = function () {
function a(a) {
this.renderer = a;
this.clearColor = a._backgroundColorRgba;
this.defaultMaskStack = [];
this.current = null;
this.sourceFrame = new qb();
this.destinationFrame = new qb();
this.viewportFrame = new qb();
}
a.prototype.bind = function (a, b, c) {
if (a === undefined) {
a = null;
}
var d;
var e;
var f;
var g = this.renderer;
this.current = a;
if (a) {
f = (d = a.baseTexture).resolution;
if (!b) {
_d.width = a.frame.width;
_d.height = a.frame.height;
b = _d;
}
if (!c) {
ae.x = a.frame.x;
ae.y = a.frame.y;
ae.width = b.width;
ae.height = b.height;
c = ae;
}
e = d.framebuffer;
} else {
f = g.resolution;
if (!b) {
_d.width = g.screen.width;
_d.height = g.screen.height;
b = _d;
}
if (!c) {
(c = _d).width = b.width;
c.height = b.height;
}
}
var h = this.viewportFrame;
h.x = c.x * f;
h.y = c.y * f;
h.width = c.width * f;
h.height = c.height * f;
if (!a) {
h.y = g.view.height - (h.y + h.height);
}
h.ceil();
this.renderer.framebuffer.bind(e, h);
this.renderer.projection.update(c, b, f, !e);
if (a) {
this.renderer.mask.setMaskStack(d.maskStack);
} else {
this.renderer.mask.setMaskStack(this.defaultMaskStack);
}
this.sourceFrame.copyFrom(b);
this.destinationFrame.copyFrom(c);
};
a.prototype.clear = function (a, b) {
a = this.current ? a || this.current.baseTexture.clearColor : a || this.clearColor;
var c = this.destinationFrame;
var d = this.current ? this.current.baseTexture : this.renderer.screen;
var e = c.width !== d.width || c.height !== d.height;
if (e) {
var f = this.viewportFrame;
var g = f.x;
var h = f.y;
var i = f.width;
var j = f.height;
g = Math.round(g);
h = Math.round(h);
i = Math.round(i);
j = Math.round(j);
this.renderer.gl.enable(this.renderer.gl.SCISSOR_TEST);
this.renderer.gl.scissor(g, h, i, j);
}
this.renderer.framebuffer.clear(a[0], a[1], a[2], a[3], b);
if (e) {
this.renderer.scissor.pop();
}
};
a.prototype.resize = function () {
this.bind(null);
};
a.prototype.reset = function () {
this.bind(null);
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
function ce(a, b, c, d, e) {
c.buffer.update(e);
}
var de = {
float: "\n data[offset] = v;\n ",
vec2: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n ",
vec3: "\n data[offset] = v[0];\n data[offset+1] = v[1];\n data[offset+2] = v[2];\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 ",
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 ",
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 ",
mat4: "\n for(var i = 0; i < 16; i++)\n {\n data[offset + i] = v[i];\n }\n "
};
var ee = {
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: 32,
mat3: 48,
mat4: 64
};
var fe = function () {
function a(a, b) {
this.program = a;
this.uniformData = b;
this.uniformGroups = {};
this.uniformDirtyGroups = {};
this.uniformBufferBindings = {};
}
a.prototype.destroy = function () {
this.uniformData = null;
this.uniformGroups = null;
this.uniformDirtyGroups = null;
this.uniformBufferBindings = null;
this.program = null;
};
return a;
}();
var ge = 0;
var he = {
textureCount: 0,
uboCount: 0
};
var ie = function () {
function a(a) {
this.destroyed = false;
this.renderer = a;
this.systemCheck();
this.gl = null;
this.shader = null;
this.program = null;
this.cache = {};
this._uboCache = {};
this.id = ge++;
}
a.prototype.systemCheck = function () {
if (! function () {
if (typeof Gd == "boolean") {
return Gd;
}
try {
var a = new Function("param1", "param2", "param3", "return param1[param2] === param3;");
Gd = a({
a: "b"
}, "a", "b") === true;
} catch (a) {
Gd = false;
}
return Gd;
}()) {
throw new Error("Current environment does not allow unsafe-eval, please use @pixi/unsafe-eval module to enable support.");
}
};
a.prototype.contextChange = function (a) {
this.gl = a;
this.reset();
};
a.prototype.bind = function (a, b) {
a.uniforms.globals = this.renderer.globalUniforms;
var c = a.program;
var d = c.glPrograms[this.renderer.CONTEXT_UID] || this.generateProgram(a);
this.shader = a;
if (this.program !== c) {
this.program = c;
this.gl.useProgram(d.program);
}
if (!b) {
he.textureCount = 0;
he.uboCount = 0;
this.syncUniformGroup(a.uniformGroup, he);
}
return d;
};
a.prototype.setUniforms = function (a) {
var b = this.shader.program;
var c = b.glPrograms[this.renderer.CONTEXT_UID];
b.syncUniforms(c.uniformData, a, this.renderer);
};
a.prototype.syncUniformGroup = function (a, b) {
var c = this.getGlProgram();
if (!a.static || a.dirtyId !== c.uniformDirtyGroups[a.id]) {
c.uniformDirtyGroups[a.id] = a.dirtyId;
this.syncUniforms(a, c, b);
}
};
a.prototype.syncUniforms = function (a, b, c) {
(a.syncUniforms[this.shader.program.id] || this.createSyncGroups(a))(b.uniformData, a.uniforms, this.renderer, c);
};
a.prototype.createSyncGroups = function (a) {
var b = this.getSignature(a, this.shader.program.uniformData, "u");
this.cache[b] ||= function (a, b) {
var c = ["\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n "];
for (var d in a.uniforms) {
var e = b[d];
if (e) {
for (var f = a.uniforms[d], g = false, h = 0; h < Hd.length; h++) {
if (Hd[h].test(e, f)) {
c.push(Hd[h].code(d, f));
g = true;
break;
}
}
if (!g) {
var i = (e.size === 1 ? Id : Jd)[e.type].replace("location", "ud[\"" + d + "\"].location");
c.push("\n cu = ud[\"" + d + "\"];\n cv = cu.value;\n v = uv[\"" + d + "\"];\n " + i + ";");
}
} else if (a.uniforms[d]?.group) {
if (a.uniforms[d].ubo) {
c.push("\n renderer.shader.syncUniformBufferGroup(uv." + d + ", '" + d + "');\n ");
} else {
c.push("\n renderer.shader.syncUniformGroup(uv." + d + ", syncData);\n ");
}
}
}
return new Function("ud", "uv", "renderer", "syncData", c.join("\n"));
}(a, this.shader.program.uniformData);
a.syncUniforms[this.shader.program.id] = this.cache[b];
return a.syncUniforms[this.shader.program.id];
};
a.prototype.syncUniformBufferGroup = function (a, b) {
var c = this.getGlProgram();
if (!a.static || a.dirtyId !== 0 || !c.uniformGroups[a.id]) {
a.dirtyId = 0;
var d = c.uniformGroups[a.id] || this.createSyncBufferGroup(a, c, b);
a.buffer.update();
d(c.uniformData, a.uniforms, this.renderer, he, a.buffer);
}
this.renderer.buffer.bindBufferBase(a.buffer, c.uniformBufferBindings[b]);
};
a.prototype.createSyncBufferGroup = function (a, b, c) {
var d = this.renderer.gl;
this.renderer.buffer.bind(a.buffer);
var e = this.gl.getUniformBlockIndex(b.program, c);
b.uniformBufferBindings[c] = this.shader.uniformBindCount;
d.uniformBlockBinding(b.program, e, this.shader.uniformBindCount);
this.shader.uniformBindCount++;
var f = this.getSignature(a, this.shader.program.uniformData, "ubo");
var g = this._uboCache[f];
g ||= this._uboCache[f] = function (a, b) {
if (!a.autoManage) {
return {
size: 0,
syncFunc: ce
};
}
for (var c = function (a, b) {
var c = [];
for (var d in a) {
if (b[d]) {
c.push(b[d]);
}
}
c.sort(function (a, b) {
return a.index - b.index;
});
return c;
}(a.uniforms, b), d = function (a) {
for (var b = a.map(function (a) {
return {
data: a,
offset: 0,
dataLen: 0,
dirty: 0
};
}), c = 0, d = 0, e = 0, f = 0; f < b.length; f++) {
var g = b[f];
c = ee[g.data.type];
if (g.data.size > 1) {
c = Math.max(c, 16) * g.data.size;
}
g.dataLen = c;
if (d % c != 0 && d < 16) {
var h = d % c % 16;
d += h;
e += h;
}
if (d + c > 16) {
e = Math.ceil(e / 16) * 16;
g.offset = e;
e += c;
d = c;
} else {
g.offset = e;
d += c;
e += c;
}
}
return {
uboElements: b,
size: e = Math.ceil(e / 16) * 16
};
}(c), e = d.uboElements, f = d.size, g = ["\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 "], h = 0; h < e.length; h++) {
for (var i = e[h], j = a.uniforms[i.data.name], k = i.data.name, l = false, m = 0; m < Hd.length; m++) {
var n = Hd[m];
if (n.codeUbo && n.test(i.data, j)) {
g.push("offset = " + i.offset / 4 + ";", Hd[m].codeUbo(i.data.name, j));
l = true;
break;
}
}
if (!l) {
if (i.data.size > 1) {
var o = Cd(i.data.type);
var p = Math.max(ee[i.data.type] / 16, 1);
var q = o / p;
var r = (4 - q % 4) % 4;
g.push("\n cv = ud." + k + ".value;\n v = uv." + k + ";\n offset = " + i.offset / 4 + ";\n\n t = 0;\n\n for(var i=0; i < " + i.data.size * p + "; i++)\n {\n for(var j = 0; j < " + q + "; j++)\n {\n data[offset++] = v[t++];\n }\n offset += " + r + ";\n }\n\n ");
} else {
var s = de[i.data.type];
g.push("\n cv = ud." + k + ".value;\n v = uv." + k + ";\n offset = " + i.offset / 4 + ";\n " + s + ";\n ");
}
}
}
g.push("\n renderer.buffer.update(buffer);\n ");
return {
size: f,
syncFunc: new Function("ud", "uv", "renderer", "syncData", "buffer", g.join("\n"))
};
}(a, this.shader.program.uniformData);
if (a.autoManage) {
var h = new Float32Array(g.size / 4);
a.buffer.update(h);
}
b.uniformGroups[a.id] = g.syncFunc;
return b.uniformGroups[a.id];
};
a.prototype.getSignature = function (a, b, c) {
var d = a.uniforms;
var e = [c + "-"];
for (var f in d) {
e.push(f);
if (b[f]) {
e.push(b[f].type);
}
}
return e.join("-");
};
a.prototype.getGlProgram = function () {
if (this.shader) {
return this.shader.program.glPrograms[this.renderer.CONTEXT_UID];
} else {
return null;
}
};
a.prototype.generateProgram = function (a) {
var b = this.gl;
var c = a.program;
var d = function (a, b) {
var c = td(a, a.VERTEX_SHADER, b.vertexSrc);
var d = td(a, a.FRAGMENT_SHADER, b.fragmentSrc);
var e = a.createProgram();
a.attachShader(e, c);
a.attachShader(e, d);
a.linkProgram(e);
if (!a.getProgramParameter(e, a.LINK_STATUS)) {
(function (a, b, c, d) {
if (!a.getProgramParameter(b, a.LINK_STATUS)) {
if (!a.getShaderParameter(c, a.COMPILE_STATUS)) {
ud(a, c);
}
if (!a.getShaderParameter(d, a.COMPILE_STATUS)) {
ud(a, d);
}
console.error("PixiJS Error: Could not initialize shader.");
if (a.getProgramInfoLog(b) !== "") {
console.warn("PixiJS Warning: gl.getProgramInfoLog()", a.getProgramInfoLog(b));
}
}
})(a, e, c, d);
}
b.attributeData = function (a, b) {
for (var c = {}, d = b.getProgramParameter(a, b.ACTIVE_ATTRIBUTES), e = 0; e < d; e++) {
var f = b.getActiveAttrib(a, e);
if (f.name.indexOf("gl_") !== 0) {
var g = Fd(b, f.type);
var h = {
type: g,
name: f.name,
size: Cd(g),
location: b.getAttribLocation(a, f.name)
};
c[f.name] = h;
}
}
return c;
}(e, a);
b.uniformData = function (a, b) {
for (var c = {}, d = b.getProgramParameter(a, b.ACTIVE_UNIFORMS), e = 0; e < d; e++) {
var f = b.getActiveUniform(a, e);
var g = f.name.replace(/\[.*?\]$/, "");
var h = !!f.name.match(/\[.*?\]$/);
var i = Fd(b, f.type);
c[g] = {
name: g,
index: e,
type: i,
size: f.size,
isArray: h,
value: wd(i, f.size)
};
}
return c;
}(e, a);
if (!/^[ \t]*#[ \t]*version[ \t]+300[ \t]+es[ \t]*$/m.test(b.vertexSrc)) {
var f = Object.keys(b.attributeData);
f.sort(function (a, b) {
if (a > b) {
return 1;
} else {
return -1;
}
});
for (var g = 0; g < f.length; g++) {
b.attributeData[f[g]].location = g;
a.bindAttribLocation(e, g, f[g]);
}
a.linkProgram(e);
}
a.deleteShader(c);
a.deleteShader(d);
var h = {};
for (var g in b.uniformData) {
var i = b.uniformData[g];
h[g] = {
location: a.getUniformLocation(e, g),
value: wd(i.type, i.size)
};
}
return new fe(e, h);
}(b, c);
c.glPrograms[this.renderer.CONTEXT_UID] = d;
return d;
};
a.prototype.reset = function () {
this.program = null;
this.shader = null;
};
a.prototype.destroy = function () {
this.renderer = null;
this.destroyed = true;
};
return a;
}();
var je = function () {
function a() {
this.gl = null;
this.stateId = 0;
this.polygonOffset = 0;
this.blendMode = pa.NONE;
this._blendEq = false;
this.map = [];
this.map[0] = this.setBlend;
this.map[1] = this.setOffset;
this.map[2] = this.setCullFace;
this.map[3] = this.setDepthTest;
this.map[4] = this.setFrontFace;
this.map[5] = this.setDepthMask;
this.checks = [];
this.defaultState = new Qd();
this.defaultState.blend = true;
}
a.prototype.contextChange = function (a) {
this.gl = a;
this.blendModes = function (a, b) {
if (b === undefined) {
b = [];
}
b[pa.NORMAL] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.ADD] = [a.ONE, a.ONE];
b[pa.MULTIPLY] = [a.DST_COLOR, a.ONE_MINUS_SRC_ALPHA, a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.SCREEN] = [a.ONE, a.ONE_MINUS_SRC_COLOR, a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.OVERLAY] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.DARKEN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.LIGHTEN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.COLOR_DODGE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.COLOR_BURN] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.HARD_LIGHT] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.SOFT_LIGHT] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.DIFFERENCE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.EXCLUSION] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.HUE] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.SATURATION] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.COLOR] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.LUMINOSITY] = [a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.NONE] = [0, 0];
b[pa.NORMAL_NPM] = [a.SRC_ALPHA, a.ONE_MINUS_SRC_ALPHA, a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.ADD_NPM] = [a.SRC_ALPHA, a.ONE, a.ONE, a.ONE];
b[pa.SCREEN_NPM] = [a.SRC_ALPHA, a.ONE_MINUS_SRC_COLOR, a.ONE, a.ONE_MINUS_SRC_ALPHA];
b[pa.SRC_IN] = [a.DST_ALPHA, a.ZERO];
b[pa.SRC_OUT] = [a.ONE_MINUS_DST_ALPHA, a.ZERO];
b[pa.SRC_ATOP] = [a.DST_ALPHA, a.ONE_MINUS_SRC_ALPHA];
b[pa.DST_OVER] = [a.ONE_MINUS_DST_ALPHA, a.ONE];
b[pa.DST_IN] = [a.ZERO, a.SRC_ALPHA];
b[pa.DST_OUT] = [a.ZERO, a.ONE_MINUS_SRC_ALPHA];
b[pa.DST_ATOP] = [a.ONE_MINUS_DST_ALPHA, a.SRC_ALPHA];
b[pa.XOR] = [a.ONE_MINUS_DST_ALPHA, a.ONE_MINUS_SRC_ALPHA];
b[pa.SUBTRACT] = [a.ONE, a.ONE, a.ONE, a.ONE, a.FUNC_REVERSE_SUBTRACT, a.FUNC_ADD];
return b;
}(a);
this.set(this.defaultState);
this.reset();
};
a.prototype.set = function (a) {
a = a || this.defaultState;
if (this.stateId !== a.data) {
for (var b = this.stateId ^ a.data, c = 0; b;) {
if (b & 1) {
this.map[c].call(this, !!(a.data & 1 << c));
}
b >>= 1;
c++;
}
this.stateId = a.data;
}
for (c = 0; c < this.checks.length; c++) {
this.checks[c](this, a);
}
};
a.prototype.forceState = function (a) {
a = a || this.defaultState;
for (var b = 0; b < this.map.length; b++) {
this.map[b].call(this, !!(a.data & 1 << b));
}
for (b = 0; b < this.checks.length; b++) {
this.checks[b](this, a);
}
this.stateId = a.data;
};
a.prototype.setBlend = function (b) {
this.updateCheck(a.checkBlendMode, b);
this.gl[b ? "enable" : "disable"](this.gl.BLEND);
};
a.prototype.setOffset = function (b) {
this.updateCheck(a.checkPolygonOffset, b);
this.gl[b ? "enable" : "disable"](this.gl.POLYGON_OFFSET_FILL);
};
a.prototype.setDepthTest = function (a) {
this.gl[a ? "enable" : "disable"](this.gl.DEPTH_TEST);
};
a.prototype.setDepthMask = function (a) {
this.gl.depthMask(a);
};
a.prototype.setCullFace = function (a) {
this.gl[a ? "enable" : "disable"](this.gl.CULL_FACE);
};
a.prototype.setFrontFace = function (a) {
this.gl.frontFace(this.gl[a ? "CW" : "CCW"]);
};
a.prototype.setBlendMode = function (a) {
if (a !== this.blendMode) {
this.blendMode = a;
var b = this.blendModes[a];
var c = this.gl;
if (b.length === 2) {
c.blendFunc(b[0], b[1]);
} else {
c.blendFuncSeparate(b[0], b[1], b[2], b[3]);
}
if (b.length === 6) {
this._blendEq = true;
c.blendEquationSeparate(b[4], b[5]);
} else if (this._blendEq) {
this._blendEq = false;
c.blendEquationSeparate(c.FUNC_ADD, c.FUNC_ADD);
}
}
};
a.prototype.setPolygonOffset = function (a, b) {
this.gl.polygonOffset(a, b);
};
a.prototype.reset = function () {
this.gl.pixelStorei(this.gl.UNPACK_FLIP_Y_WEBGL, false);
this.forceState(this.defaultState);
this._blendEq = true;
this.blendMode = -1;
this.setBlendMode(0);
};
a.prototype.updateCheck = function (a, b) {
var c = this.checks.indexOf(a);
if (b && c === -1) {
this.checks.push(a);
} else if (!b && c !== -1) {
this.checks.splice(c, 1);
}
};
a.checkBlendMode = function (a, b) {
a.setBlendMode(b.blendMode);
};
a.checkPolygonOffset = function (a, b) {
a.setPolygonOffset(1, b.polygonOffset);
};
a.prototype.destroy = function () {
this.gl = null;
};
return a;
}();
var ke = function () {
function a(a) {
this.renderer = a;
this.count = 0;
this.checkCount = 0;
this.maxIdle = Fa.GC_MAX_IDLE;
this.checkCountMax = Fa.GC_MAX_CHECK_COUNT;
this.mode = Fa.GC_MODE;
}
a.prototype.postrender = function () {
if (this.renderer.renderingToScreen) {
this.count++;
if (this.mode !== Aa.MANUAL) {
this.checkCount++;
if (this.checkCount > this.checkCountMax) {
this.checkCount = 0;
this.run();
}
}
}
};
a.prototype.run = function () {
for (var a = this.renderer.texture, b = a.managedTextures, c = false, d = 0; d < b.length; d++) {
var e = b[d];
if (!e.framebuffer && this.count - e.touched > this.maxIdle) {
a.destroyTexture(e, true);
b[d] = null;
c = true;
}
}
if (c) {
var f = 0;
for (d = 0; d < b.length; d++) {
if (b[d] !== null) {
b[f++] = b[d];
}
}
b.length = f;
}
};
a.prototype.unload = function (a) {
var b = this.renderer.texture;
var c = a._texture;
if (c && !c.framebuffer) {
b.destroyTexture(c);
}
for (var d = a.children.length - 1; d >= 0; d--) {
this.unload(a.children[d]);
}
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
function le(a) {
this.texture = a;
this.width = -1;
this.height = -1;
this.dirtyId = -1;
this.dirtyStyleId = -1;
this.mipmap = false;
this.wrapMode = 33071;
this.type = ta.UNSIGNED_BYTE;
this.internalFormat = ra.RGBA;
this.samplerType = 0;
}
var me = function () {
function a(a) {
this.renderer = a;
this.boundTextures = [];
this.currentLocation = -1;
this.managedTextures = [];
this._unknownBoundTextures = false;
this.unknownTexture = new Bc();
this.hasIntegerTextures = false;
}
a.prototype.contextChange = function () {
var a = this.gl = this.renderer.gl;
this.CONTEXT_UID = this.renderer.CONTEXT_UID;
this.webGLVersion = this.renderer.context.webGLVersion;
this.internalFormats = function (a) {
var b;
var c;
var d;
var e;
var f;
var g;
var h;
var i;
var j;
var k;
var l;
var m;
var n;
var o;
var p;
var q;
var r;
var s;
var t;
var u;
var v;
var w;
var x;
if ("WebGL2RenderingContext" in globalThis && a instanceof globalThis.WebGL2RenderingContext) {
(b = {})[ta.UNSIGNED_BYTE] = ((c = {})[ra.RGBA] = a.RGBA8, c[ra.RGB] = a.RGB8, c[ra.RG] = a.RG8, c[ra.RED] = a.R8, c[ra.RGBA_INTEGER] = a.RGBA8UI, c[ra.RGB_INTEGER] = a.RGB8UI, c[ra.RG_INTEGER] = a.RG8UI, c[ra.RED_INTEGER] = a.R8UI, c[ra.ALPHA] = a.ALPHA, c[ra.LUMINANCE] = a.LUMINANCE, c[ra.LUMINANCE_ALPHA] = a.LUMINANCE_ALPHA, c);
b[ta.BYTE] = ((d = {})[ra.RGBA] = a.RGBA8_SNORM, d[ra.RGB] = a.RGB8_SNORM, d[ra.RG] = a.RG8_SNORM, d[ra.RED] = a.R8_SNORM, d[ra.RGBA_INTEGER] = a.RGBA8I, d[ra.RGB_INTEGER] = a.RGB8I, d[ra.RG_INTEGER] = a.RG8I, d[ra.RED_INTEGER] = a.R8I, d);
b[ta.UNSIGNED_SHORT] = ((e = {})[ra.RGBA_INTEGER] = a.RGBA16UI, e[ra.RGB_INTEGER] = a.RGB16UI, e[ra.RG_INTEGER] = a.RG16UI, e[ra.RED_INTEGER] = a.R16UI, e[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT16, e);
b[ta.SHORT] = ((f = {})[ra.RGBA_INTEGER] = a.RGBA16I, f[ra.RGB_INTEGER] = a.RGB16I, f[ra.RG_INTEGER] = a.RG16I, f[ra.RED_INTEGER] = a.R16I, f);
b[ta.UNSIGNED_INT] = ((g = {})[ra.RGBA_INTEGER] = a.RGBA32UI, g[ra.RGB_INTEGER] = a.RGB32UI, g[ra.RG_INTEGER] = a.RG32UI, g[ra.RED_INTEGER] = a.R32UI, g[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT24, g);
b[ta.INT] = ((h = {})[ra.RGBA_INTEGER] = a.RGBA32I, h[ra.RGB_INTEGER] = a.RGB32I, h[ra.RG_INTEGER] = a.RG32I, h[ra.RED_INTEGER] = a.R32I, h);
b[ta.FLOAT] = ((i = {})[ra.RGBA] = a.RGBA32F, i[ra.RGB] = a.RGB32F, i[ra.RG] = a.RG32F, i[ra.RED] = a.R32F, i[ra.DEPTH_COMPONENT] = a.DEPTH_COMPONENT32F, i);
b[ta.HALF_FLOAT] = ((j = {})[ra.RGBA] = a.RGBA16F, j[ra.RGB] = a.RGB16F, j[ra.RG] = a.RG16F, j[ra.RED] = a.R16F, j);
b[ta.UNSIGNED_SHORT_5_6_5] = ((k = {})[ra.RGB] = a.RGB565, k);
b[ta.UNSIGNED_SHORT_4_4_4_4] = ((l = {})[ra.RGBA] = a.RGBA4, l);
b[ta.UNSIGNED_SHORT_5_5_5_1] = ((m = {})[ra.RGBA] = a.RGB5_A1, m);
b[ta.UNSIGNED_INT_2_10_10_10_REV] = ((n = {})[ra.RGBA] = a.RGB10_A2, n[ra.RGBA_INTEGER] = a.RGB10_A2UI, n);
b[ta.UNSIGNED_INT_10F_11F_11F_REV] = ((o = {})[ra.RGB] = a.R11F_G11F_B10F, o);
b[ta.UNSIGNED_INT_5_9_9_9_REV] = ((p = {})[ra.RGB] = a.RGB9_E5, p);
b[ta.UNSIGNED_INT_24_8] = ((q = {})[ra.DEPTH_STENCIL] = a.DEPTH24_STENCIL8, q);
b[ta.FLOAT_32_UNSIGNED_INT_24_8_REV] = ((r = {})[ra.DEPTH_STENCIL] = a.DEPTH32F_STENCIL8, r);
x = b;
} else {
(s = {})[ta.UNSIGNED_BYTE] = ((t = {})[ra.RGBA] = a.RGBA, t[ra.RGB] = a.RGB, t[ra.ALPHA] = a.ALPHA, t[ra.LUMINANCE] = a.LUMINANCE, t[ra.LUMINANCE_ALPHA] = a.LUMINANCE_ALPHA, t);
s[ta.UNSIGNED_SHORT_5_6_5] = ((u = {})[ra.RGB] = a.RGB, u);
s[ta.UNSIGNED_SHORT_4_4_4_4] = ((v = {})[ra.RGBA] = a.RGBA, v);
s[ta.UNSIGNED_SHORT_5_5_5_1] = ((w = {})[ra.RGBA] = a.RGBA, w);
x = s;
}
return x;
}(a);
var b = a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS);
this.boundTextures.length = b;
for (var c = 0; c < b; c++) {
this.boundTextures[c] = null;
}
this.emptyTextures = {};
var d = new le(a.createTexture());
a.bindTexture(a.TEXTURE_2D, d.texture);
a.texImage2D(a.TEXTURE_2D, 0, a.RGBA, 1, 1, 0, a.RGBA, a.UNSIGNED_BYTE, new Uint8Array(4));
this.emptyTextures[a.TEXTURE_2D] = d;
this.emptyTextures[a.TEXTURE_CUBE_MAP] = new le(a.createTexture());
a.bindTexture(a.TEXTURE_CUBE_MAP, this.emptyTextures[a.TEXTURE_CUBE_MAP].texture);
c = 0;
for (; c < 6; c++) {
a.texImage2D(a.TEXTURE_CUBE_MAP_POSITIVE_X + c, 0, a.RGBA, 1, 1, 0, a.RGBA, a.UNSIGNED_BYTE, null);
}
a.texParameteri(a.TEXTURE_CUBE_MAP, a.TEXTURE_MAG_FILTER, a.LINEAR);
a.texParameteri(a.TEXTURE_CUBE_MAP, a.TEXTURE_MIN_FILTER, a.LINEAR);
c = 0;
for (; c < this.boundTextures.length; c++) {
this.bind(null, c);
}
};
a.prototype.bind = function (a, b) {
if (b === undefined) {
b = 0;
}
var c = this.gl;
if ((a = a == null ? undefined : a.castToBaseTexture()) && a.valid && !a.parentTextureArray) {
a.touched = this.renderer.textureGC.count;
var d = a._glTextures[this.CONTEXT_UID] || this.initTexture(a);
if (this.boundTextures[b] !== a) {
if (this.currentLocation !== b) {
this.currentLocation = b;
c.activeTexture(c.TEXTURE0 + b);
}
c.bindTexture(a.target, d.texture);
}
if (d.dirtyId !== a.dirtyId) {
if (this.currentLocation !== b) {
this.currentLocation = b;
c.activeTexture(c.TEXTURE0 + b);
}
this.updateTexture(a);
}
this.boundTextures[b] = a;
} else {
if (this.currentLocation !== b) {
this.currentLocation = b;
c.activeTexture(c.TEXTURE0 + b);
}
c.bindTexture(c.TEXTURE_2D, this.emptyTextures[c.TEXTURE_2D].texture);
this.boundTextures[b] = null;
}
};
a.prototype.reset = function () {
this._unknownBoundTextures = true;
this.hasIntegerTextures = false;
this.currentLocation = -1;
for (var a = 0; a < this.boundTextures.length; a++) {
this.boundTextures[a] = this.unknownTexture;
}
};
a.prototype.unbind = function (a) {
var b = this.gl;
var c = this.boundTextures;
if (this._unknownBoundTextures) {
this._unknownBoundTextures = false;
for (var d = 0; d < c.length; d++) {
if (c[d] === this.unknownTexture) {
this.bind(null, d);
}
}
}
for (d = 0; d < c.length; d++) {
if (c[d] === a) {
if (this.currentLocation !== d) {
b.activeTexture(b.TEXTURE0 + d);
this.currentLocation = d;
}
b.bindTexture(a.target, this.emptyTextures[a.target].texture);
c[d] = null;
}
}
};
a.prototype.ensureSamplerType = function (a) {
var b = this;
var c = b.boundTextures;
var d = b.hasIntegerTextures;
var e = b.CONTEXT_UID;
if (d) {
for (var f = a - 1; f >= 0; --f) {
var g = c[f];
if (g && g._glTextures[e].samplerType !== ua.FLOAT) {
this.renderer.texture.unbind(g);
}
}
}
};
a.prototype.initTexture = function (a) {
var b = new le(this.gl.createTexture());
b.dirtyId = -1;
a._glTextures[this.CONTEXT_UID] = b;
this.managedTextures.push(a);
a.on("dispose", this.destroyTexture, this);
return b;
};
a.prototype.initTextureType = function (a, b) {
b.internalFormat = this.internalFormats[a.type]?.[a.format] ?? a.format;
if (this.webGLVersion === 2 && a.type === ta.HALF_FLOAT) {
b.type = this.gl.HALF_FLOAT;
} else {
b.type = a.type;
}
};
a.prototype.updateTexture = function (a) {
var b = a._glTextures[this.CONTEXT_UID];
if (b) {
var c = this.renderer;
this.initTextureType(a, b);
if (a.resource && a.resource.upload(c, a, b)) {
if (b.samplerType !== ua.FLOAT) {
this.hasIntegerTextures = true;
}
} else {
var d = a.realWidth;
var e = a.realHeight;
var f = c.gl;
if (b.width !== d || b.height !== e || b.dirtyId < 0) {
b.width = d;
b.height = e;
f.texImage2D(a.target, 0, b.internalFormat, d, e, 0, a.format, b.type, null);
}
}
if (a.dirtyStyleId !== b.dirtyStyleId) {
this.updateTextureStyle(a);
}
b.dirtyId = a.dirtyId;
}
};
a.prototype.destroyTexture = function (a, b) {
var c = this.gl;
if ((a = a.castToBaseTexture())._glTextures[this.CONTEXT_UID] && (this.unbind(a), c.deleteTexture(a._glTextures[this.CONTEXT_UID].texture), a.off("dispose", this.destroyTexture, this), delete a._glTextures[this.CONTEXT_UID], !b)) {
var d = this.managedTextures.indexOf(a);
if (d !== -1) {
$a(this.managedTextures, d, 1);
}
}
};
a.prototype.updateTextureStyle = function (a) {
var b = a._glTextures[this.CONTEXT_UID];
if (b) {
if (a.mipmap !== xa.POW2 && this.webGLVersion === 2 || a.isPowerOfTwo) {
b.mipmap = a.mipmap >= 1;
} else {
b.mipmap = false;
}
if (this.webGLVersion === 2 || a.isPowerOfTwo) {
b.wrapMode = a.wrapMode;
} else {
b.wrapMode = wa.CLAMP;
}
if (!a.resource || !a.resource.style(this.renderer, a, b)) {
this.setStyle(a, b);
}
b.dirtyStyleId = a.dirtyStyleId;
}
};
a.prototype.setStyle = function (a, b) {
var c = this.gl;
if (b.mipmap && a.mipmap !== xa.ON_MANUAL) {
c.generateMipmap(a.target);
}
c.texParameteri(a.target, c.TEXTURE_WRAP_S, b.wrapMode);
c.texParameteri(a.target, c.TEXTURE_WRAP_T, b.wrapMode);
if (b.mipmap) {
c.texParameteri(a.target, c.TEXTURE_MIN_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR_MIPMAP_LINEAR : c.NEAREST_MIPMAP_NEAREST);
var d = this.renderer.context.extensions.anisotropicFiltering;
if (d && a.anisotropicLevel > 0 && a.scaleMode === va.LINEAR) {
var e = Math.min(a.anisotropicLevel, c.getParameter(d.MAX_TEXTURE_MAX_ANISOTROPY_EXT));
c.texParameterf(a.target, d.TEXTURE_MAX_ANISOTROPY_EXT, e);
}
} else {
c.texParameteri(a.target, c.TEXTURE_MIN_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR : c.NEAREST);
}
c.texParameteri(a.target, c.TEXTURE_MAG_FILTER, a.scaleMode === va.LINEAR ? c.LINEAR : c.NEAREST);
};
a.prototype.destroy = function () {
this.renderer = null;
};
return a;
}();
var ne = {
"__proto__": null,
FilterSystem: id,
BatchSystem: kd,
ContextSystem: md,
FramebufferSystem: pd,
GeometrySystem: rd,
MaskSystem: Vd,
ScissorSystem: Yd,
StencilSystem: Zd,
ProjectionSystem: $d,
RenderTextureSystem: be,
ShaderSystem: ie,
StateSystem: je,
TextureGCSystem: ke,
TextureSystem: me
};
var oe = new wb();
var pe = function (a) {
function b(b, c) {
if (b === undefined) {
b = na.UNKNOWN;
}
var d = a.call(this) || this;
c = Object.assign({}, Fa.RENDER_OPTIONS, c);
d.options = c;
d.type = b;
d.screen = new qb(0, 0, c.width, c.height);
d.view = c.view || document.createElement("canvas");
d.resolution = c.resolution || Fa.RESOLUTION;
d.useContextAlpha = c.useContextAlpha;
d.autoDensity = !!c.autoDensity;
d.preserveDrawingBuffer = c.preserveDrawingBuffer;
d.clearBeforeRender = c.clearBeforeRender;
d._backgroundColor = 0;
d._backgroundColorRgba = [0, 0, 0, 1];
d._backgroundColorString = "#000000";
d.backgroundColor = c.backgroundColor || d._backgroundColor;
d.backgroundAlpha = c.backgroundAlpha;
if (c.transparent !== undefined) {
db("6.0.0", "Option transparent is deprecated, please use backgroundAlpha instead.");
d.useContextAlpha = c.transparent;
d.backgroundAlpha = c.transparent ? 0 : 1;
}
d._lastObjectRendered = null;
d.plugins = {};
return d;
}
wc(b, a);
b.prototype.initPlugins = function (a) {
for (var b in a) {
this.plugins[b] = new a[b](this);
}
};
Object.defineProperty(b.prototype, "width", {
get: function () {
return this.view.width;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return this.view.height;
},
enumerable: false,
configurable: true
});
b.prototype.resize = function (a, b) {
this.view.width = Math.round(a * this.resolution);
this.view.height = Math.round(b * this.resolution);
var c = this.view.width / this.resolution;
var d = this.view.height / this.resolution;
this.screen.width = c;
this.screen.height = d;
if (this.autoDensity) {
this.view.style.width = c + "px";
this.view.style.height = d + "px";
}
this.emit("resize", c, d);
};
b.prototype.generateTexture = function (a, b, c, d) {
if (b === undefined) {
b = {};
}
if (typeof b == "number") {
db("6.1.0", "generateTexture options (scaleMode, resolution, region) are now object options.");
b = {
scaleMode: b,
resolution: c,
region: d
};
}
var e = b.region;
var f = function (a, b) {
var c = {};
for (var d in a) {
if (Object.prototype.hasOwnProperty.call(a, d) && b.indexOf(d) < 0) {
c[d] = a[d];
}
}
if (a != null && typeof Object.getOwnPropertySymbols == "function") {
var e = 0;
for (d = Object.getOwnPropertySymbols(a); e < d.length; e++) {
if (b.indexOf(d[e]) < 0) {
c[d[e]] = a[d[e]];
}
}
}
return c;
}(b, ["region"]);
if ((d = e || a.getLocalBounds(null, true)).width === 0) {
d.width = 1;
}
if (d.height === 0) {
d.height = 1;
}
var g = Tc.create(xc({
width: d.width,
height: d.height
}, f));
oe.tx = -d.x;
oe.ty = -d.y;
this.render(a, {
renderTexture: g,
clear: false,
transform: oe,
skipUpdateTransform: !!a.parent
});
return g;
};
b.prototype.destroy = function (a) {
for (var b in this.plugins) {
this.plugins[b].destroy();
this.plugins[b] = null;
}
if (a && this.view.parentNode) {
this.view.parentNode.removeChild(this.view);
}
var c = this;
c.plugins = null;
c.type = na.UNKNOWN;
c.view = null;
c.screen = null;
c._tempDisplayObjectParent = null;
c.options = null;
this._backgroundColorRgba = null;
this._backgroundColorString = null;
this._lastObjectRendered = null;
};
Object.defineProperty(b.prototype, "backgroundColor", {
get: function () {
return this._backgroundColor;
},
set: function (a) {
this._backgroundColor = a;
this._backgroundColorString = Qa(a);
Pa(a, this._backgroundColorRgba);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "backgroundAlpha", {
get: function () {
return this._backgroundColorRgba[3];
},
set: function (a) {
this._backgroundColorRgba[3] = a;
},
enumerable: false,
configurable: true
});
return b;
}(Ha());
function qe(a) {
this.buffer = a || null;
this.updateID = -1;
this.byteLength = -1;
this.refCount = 0;
}
var re = function () {
function a(a) {
this.renderer = a;
this.managedBuffers = {};
this.boundBufferBases = {};
}
a.prototype.destroy = function () {
this.renderer = null;
};
a.prototype.contextChange = function () {
this.disposeAll(true);
this.gl = this.renderer.gl;
this.CONTEXT_UID = this.renderer.CONTEXT_UID;
};
a.prototype.bind = function (a) {
var b = this.gl;
var c = this.CONTEXT_UID;
var d = a._glBuffers[c] || this.createGLBuffer(a);
b.bindBuffer(a.type, d.buffer);
};
a.prototype.bindBufferBase = function (a, b) {
var c = this.gl;
var d = this.CONTEXT_UID;
if (this.boundBufferBases[b] !== a) {
var e = a._glBuffers[d] || this.createGLBuffer(a);
this.boundBufferBases[b] = a;
c.bindBufferBase(c.UNIFORM_BUFFER, b, e.buffer);
}
};
a.prototype.bindBufferRange = function (a, b, c) {
var d = this.gl;
var e = this.CONTEXT_UID;
c = c || 0;
var f = a._glBuffers[e] || this.createGLBuffer(a);
d.bindBufferRange(d.UNIFORM_BUFFER, b || 0, f.buffer, c * 256, 256);
};
a.prototype.update = function (a) {
var b = this.gl;
var c = this.CONTEXT_UID;
var d = a._glBuffers[c];
if (a._updateID !== d.updateID) {
d.updateID = a._updateID;
b.bindBuffer(a.type, d.buffer);
if (d.byteLength >= a.data.byteLength) {
b.bufferSubData(a.type, 0, a.data);
} else {
var e = a.static ? b.STATIC_DRAW : b.DYNAMIC_DRAW;
d.byteLength = a.data.byteLength;
b.bufferData(a.type, a.data, e);
}
}
};
a.prototype.dispose = function (a, b) {
if (this.managedBuffers[a.id]) {
delete this.managedBuffers[a.id];
var c = a._glBuffers[this.CONTEXT_UID];
var d = this.gl;
a.disposeRunner.remove(this);
if (c) {
if (!b) {
d.deleteBuffer(c.buffer);
}
delete a._glBuffers[this.CONTEXT_UID];
}
}
};
a.prototype.disposeAll = function (a) {
for (var b = Object.keys(this.managedBuffers), c = 0; c < b.length; c++) {
this.dispose(this.managedBuffers[b[c]], a);
}
};
a.prototype.createGLBuffer = function (a) {
var b = this.CONTEXT_UID;
var c = this.gl;
a._glBuffers[b] = new qe(c.createBuffer());
this.managedBuffers[a.id] = a;
a.disposeRunner.add(this);
return a._glBuffers[b];
};
return a;
}();
var se = function (a) {
function b(c) {
var d = a.call(this, na.WEBGL, c) || this;
c = d.options;
d.gl = null;
d.CONTEXT_UID = 0;
d.runners = {
destroy: new sc("destroy"),
contextChange: new sc("contextChange"),
reset: new sc("reset"),
update: new sc("update"),
postrender: new sc("postrender"),
prerender: new sc("prerender"),
resize: new sc("resize")
};
d.runners.contextChange.add(d);
d.globalUniforms = new ed({
projectionMatrix: new wb()
}, true);
d.addSystem(Vd, "mask").addSystem(md, "context").addSystem(je, "state").addSystem(ie, "shader").addSystem(me, "texture").addSystem(re, "buffer").addSystem(rd, "geometry").addSystem(pd, "framebuffer").addSystem(Yd, "scissor").addSystem(Zd, "stencil").addSystem($d, "projection").addSystem(ke, "textureGC").addSystem(id, "filter").addSystem(be, "renderTexture").addSystem(kd, "batch");
d.initPlugins(b.__plugins);
d.multisample = undefined;
if (c.context) {
d.context.initFromContext(c.context);
} else {
d.context.initFromOptions({
alpha: !!d.useContextAlpha,
antialias: c.antialias,
premultipliedAlpha: d.useContextAlpha && d.useContextAlpha !== "notMultiplied",
stencil: true,
preserveDrawingBuffer: c.preserveDrawingBuffer,
powerPreference: d.options.powerPreference
});
}
d.renderingToScreen = true;
(function (a) {
var b;
if (!Na) {
if (navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
var c = ["\n %c %c %c PixiJS 6.3.2 - ✰ " + a + " ✰ %c %c http://www.pixijs.com/ %c %c ♥%c♥%c♥ \n\n", "background: #ff66a5; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff66a5; background: #030307; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "background: #ffc3dc; padding:5px 0;", "background: #ff66a5; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;", "color: #ff2424; background: #fff; padding:5px 0;"];
(b = globalThis.console).log.apply(b, c);
} else if (globalThis.console) {
globalThis.console.log("PixiJS 6.3.2 - " + a + " - http://www.pixijs.com/");
}
Na = true;
}
})(d.context.webGLVersion === 2 ? "WebGL 2" : "WebGL 1");
d.resize(d.options.width, d.options.height);
return d;
}
wc(b, a);
b.create = function (a) {
if (Ma === undefined) {
Ma = function () {
var a = {
stencil: true,
failIfMajorPerformanceCaveat: Fa.FAIL_IF_MAJOR_PERFORMANCE_CAVEAT
};
try {
if (!globalThis.WebGLRenderingContext) {
return false;
}
var b = document.createElement("canvas");
var c = b.getContext("webgl", a) || b.getContext("experimental-webgl", a);
var d = !!c && !!c.getContextAttributes().stencil;
if (c) {
var e = c.getExtension("WEBGL_lose_context");
if (e) {
e.loseContext();
}
}
c = null;
return d;
} catch (a) {
return false;
}
}();
}
if (Ma) {
return new b(a);
}
throw new Error("WebGL unsupported in this browser, use \"pixi.js-legacy\" for fallback canvas2d support.");
};
b.prototype.contextChange = function () {
var a;
var b = this.gl;
if (this.context.webGLVersion === 1) {
var c = b.getParameter(b.FRAMEBUFFER_BINDING);
b.bindFramebuffer(b.FRAMEBUFFER, null);
a = b.getParameter(b.SAMPLES);
b.bindFramebuffer(b.FRAMEBUFFER, c);
} else {
c = b.getParameter(b.DRAW_FRAMEBUFFER_BINDING);
b.bindFramebuffer(b.DRAW_FRAMEBUFFER, null);
a = b.getParameter(b.SAMPLES);
b.bindFramebuffer(b.DRAW_FRAMEBUFFER, c);
}
if (a >= Da.HIGH) {
this.multisample = Da.HIGH;
} else if (a >= Da.MEDIUM) {
this.multisample = Da.MEDIUM;
} else if (a >= Da.LOW) {
this.multisample = Da.LOW;
} else {
this.multisample = Da.NONE;
}
};
b.prototype.addSystem = function (a, b) {
var c = new a(this);
if (this[b]) {
throw new Error("Whoops! The name \"" + b + "\" is already in use");
}
this[b] = c;
for (var d in this.runners) {
this.runners[d].add(c);
}
return this;
};
b.prototype.render = function (a, b) {
var c;
var d;
var e;
var f;
if (b) {
if (b instanceof Tc) {
db("6.0.0", "Renderer#render arguments changed, use options instead.");
c = b;
d = arguments[2];
e = arguments[3];
f = arguments[4];
} else {
c = b.renderTexture;
d = b.clear;
e = b.transform;
f = b.skipUpdateTransform;
}
}
this.renderingToScreen = !c;
this.runners.prerender.emit();
this.emit("prerender");
this.projection.transform = e;
if (!this.context.isLost) {
if (!c) {
this._lastObjectRendered = a;
}
if (!f) {
var g = a.enableTempParent();
a.updateTransform();
a.disableTempParent(g);
}
this.renderTexture.bind(c);
this.batch.currentRenderer.start();
if (d !== undefined ? d : this.clearBeforeRender) {
this.renderTexture.clear();
}
a.render(this);
this.batch.currentRenderer.flush();
if (c) {
c.baseTexture.update();
}
this.runners.postrender.emit();
this.projection.transform = null;
this.emit("postrender");
}
};
b.prototype.generateTexture = function (b, c, d, e) {
if (c === undefined) {
c = {};
}
var f = a.prototype.generateTexture.call(this, b, c, d, e);
this.framebuffer.blit();
return f;
};
b.prototype.resize = function (b, c) {
a.prototype.resize.call(this, b, c);
this.runners.resize.emit(this.screen.height, this.screen.width);
};
b.prototype.reset = function () {
this.runners.reset.emit();
return this;
};
b.prototype.clear = function () {
this.renderTexture.bind();
this.renderTexture.clear();
};
b.prototype.destroy = function (b) {
this.runners.destroy.emit();
for (var c in this.runners) {
this.runners[c].destroy();
}
a.prototype.destroy.call(this, b);
this.gl = null;
};
Object.defineProperty(b.prototype, "extract", {
get: function () {
db("6.0.0", "Renderer#extract has been deprecated, please use Renderer#plugins.extract instead.");
return this.plugins.extract;
},
enumerable: false,
configurable: true
});
b.registerPlugin = function (a, c) {
b.__plugins = b.__plugins || {};
b.__plugins[a] = c;
};
return b;
}(pe);
var te = "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";
function ue() {
this.texArray = null;
this.blend = 0;
this.type = qa.TRIANGLES;
this.start = 0;
this.size = 0;
this.data = null;
}
var ve = function () {
function a() {
this.elements = [];
this.ids = [];
this.count = 0;
}
a.prototype.clear = function () {
for (var a = 0; a < this.count; a++) {
this.elements[a] = null;
}
this.count = 0;
};
return a;
}();
var we = function () {
function a(a) {
if (typeof a == "number") {
this.rawBinaryData = new ArrayBuffer(a);
} else if (a instanceof Uint8Array) {
this.rawBinaryData = a.buffer;
} else {
this.rawBinaryData = a;
}
this.uint32View = new Uint32Array(this.rawBinaryData);
this.float32View = new Float32Array(this.rawBinaryData);
}
Object.defineProperty(a.prototype, "int8View", {
get: function () {
this._int8View ||= new Int8Array(this.rawBinaryData);
return this._int8View;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "uint8View", {
get: function () {
this._uint8View ||= new Uint8Array(this.rawBinaryData);
return this._uint8View;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "int16View", {
get: function () {
this._int16View ||= new Int16Array(this.rawBinaryData);
return this._int16View;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "uint16View", {
get: function () {
this._uint16View ||= new Uint16Array(this.rawBinaryData);
return this._uint16View;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "int32View", {
get: function () {
this._int32View ||= new Int32Array(this.rawBinaryData);
return this._int32View;
},
enumerable: false,
configurable: true
});
a.prototype.view = function (a) {
return this[a + "View"];
};
a.prototype.destroy = function () {
this.rawBinaryData = null;
this._int8View = null;
this._uint8View = null;
this._int16View = null;
this._uint16View = null;
this._int32View = null;
this.uint32View = null;
this.float32View = null;
};
a.sizeOf = function (a) {
switch (a) {
case "int8":
case "uint8":
return 1;
case "int16":
case "uint16":
return 2;
case "int32":
case "uint32":
case "float32":
return 4;
default:
throw new Error(a + " isn't a valid view type");
}
};
return a;
}();
var xe = function (a) {
function b(b) {
var c = a.call(this, b) || this;
c.shaderGenerator = null;
c.geometryClass = null;
c.vertexSize = null;
c.state = Qd.for2d();
c.size = Fa.SPRITE_BATCH_SIZE * 4;
c._vertexCount = 0;
c._indexCount = 0;
c._bufferedElements = [];
c._bufferedTextures = [];
c._bufferSize = 0;
c._shader = null;
c._packedGeometries = [];
c._packedGeometryPoolSize = 2;
c._flushId = 0;
c._aBuffers = {};
c._iBuffers = {};
c.MAX_TEXTURES = 1;
c.renderer.on("prerender", c.onPrerender, c);
b.runners.contextChange.add(c);
c._dcIndex = 0;
c._aIndex = 0;
c._iIndex = 0;
c._attributeBuffer = null;
c._indexBuffer = null;
c._tempBoundTextures = [];
return c;
}
wc(b, a);
b.prototype.contextChange = function () {
var a = this.renderer.gl;
if (Fa.PREFER_ENV === ma.WEBGL_LEGACY) {
this.MAX_TEXTURES = 1;
} else {
this.MAX_TEXTURES = Math.min(a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS), Fa.SPRITE_MAX_TEXTURES);
this.MAX_TEXTURES = function (a, b) {
if (a === 0) {
throw new Error("Invalid value of `0` passed to `checkMaxIfStatementsInShader`");
}
for (var c = b.createShader(b.FRAGMENT_SHADER);;) {
var d = Kd.replace(/%forloop%/gi, Ld(a));
b.shaderSource(c, d);
b.compileShader(c);
if (b.getShaderParameter(c, b.COMPILE_STATUS)) {
break;
}
a = a / 2 | 0;
}
return a;
}(this.MAX_TEXTURES, a);
}
this._shader = this.shaderGenerator.generateShader(this.MAX_TEXTURES);
for (var b = 0; b < this._packedGeometryPoolSize; b++) {
this._packedGeometries[b] = new this.geometryClass();
}
this.initFlushBuffers();
};
b.prototype.initFlushBuffers = function () {
for (var a = b._drawCallPool, c = b._textureArrayPool, d = this.size / 4, e = Math.floor(d / this.MAX_TEXTURES) + 1; a.length < d;) {
a.push(new ue());
}
while (c.length < e) {
c.push(new ve());
}
for (var f = 0; f < this.MAX_TEXTURES; f++) {
this._tempBoundTextures[f] = null;
}
};
b.prototype.onPrerender = function () {
this._flushId = 0;
};
b.prototype.render = function (a) {
if (a._texture.valid) {
if (this._vertexCount + a.vertexData.length / 2 > this.size) {
this.flush();
}
this._vertexCount += a.vertexData.length / 2;
this._indexCount += a.indices.length;
this._bufferedTextures[this._bufferSize] = a._texture.baseTexture;
this._bufferedElements[this._bufferSize++] = a;
}
};
b.prototype.buildTexturesAndDrawCalls = function () {
var a = this._bufferedTextures;
var c = this.MAX_TEXTURES;
var d = b._textureArrayPool;
var e = this.renderer.batch;
var f = this._tempBoundTextures;
var g = this.renderer.textureGC.count;
var h = ++Bc._globalBatch;
var i = 0;
var j = d[0];
var k = 0;
e.copyBoundTextures(f, c);
for (var l = 0; l < this._bufferSize; ++l) {
var m = a[l];
a[l] = null;
if (m._batchEnabled !== h) {
if (j.count >= c) {
e.boundArray(j, f, h, c);
this.buildDrawCalls(j, k, l);
k = l;
j = d[++i];
++h;
}
m._batchEnabled = h;
m.touched = g;
j.elements[j.count++] = m;
}
}
if (j.count > 0) {
e.boundArray(j, f, h, c);
this.buildDrawCalls(j, k, this._bufferSize);
++i;
++h;
}
l = 0;
for (; l < f.length; l++) {
f[l] = null;
}
Bc._globalBatch = h;
};
b.prototype.buildDrawCalls = function (a, c, d) {
var e = this;
var f = e._bufferedElements;
var g = e._attributeBuffer;
var h = e._indexBuffer;
var i = e.vertexSize;
var j = b._drawCallPool;
var k = this._dcIndex;
var l = this._aIndex;
var m = this._iIndex;
var n = j[k];
n.start = this._iIndex;
n.texArray = a;
for (var o = c; o < d; ++o) {
var p = f[o];
var q = p._texture.baseTexture;
var r = Sa[q.alphaMode ? 1 : 0][p.blendMode];
f[o] = null;
if (c < o && n.blend !== r) {
n.size = m - n.start;
c = o;
(n = j[++k]).texArray = a;
n.start = m;
}
this.packInterleavedGeometry(p, g, h, l, m);
l += p.vertexData.length / 2 * i;
m += p.indices.length;
n.blend = r;
}
if (c < d) {
n.size = m - n.start;
++k;
}
this._dcIndex = k;
this._aIndex = l;
this._iIndex = m;
};
b.prototype.bindAndClearTexArray = function (a) {
for (var b = this.renderer.texture, c = 0; c < a.count; c++) {
b.bind(a.elements[c], a.ids[c]);
a.elements[c] = null;
}
a.count = 0;
};
b.prototype.updateGeometry = function () {
var a = this;
var b = a._packedGeometries;
var c = a._attributeBuffer;
var d = a._indexBuffer;
if (Fa.CAN_UPLOAD_SAME_BUFFER) {
b[this._flushId]._buffer.update(c.rawBinaryData);
b[this._flushId]._indexBuffer.update(d);
this.renderer.geometry.updateBuffers();
} else {
if (this._packedGeometryPoolSize <= this._flushId) {
this._packedGeometryPoolSize++;
b[this._flushId] = new this.geometryClass();
}
b[this._flushId]._buffer.update(c.rawBinaryData);
b[this._flushId]._indexBuffer.update(d);
this.renderer.geometry.bind(b[this._flushId]);
this.renderer.geometry.updateBuffers();
this._flushId++;
}
};
b.prototype.drawBatches = function () {
for (var a = this._dcIndex, c = this.renderer, d = c.gl, e = c.state, f = b._drawCallPool, g = null, h = 0; h < a; h++) {
var i = f[h];
var j = i.texArray;
var k = i.type;
var l = i.size;
var m = i.start;
var n = i.blend;
if (g !== j) {
g = j;
this.bindAndClearTexArray(j);
}
this.state.blendMode = n;
e.set(this.state);
d.drawElements(k, l, d.UNSIGNED_SHORT, m * 2);
}
};
b.prototype.flush = function () {
if (this._vertexCount !== 0) {
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;
}
};
b.prototype.start = function () {
this.renderer.state.set(this.state);
this.renderer.texture.ensureSamplerType(this.MAX_TEXTURES);
this.renderer.shader.bind(this._shader);
if (Fa.CAN_UPLOAD_SAME_BUFFER) {
this.renderer.geometry.bind(this._packedGeometries[this._flushId]);
}
};
b.prototype.stop = function () {
this.flush();
};
b.prototype.destroy = function () {
for (var b = 0; b < this._packedGeometryPoolSize; b++) {
if (this._packedGeometries[b]) {
this._packedGeometries[b].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;
}
a.prototype.destroy.call(this);
};
b.prototype.getAttributeBuffer = function (a) {
var b = Xa(Math.ceil(a / 8));
var c = Za(b);
var d = b * 8;
if (this._aBuffers.length <= c) {
this._iBuffers.length = c + 1;
}
var e = this._aBuffers[d];
if (!e) {
this._aBuffers[d] = e = new we(d * this.vertexSize * 4);
}
return e;
};
b.prototype.getIndexBuffer = function (a) {
var b = Xa(Math.ceil(a / 12));
var c = Za(b);
var d = b * 12;
if (this._iBuffers.length <= c) {
this._iBuffers.length = c + 1;
}
var e = this._iBuffers[c];
if (!e) {
this._iBuffers[c] = e = new Uint16Array(d);
}
return e;
};
b.prototype.packInterleavedGeometry = function (a, b, c, d, e) {
for (var f = b.uint32View, g = b.float32View, h = d / this.vertexSize, i = a.uvs, j = a.indices, k = a.vertexData, l = a._texture.baseTexture._batchLocation, m = Math.min(a.worldAlpha, 1), n = m < 1 && a._texture.baseTexture.alphaMode ? Ua(a._tintRGB, m) : a._tintRGB + (m * 255 << 24), o = 0; o < k.length; o += 2) {
g[d++] = k[o];
g[d++] = k[o + 1];
g[d++] = i[o];
g[d++] = i[o + 1];
f[d++] = n;
g[d++] = l;
}
for (o = 0; o < j.length; o++) {
c[e++] = h + j[o];
}
};
b._drawCallPool = [];
b._textureArrayPool = [];
return b;
}(jd);
var ye = function () {
function a(a, b) {
this.vertexSrc = a;
this.fragTemplate = b;
this.programCache = {};
this.defaultGroupCache = {};
if (b.indexOf("%count%") < 0) {
throw new Error("Fragment template must contain \"%count%\".");
}
if (b.indexOf("%forloop%") < 0) {
throw new Error("Fragment template must contain \"%forloop%\".");
}
}
a.prototype.generateShader = function (a) {
if (!this.programCache[a]) {
for (var b = new Int32Array(a), c = 0; c < a; c++) {
b[c] = c;
}
this.defaultGroupCache[a] = ed.from({
uSamplers: b
}, true);
var d = this.fragTemplate;
d = (d = d.replace(/%count%/gi, "" + a)).replace(/%forloop%/gi, this.generateSampleSrc(a));
this.programCache[a] = new Od(this.vertexSrc, d);
}
var e = {
tint: new Float32Array([1, 1, 1, 1]),
translationMatrix: new wb(),
default: this.defaultGroupCache[a]
};
return new Pd(this.programCache[a], e);
};
a.prototype.generateSampleSrc = function (a) {
var b = "";
b += "\n";
b += "\n";
for (var c = 0; c < a; c++) {
if (c > 0) {
b += "\nelse ";
}
if (c < a - 1) {
b += "if(vTextureId < " + c + ".5)";
}
b += "\n{";
b += "\n\tcolor = texture2D(uSamplers[" + c + "], vTextureCoord);";
b += "\n}";
}
return (b += "\n") + "\n";
};
return a;
}();
var ze = function (a) {
function b(b) {
if (b === undefined) {
b = false;
}
var c = a.call(this) || this;
c._buffer = new Xc(null, b, false);
c._indexBuffer = new Xc(null, b, true);
c.addAttribute("aVertexPosition", c._buffer, 2, false, ta.FLOAT).addAttribute("aTextureCoord", c._buffer, 2, false, ta.FLOAT).addAttribute("aColor", c._buffer, 4, true, ta.UNSIGNED_BYTE).addAttribute("aTextureId", c._buffer, 1, true, ta.FLOAT).addIndex(c._indexBuffer);
return c;
}
wc(b, a);
return b;
}(ad);
var Ae = "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 Be = "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";
var Ce = function () {
function a() {}
a.create = function (a) {
var b = Object.assign({
vertex: Ae,
fragment: Be,
geometryClass: ze,
vertexSize: 6
}, a);
var c = b.vertex;
var d = b.fragment;
var e = b.vertexSize;
var f = b.geometryClass;
return function (a) {
function b(b) {
var g = a.call(this, b) || this;
g.shaderGenerator = new ye(c, d);
g.geometryClass = f;
g.vertexSize = e;
return g;
}
wc(b, a);
return b;
}(xe);
};
Object.defineProperty(a, "defaultVertexSrc", {
get: function () {
return Ae;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "defaultFragmentTemplate", {
get: function () {
return Be;
},
enumerable: false,
configurable: true
});
return a;
}();
var De = Ce.create();
var Ee = {};
function Fe(a) {
Object.defineProperty(Ee, a, {
get: function () {
db("6.0.0", "PIXI.systems." + a + " has moved to PIXI." + a);
return Lc[a];
}
});
}
for (var Ge in Lc) {
Fe(Ge);
}
var He = {};
function Ie(a) {
Object.defineProperty(He, a, {
get: function () {
db("6.0.0", "PIXI.resources." + a + " has moved to PIXI." + a);
return ne[a];
}
});
}
for (var Ge in ne) {
Ie(Ge);
}
var Je = function () {
function a(b) {
var c = this;
this.stage = new dc();
b = Object.assign({
forceCanvas: false
}, b);
this.renderer = function (a) {
return se.create(a);
}(b);
a._plugins.forEach(function (a) {
a.init.call(c, b);
});
}
a.registerPlugin = function (b) {
a._plugins.push(b);
};
a.prototype.render = function () {
this.renderer.render(this.stage);
};
Object.defineProperty(a.prototype, "view", {
get: function () {
return this.renderer.view;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "screen", {
get: function () {
return this.renderer.screen;
},
enumerable: false,
configurable: true
});
a.prototype.destroy = function (b, c) {
var d = this;
var e = a._plugins.slice(0);
e.reverse();
e.forEach(function (a) {
a.destroy.call(d);
});
this.stage.destroy(c);
this.stage = null;
this.renderer.destroy(b);
this.renderer = null;
};
a._plugins = [];
return a;
}();
var Ke = function () {
function a() {}
a.init = function (a) {
var b = this;
Object.defineProperty(this, "resizeTo", {
set: function (a) {
globalThis.removeEventListener("resize", this.queueResize);
this._resizeTo = a;
if (a) {
globalThis.addEventListener("resize", this.queueResize);
this.resize();
}
},
get: function () {
return this._resizeTo;
}
});
this.queueResize = function () {
if (b._resizeTo) {
b.cancelResize();
b._resizeId = requestAnimationFrame(function () {
return b.resize();
});
}
};
this.cancelResize = function () {
if (b._resizeId) {
cancelAnimationFrame(b._resizeId);
b._resizeId = null;
}
};
this.resize = function () {
if (b._resizeTo) {
var a;
var c;
b.cancelResize();
if (b._resizeTo === globalThis.window) {
a = globalThis.innerWidth;
c = globalThis.innerHeight;
} else {
var d = b._resizeTo;
a = d.clientWidth;
c = d.clientHeight;
}
b.renderer.resize(a, c);
}
};
this._resizeId = null;
this._resizeTo = null;
this.resizeTo = a.resizeTo || null;
};
a.destroy = function () {
globalThis.removeEventListener("resize", this.queueResize);
this.cancelResize();
this.cancelResize = null;
this.queueResize = null;
this.resizeTo = null;
this.resize = null;
};
return a;
}();
Je.registerPlugin(Ke);
var Le = new qb();
var Me = function () {
function a(a) {
this.renderer = a;
}
a.prototype.image = function (a, b, c) {
var d = new Image();
d.src = this.base64(a, b, c);
return d;
};
a.prototype.base64 = function (a, b, c) {
return this.canvas(a).toDataURL(b, c);
};
a.prototype.canvas = function (b) {
var c;
var d;
var e;
var f = this.renderer;
var g = false;
var h = false;
if (b) {
if (b instanceof Tc) {
e = b;
} else {
e = this.renderer.generateTexture(b);
h = true;
}
}
if (e) {
c = e.baseTexture.resolution;
d = e.frame;
g = false;
f.renderTexture.bind(e);
} else {
c = this.renderer.resolution;
g = true;
(d = Le).width = this.renderer.width;
d.height = this.renderer.height;
f.renderTexture.bind(null);
}
var i = Math.floor(d.width * c + 0.0001);
var j = Math.floor(d.height * c + 0.0001);
var k = new ib(i, j, 1);
var l = new Uint8Array(i * 4 * j);
var m = f.gl;
m.readPixels(d.x * c, d.y * c, i, j, m.RGBA, m.UNSIGNED_BYTE, l);
var n = k.context.getImageData(0, 0, i, j);
a.arrayPostDivide(l, n.data);
k.context.putImageData(n, 0, 0);
if (g) {
var o = new ib(k.width, k.height, 1);
o.context.scale(1, -1);
o.context.drawImage(k.canvas, 0, -j);
k.destroy();
k = o;
}
if (h) {
e.destroy(true);
}
return k.canvas;
};
a.prototype.pixels = function (b) {
var c;
var d;
var e;
var f = this.renderer;
var g = false;
if (b) {
if (b instanceof Tc) {
e = b;
} else {
e = this.renderer.generateTexture(b);
g = true;
}
}
if (e) {
c = e.baseTexture.resolution;
d = e.frame;
f.renderTexture.bind(e);
} else {
c = f.resolution;
(d = Le).width = f.width;
d.height = f.height;
f.renderTexture.bind(null);
}
var h = d.width * c;
var i = d.height * c;
var j = new Uint8Array(h * 4 * i);
var k = f.gl;
k.readPixels(d.x * c, d.y * c, h, i, k.RGBA, k.UNSIGNED_BYTE, j);
if (g) {
e.destroy(true);
}
a.arrayPostDivide(j, j);
return j;
};
a.prototype.destroy = function () {
this.renderer = null;
};
a.arrayPostDivide = function (a, b) {
for (var c = 0; c < a.length; c += 4) {
var d = b[c + 3] = a[c + 3];
if (d !== 0) {
b[c] = Math.round(Math.min(a[c] * 255 / d, 255));
b[c + 1] = Math.round(Math.min(a[c + 1] * 255 / d, 255));
b[c + 2] = Math.round(Math.min(a[c + 2] * 255 / d, 255));
} else {
b[c] = a[c];
b[c + 1] = a[c + 1];
b[c + 2] = a[c + 2];
}
}
};
return a;
}();
var Ne = function () {
function a(a, b, c) {
if (b === undefined) {
b = false;
}
this._fn = a;
this._once = b;
this._thisArg = c;
this._next = this._prev = this._owner = null;
}
a.prototype.detach = function () {
return this._owner !== null && (this._owner.detach(this), true);
};
return a;
}();
function Oe(a, b) {
if (a._head) {
a._tail._next = b;
b._prev = a._tail;
a._tail = b;
} else {
a._head = b;
a._tail = b;
}
b._owner = a;
return b;
}
var Pe;
var Qe = function () {
function a() {
this._head = this._tail = undefined;
}
a.prototype.handlers = function (a) {
if (a === undefined) {
a = false;
}
var b = this._head;
if (a) {
return !!b;
}
for (var c = []; b;) {
c.push(b);
b = b._next;
}
return c;
};
a.prototype.has = function (a) {
if (!(a instanceof Ne)) {
throw new Error("MiniSignal#has(): First arg must be a SignalBinding object.");
}
return a._owner === this;
};
a.prototype.dispatch = function () {
for (var a = arguments, b = [], c = 0; c < arguments.length; c++) {
b[c] = a[c];
}
var d = this._head;
if (!d) {
return false;
}
while (d) {
if (d._once) {
this.detach(d);
}
d._fn.apply(d._thisArg, b);
d = d._next;
}
return true;
};
a.prototype.add = function (a, b) {
if (b === undefined) {
b = null;
}
if (typeof a != "function") {
throw new Error("MiniSignal#add(): First arg must be a Function.");
}
return Oe(this, new Ne(a, false, b));
};
a.prototype.once = function (a, b) {
if (b === undefined) {
b = null;
}
if (typeof a != "function") {
throw new Error("MiniSignal#once(): First arg must be a Function.");
}
return Oe(this, new Ne(a, true, b));
};
a.prototype.detach = function (a) {
if (!(a instanceof Ne)) {
throw new Error("MiniSignal#detach(): First arg must be a SignalBinding object.");
}
if (a._owner === this) {
if (a._prev) {
a._prev._next = a._next;
}
if (a._next) {
a._next._prev = a._prev;
}
if (a === this._head) {
this._head = a._next;
if (a._next === null) {
this._tail = null;
}
} else if (a === this._tail) {
this._tail = a._prev;
this._tail._next = null;
}
a._owner = null;
}
return this;
};
a.prototype.detachAll = function () {
var a = this._head;
if (!a) {
return this;
}
for (this._head = this._tail = null; a;) {
a._owner = null;
a = a._next;
}
return this;
};
return a;
}();
function Re(a, b) {
b = b || {};
for (var c = {
key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
}, d = c.parser[b.strictMode ? "strict" : "loose"].exec(a), e = {}, f = 14; f--;) {
e[c.key[f]] = d[f] || "";
}
e[c.q.name] = {};
e[c.key[12]].replace(c.q.parser, function (a, b, d) {
if (b) {
e[c.q.name][b] = d;
}
});
return e;
}
var Se = null;
function Te() {}
function Ue(a, b, c) {
if (b && b.indexOf(".") === 0) {
b = b.substring(1);
}
if (b) {
a[b] = c;
}
}
function Ve(a) {
return a.toString().replace("object ", "");
}
var We = function () {
function a(b, c, d) {
this._dequeue = Te;
this._onLoadBinding = null;
this._elementTimer = 0;
this._boundComplete = null;
this._boundOnError = null;
this._boundOnProgress = null;
this._boundOnTimeout = null;
this._boundXhrOnError = null;
this._boundXhrOnTimeout = null;
this._boundXhrOnAbort = null;
this._boundXhrOnLoad = null;
if (typeof b != "string" || typeof c != "string") {
throw new Error("Both name and url are required for constructing a resource.");
}
d = d || {};
this._flags = 0;
this._setFlag(a.STATUS_FLAGS.DATA_URL, c.indexOf("data:") === 0);
this.name = b;
this.url = c;
this.extension = this._getExtension();
this.data = null;
this.crossOrigin = d.crossOrigin === true ? "anonymous" : d.crossOrigin;
this.timeout = d.timeout || 0;
this.loadType = d.loadType || this._determineLoadType();
this.xhrType = d.xhrType;
this.metadata = d.metadata || {};
this.error = null;
this.xhr = null;
this.children = [];
this.type = a.TYPE.UNKNOWN;
this.progressChunk = 0;
this._dequeue = Te;
this._onLoadBinding = null;
this._elementTimer = 0;
this._boundComplete = this.complete.bind(this);
this._boundOnError = this._onError.bind(this);
this._boundOnProgress = this._onProgress.bind(this);
this._boundOnTimeout = this._onTimeout.bind(this);
this._boundXhrOnError = this._xhrOnError.bind(this);
this._boundXhrOnTimeout = this._xhrOnTimeout.bind(this);
this._boundXhrOnAbort = this._xhrOnAbort.bind(this);
this._boundXhrOnLoad = this._xhrOnLoad.bind(this);
this.onStart = new Qe();
this.onProgress = new Qe();
this.onComplete = new Qe();
this.onAfterMiddleware = new Qe();
}
a.setExtensionLoadType = function (b, c) {
Ue(a._loadTypeMap, b, c);
};
a.setExtensionXhrType = function (b, c) {
Ue(a._xhrTypeMap, b, c);
};
Object.defineProperty(a.prototype, "isDataUrl", {
get: function () {
return this._hasFlag(a.STATUS_FLAGS.DATA_URL);
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "isComplete", {
get: function () {
return this._hasFlag(a.STATUS_FLAGS.COMPLETE);
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "isLoading", {
get: function () {
return this._hasFlag(a.STATUS_FLAGS.LOADING);
},
enumerable: false,
configurable: true
});
a.prototype.complete = function () {
this._clearEvents();
this._finish();
};
a.prototype.abort = function (b) {
if (!this.error) {
this.error = new Error(b);
this._clearEvents();
if (this.xhr) {
this.xhr.abort();
} else if (this.xdr) {
this.xdr.abort();
} else if (this.data) {
if (this.data.src) {
this.data.src = a.EMPTY_GIF;
} else {
while (this.data.firstChild) {
this.data.removeChild(this.data.firstChild);
}
}
}
this._finish();
}
};
a.prototype.load = function (b) {
var c = this;
if (!this.isLoading) {
if (this.isComplete) {
if (b) {
setTimeout(function () {
return b(c);
}, 1);
}
} else {
if (b) {
this.onComplete.once(b);
}
this._setFlag(a.STATUS_FLAGS.LOADING, true);
this.onStart.dispatch(this);
if (this.crossOrigin === false || typeof this.crossOrigin != "string") {
this.crossOrigin = this._determineCrossOrigin(this.url);
}
switch (this.loadType) {
case a.LOAD_TYPE.IMAGE:
this.type = a.TYPE.IMAGE;
this._loadElement("image");
break;
case a.LOAD_TYPE.AUDIO:
this.type = a.TYPE.AUDIO;
this._loadSourceElement("audio");
break;
case a.LOAD_TYPE.VIDEO:
this.type = a.TYPE.VIDEO;
this._loadSourceElement("video");
break;
case a.LOAD_TYPE.XHR:
default:
if (Pe === undefined) {
Pe = !!globalThis.XDomainRequest && !("withCredentials" in new XMLHttpRequest());
}
if (Pe && this.crossOrigin) {
this._loadXdr();
} else {
this._loadXhr();
}
}
}
}
};
a.prototype._hasFlag = function (a) {
return (this._flags & a) != 0;
};
a.prototype._setFlag = function (a, b) {
this._flags = b ? this._flags | a : this._flags & ~a;
};
a.prototype._clearEvents = function () {
clearTimeout(this._elementTimer);
if (this.data && this.data.removeEventListener) {
this.data.removeEventListener("error", this._boundOnError, false);
this.data.removeEventListener("load", this._boundComplete, false);
this.data.removeEventListener("progress", this._boundOnProgress, false);
this.data.removeEventListener("canplaythrough", this._boundComplete, false);
}
if (this.xhr) {
if (this.xhr.removeEventListener) {
this.xhr.removeEventListener("error", this._boundXhrOnError, false);
this.xhr.removeEventListener("timeout", this._boundXhrOnTimeout, false);
this.xhr.removeEventListener("abort", this._boundXhrOnAbort, false);
this.xhr.removeEventListener("progress", this._boundOnProgress, false);
this.xhr.removeEventListener("load", this._boundXhrOnLoad, false);
} else {
this.xhr.onerror = null;
this.xhr.ontimeout = null;
this.xhr.onprogress = null;
this.xhr.onload = null;
}
}
};
a.prototype._finish = function () {
if (this.isComplete) {
throw new Error("Complete called again for an already completed resource.");
}
this._setFlag(a.STATUS_FLAGS.COMPLETE, true);
this._setFlag(a.STATUS_FLAGS.LOADING, false);
this.onComplete.dispatch(this);
};
a.prototype._loadElement = function (a) {
if (this.metadata.loadElement) {
this.data = this.metadata.loadElement;
} else if (a === "image" && globalThis.Image !== undefined) {
this.data = new Image();
} else {
this.data = document.createElement(a);
}
if (this.crossOrigin) {
this.data.crossOrigin = this.crossOrigin;
}
if (!this.metadata.skipSource) {
this.data.src = this.url;
}
this.data.addEventListener("error", this._boundOnError, false);
this.data.addEventListener("load", this._boundComplete, false);
this.data.addEventListener("progress", this._boundOnProgress, false);
if (this.timeout) {
this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout);
}
};
a.prototype._loadSourceElement = function (a) {
if (this.metadata.loadElement) {
this.data = this.metadata.loadElement;
} else if (a === "audio" && globalThis.Audio !== undefined) {
this.data = new Audio();
} else {
this.data = document.createElement(a);
}
if (this.data !== null) {
if (this.crossOrigin) {
this.data.crossOrigin = this.crossOrigin;
}
if (!this.metadata.skipSource) {
if (navigator.isCocoonJS) {
this.data.src = Array.isArray(this.url) ? this.url[0] : this.url;
} else if (Array.isArray(this.url)) {
for (var b = this.metadata.mimeType, c = 0; c < this.url.length; ++c) {
this.data.appendChild(this._createSource(a, this.url[c], Array.isArray(b) ? b[c] : b));
}
} else {
b = this.metadata.mimeType;
this.data.appendChild(this._createSource(a, this.url, Array.isArray(b) ? b[0] : b));
}
}
this.data.addEventListener("error", this._boundOnError, false);
this.data.addEventListener("load", this._boundComplete, false);
this.data.addEventListener("progress", this._boundOnProgress, false);
this.data.addEventListener("canplaythrough", this._boundComplete, false);
this.data.load();
if (this.timeout) {
this._elementTimer = setTimeout(this._boundOnTimeout, this.timeout);
}
} else {
this.abort("Unsupported element: " + a);
}
};
a.prototype._loadXhr = function () {
if (typeof this.xhrType != "string") {
this.xhrType = this._determineXhrType();
}
var b = this.xhr = new XMLHttpRequest();
if (this.crossOrigin === "use-credentials") {
b.withCredentials = true;
}
b.open("GET", this.url, true);
b.timeout = this.timeout;
if (this.xhrType === a.XHR_RESPONSE_TYPE.JSON || this.xhrType === a.XHR_RESPONSE_TYPE.DOCUMENT) {
b.responseType = a.XHR_RESPONSE_TYPE.TEXT;
} else {
b.responseType = this.xhrType;
}
b.addEventListener("error", this._boundXhrOnError, false);
b.addEventListener("timeout", this._boundXhrOnTimeout, false);
b.addEventListener("abort", this._boundXhrOnAbort, false);
b.addEventListener("progress", this._boundOnProgress, false);
b.addEventListener("load", this._boundXhrOnLoad, false);
b.send();
};
a.prototype._loadXdr = function () {
if (typeof this.xhrType != "string") {
this.xhrType = this._determineXhrType();
}
var a = this.xhr = new globalThis.XDomainRequest();
a.timeout = this.timeout || 5000;
a.onerror = this._boundXhrOnError;
a.ontimeout = this._boundXhrOnTimeout;
a.onprogress = this._boundOnProgress;
a.onload = this._boundXhrOnLoad;
a.open("GET", this.url, true);
setTimeout(function () {
return a.send();
}, 1);
};
a.prototype._createSource = function (a, b, c) {
c ||= a + "/" + this._getExtension(b);
var d = document.createElement("source");
d.src = b;
d.type = c;
return d;
};
a.prototype._onError = function (a) {
this.abort("Failed to load element using: " + a.target.nodeName);
};
a.prototype._onProgress = function (a) {
if (a && a.lengthComputable) {
this.onProgress.dispatch(this, a.loaded / a.total);
}
};
a.prototype._onTimeout = function () {
this.abort("Load timed out.");
};
a.prototype._xhrOnError = function () {
var a = this.xhr;
this.abort(Ve(a) + " Request failed. Status: " + a.status + ", text: \"" + a.statusText + "\"");
};
a.prototype._xhrOnTimeout = function () {
var a = this.xhr;
this.abort(Ve(a) + " Request timed out.");
};
a.prototype._xhrOnAbort = function () {
var a = this.xhr;
this.abort(Ve(a) + " Request was aborted by the user.");
};
a.prototype._xhrOnLoad = function () {
var b = this.xhr;
var c = "";
var d = b.status === undefined ? 200 : b.status;
if (b.responseType === "" || b.responseType === "text" || b.responseType === undefined) {
c = b.responseText;
}
if (d === 0 && (c.length > 0 || b.responseType === a.XHR_RESPONSE_TYPE.BUFFER)) {
d = 200;
} else if (d === 1223) {
d = 204;
}
if ((d / 100 | 0) == 2) {
if (this.xhrType === a.XHR_RESPONSE_TYPE.TEXT) {
this.data = c;
this.type = a.TYPE.TEXT;
} else if (this.xhrType === a.XHR_RESPONSE_TYPE.JSON) {
try {
this.data = JSON.parse(c);
this.type = a.TYPE.JSON;
} catch (a) {
this.abort("Error trying to parse loaded json: " + a);
return;
}
} else if (this.xhrType === a.XHR_RESPONSE_TYPE.DOCUMENT) {
try {
if (globalThis.DOMParser) {
var e = new DOMParser();
this.data = e.parseFromString(c, "text/xml");
} else {
var f = document.createElement("div");
f.innerHTML = c;
this.data = f;
}
this.type = a.TYPE.XML;
} catch (a) {
this.abort("Error trying to parse loaded xml: " + a);
return;
}
} else {
this.data = b.response || c;
}
this.complete();
} else {
this.abort("[" + b.status + "] " + b.statusText + ": " + b.responseURL);
}
};
a.prototype._determineCrossOrigin = function (a, b) {
if (a.indexOf("data:") === 0) {
return "";
}
if (globalThis.origin !== globalThis.location.origin) {
return "anonymous";
}
b = b || globalThis.location;
Se ||= document.createElement("a");
Se.href = a;
var c = Re(Se.href, {
strictMode: true
});
var d = !c.port && b.port === "" || c.port === b.port;
var e = c.protocol ? c.protocol + ":" : "";
if (c.host === b.hostname && d && e === b.protocol) {
return "";
} else {
return "anonymous";
}
};
a.prototype._determineXhrType = function () {
return a._xhrTypeMap[this.extension] || a.XHR_RESPONSE_TYPE.TEXT;
};
a.prototype._determineLoadType = function () {
return a._loadTypeMap[this.extension] || a.LOAD_TYPE.XHR;
};
a.prototype._getExtension = function (a) {
if (a === undefined) {
a = this.url;
}
var b = "";
if (this.isDataUrl) {
var c = a.indexOf("/");
b = a.substring(c + 1, a.indexOf(";", c));
} else {
var d = a.indexOf("?");
var e = a.indexOf("#");
var f = Math.min(d > -1 ? d : a.length, e > -1 ? e : a.length);
b = (a = a.substring(0, f)).substring(a.lastIndexOf(".") + 1);
}
return b.toLowerCase();
};
a.prototype._getMimeFromXhrType = function (b) {
switch (b) {
case a.XHR_RESPONSE_TYPE.BUFFER:
return "application/octet-binary";
case a.XHR_RESPONSE_TYPE.BLOB:
return "application/blob";
case a.XHR_RESPONSE_TYPE.DOCUMENT:
return "application/xml";
case a.XHR_RESPONSE_TYPE.JSON:
return "application/json";
case a.XHR_RESPONSE_TYPE.DEFAULT:
case a.XHR_RESPONSE_TYPE.TEXT:
default:
return "text/plain";
}
};
return a;
}();
function Xe() {}
function Ye(a) {
return function () {
for (var b = arguments, c = [], d = 0; d < arguments.length; d++) {
c[d] = b[d];
}
if (a === null) {
throw new Error("Callback was already called.");
}
var e = a;
a = null;
e.apply(this, c);
};
}
(function (a) {
var b;
var c;
var d;
var e;
(b = a.STATUS_FLAGS ||= {})[b.NONE = 0] = "NONE";
b[b.DATA_URL = 1] = "DATA_URL";
b[b.COMPLETE = 2] = "COMPLETE";
b[b.LOADING = 4] = "LOADING";
(c = a.TYPE ||= {})[c.UNKNOWN = 0] = "UNKNOWN";
c[c.JSON = 1] = "JSON";
c[c.XML = 2] = "XML";
c[c.IMAGE = 3] = "IMAGE";
c[c.AUDIO = 4] = "AUDIO";
c[c.VIDEO = 5] = "VIDEO";
c[c.TEXT = 6] = "TEXT";
(d = a.LOAD_TYPE ||= {})[d.XHR = 1] = "XHR";
d[d.IMAGE = 2] = "IMAGE";
d[d.AUDIO = 3] = "AUDIO";
d[d.VIDEO = 4] = "VIDEO";
(e = a.XHR_RESPONSE_TYPE ||= {}).DEFAULT = "text";
e.BUFFER = "arraybuffer";
e.BLOB = "blob";
e.DOCUMENT = "document";
e.JSON = "json";
e.TEXT = "text";
a._loadTypeMap = {
gif: a.LOAD_TYPE.IMAGE,
png: a.LOAD_TYPE.IMAGE,
bmp: a.LOAD_TYPE.IMAGE,
jpg: a.LOAD_TYPE.IMAGE,
jpeg: a.LOAD_TYPE.IMAGE,
tif: a.LOAD_TYPE.IMAGE,
tiff: a.LOAD_TYPE.IMAGE,
webp: a.LOAD_TYPE.IMAGE,
tga: a.LOAD_TYPE.IMAGE,
svg: a.LOAD_TYPE.IMAGE,
"svg+xml": a.LOAD_TYPE.IMAGE,
mp3: a.LOAD_TYPE.AUDIO,
ogg: a.LOAD_TYPE.AUDIO,
wav: a.LOAD_TYPE.AUDIO,
mp4: a.LOAD_TYPE.VIDEO,
webm: a.LOAD_TYPE.VIDEO
};
a._xhrTypeMap = {
xhtml: a.XHR_RESPONSE_TYPE.DOCUMENT,
html: a.XHR_RESPONSE_TYPE.DOCUMENT,
htm: a.XHR_RESPONSE_TYPE.DOCUMENT,
xml: a.XHR_RESPONSE_TYPE.DOCUMENT,
tmx: a.XHR_RESPONSE_TYPE.DOCUMENT,
svg: a.XHR_RESPONSE_TYPE.DOCUMENT,
tsx: a.XHR_RESPONSE_TYPE.DOCUMENT,
gif: a.XHR_RESPONSE_TYPE.BLOB,
png: a.XHR_RESPONSE_TYPE.BLOB,
bmp: a.XHR_RESPONSE_TYPE.BLOB,
jpg: a.XHR_RESPONSE_TYPE.BLOB,
jpeg: a.XHR_RESPONSE_TYPE.BLOB,
tif: a.XHR_RESPONSE_TYPE.BLOB,
tiff: a.XHR_RESPONSE_TYPE.BLOB,
webp: a.XHR_RESPONSE_TYPE.BLOB,
tga: a.XHR_RESPONSE_TYPE.BLOB,
json: a.XHR_RESPONSE_TYPE.JSON,
text: a.XHR_RESPONSE_TYPE.TEXT,
txt: a.XHR_RESPONSE_TYPE.TEXT,
ttf: a.XHR_RESPONSE_TYPE.BUFFER,
otf: a.XHR_RESPONSE_TYPE.BUFFER
};
a.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==";
})(We ||= {});
function Ze(a, b) {
this.data = a;
this.callback = b;
}
var $e = function () {
function a(a, b) {
var c = this;
if (b === undefined) {
b = 1;
}
this.workers = 0;
this.saturated = Xe;
this.unsaturated = Xe;
this.empty = Xe;
this.drain = Xe;
this.error = Xe;
this.started = false;
this.paused = false;
this._tasks = [];
this._insert = function (a, b, d) {
if (d && typeof d != "function") {
throw new Error("task callback must be a function");
}
c.started = true;
if (a == null && c.idle()) {
setTimeout(function () {
return c.drain();
}, 1);
} else {
var e = new Ze(a, typeof d == "function" ? d : Xe);
if (b) {
c._tasks.unshift(e);
} else {
c._tasks.push(e);
}
setTimeout(c.process, 1);
}
};
this.process = function () {
while (!c.paused && c.workers < c.concurrency && c._tasks.length) {
var a = c._tasks.shift();
if (c._tasks.length === 0) {
c.empty();
}
c.workers += 1;
if (c.workers === c.concurrency) {
c.saturated();
}
c._worker(a.data, Ye(c._next(a)));
}
};
this._worker = a;
if (b === 0) {
throw new Error("Concurrency must not be zero");
}
this.concurrency = b;
this.buffer = b / 4;
}
a.prototype._next = function (a) {
var b = this;
return function () {
for (var c = arguments, d = [], e = 0; e < arguments.length; e++) {
d[e] = c[e];
}
b.workers -= 1;
a.callback.apply(a, d);
if (d[0] != null) {
b.error(d[0], a.data);
}
if (b.workers <= b.concurrency - b.buffer) {
b.unsaturated();
}
if (b.idle()) {
b.drain();
}
b.process();
};
};
a.prototype.push = function (a, b) {
this._insert(a, false, b);
};
a.prototype.kill = function () {
this.workers = 0;
this.drain = Xe;
this.started = false;
this._tasks = [];
};
a.prototype.unshift = function (a, b) {
this._insert(a, true, b);
};
a.prototype.length = function () {
return this._tasks.length;
};
a.prototype.running = function () {
return this.workers;
};
a.prototype.idle = function () {
return this._tasks.length + this.workers === 0;
};
a.prototype.pause = function () {
if (this.paused !== true) {
this.paused = true;
}
};
a.prototype.resume = function () {
if (this.paused !== false) {
this.paused = false;
for (var a = 1; a <= this.concurrency; a++) {
this.process();
}
}
};
a.eachSeries = function (a, b, c, d) {
var e = 0;
var f = a.length;
(function h(g) {
if (g || e === f) {
if (c) {
c(g);
}
} else if (d) {
setTimeout(function () {
b(a[e++], h);
}, 1);
} else {
b(a[e++], h);
}
})();
};
a.queue = function (b, c) {
return new a(b, c);
};
return a;
}();
var _e = /(#[\w-]+)?$/;
var af = function () {
function a(b, c) {
var d = this;
if (b === undefined) {
b = "";
}
if (c === undefined) {
c = 10;
}
this.progress = 0;
this.loading = false;
this.defaultQueryString = "";
this._beforeMiddleware = [];
this._afterMiddleware = [];
this._resourcesParsing = [];
this._boundLoadResource = function (a, b) {
return d._loadResource(a, b);
};
this.resources = {};
this.baseUrl = b;
this._beforeMiddleware = [];
this._afterMiddleware = [];
this._resourcesParsing = [];
this._boundLoadResource = function (a, b) {
return d._loadResource(a, b);
};
this._queue = $e.queue(this._boundLoadResource, c);
this._queue.pause();
this.resources = {};
this.onProgress = new Qe();
this.onError = new Qe();
this.onLoad = new Qe();
this.onStart = new Qe();
this.onComplete = new Qe();
for (var e = 0; e < a._plugins.length; ++e) {
var f = a._plugins[e];
var g = f.pre;
var h = f.use;
if (g) {
this.pre(g);
}
if (h) {
this.use(h);
}
}
this._protected = false;
}
a.prototype._add = function (a, b, c, d) {
if (this.loading && (!c || !c.parentResource)) {
throw new Error("Cannot add resources while the loader is running.");
}
if (this.resources[a]) {
throw new Error("Resource named \"" + a + "\" already exists.");
}
b = this._prepareUrl(b);
this.resources[a] = new We(a, b, c);
if (typeof d == "function") {
this.resources[a].onAfterMiddleware.once(d);
}
if (this.loading) {
for (var e = c.parentResource, f = [], g = 0; g < e.children.length; ++g) {
if (!e.children[g].isComplete) {
f.push(e.children[g]);
}
}
var h = e.progressChunk * (f.length + 1) / (f.length + 2);
e.children.push(this.resources[a]);
e.progressChunk = h;
g = 0;
for (; g < f.length; ++g) {
f[g].progressChunk = h;
}
this.resources[a].progressChunk = h;
}
this._queue.push(this.resources[a]);
return this;
};
a.prototype.pre = function (a) {
this._beforeMiddleware.push(a);
return this;
};
a.prototype.use = function (a) {
this._afterMiddleware.push(a);
return this;
};
a.prototype.reset = function () {
this.progress = 0;
this.loading = false;
this._queue.kill();
this._queue.pause();
for (var a in this.resources) {
var b = this.resources[a];
if (b._onLoadBinding) {
b._onLoadBinding.detach();
}
if (b.isLoading) {
b.abort("loader reset");
}
}
this.resources = {};
return this;
};
a.prototype.load = function (a) {
if (typeof a == "function") {
this.onComplete.once(a);
}
if (this.loading) {
return this;
}
if (this._queue.idle()) {
this._onStart();
this._onComplete();
} else {
for (var b = 100 / this._queue._tasks.length, c = 0; c < this._queue._tasks.length; ++c) {
this._queue._tasks[c].data.progressChunk = b;
}
this._onStart();
this._queue.resume();
}
return this;
};
Object.defineProperty(a.prototype, "concurrency", {
get: function () {
return this._queue.concurrency;
},
set: function (a) {
this._queue.concurrency = a;
},
enumerable: false,
configurable: true
});
a.prototype._prepareUrl = function (a) {
var b;
var c = Re(a, {
strictMode: true
});
b = c.protocol || !c.path || a.indexOf("//") === 0 ? a : this.baseUrl.length && this.baseUrl.lastIndexOf("/") !== this.baseUrl.length - 1 && a.charAt(0) !== "/" ? this.baseUrl + "/" + a : this.baseUrl + a;
if (this.defaultQueryString) {
var d = _e.exec(b)[0];
if ((b = b.slice(0, b.length - d.length)).indexOf("?") !== -1) {
b += "&" + this.defaultQueryString;
} else {
b += "?" + this.defaultQueryString;
}
b += d;
}
return b;
};
a.prototype._loadResource = function (a, b) {
var c = this;
a._dequeue = b;
$e.eachSeries(this._beforeMiddleware, function (b, d) {
b.call(c, a, function () {
d(a.isComplete ? {} : null);
});
}, function () {
if (a.isComplete) {
c._onLoad(a);
} else {
a._onLoadBinding = a.onComplete.once(c._onLoad, c);
a.load();
}
}, true);
};
a.prototype._onStart = function () {
this.progress = 0;
this.loading = true;
this.onStart.dispatch(this);
};
a.prototype._onComplete = function () {
this.progress = 100;
this.loading = false;
this.onComplete.dispatch(this, this.resources);
};
a.prototype._onLoad = function (a) {
var b = this;
a._onLoadBinding = null;
this._resourcesParsing.push(a);
a._dequeue();
$e.eachSeries(this._afterMiddleware, function (c, d) {
c.call(b, a, d);
}, function () {
a.onAfterMiddleware.dispatch(a);
b.progress = Math.min(100, b.progress + a.progressChunk);
b.onProgress.dispatch(b, a);
if (a.error) {
b.onError.dispatch(a.error, b, a);
} else {
b.onLoad.dispatch(b, a);
}
b._resourcesParsing.splice(b._resourcesParsing.indexOf(a), 1);
if (b._queue.idle() && b._resourcesParsing.length === 0) {
b._onComplete();
}
}, true);
};
a.prototype.destroy = function () {
if (!this._protected) {
this.reset();
}
};
Object.defineProperty(a, "shared", {
get: function () {
var b = a._shared;
if (!b) {
(b = new a())._protected = true;
a._shared = b;
}
return b;
},
enumerable: false,
configurable: true
});
a.registerPlugin = function (b) {
a._plugins.push(b);
if (b.add) {
b.add();
}
return a;
};
a._plugins = [];
return a;
}();
af.prototype.add = function (a, b, c, d) {
if (Array.isArray(a)) {
for (var e = 0; e < a.length; ++e) {
this.add(a[e]);
}
return this;
}
if (typeof a == "object") {
c = a;
d = b || c.callback || c.onComplete;
b = c.url;
a = c.name || c.key || c.url;
}
if (typeof b != "string") {
d = c;
c = b;
b = a;
}
if (typeof b != "string") {
throw new Error("No url passed to add resource to loader.");
}
if (typeof c == "function") {
d = c;
c = null;
}
return this._add(a, b, c, d);
};
var bf;
var cf;
var df = function () {
function a() {}
a.init = function (a) {
a = Object.assign({
sharedLoader: false
}, a);
this.loader = a.sharedLoader ? af.shared : new af();
};
a.destroy = function () {
if (this.loader) {
this.loader.destroy();
this.loader = null;
}
};
return a;
}();
var ef = function () {
function a() {}
a.add = function () {
We.setExtensionLoadType("svg", We.LOAD_TYPE.XHR);
We.setExtensionXhrType("svg", We.XHR_RESPONSE_TYPE.TEXT);
};
a.use = function (a, b) {
if (!a.data || a.type !== We.TYPE.IMAGE && a.extension !== "svg") {
b();
} else {
var c = a.data;
var d = a.url;
var e = a.name;
var f = a.metadata;
Sc.fromLoader(c, d, e, f).then(function (c) {
a.texture = c;
b();
}).catch(b);
}
};
return a;
}();
af.registerPlugin({
use: function (a, b) {
if (a.data) {
if (a.xhr && a.xhrType === We.XHR_RESPONSE_TYPE.BLOB) {
if (self.Blob && typeof a.data != "string") {
if (a.data.type.indexOf("image") === 0) {
var c = globalThis.URL || globalThis.webkitURL;
var d = c.createObjectURL(a.data);
a.blob = a.data;
a.data = new Image();
a.data.src = d;
a.type = We.TYPE.IMAGE;
a.data.onload = function () {
c.revokeObjectURL(d);
a.data.onload = null;
b();
};
return;
}
} else {
var e = a.xhr.getResponseHeader("content-type");
if (e && e.indexOf("image") === 0) {
a.data = new Image();
a.data.src = "data:" + e + ";base64," + function (a) {
for (var b = "", c = 0; c < a.length;) {
for (var d = [0, 0, 0], e = [0, 0, 0, 0], f = 0; f < d.length; ++f) {
if (c < a.length) {
d[f] = a.charCodeAt(c++) & 255;
} else {
d[f] = 0;
}
}
e[0] = d[0] >> 2;
e[1] = (d[0] & 3) << 4 | d[1] >> 4;
e[2] = (d[1] & 15) << 2 | d[2] >> 6;
e[3] = d[2] & 63;
switch (c - (a.length - 1)) {
case 2:
e[3] = 64;
e[2] = 64;
break;
case 1:
e[3] = 64;
}
for (f = 0; f < e.length; ++f) {
b += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(e[f]);
}
}
return b;
}(a.xhr.responseText);
a.type = We.TYPE.IMAGE;
a.data.onload = function () {
a.data.onload = null;
b();
};
return;
}
}
}
b();
} else {
b();
}
}
});
af.registerPlugin(ef);
(function (a) {
a[a.COMPRESSED_RGB_S3TC_DXT1_EXT = 33776] = "COMPRESSED_RGB_S3TC_DXT1_EXT";
a[a.COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777] = "COMPRESSED_RGBA_S3TC_DXT1_EXT";
a[a.COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778] = "COMPRESSED_RGBA_S3TC_DXT3_EXT";
a[a.COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779] = "COMPRESSED_RGBA_S3TC_DXT5_EXT";
a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 35917] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT";
a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 35918] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT";
a[a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 35919] = "COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT";
a[a.COMPRESSED_SRGB_S3TC_DXT1_EXT = 35916] = "COMPRESSED_SRGB_S3TC_DXT1_EXT";
a[a.COMPRESSED_R11_EAC = 37488] = "COMPRESSED_R11_EAC";
a[a.COMPRESSED_SIGNED_R11_EAC = 37489] = "COMPRESSED_SIGNED_R11_EAC";
a[a.COMPRESSED_RG11_EAC = 37490] = "COMPRESSED_RG11_EAC";
a[a.COMPRESSED_SIGNED_RG11_EAC = 37491] = "COMPRESSED_SIGNED_RG11_EAC";
a[a.COMPRESSED_RGB8_ETC2 = 37492] = "COMPRESSED_RGB8_ETC2";
a[a.COMPRESSED_RGBA8_ETC2_EAC = 37496] = "COMPRESSED_RGBA8_ETC2_EAC";
a[a.COMPRESSED_SRGB8_ETC2 = 37493] = "COMPRESSED_SRGB8_ETC2";
a[a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497] = "COMPRESSED_SRGB8_ALPHA8_ETC2_EAC";
a[a.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494] = "COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2";
a[a.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495] = "COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2";
a[a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840] = "COMPRESSED_RGB_PVRTC_4BPPV1_IMG";
a[a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842] = "COMPRESSED_RGBA_PVRTC_4BPPV1_IMG";
a[a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841] = "COMPRESSED_RGB_PVRTC_2BPPV1_IMG";
a[a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843] = "COMPRESSED_RGBA_PVRTC_2BPPV1_IMG";
a[a.COMPRESSED_RGB_ETC1_WEBGL = 36196] = "COMPRESSED_RGB_ETC1_WEBGL";
a[a.COMPRESSED_RGB_ATC_WEBGL = 35986] = "COMPRESSED_RGB_ATC_WEBGL";
a[a.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35986] = "COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL";
a[a.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798] = "COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL";
})(cf ||= {});
(bf = {})[cf.COMPRESSED_RGB_S3TC_DXT1_EXT] = 0.5;
bf[cf.COMPRESSED_RGBA_S3TC_DXT1_EXT] = 0.5;
bf[cf.COMPRESSED_RGBA_S3TC_DXT3_EXT] = 1;
bf[cf.COMPRESSED_RGBA_S3TC_DXT5_EXT] = 1;
bf[cf.COMPRESSED_SRGB_S3TC_DXT1_EXT] = 0.5;
bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT] = 0.5;
bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT] = 1;
bf[cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT] = 1;
bf[cf.COMPRESSED_R11_EAC] = 0.5;
bf[cf.COMPRESSED_SIGNED_R11_EAC] = 0.5;
bf[cf.COMPRESSED_RG11_EAC] = 1;
bf[cf.COMPRESSED_SIGNED_RG11_EAC] = 1;
bf[cf.COMPRESSED_RGB8_ETC2] = 0.5;
bf[cf.COMPRESSED_RGBA8_ETC2_EAC] = 1;
bf[cf.COMPRESSED_SRGB8_ETC2] = 0.5;
bf[cf.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC] = 1;
bf[cf.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 0.5;
bf[cf.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2] = 0.5;
bf[cf.COMPRESSED_RGB_PVRTC_4BPPV1_IMG] = 0.5;
bf[cf.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG] = 0.5;
bf[cf.COMPRESSED_RGB_PVRTC_2BPPV1_IMG] = 0.25;
bf[cf.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG] = 0.25;
bf[cf.COMPRESSED_RGB_ETC1_WEBGL] = 0.5;
bf[cf.COMPRESSED_RGB_ATC_WEBGL] = 0.5;
bf[cf.COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL] = 1;
bf[cf.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL] = 1;
var ff = bf;
function gf(a, b) {
gf = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return gf(a, b);
}
function hf(a, b) {
function c() {
this.constructor = a;
}
gf(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var jf;
var kf;
var lf = function (a) {
function b(b, c) {
if (c === undefined) {
c = {
width: 1,
height: 1,
autoLoad: true
};
}
var d;
var e;
var f = this;
if (typeof b == "string") {
d = b;
e = new Uint8Array();
} else {
d = null;
e = b;
}
(f = a.call(this, e, c) || this).origin = d;
f.buffer = e ? new we(e) : null;
if (f.origin && c.autoLoad !== false) {
f.load();
}
if (e && e.length) {
f.loaded = true;
f.onBlobLoaded(f.buffer.rawBinaryData);
}
return f;
}
hf(b, a);
b.prototype.onBlobLoaded = function (a) {};
b.prototype.load = function () {
a = this;
undefined;
c = function () {
var a;
return function (a, b) {
var c;
var d;
var e;
var f;
var g = {
label: 0,
sent: function () {
if (e[0] & 1) {
throw e[1];
}
return e[1];
},
trys: [],
ops: []
};
f = {
next: h(0),
throw: h(1),
return: h(2)
};
if (typeof Symbol == "function") {
f[Symbol.iterator] = function () {
return this;
};
}
return f;
function h(f) {
return function (h) {
return function (f) {
if (c) {
throw new TypeError("Generator is already executing.");
}
while (g) {
try {
c = 1;
if (d && (e = f[0] & 2 ? d.return : f[0] ? d.throw || ((e = d.return) && e.call(d), 0) : d.next) && !(e = e.call(d, f[1])).done) {
return e;
}
d = 0;
if (e) {
f = [f[0] & 2, e.value];
}
switch (f[0]) {
case 0:
case 1:
e = f;
break;
case 4:
g.label++;
return {
value: f[1],
done: false
};
case 5:
g.label++;
d = f[1];
f = [0];
continue;
case 7:
f = g.ops.pop();
g.trys.pop();
continue;
default:
if (!(e = (e = g.trys).length > 0 && e[e.length - 1]) && (f[0] === 6 || f[0] === 2)) {
g = 0;
continue;
}
if (f[0] === 3 && (!e || f[1] > e[0] && f[1] < e[3])) {
g.label = f[1];
break;
}
if (f[0] === 6 && g.label < e[1]) {
g.label = e[1];
e = f;
break;
}
if (e && g.label < e[2]) {
g.label = e[2];
g.ops.push(f);
break;
}
if (e[2]) {
g.ops.pop();
}
g.trys.pop();
continue;
}
f = b.call(a, g);
} catch (a) {
f = [6, a];
d = 0;
} finally {
c = e = 0;
}
}
if (f[0] & 5) {
throw f[1];
}
return {
value: f[0] ? f[1] : undefined,
done: true
};
}([f, h]);
};
}
}(this, function (b) {
switch (b.label) {
case 0:
return [4, fetch(this.origin)];
case 1:
return [4, b.sent().blob()];
case 2:
return [4, b.sent().arrayBuffer()];
case 3:
a = b.sent();
this.data = new Uint32Array(a);
this.buffer = new we(a);
this.loaded = true;
this.onBlobLoaded(a);
this.update();
return [2, this];
}
});
};
return new((b = Promise) || (b = Promise))(function (d, e) {
function f(a) {
try {
h(c.next(a));
} catch (a) {
e(a);
}
}
function g(a) {
try {
h(c.throw(a));
} catch (a) {
e(a);
}
}
function h(a) {
if (a.done) {
d(a.value);
} else {
new b(function (b) {
b(a.value);
}).then(f, g);
}
}
h((c = c.apply(a, [])).next());
});
var a;
var b;
var c;
};
return b;
}(zc);
var mf = function (a) {
function b(c, d) {
var e = a.call(this, c, d) || this;
e.format = d.format;
e.levels = d.levels || 1;
e._width = d.width;
e._height = d.height;
e._extension = b._formatToExtension(e.format);
if (d.levelBuffers || e.buffer) {
e._levelBuffers = d.levelBuffers || b._createLevelBuffers(c instanceof Uint8Array ? c : e.buffer.uint8View, e.format, e.levels, 4, 4, e.width, e.height);
}
return e;
}
hf(b, a);
b.prototype.upload = function (a, b, c) {
var d = a.gl;
if (!a.context.extensions[this._extension]) {
throw new Error(this._extension + " textures are not supported on the current machine");
}
if (!this._levelBuffers) {
return false;
}
for (var e = 0, f = this.levels; e < f; e++) {
var g = this._levelBuffers[e];
var h = g.levelID;
var i = g.levelWidth;
var j = g.levelHeight;
var k = g.levelBuffer;
d.compressedTexImage2D(d.TEXTURE_2D, h, this.format, i, j, 0, k);
}
return true;
};
b.prototype.onBlobLoaded = function () {
this._levelBuffers = b._createLevelBuffers(this.buffer.uint8View, this.format, this.levels, 4, 4, this.width, this.height);
};
b._formatToExtension = function (a) {
if (a >= 33776 && a <= 33779) {
return "s3tc";
}
if (a >= 37488 && a <= 37497) {
return "etc";
}
if (a >= 35840 && a <= 35843) {
return "pvrtc";
}
if (a >= 36196) {
return "etc1";
}
if (a >= 35986 && a <= 34798) {
return "atc";
}
throw new Error("Invalid (compressed) texture format given!");
};
b._createLevelBuffers = function (a, b, c, d, e, f, g) {
for (var h = new Array(c), i = a.byteOffset, j = f, k = g, l = j + d - 1 & ~(d - 1), m = k + e - 1 & ~(e - 1), n = l * m * ff[b], o = 0; o < c; o++) {
h[o] = {
levelID: o,
levelWidth: c > 1 ? j : l,
levelHeight: c > 1 ? k : m,
levelBuffer: new Uint8Array(a.buffer, i, n)
};
i += n;
n = (l = (j = j >> 1 || 1) + d - 1 & ~(d - 1)) * (m = (k = k >> 1 || 1) + e - 1 & ~(e - 1)) * ff[b];
}
return h;
};
return b;
}(lf);
var nf = function () {
function a() {}
a.use = function (b, c) {
var d = b.data;
if (b.type === We.TYPE.JSON && d && d.cacheID && d.textures) {
for (var e = d.textures, f = undefined, g = undefined, h = 0, i = e.length; h < i; h++) {
var j = e[h];
var k = j.src;
var l = j.format;
if (!l) {
g = k;
}
if (a.textureFormats[l]) {
f = k;
break;
}
}
if (!(f = f || g)) {
c(new Error("Cannot load compressed-textures in " + b.url + ", make sure you provide a fallback"));
return;
}
if (f === b.url) {
c(new Error("URL of compressed texture cannot be the same as the manifest's URL"));
return;
}
var m = {
crossOrigin: b.crossOrigin,
metadata: b.metadata.imageMetadata,
parentResource: b
};
var n = La.resolve(b.url.replace(this.baseUrl, ""), f);
var o = d.cacheID;
this.add(o, n, m, function (a) {
if (a.error) {
c(a.error);
} else {
var d = a.texture;
var e = d === undefined ? null : d;
var f = a.textures;
var g = f === undefined ? {} : f;
Object.assign(b, {
texture: e,
textures: g
});
c();
}
});
} else {
c();
}
};
Object.defineProperty(a, "textureExtensions", {
get: function () {
if (!a._textureExtensions) {
var b = document.createElement("canvas").getContext("webgl");
if (!b) {
console.warn("WebGL not available for compressed textures. Silently failing.");
return {};
}
var c = {
s3tc: b.getExtension("WEBGL_compressed_texture_s3tc"),
s3tc_sRGB: b.getExtension("WEBGL_compressed_texture_s3tc_srgb"),
etc: b.getExtension("WEBGL_compressed_texture_etc"),
etc1: b.getExtension("WEBGL_compressed_texture_etc1"),
pvrtc: b.getExtension("WEBGL_compressed_texture_pvrtc") || b.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),
atc: b.getExtension("WEBGL_compressed_texture_atc"),
astc: b.getExtension("WEBGL_compressed_texture_astc")
};
a._textureExtensions = c;
}
return a._textureExtensions;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "textureFormats", {
get: function () {
if (!a._textureFormats) {
var b = a.textureExtensions;
a._textureFormats = {};
for (var c in b) {
var d = b[c];
if (d) {
Object.assign(a._textureFormats, Object.getPrototypeOf(d));
}
}
}
return a._textureFormats;
},
enumerable: false,
configurable: true
});
return a;
}();
function of(a, b, c) {
var d = {
textures: {},
texture: null
};
if (b) {
b.map(function (a) {
return new Sc(new Bc(a, Object.assign({
mipmap: xa.OFF,
alphaMode: ya.NO_PREMULTIPLIED_ALPHA
}, c)));
}).forEach(function (b, c) {
var e = b.baseTexture;
var f = a + "-" + (c + 1);
Bc.addToCache(e, f);
Sc.addToCache(b, f);
if (c === 0) {
Bc.addToCache(e, a);
Sc.addToCache(b, a);
d.texture = b;
}
d.textures[f] = b;
});
return d;
} else {
return d;
}
}
We.setExtensionXhrType("dds", We.XHR_RESPONSE_TYPE.BUFFER);
var pf;
var qf;
(function (a) {
a[a.DXGI_FORMAT_UNKNOWN = 0] = "DXGI_FORMAT_UNKNOWN";
a[a.DXGI_FORMAT_R32G32B32A32_TYPELESS = 1] = "DXGI_FORMAT_R32G32B32A32_TYPELESS";
a[a.DXGI_FORMAT_R32G32B32A32_FLOAT = 2] = "DXGI_FORMAT_R32G32B32A32_FLOAT";
a[a.DXGI_FORMAT_R32G32B32A32_UINT = 3] = "DXGI_FORMAT_R32G32B32A32_UINT";
a[a.DXGI_FORMAT_R32G32B32A32_SINT = 4] = "DXGI_FORMAT_R32G32B32A32_SINT";
a[a.DXGI_FORMAT_R32G32B32_TYPELESS = 5] = "DXGI_FORMAT_R32G32B32_TYPELESS";
a[a.DXGI_FORMAT_R32G32B32_FLOAT = 6] = "DXGI_FORMAT_R32G32B32_FLOAT";
a[a.DXGI_FORMAT_R32G32B32_UINT = 7] = "DXGI_FORMAT_R32G32B32_UINT";
a[a.DXGI_FORMAT_R32G32B32_SINT = 8] = "DXGI_FORMAT_R32G32B32_SINT";
a[a.DXGI_FORMAT_R16G16B16A16_TYPELESS = 9] = "DXGI_FORMAT_R16G16B16A16_TYPELESS";
a[a.DXGI_FORMAT_R16G16B16A16_FLOAT = 10] = "DXGI_FORMAT_R16G16B16A16_FLOAT";
a[a.DXGI_FORMAT_R16G16B16A16_UNORM = 11] = "DXGI_FORMAT_R16G16B16A16_UNORM";
a[a.DXGI_FORMAT_R16G16B16A16_UINT = 12] = "DXGI_FORMAT_R16G16B16A16_UINT";
a[a.DXGI_FORMAT_R16G16B16A16_SNORM = 13] = "DXGI_FORMAT_R16G16B16A16_SNORM";
a[a.DXGI_FORMAT_R16G16B16A16_SINT = 14] = "DXGI_FORMAT_R16G16B16A16_SINT";
a[a.DXGI_FORMAT_R32G32_TYPELESS = 15] = "DXGI_FORMAT_R32G32_TYPELESS";
a[a.DXGI_FORMAT_R32G32_FLOAT = 16] = "DXGI_FORMAT_R32G32_FLOAT";
a[a.DXGI_FORMAT_R32G32_UINT = 17] = "DXGI_FORMAT_R32G32_UINT";
a[a.DXGI_FORMAT_R32G32_SINT = 18] = "DXGI_FORMAT_R32G32_SINT";
a[a.DXGI_FORMAT_R32G8X24_TYPELESS = 19] = "DXGI_FORMAT_R32G8X24_TYPELESS";
a[a.DXGI_FORMAT_D32_FLOAT_S8X24_UINT = 20] = "DXGI_FORMAT_D32_FLOAT_S8X24_UINT";
a[a.DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS = 21] = "DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS";
a[a.DXGI_FORMAT_X32_TYPELESS_G8X24_UINT = 22] = "DXGI_FORMAT_X32_TYPELESS_G8X24_UINT";
a[a.DXGI_FORMAT_R10G10B10A2_TYPELESS = 23] = "DXGI_FORMAT_R10G10B10A2_TYPELESS";
a[a.DXGI_FORMAT_R10G10B10A2_UNORM = 24] = "DXGI_FORMAT_R10G10B10A2_UNORM";
a[a.DXGI_FORMAT_R10G10B10A2_UINT = 25] = "DXGI_FORMAT_R10G10B10A2_UINT";
a[a.DXGI_FORMAT_R11G11B10_FLOAT = 26] = "DXGI_FORMAT_R11G11B10_FLOAT";
a[a.DXGI_FORMAT_R8G8B8A8_TYPELESS = 27] = "DXGI_FORMAT_R8G8B8A8_TYPELESS";
a[a.DXGI_FORMAT_R8G8B8A8_UNORM = 28] = "DXGI_FORMAT_R8G8B8A8_UNORM";
a[a.DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29] = "DXGI_FORMAT_R8G8B8A8_UNORM_SRGB";
a[a.DXGI_FORMAT_R8G8B8A8_UINT = 30] = "DXGI_FORMAT_R8G8B8A8_UINT";
a[a.DXGI_FORMAT_R8G8B8A8_SNORM = 31] = "DXGI_FORMAT_R8G8B8A8_SNORM";
a[a.DXGI_FORMAT_R8G8B8A8_SINT = 32] = "DXGI_FORMAT_R8G8B8A8_SINT";
a[a.DXGI_FORMAT_R16G16_TYPELESS = 33] = "DXGI_FORMAT_R16G16_TYPELESS";
a[a.DXGI_FORMAT_R16G16_FLOAT = 34] = "DXGI_FORMAT_R16G16_FLOAT";
a[a.DXGI_FORMAT_R16G16_UNORM = 35] = "DXGI_FORMAT_R16G16_UNORM";
a[a.DXGI_FORMAT_R16G16_UINT = 36] = "DXGI_FORMAT_R16G16_UINT";
a[a.DXGI_FORMAT_R16G16_SNORM = 37] = "DXGI_FORMAT_R16G16_SNORM";
a[a.DXGI_FORMAT_R16G16_SINT = 38] = "DXGI_FORMAT_R16G16_SINT";
a[a.DXGI_FORMAT_R32_TYPELESS = 39] = "DXGI_FORMAT_R32_TYPELESS";
a[a.DXGI_FORMAT_D32_FLOAT = 40] = "DXGI_FORMAT_D32_FLOAT";
a[a.DXGI_FORMAT_R32_FLOAT = 41] = "DXGI_FORMAT_R32_FLOAT";
a[a.DXGI_FORMAT_R32_UINT = 42] = "DXGI_FORMAT_R32_UINT";
a[a.DXGI_FORMAT_R32_SINT = 43] = "DXGI_FORMAT_R32_SINT";
a[a.DXGI_FORMAT_R24G8_TYPELESS = 44] = "DXGI_FORMAT_R24G8_TYPELESS";
a[a.DXGI_FORMAT_D24_UNORM_S8_UINT = 45] = "DXGI_FORMAT_D24_UNORM_S8_UINT";
a[a.DXGI_FORMAT_R24_UNORM_X8_TYPELESS = 46] = "DXGI_FORMAT_R24_UNORM_X8_TYPELESS";
a[a.DXGI_FORMAT_X24_TYPELESS_G8_UINT = 47] = "DXGI_FORMAT_X24_TYPELESS_G8_UINT";
a[a.DXGI_FORMAT_R8G8_TYPELESS = 48] = "DXGI_FORMAT_R8G8_TYPELESS";
a[a.DXGI_FORMAT_R8G8_UNORM = 49] = "DXGI_FORMAT_R8G8_UNORM";
a[a.DXGI_FORMAT_R8G8_UINT = 50] = "DXGI_FORMAT_R8G8_UINT";
a[a.DXGI_FORMAT_R8G8_SNORM = 51] = "DXGI_FORMAT_R8G8_SNORM";
a[a.DXGI_FORMAT_R8G8_SINT = 52] = "DXGI_FORMAT_R8G8_SINT";
a[a.DXGI_FORMAT_R16_TYPELESS = 53] = "DXGI_FORMAT_R16_TYPELESS";
a[a.DXGI_FORMAT_R16_FLOAT = 54] = "DXGI_FORMAT_R16_FLOAT";
a[a.DXGI_FORMAT_D16_UNORM = 55] = "DXGI_FORMAT_D16_UNORM";
a[a.DXGI_FORMAT_R16_UNORM = 56] = "DXGI_FORMAT_R16_UNORM";
a[a.DXGI_FORMAT_R16_UINT = 57] = "DXGI_FORMAT_R16_UINT";
a[a.DXGI_FORMAT_R16_SNORM = 58] = "DXGI_FORMAT_R16_SNORM";
a[a.DXGI_FORMAT_R16_SINT = 59] = "DXGI_FORMAT_R16_SINT";
a[a.DXGI_FORMAT_R8_TYPELESS = 60] = "DXGI_FORMAT_R8_TYPELESS";
a[a.DXGI_FORMAT_R8_UNORM = 61] = "DXGI_FORMAT_R8_UNORM";
a[a.DXGI_FORMAT_R8_UINT = 62] = "DXGI_FORMAT_R8_UINT";
a[a.DXGI_FORMAT_R8_SNORM = 63] = "DXGI_FORMAT_R8_SNORM";
a[a.DXGI_FORMAT_R8_SINT = 64] = "DXGI_FORMAT_R8_SINT";
a[a.DXGI_FORMAT_A8_UNORM = 65] = "DXGI_FORMAT_A8_UNORM";
a[a.DXGI_FORMAT_R1_UNORM = 66] = "DXGI_FORMAT_R1_UNORM";
a[a.DXGI_FORMAT_R9G9B9E5_SHAREDEXP = 67] = "DXGI_FORMAT_R9G9B9E5_SHAREDEXP";
a[a.DXGI_FORMAT_R8G8_B8G8_UNORM = 68] = "DXGI_FORMAT_R8G8_B8G8_UNORM";
a[a.DXGI_FORMAT_G8R8_G8B8_UNORM = 69] = "DXGI_FORMAT_G8R8_G8B8_UNORM";
a[a.DXGI_FORMAT_BC1_TYPELESS = 70] = "DXGI_FORMAT_BC1_TYPELESS";
a[a.DXGI_FORMAT_BC1_UNORM = 71] = "DXGI_FORMAT_BC1_UNORM";
a[a.DXGI_FORMAT_BC1_UNORM_SRGB = 72] = "DXGI_FORMAT_BC1_UNORM_SRGB";
a[a.DXGI_FORMAT_BC2_TYPELESS = 73] = "DXGI_FORMAT_BC2_TYPELESS";
a[a.DXGI_FORMAT_BC2_UNORM = 74] = "DXGI_FORMAT_BC2_UNORM";
a[a.DXGI_FORMAT_BC2_UNORM_SRGB = 75] = "DXGI_FORMAT_BC2_UNORM_SRGB";
a[a.DXGI_FORMAT_BC3_TYPELESS = 76] = "DXGI_FORMAT_BC3_TYPELESS";
a[a.DXGI_FORMAT_BC3_UNORM = 77] = "DXGI_FORMAT_BC3_UNORM";
a[a.DXGI_FORMAT_BC3_UNORM_SRGB = 78] = "DXGI_FORMAT_BC3_UNORM_SRGB";
a[a.DXGI_FORMAT_BC4_TYPELESS = 79] = "DXGI_FORMAT_BC4_TYPELESS";
a[a.DXGI_FORMAT_BC4_UNORM = 80] = "DXGI_FORMAT_BC4_UNORM";
a[a.DXGI_FORMAT_BC4_SNORM = 81] = "DXGI_FORMAT_BC4_SNORM";
a[a.DXGI_FORMAT_BC5_TYPELESS = 82] = "DXGI_FORMAT_BC5_TYPELESS";
a[a.DXGI_FORMAT_BC5_UNORM = 83] = "DXGI_FORMAT_BC5_UNORM";
a[a.DXGI_FORMAT_BC5_SNORM = 84] = "DXGI_FORMAT_BC5_SNORM";
a[a.DXGI_FORMAT_B5G6R5_UNORM = 85] = "DXGI_FORMAT_B5G6R5_UNORM";
a[a.DXGI_FORMAT_B5G5R5A1_UNORM = 86] = "DXGI_FORMAT_B5G5R5A1_UNORM";
a[a.DXGI_FORMAT_B8G8R8A8_UNORM = 87] = "DXGI_FORMAT_B8G8R8A8_UNORM";
a[a.DXGI_FORMAT_B8G8R8X8_UNORM = 88] = "DXGI_FORMAT_B8G8R8X8_UNORM";
a[a.DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM = 89] = "DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM";
a[a.DXGI_FORMAT_B8G8R8A8_TYPELESS = 90] = "DXGI_FORMAT_B8G8R8A8_TYPELESS";
a[a.DXGI_FORMAT_B8G8R8A8_UNORM_SRGB = 91] = "DXGI_FORMAT_B8G8R8A8_UNORM_SRGB";
a[a.DXGI_FORMAT_B8G8R8X8_TYPELESS = 92] = "DXGI_FORMAT_B8G8R8X8_TYPELESS";
a[a.DXGI_FORMAT_B8G8R8X8_UNORM_SRGB = 93] = "DXGI_FORMAT_B8G8R8X8_UNORM_SRGB";
a[a.DXGI_FORMAT_BC6H_TYPELESS = 94] = "DXGI_FORMAT_BC6H_TYPELESS";
a[a.DXGI_FORMAT_BC6H_UF16 = 95] = "DXGI_FORMAT_BC6H_UF16";
a[a.DXGI_FORMAT_BC6H_SF16 = 96] = "DXGI_FORMAT_BC6H_SF16";
a[a.DXGI_FORMAT_BC7_TYPELESS = 97] = "DXGI_FORMAT_BC7_TYPELESS";
a[a.DXGI_FORMAT_BC7_UNORM = 98] = "DXGI_FORMAT_BC7_UNORM";
a[a.DXGI_FORMAT_BC7_UNORM_SRGB = 99] = "DXGI_FORMAT_BC7_UNORM_SRGB";
a[a.DXGI_FORMAT_AYUV = 100] = "DXGI_FORMAT_AYUV";
a[a.DXGI_FORMAT_Y410 = 101] = "DXGI_FORMAT_Y410";
a[a.DXGI_FORMAT_Y416 = 102] = "DXGI_FORMAT_Y416";
a[a.DXGI_FORMAT_NV12 = 103] = "DXGI_FORMAT_NV12";
a[a.DXGI_FORMAT_P010 = 104] = "DXGI_FORMAT_P010";
a[a.DXGI_FORMAT_P016 = 105] = "DXGI_FORMAT_P016";
a[a.DXGI_FORMAT_420_OPAQUE = 106] = "DXGI_FORMAT_420_OPAQUE";
a[a.DXGI_FORMAT_YUY2 = 107] = "DXGI_FORMAT_YUY2";
a[a.DXGI_FORMAT_Y210 = 108] = "DXGI_FORMAT_Y210";
a[a.DXGI_FORMAT_Y216 = 109] = "DXGI_FORMAT_Y216";
a[a.DXGI_FORMAT_NV11 = 110] = "DXGI_FORMAT_NV11";
a[a.DXGI_FORMAT_AI44 = 111] = "DXGI_FORMAT_AI44";
a[a.DXGI_FORMAT_IA44 = 112] = "DXGI_FORMAT_IA44";
a[a.DXGI_FORMAT_P8 = 113] = "DXGI_FORMAT_P8";
a[a.DXGI_FORMAT_A8P8 = 114] = "DXGI_FORMAT_A8P8";
a[a.DXGI_FORMAT_B4G4R4A4_UNORM = 115] = "DXGI_FORMAT_B4G4R4A4_UNORM";
a[a.DXGI_FORMAT_P208 = 116] = "DXGI_FORMAT_P208";
a[a.DXGI_FORMAT_V208 = 117] = "DXGI_FORMAT_V208";
a[a.DXGI_FORMAT_V408 = 118] = "DXGI_FORMAT_V408";
a[a.DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE = 119] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIN_MIP_OPAQUE";
a[a.DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE = 120] = "DXGI_FORMAT_SAMPLER_FEEDBACK_MIP_REGION_USED_OPAQUE";
a[a.DXGI_FORMAT_FORCE_UINT = 121] = "DXGI_FORMAT_FORCE_UINT";
})(pf ||= {});
(function (a) {
a[a.DDS_DIMENSION_TEXTURE1D = 2] = "DDS_DIMENSION_TEXTURE1D";
a[a.DDS_DIMENSION_TEXTURE2D = 3] = "DDS_DIMENSION_TEXTURE2D";
a[a.DDS_DIMENSION_TEXTURE3D = 6] = "DDS_DIMENSION_TEXTURE3D";
})(qf ||= {});
var rf;
var sf;
var tf;
(jf = {})[827611204] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT;
jf[861165636] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT;
jf[894720068] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT;
var uf = jf;
(kf = {})[pf.DXGI_FORMAT_BC1_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT;
kf[pf.DXGI_FORMAT_BC1_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT1_EXT;
kf[pf.DXGI_FORMAT_BC2_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT;
kf[pf.DXGI_FORMAT_BC2_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT3_EXT;
kf[pf.DXGI_FORMAT_BC3_TYPELESS] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT;
kf[pf.DXGI_FORMAT_BC3_UNORM] = cf.COMPRESSED_RGBA_S3TC_DXT5_EXT;
kf[pf.DXGI_FORMAT_BC1_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;
kf[pf.DXGI_FORMAT_BC2_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;
kf[pf.DXGI_FORMAT_BC3_UNORM_SRGB] = cf.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;
var vf = kf;
var wf = function () {
function a() {}
a.use = function (b, c) {
if (b.extension === "dds" && b.data) {
try {
Object.assign(b, of(b.name || b.url, a.parse(b.data), b.metadata));
} catch (a) {
c(a);
return;
}
}
c();
};
a.parse = function (a) {
var b = new Uint32Array(a);
if (b[0] !== 542327876) {
throw new Error("Invalid DDS file magic word");
}
var c = new Uint32Array(a, 0, 124 / Uint32Array.BYTES_PER_ELEMENT);
var d = c[3];
var e = c[4];
var f = c[7];
var g = new Uint32Array(a, Uint32Array.BYTES_PER_ELEMENT * 19, 32 / Uint32Array.BYTES_PER_ELEMENT);
var h = g[1];
if (h & 4) {
var i = g[2];
if (i !== 808540228) {
var j = uf[i];
var k = new Uint8Array(a, 128);
return [new mf(k, {
format: j,
width: e,
height: d,
levels: f
})];
}
var l = new Uint32Array(b.buffer, 128, 20 / Uint32Array.BYTES_PER_ELEMENT);
var m = l[0];
var n = l[1];
var o = l[2];
var p = l[3];
var q = vf[m];
if (q === undefined) {
throw new Error("DDSLoader cannot parse texture data with DXGI format " + m);
}
if (o === 4) {
throw new Error("DDSLoader does not support cubemap textures");
}
if (n === qf.DDS_DIMENSION_TEXTURE3D) {
throw new Error("DDSLoader does not supported 3D texture data");
}
var r = new Array();
if (p === 1) {
r.push(new Uint8Array(a, 148));
} else {
for (var s = ff[q], t = 0, u = e, v = d, w = 0; w < f; w++) {
t += Math.max(1, u + 3 & -4) * Math.max(1, v + 3 & -4) * s;
u >>>= 1;
v >>>= 1;
}
var x = 148;
for (w = 0; w < p; w++) {
r.push(new Uint8Array(a, x, t));
x += t;
}
}
return r.map(function (a) {
return new mf(a, {
format: q,
width: e,
height: d,
levels: f
});
});
}
if (h & 64) {
throw new Error("DDSLoader does not support uncompressed texture data.");
}
if (h & 512) {
throw new Error("DDSLoader does not supported YUV uncompressed texture data.");
}
if (h & 131072) {
throw new Error("DDSLoader does not support single-channel (lumninance) texture data!");
}
if (h & 2) {
throw new Error("DDSLoader does not support single-channel (alpha) texture data!");
}
throw new Error("DDSLoader failed to load a texture file due to an unknown reason!");
};
return a;
}();
We.setExtensionXhrType("ktx", We.XHR_RESPONSE_TYPE.BUFFER);
var xf = [171, 75, 84, 88, 32, 49, 49, 187, 13, 10, 26, 10];
(rf = {})[ta.UNSIGNED_BYTE] = 1;
rf[ta.UNSIGNED_SHORT] = 2;
rf[ta.INT] = 4;
rf[ta.UNSIGNED_INT] = 4;
rf[ta.FLOAT] = 4;
rf[ta.HALF_FLOAT] = 8;
var yf = rf;
(sf = {})[ra.RGBA] = 4;
sf[ra.RGB] = 3;
sf[ra.RG] = 2;
sf[ra.RED] = 1;
sf[ra.LUMINANCE] = 1;
sf[ra.LUMINANCE_ALPHA] = 2;
sf[ra.ALPHA] = 1;
var zf = sf;
(tf = {})[ta.UNSIGNED_SHORT_4_4_4_4] = 2;
tf[ta.UNSIGNED_SHORT_5_5_5_1] = 2;
tf[ta.UNSIGNED_SHORT_5_6_5] = 2;
var Af = tf;
var Bf = function () {
function a() {}
a.use = function (b, c) {
if (b.extension === "ktx" && b.data) {
try {
var d = b.name || b.url;
var e = a.parse(d, b.data);
var f = e.compressed;
var g = e.uncompressed;
if (f) {
Object.assign(b, of(d, f, b.metadata));
} else if (g) {
var h = {};
g.forEach(function (a, b) {
var c = new Sc(new Bc(a.resource, {
mipmap: xa.OFF,
alphaMode: ya.NO_PREMULTIPLIED_ALPHA,
type: a.type,
format: a.format
}));
var e = d + "-" + (b + 1);
Bc.addToCache(c.baseTexture, e);
Sc.addToCache(c, e);
if (b === 0) {
h[d] = c;
Bc.addToCache(c.baseTexture, d);
Sc.addToCache(c, d);
}
h[e] = c;
});
Object.assign(b, {
textures: h
});
}
} catch (a) {
c(a);
return;
}
}
c();
};
a.parse = function (b, c) {
var d = new DataView(c);
if (!a.validate(b, d)) {
return null;
}
var e = d.getUint32(12, true) === 67305985;
var f = d.getUint32(16, e);
var g = d.getUint32(24, e);
var h = d.getUint32(28, e);
var i = d.getUint32(36, e);
var j = d.getUint32(40, e) || 1;
var k = d.getUint32(44, e) || 1;
var l = d.getUint32(48, e) || 1;
var m = d.getUint32(52, e);
var n = d.getUint32(56, e);
var o = d.getUint32(60, e);
if (j === 0 || k !== 1) {
throw new Error("Only 2D textures are supported");
}
if (m !== 1) {
throw new Error("CubeTextures are not supported by KTXLoader yet!");
}
if (l !== 1) {
throw new Error("WebGL does not support array textures");
}
var p;
var q = i + 3 & -4;
var r = j + 3 & -4;
var s = new Array(l);
var t = i * j;
if (f === 0) {
t = q * r;
}
if ((p = f !== 0 ? yf[f] ? yf[f] * zf[g] : Af[f] : ff[h]) === undefined) {
throw new Error("Unable to resolve the pixel format stored in the *.ktx file!");
}
for (var u = t * p, v = i, w = j, x = q, y = r, z = 64 + o, A = 0; A < n; A++) {
for (var B = d.getUint32(z, e), C = z + 4, D = 0; D < l; D++) {
var E = s[D];
E ||= s[D] = new Array(n);
E[A] = {
levelID: A,
levelWidth: n > 1 || f !== 0 ? v : x,
levelHeight: n > 1 || f !== 0 ? w : y,
levelBuffer: new Uint8Array(c, C, u)
};
C += u;
}
z = (z += B + 4) % 4 != 0 ? z + 4 - z % 4 : z;
u = (x = (v = v >> 1 || 1) + 4 - 1 & -4) * (y = (w = w >> 1 || 1) + 4 - 1 & -4) * p;
}
if (f !== 0) {
return {
uncompressed: s.map(function (b) {
var c = b[0].levelBuffer;
var d = false;
if (f === ta.FLOAT) {
c = new Float32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4);
} else if (f === ta.UNSIGNED_INT) {
d = true;
c = new Uint32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4);
} else if (f === ta.INT) {
d = true;
c = new Int32Array(b[0].levelBuffer.buffer, b[0].levelBuffer.byteOffset, b[0].levelBuffer.byteLength / 4);
}
return {
resource: new zc(c, {
width: b[0].levelWidth,
height: b[0].levelHeight
}),
type: f,
format: d ? a.convertFormatToInteger(g) : g
};
})
};
} else {
return {
compressed: s.map(function (a) {
return new mf(null, {
format: h,
width: i,
height: j,
levels: n,
levelBuffers: a
});
})
};
}
};
a.validate = function (a, b) {
for (var c = 0; c < xf.length; c++) {
if (b.getUint8(c) !== xf[c]) {
console.error(a + " is not a valid *.ktx file!");
return false;
}
}
return true;
};
a.convertFormatToInteger = function (a) {
switch (a) {
case ra.RGBA:
return ra.RGBA_INTEGER;
case ra.RGB:
return ra.RGB_INTEGER;
case ra.RG:
return ra.RG_INTEGER;
case ra.RED:
return ra.RED_INTEGER;
default:
return a;
}
};
return a;
}();
function Cf(a, b) {
Cf = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Cf(a, b);
}
function Df(a, b) {
function c() {
this.constructor = a;
}
Cf(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
(function (a) {
function b(b, c, d, e) {
if (b === undefined) {
b = 1500;
}
if (d === undefined) {
d = 16384;
}
if (e === undefined) {
e = false;
}
var f = a.call(this) || this;
if (d > 16384) {
d = 16384;
}
f._properties = [false, true, false, false, false];
f._maxSize = b;
f._batchSize = d;
f._buffers = null;
f._bufferUpdateIDs = [];
f._updateID = 0;
f.interactiveChildren = false;
f.blendMode = pa.NORMAL;
f.autoResize = e;
f.roundPixels = true;
f.baseTexture = null;
f.setProperties(c);
f._tint = 0;
f.tintRgb = new Float32Array(4);
f.tint = 16777215;
return f;
}
Df(b, a);
b.prototype.setProperties = function (a) {
if (a) {
this._properties[0] = "vertices" in a || "scale" in a ? !!a.vertices || !!a.scale : this._properties[0];
this._properties[1] = "position" in a ? !!a.position : this._properties[1];
this._properties[2] = "rotation" in a ? !!a.rotation : this._properties[2];
this._properties[3] = "uvs" in a ? !!a.uvs : this._properties[3];
this._properties[4] = "tint" in a || "alpha" in a ? !!a.tint || !!a.alpha : this._properties[4];
}
};
b.prototype.updateTransform = function () {
this.displayObjectUpdateTransform();
};
Object.defineProperty(b.prototype, "tint", {
get: function () {
return this._tint;
},
set: function (a) {
this._tint = a;
Pa(a, this.tintRgb);
},
enumerable: false,
configurable: true
});
b.prototype.render = function (a) {
var b = this;
if (this.visible && this.worldAlpha > 0 && this.children.length && this.renderable) {
if (!this.baseTexture) {
this.baseTexture = this.children[0]._texture.baseTexture;
if (!this.baseTexture.valid) {
this.baseTexture.once("update", function () {
return b.onChildrenChange(0);
});
}
}
a.batch.setObjectRenderer(a.plugins.particle);
a.plugins.particle.render(this);
}
};
b.prototype.onChildrenChange = function (a) {
for (var b = Math.floor(a / this._batchSize); this._bufferUpdateIDs.length < b;) {
this._bufferUpdateIDs.push(0);
}
this._bufferUpdateIDs[b] = ++this._updateID;
};
b.prototype.dispose = function () {
if (this._buffers) {
for (var a = 0; a < this._buffers.length; ++a) {
this._buffers[a].destroy();
}
this._buffers = null;
}
};
b.prototype.destroy = function (b) {
a.prototype.destroy.call(this, b);
this.dispose();
this._properties = null;
this._buffers = null;
this._bufferUpdateIDs = null;
};
})(dc);
var Ef;
var Ff;
var Gf = function () {
function a(a, b, c) {
this.geometry = new ad();
this.indexBuffer = null;
this.size = c;
this.dynamicProperties = [];
this.staticProperties = [];
for (var d = 0; d < a.length; ++d) {
var e = a[d];
e = {
attributeName: e.attributeName,
size: e.size,
uploadFunction: e.uploadFunction,
type: e.type || ta.FLOAT,
offset: e.offset
};
if (b[d]) {
this.dynamicProperties.push(e);
} else {
this.staticProperties.push(e);
}
}
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();
}
a.prototype.initBuffers = function () {
var a = this.geometry;
var b = 0;
this.indexBuffer = new Xc(function (a, b) {
if (b === undefined) {
b = null;
}
var c = a * 6;
if ((b = b || new Uint16Array(c)).length !== c) {
throw new Error("Out buffer length is incorrect, got " + b.length + " and expected " + c);
}
for (var d = 0, e = 0; d < c; d += 6, e += 4) {
b[d + 0] = e + 0;
b[d + 1] = e + 1;
b[d + 2] = e + 2;
b[d + 3] = e + 0;
b[d + 4] = e + 2;
b[d + 5] = e + 3;
}
return b;
}(this.size), true, true);
a.addIndex(this.indexBuffer);
this.dynamicStride = 0;
for (var c = 0; c < this.dynamicProperties.length; ++c) {
(g = this.dynamicProperties[c]).offset = b;
b += g.size;
this.dynamicStride += g.size;
}
var d = new ArrayBuffer(this.size * this.dynamicStride * 4 * 4);
this.dynamicData = new Float32Array(d);
this.dynamicDataUint32 = new Uint32Array(d);
this.dynamicBuffer = new Xc(this.dynamicData, false, false);
var e = 0;
this.staticStride = 0;
c = 0;
for (; c < this.staticProperties.length; ++c) {
(g = this.staticProperties[c]).offset = e;
e += g.size;
this.staticStride += g.size;
}
var f = new ArrayBuffer(this.size * this.staticStride * 4 * 4);
this.staticData = new Float32Array(f);
this.staticDataUint32 = new Uint32Array(f);
this.staticBuffer = new Xc(this.staticData, true, false);
c = 0;
for (; c < this.dynamicProperties.length; ++c) {
var g = this.dynamicProperties[c];
a.addAttribute(g.attributeName, this.dynamicBuffer, 0, g.type === ta.UNSIGNED_BYTE, g.type, this.dynamicStride * 4, g.offset * 4);
}
for (c = 0; c < this.staticProperties.length; ++c) {
g = this.staticProperties[c];
a.addAttribute(g.attributeName, this.staticBuffer, 0, g.type === ta.UNSIGNED_BYTE, g.type, this.staticStride * 4, g.offset * 4);
}
};
a.prototype.uploadDynamic = function (a, b, c) {
for (var d = 0; d < this.dynamicProperties.length; d++) {
var e = this.dynamicProperties[d];
e.uploadFunction(a, b, c, e.type === ta.UNSIGNED_BYTE ? this.dynamicDataUint32 : this.dynamicData, this.dynamicStride, e.offset);
}
this.dynamicBuffer._updateID++;
};
a.prototype.uploadStatic = function (a, b, c) {
for (var d = 0; d < this.staticProperties.length; d++) {
var e = this.staticProperties[d];
e.uploadFunction(a, b, c, e.type === ta.UNSIGNED_BYTE ? this.staticDataUint32 : this.staticData, this.staticStride, e.offset);
}
this.staticBuffer._updateID++;
};
a.prototype.destroy = function () {
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();
};
return a;
}();
var Hf = function (a) {
function b(b) {
var c = a.call(this, b) || this;
c.shader = null;
c.properties = null;
c.tempMatrix = new wb();
c.properties = [{
attributeName: "aVertexPosition",
size: 2,
uploadFunction: c.uploadVertices,
offset: 0
}, {
attributeName: "aPositionCoord",
size: 2,
uploadFunction: c.uploadPosition,
offset: 0
}, {
attributeName: "aRotation",
size: 1,
uploadFunction: c.uploadRotation,
offset: 0
}, {
attributeName: "aTextureCoord",
size: 2,
uploadFunction: c.uploadUvs,
offset: 0
}, {
attributeName: "aColor",
size: 1,
type: ta.UNSIGNED_BYTE,
uploadFunction: c.uploadTint,
offset: 0
}];
c.shader = Pd.from("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", "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}", {});
c.state = Qd.for2d();
return c;
}
Df(b, a);
b.prototype.render = function (a) {
var b = a.children;
var c = a._maxSize;
var d = a._batchSize;
var e = this.renderer;
var f = b.length;
if (f !== 0) {
if (f > c && !a.autoResize) {
f = c;
}
var g = a._buffers;
g ||= a._buffers = this.generateBuffers(a);
var h = b[0]._texture.baseTexture;
this.state.blendMode = Ta(a.blendMode, h.alphaMode);
e.state.set(this.state);
var i;
var j;
var k;
var l;
var m = e.gl;
var n = a.worldTransform.copyTo(this.tempMatrix);
n.prepend(e.globalUniforms.uniforms.projectionMatrix);
this.shader.uniforms.translationMatrix = n.toArray(true);
this.shader.uniforms.uColor = (i = a.tintRgb, j = a.worldAlpha, k = this.shader.uniforms.uColor, l = h.alphaMode, k = k || new Float32Array(4), l || l === undefined ? (k[0] = i[0] * j, k[1] = i[1] * j, k[2] = i[2] * j) : (k[0] = i[0], k[1] = i[1], k[2] = i[2]), k[3] = j, k);
this.shader.uniforms.uSampler = h;
this.renderer.shader.bind(this.shader);
for (var o = false, p = 0, q = 0; p < f; p += d, q += 1) {
var r = f - p;
if (r > d) {
r = d;
}
if (q >= g.length) {
g.push(this._generateOneMoreBuffer(a));
}
var s = g[q];
s.uploadDynamic(b, p, r);
var t = a._bufferUpdateIDs[q] || 0;
if (o = o || s._updateID < t) {
s._updateID = a._updateID;
s.uploadStatic(b, p, r);
}
e.geometry.bind(s.geometry);
m.drawElements(m.TRIANGLES, r * 6, m.UNSIGNED_SHORT, 0);
}
}
};
b.prototype.generateBuffers = function (a) {
for (var b = [], c = a._maxSize, d = a._batchSize, e = a._properties, f = 0; f < c; f += d) {
b.push(new Gf(this.properties, e, d));
}
return b;
};
b.prototype._generateOneMoreBuffer = function (a) {
var b = a._batchSize;
var c = a._properties;
return new Gf(this.properties, c, b);
};
b.prototype.uploadVertices = function (a, b, c, d, e, f) {
for (var g = 0, h = 0, i = 0, j = 0, k = 0; k < c; ++k) {
var l = a[b + k];
var m = l._texture;
var n = l.scale.x;
var o = l.scale.y;
var p = m.trim;
var q = m.orig;
if (p) {
g = (h = p.x - l.anchor.x * q.width) + p.width;
i = (j = p.y - l.anchor.y * q.height) + p.height;
} else {
g = q.width * (1 - l.anchor.x);
h = q.width * -l.anchor.x;
i = q.height * (1 - l.anchor.y);
j = q.height * -l.anchor.y;
}
d[f] = h * n;
d[f + 1] = j * o;
d[f + e] = g * n;
d[f + e + 1] = j * o;
d[f + e * 2] = g * n;
d[f + e * 2 + 1] = i * o;
d[f + e * 3] = h * n;
d[f + e * 3 + 1] = i * o;
f += e * 4;
}
};
b.prototype.uploadPosition = function (a, b, c, d, e, f) {
for (var g = 0; g < c; g++) {
var h = a[b + g].position;
d[f] = h.x;
d[f + 1] = h.y;
d[f + e] = h.x;
d[f + e + 1] = h.y;
d[f + e * 2] = h.x;
d[f + e * 2 + 1] = h.y;
d[f + e * 3] = h.x;
d[f + e * 3 + 1] = h.y;
f += e * 4;
}
};
b.prototype.uploadRotation = function (a, b, c, d, e, f) {
for (var g = 0; g < c; g++) {
var h = a[b + g].rotation;
d[f] = h;
d[f + e] = h;
d[f + e * 2] = h;
d[f + e * 3] = h;
f += e * 4;
}
};
b.prototype.uploadUvs = function (a, b, c, d, e, f) {
for (var g = 0; g < c; ++g) {
var h = a[b + g]._texture._uvs;
if (h) {
d[f] = h.x0;
d[f + 1] = h.y0;
d[f + e] = h.x1;
d[f + e + 1] = h.y1;
d[f + e * 2] = h.x2;
d[f + e * 2 + 1] = h.y2;
d[f + e * 3] = h.x3;
d[f + e * 3 + 1] = h.y3;
f += e * 4;
} else {
d[f] = 0;
d[f + 1] = 0;
d[f + e] = 0;
d[f + e + 1] = 0;
d[f + e * 2] = 0;
d[f + e * 2 + 1] = 0;
d[f + e * 3] = 0;
d[f + e * 3 + 1] = 0;
f += e * 4;
}
}
};
b.prototype.uploadTint = function (a, b, c, d, e, f) {
for (var g = 0; g < c; ++g) {
var h = a[b + g];
var i = h._texture.baseTexture.alphaMode > 0;
var j = h.alpha;
var k = j < 1 && i ? Ua(h._tintRGB, j) : h._tintRGB + (j * 255 << 24);
d[f] = k;
d[f + e] = k;
d[f + e * 2] = k;
d[f + e * 3] = k;
f += e * 4;
}
};
b.prototype.destroy = function () {
a.prototype.destroy.call(this);
if (this.shader) {
this.shader.destroy();
this.shader = null;
}
this.tempMatrix = null;
};
return b;
}(jd);
(function (a) {
a.MITER = "miter";
a.BEVEL = "bevel";
a.ROUND = "round";
})(Ef ||= {});
(function (a) {
a.BUTT = "butt";
a.ROUND = "round";
a.SQUARE = "square";
})(Ff ||= {});
var If = {
adaptive: true,
maxLength: 10,
minSegments: 8,
maxSegments: 2048,
epsilon: 0.0001,
_segmentsCount: function (a, b) {
if (b === undefined) {
b = 20;
}
if (!this.adaptive || !a || isNaN(a)) {
return b;
}
var c = Math.ceil(a / this.maxLength);
if (c < this.minSegments) {
c = this.minSegments;
} else if (c > this.maxSegments) {
c = this.maxSegments;
}
return c;
}
};
var Jf = function () {
function a() {
this.color = 16777215;
this.alpha = 1;
this.texture = Sc.WHITE;
this.matrix = null;
this.visible = false;
this.reset();
}
a.prototype.clone = function () {
var b = new a();
b.color = this.color;
b.alpha = this.alpha;
b.texture = this.texture;
b.matrix = this.matrix;
b.visible = this.visible;
return b;
};
a.prototype.reset = function () {
this.color = 16777215;
this.alpha = 1;
this.texture = Sc.WHITE;
this.matrix = null;
this.visible = false;
};
a.prototype.destroy = function () {
this.texture = null;
this.matrix = null;
};
return a;
}();
function Kf(a, b) {
Kf = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Kf(a, b);
}
function Lf(a, b) {
function c() {
this.constructor = a;
}
Kf(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
function Mf(a, b) {
var c;
var d;
if (b === undefined) {
b = false;
}
var e = a.length;
if (e >= 6) {
for (var f = 0, g = 0, h = a[e - 2], i = a[e - 1]; g < e; g += 2) {
var j = a[g];
var k = a[g + 1];
f += (j - h) * (k + i);
h = j;
i = k;
}
if (!b && f > 0 || b && f <= 0) {
var l = e / 2;
for (g = l + l % 2; g < e; g += 2) {
var m = e - g - 2;
var n = e - g - 1;
var o = g;
var p = g + 1;
c = [a[o], a[m]];
a[m] = c[0];
a[o] = c[1];
d = [a[p], a[n]];
a[n] = d[0];
a[p] = d[1];
}
}
}
}
var Nf = {
build: function (a) {
a.points = a.shape.points.slice();
},
triangulate: function (a, b) {
var c = a.points;
var d = a.holes;
var e = b.points;
var f = b.indices;
if (c.length >= 6) {
Mf(c, false);
for (var g = [], h = 0; h < d.length; h++) {
var i = d[h];
Mf(i.points, true);
g.push(c.length / 2);
c = c.concat(i.points);
}
var j = Ja()(c, g, 2);
if (!j) {
return;
}
var k = e.length / 2;
for (h = 0; h < j.length; h += 3) {
f.push(j[h] + k);
f.push(j[h + 1] + k);
f.push(j[h + 2] + k);
}
for (h = 0; h < c.length; h++) {
e.push(c[h]);
}
}
}
};
var Of = {
build: function (a) {
var b;
var c;
var d;
var e;
var f;
var g;
var h = a.points;
if (a.type === kb.CIRC) {
var i = a.shape;
b = i.x;
c = i.y;
f = g = i.radius;
d = e = 0;
} else if (a.type === kb.ELIP) {
var j = a.shape;
b = j.x;
c = j.y;
f = j.width;
g = j.height;
d = e = 0;
} else {
var k = a.shape;
var l = k.width / 2;
var m = k.height / 2;
b = k.x + l;
c = k.y + m;
d = l - (f = g = Math.max(0, Math.min(k.radius, Math.min(l, m))));
e = m - g;
}
var n = Math.ceil(Math.sqrt(f + g) * 2.3);
var o = n * 8 + (d ? 4 : 0) + (e ? 4 : 0);
h.length = o;
if (o !== 0) {
if (n === 0) {
h.length = 8;
h[0] = h[6] = b + d;
h[1] = h[3] = c + e;
h[2] = h[4] = b - d;
h[5] = h[7] = c - e;
return;
}
var p;
var q;
var r = 0;
var s = n * 4 + (d ? 2 : 0) + 2;
var t = s;
var u = o;
var v = b + (p = d + f);
var w = b - p;
var x = c + (q = e);
h[r++] = v;
h[r++] = x;
h[--s] = x;
h[--s] = w;
if (e) {
var y = c - q;
h[t++] = w;
h[t++] = y;
h[--u] = y;
h[--u] = v;
}
for (var z = 1; z < n; z++) {
var A = Math.PI / 2 * (z / n);
v = b + (p = d + Math.cos(A) * f);
w = b - p;
x = c + (q = e + Math.sin(A) * g);
y = c - q;
h[r++] = v;
h[r++] = x;
h[--s] = x;
h[--s] = w;
h[t++] = w;
h[t++] = y;
h[--u] = y;
h[--u] = v;
}
v = b + (p = d);
w = b - p;
x = c + (q = e + g);
y = c - q;
h[r++] = v;
h[r++] = x;
h[--u] = y;
h[--u] = v;
if (d) {
h[r++] = w;
h[r++] = x;
h[--u] = y;
h[--u] = w;
}
}
},
triangulate: function (a, b) {
var c;
var d;
var e = a.points;
var f = b.points;
var g = b.indices;
var h = f.length / 2;
var i = h;
if (a.type !== kb.RREC) {
var j = a.shape;
c = j.x;
d = j.y;
} else {
var k = a.shape;
c = k.x + k.width / 2;
d = k.y + k.height / 2;
}
var l = a.matrix;
f.push(a.matrix ? l.a * c + l.c * d + l.tx : c, a.matrix ? l.b * c + l.d * d + l.ty : d);
h++;
f.push(e[0], e[1]);
for (var m = 2; m < e.length; m += 2) {
f.push(e[m], e[m + 1]);
g.push(h++, i, h);
}
g.push(i + 1, i, h);
}
};
function Pf(a, b, c) {
return a + (b - a) * c;
}
function Qf(a, b, c, d, e, f, g) {
if (g === undefined) {
g = [];
}
for (var h = g, i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0; o <= 20; ++o) {
i = Pf(a, c, p = o / 20);
j = Pf(b, d, p);
k = Pf(c, e, p);
l = Pf(d, f, p);
m = Pf(i, k, p);
n = Pf(j, l, p);
if (o !== 0 || h[h.length - 2] !== m || h[h.length - 1] !== n) {
h.push(m, n);
}
}
return h;
}
var Rf = {
build: function (a) {
if (jg.nextRoundedRectBehavior) {
Of.build(a);
} else {
var b = a.shape;
var c = a.points;
var d = b.x;
var e = b.y;
var f = b.width;
var g = b.height;
var h = Math.max(0, Math.min(b.radius, Math.min(f, g) / 2));
c.length = 0;
if (h) {
Qf(d, e + h, d, e, d + h, e, c);
Qf(d + f - h, e, d + f, e, d + f, e + h, c);
Qf(d + f, e + g - h, d + f, e + g, d + f - h, e + g, c);
Qf(d + h, e + g, d, e + g, d, e + g - h, c);
} else {
c.push(d, e, d + f, e, d + f, e + g, d, e + g);
}
}
},
triangulate: function (a, b) {
if (jg.nextRoundedRectBehavior) {
Of.triangulate(a, b);
} else {
for (var c = a.points, d = b.points, e = b.indices, f = d.length / 2, g = Ja()(c, null, 2), h = 0, i = g.length; h < i; h += 3) {
e.push(g[h] + f);
e.push(g[h + 1] + f);
e.push(g[h + 2] + f);
}
h = 0;
i = c.length;
for (; h < i; h++) {
d.push(c[h], c[++h]);
}
}
}
};
function Sf(a, b, c, d, e, f, g, h) {
var i;
var j;
if (g) {
i = d;
j = -c;
} else {
i = -d;
j = c;
}
var k = a - c * e + i;
var l = b - d * e + j;
var m = a + c * f + i;
var n = b + d * f + j;
h.push(k, l);
h.push(m, n);
return 2;
}
function Tf(a, b, c, d, e, f, g, h) {
var i = c - a;
var j = d - b;
var k = Math.atan2(i, j);
var l = Math.atan2(e - a, f - b);
if (h && k < l) {
k += Math.PI * 2;
} else if (!h && k > l) {
l += Math.PI * 2;
}
var m = k;
var n = l - k;
var o = Math.abs(n);
var p = Math.sqrt(i * i + j * j);
var q = 1 + (o * 15 * Math.sqrt(p) / Math.PI >> 0);
var r = n / q;
m += r;
if (h) {
g.push(a, b);
g.push(c, d);
for (var s = 1, t = m; s < q; s++, t += r) {
g.push(a, b);
g.push(a + Math.sin(t) * p, b + Math.cos(t) * p);
}
g.push(a, b);
g.push(e, f);
} else {
g.push(c, d);
g.push(a, b);
s = 1;
t = m;
for (; s < q; s++, t += r) {
g.push(a + Math.sin(t) * p, b + Math.cos(t) * p);
g.push(a, b);
}
g.push(e, f);
g.push(a, b);
}
return q * 2;
}
function Uf(a, b) {
if (a.lineStyle.native) {
(function (a, b) {
var c = 0;
var d = a.shape;
var e = a.points || d.points;
var f = d.type !== kb.POLY || d.closeStroke;
if (e.length !== 0) {
var g = b.points;
var h = b.indices;
var i = e.length / 2;
var j = g.length / 2;
var k = j;
g.push(e[0], e[1]);
c = 1;
for (; c < i; c++) {
g.push(e[c * 2], e[c * 2 + 1]);
h.push(k, k + 1);
k++;
}
if (f) {
h.push(k, j);
}
}
})(a, b);
} else {
(function (a, b) {
var c = a.shape;
var d = a.points || c.points.slice();
var e = b.closePointEps;
if (d.length !== 0) {
var f = a.lineStyle;
var g = new ob(d[0], d[1]);
var h = new ob(d[d.length - 2], d[d.length - 1]);
var i = c.type !== kb.POLY || c.closeStroke;
var j = Math.abs(g.x - h.x) < e && Math.abs(g.y - h.y) < e;
if (i) {
d = d.slice();
if (j) {
d.pop();
d.pop();
h.set(d[d.length - 2], d[d.length - 1]);
}
var k = (g.x + h.x) * 0.5;
var l = (h.y + g.y) * 0.5;
d.unshift(k, l);
d.push(k, l);
}
var m = b.points;
var n = d.length / 2;
var o = d.length;
var p = m.length / 2;
var q = f.width / 2;
var r = q * q;
var s = f.miterLimit * f.miterLimit;
var t = d[0];
var u = d[1];
var v = d[2];
var w = d[3];
var x = 0;
var y = 0;
var z = -(u - w);
var A = t - v;
var B = 0;
var C = 0;
var D = Math.sqrt(z * z + A * A);
z /= D;
A /= D;
z *= q;
A *= q;
var E = f.alignment;
var F = (1 - E) * 2;
var G = E * 2;
if (!i) {
if (f.cap === Ff.ROUND) {
o += Tf(t - z * (F - G) * 0.5, u - A * (F - G) * 0.5, t - z * F, u - A * F, t + z * G, u + A * G, m, true) + 2;
} else if (f.cap === Ff.SQUARE) {
o += Sf(t, u, z, A, F, G, true, m);
}
}
m.push(t - z * F, u - A * F);
m.push(t + z * G, u + A * G);
for (var H = 1; H < n - 1; ++H) {
t = d[(H - 1) * 2];
u = d[(H - 1) * 2 + 1];
v = d[H * 2];
w = d[H * 2 + 1];
x = d[(H + 1) * 2];
y = d[(H + 1) * 2 + 1];
z = -(u - w);
A = t - v;
z /= D = Math.sqrt(z * z + A * A);
A /= D;
z *= q;
A *= q;
B = -(w - y);
C = v - x;
B /= D = Math.sqrt(B * B + C * C);
C /= D;
B *= q;
C *= q;
var I = v - t;
var J = u - w;
var K = v - x;
var L = y - w;
var M = J * K - L * I;
var N = M < 0;
if (Math.abs(M) < 0.1) {
m.push(v - z * F, w - A * F);
m.push(v + z * G, w + A * G);
} else {
var O = (-z + t) * (-A + w) - (-z + v) * (-A + u);
var P = (-B + x) * (-C + w) - (-B + v) * (-C + y);
var Q = (I * P - K * O) / M;
var R = (L * O - J * P) / M;
var S = (Q - v) * (Q - v) + (R - w) * (R - w);
var T = v + (Q - v) * F;
var U = w + (R - w) * F;
var V = v - (Q - v) * G;
var W = w - (R - w) * G;
var X = N ? F : G;
if (S <= Math.min(I * I + J * J, K * K + L * L) + X * X * r) {
if (f.join === Ef.BEVEL || S / r > s) {
if (N) {
m.push(T, U);
m.push(v + z * G, w + A * G);
m.push(T, U);
m.push(v + B * G, w + C * G);
} else {
m.push(v - z * F, w - A * F);
m.push(V, W);
m.push(v - B * F, w - C * F);
m.push(V, W);
}
o += 2;
} else if (f.join === Ef.ROUND) {
if (N) {
m.push(T, U);
m.push(v + z * G, w + A * G);
o += Tf(v, w, v + z * G, w + A * G, v + B * G, w + C * G, m, true) + 4;
m.push(T, U);
m.push(v + B * G, w + C * G);
} else {
m.push(v - z * F, w - A * F);
m.push(V, W);
o += Tf(v, w, v - z * F, w - A * F, v - B * F, w - C * F, m, false) + 4;
m.push(v - B * F, w - C * F);
m.push(V, W);
}
} else {
m.push(T, U);
m.push(V, W);
}
} else {
m.push(v - z * F, w - A * F);
m.push(v + z * G, w + A * G);
if (f.join !== Ef.BEVEL && S / r <= s) {
if (f.join === Ef.ROUND) {
o += N ? Tf(v, w, v + z * G, w + A * G, v + B * G, w + C * G, m, true) + 2 : Tf(v, w, v - z * F, w - A * F, v - B * F, w - C * F, m, false) + 2;
} else {
if (N) {
m.push(V, W);
m.push(V, W);
} else {
m.push(T, U);
m.push(T, U);
}
o += 2;
}
}
m.push(v - B * F, w - C * F);
m.push(v + B * G, w + C * G);
o += 2;
}
}
}
t = d[(n - 2) * 2];
u = d[(n - 2) * 2 + 1];
v = d[(n - 1) * 2];
z = -(u - (w = d[(n - 1) * 2 + 1]));
A = t - v;
z /= D = Math.sqrt(z * z + A * A);
A /= D;
z *= q;
A *= q;
m.push(v - z * F, w - A * F);
m.push(v + z * G, w + A * G);
if (!i) {
if (f.cap === Ff.ROUND) {
o += Tf(v - z * (F - G) * 0.5, w - A * (F - G) * 0.5, v - z * F, w - A * F, v + z * G, w + A * G, m, false) + 2;
} else if (f.cap === Ff.SQUARE) {
o += Sf(v, w, z, A, F, G, false, m);
}
}
var Y = b.indices;
var Z = If.epsilon * If.epsilon;
for (H = p; H < o + p - 2; ++H) {
t = m[H * 2];
u = m[H * 2 + 1];
v = m[(H + 1) * 2];
w = m[(H + 1) * 2 + 1];
x = m[(H + 2) * 2];
y = m[(H + 2) * 2 + 1];
if (Math.abs(t * (w - y) + v * (y - u) + x * (u - w)) >= Z) {
Y.push(H, H + 1, H + 2);
}
}
}
})(a, b);
}
}
var Vf;
var Wf;
var Xf = function () {
function a() {}
a.curveTo = function (a, b, c, d, e, f) {
var g = f[f.length - 2];
var h = f[f.length - 1] - b;
var i = g - a;
var j = d - b;
var k = c - a;
var l = Math.abs(h * k - i * j);
if (l < 1e-8 || e === 0) {
if (f[f.length - 2] !== a || f[f.length - 1] !== b) {
f.push(a, b);
}
return null;
}
var m = h * h + i * i;
var n = j * j + k * k;
var o = h * j + i * k;
var p = e * Math.sqrt(m) / l;
var q = e * Math.sqrt(n) / l;
var r = p * o / m;
var s = q * o / n;
var t = p * k + q * i;
var u = p * j + q * h;
var v = i * (q + r);
var w = h * (q + r);
var x = k * (p + s);
var y = j * (p + s);
return {
cx: t + a,
cy: u + b,
radius: e,
startAngle: Math.atan2(w - u, v - t),
endAngle: Math.atan2(y - u, x - t),
anticlockwise: i * j > k * h
};
};
a.arc = function (a, b, c, d, e, f, g, h, i) {
for (var j = g - f, k = If._segmentsCount(Math.abs(j) * e, Math.ceil(Math.abs(j) / lb) * 40), l = j / (k * 2), m = l * 2, n = Math.cos(l), o = Math.sin(l), p = k - 1, q = p % 1 / p, r = 0; r <= p; ++r) {
var s = l + f + m * (r + q * r);
var t = Math.cos(s);
var u = -Math.sin(s);
i.push((n * t + o * u) * e + c, (n * -u + o * t) * e + d);
}
};
return a;
}();
var Yf = function () {
function a() {}
a.curveLength = function (a, b, c, d, e, f, g, h) {
for (var i = 0, j = 0, k = 0, l = 0, m = 0, n = 0, o = 0, p = 0, q = 0, r = 0, s = 0, t = a, u = b, v = 1; v <= 10; ++v) {
r = t - (p = (o = (n = (m = 1 - (j = v / 10)) * m) * m) * a + n * 3 * j * c + m * 3 * (k = j * j) * e + (l = k * j) * g);
s = u - (q = o * b + n * 3 * j * d + m * 3 * k * f + l * h);
t = p;
u = q;
i += Math.sqrt(r * r + s * s);
}
return i;
};
a.curveTo = function (b, c, d, e, f, g, h) {
var i = h[h.length - 2];
var j = h[h.length - 1];
h.length -= 2;
var k = If._segmentsCount(a.curveLength(i, j, b, c, d, e, f, g));
var l = 0;
var m = 0;
var n = 0;
var o = 0;
var p = 0;
h.push(i, j);
for (var q = 1, r = 0; q <= k; ++q) {
n = (m = (l = 1 - (r = q / k)) * l) * l;
p = (o = r * r) * r;
h.push(n * i + m * 3 * r * b + l * 3 * o * d + p * f, n * j + m * 3 * r * c + l * 3 * o * e + p * g);
}
};
return a;
}();
var Zf = function () {
function a() {}
a.curveLength = function (a, b, c, d, e, f) {
var g = a - c * 2 + e;
var h = b - d * 2 + f;
var i = c * 2 - a * 2;
var j = d * 2 - b * 2;
var k = (g * g + h * h) * 4;
var l = (g * i + h * j) * 4;
var m = i * i + j * j;
var n = Math.sqrt(k + l + m) * 2;
var o = Math.sqrt(k);
var p = k * 2 * o;
var q = Math.sqrt(m) * 2;
var r = l / o;
return (p * n + o * l * (n - q) + (m * 4 * k - l * l) * Math.log((o * 2 + r + n) / (r + q))) / (p * 4);
};
a.curveTo = function (b, c, d, e, f) {
for (var g = f[f.length - 2], h = f[f.length - 1], i = If._segmentsCount(a.curveLength(g, h, b, c, d, e)), j = 0, k = 0, l = 1; l <= i; ++l) {
var m = l / i;
j = g + (b - g) * m;
k = h + (c - h) * m;
f.push(j + (b + (d - b) * m - j) * m, k + (c + (e - c) * m - k) * m);
}
};
return a;
}();
var $f = function () {
function a() {
this.reset();
}
a.prototype.begin = function (a, b, c) {
this.reset();
this.style = a;
this.start = b;
this.attribStart = c;
};
a.prototype.end = function (a, b) {
this.attribSize = b - this.attribStart;
this.size = a - this.start;
};
a.prototype.reset = function () {
this.style = null;
this.size = 0;
this.start = 0;
this.attribStart = 0;
this.attribSize = 0;
};
return a;
}();
(Vf = {})[kb.POLY] = Nf;
Vf[kb.CIRC] = Of;
Vf[kb.ELIP] = Of;
Vf[kb.RECT] = {
build: function (a) {
var b = a.shape;
var c = b.x;
var d = b.y;
var e = b.width;
var f = b.height;
var g = a.points;
g.length = 0;
g.push(c, d, c + e, d, c + e, d + f, c, d + f);
},
triangulate: function (a, b) {
var c = a.points;
var d = b.points;
var e = d.length / 2;
d.push(c[0], c[1], c[2], c[3], c[6], c[7], c[4], c[5]);
b.indices.push(e, e + 1, e + 2, e + 1, e + 2, e + 3);
}
};
Vf[kb.RREC] = Rf;
var _f = Vf;
var ag = [];
var bg = [];
var cg = function () {
function a(a, b, c, d) {
if (b === undefined) {
b = null;
}
if (c === undefined) {
c = null;
}
if (d === undefined) {
d = null;
}
this.points = [];
this.holes = [];
this.shape = a;
this.lineStyle = c;
this.fillStyle = b;
this.matrix = d;
this.type = a.type;
}
a.prototype.clone = function () {
return new a(this.shape, this.fillStyle, this.lineStyle, this.matrix);
};
a.prototype.destroy = function () {
this.shape = null;
this.holes.length = 0;
this.holes = null;
this.points.length = 0;
this.points = null;
this.lineStyle = null;
this.fillStyle = null;
};
return a;
}();
var dg = new ob();
var eg = new Gb();
var fg = function (a) {
function b() {
var b = a.call(this) || this;
b.closePointEps = 0.0001;
b.boundsPadding = 0;
b.uvsFloat32 = null;
b.indicesUint16 = null;
b.batchable = false;
b.points = [];
b.colors = [];
b.uvs = [];
b.indices = [];
b.textureIds = [];
b.graphicsData = [];
b.drawCalls = [];
b.batchDirty = -1;
b.batches = [];
b.dirty = 0;
b.cacheDirty = -1;
b.clearDirty = 0;
b.shapeIndex = 0;
b._bounds = new Gb();
b.boundsDirty = -1;
return b;
}
Lf(b, a);
Object.defineProperty(b.prototype, "bounds", {
get: function () {
if (this.boundsDirty !== this.dirty) {
this.boundsDirty = this.dirty;
this.calculateBounds();
}
return this._bounds;
},
enumerable: false,
configurable: true
});
b.prototype.invalidate = function () {
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 (var a = 0; a < this.drawCalls.length; a++) {
this.drawCalls[a].texArray.clear();
bg.push(this.drawCalls[a]);
}
this.drawCalls.length = 0;
a = 0;
for (; a < this.batches.length; a++) {
var b = this.batches[a];
b.reset();
ag.push(b);
}
this.batches.length = 0;
};
b.prototype.clear = function () {
if (this.graphicsData.length > 0) {
this.invalidate();
this.clearDirty++;
this.graphicsData.length = 0;
}
return this;
};
b.prototype.drawShape = function (a, b, c, d) {
if (b === undefined) {
b = null;
}
if (c === undefined) {
c = null;
}
if (d === undefined) {
d = null;
}
var e = new cg(a, b, c, d);
this.graphicsData.push(e);
this.dirty++;
return this;
};
b.prototype.drawHole = function (a, b) {
if (b === undefined) {
b = null;
}
if (!this.graphicsData.length) {
return null;
}
var c = new cg(a, null, null, b);
var d = this.graphicsData[this.graphicsData.length - 1];
c.lineStyle = d.lineStyle;
d.holes.push(c);
this.dirty++;
return this;
};
b.prototype.destroy = function () {
a.prototype.destroy.call(this);
for (var b = 0; b < this.graphicsData.length; ++b) {
this.graphicsData[b].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;
};
b.prototype.containsPoint = function (a) {
for (var b = this.graphicsData, c = 0; c < b.length; ++c) {
var d = b[c];
if (d.fillStyle.visible && d.shape && (d.matrix ? d.matrix.applyInverse(a, dg) : dg.copyFrom(a), d.shape.contains(dg.x, dg.y))) {
var e = false;
if (d.holes) {
for (var f = 0; f < d.holes.length; f++) {
if (d.holes[f].shape.contains(dg.x, dg.y)) {
e = true;
break;
}
}
}
if (!e) {
return true;
}
}
}
return false;
};
b.prototype.updateBatches = function (a) {
if (this.graphicsData.length) {
if (this.validateBatching()) {
this.cacheDirty = this.dirty;
var b = this.uvs;
var c = this.graphicsData;
var d = null;
var e = null;
if (this.batches.length > 0) {
e = (d = this.batches[this.batches.length - 1]).style;
}
for (var f = this.shapeIndex; f < c.length; f++) {
this.shapeIndex++;
var g = c[f];
var h = g.fillStyle;
var i = g.lineStyle;
_f[g.type].build(g);
if (g.matrix) {
this.transformPoints(g.points, g.matrix);
}
if (h.visible || i.visible) {
this.processHoles(g.holes);
}
for (var j = 0; j < 2; j++) {
var k = j === 0 ? h : i;
if (k.visible) {
var l = k.texture.baseTexture;
var m = this.indices.length;
var n = this.points.length / 2;
l.wrapMode = wa.REPEAT;
if (j === 0) {
this.processFill(g);
} else {
this.processLine(g);
}
var o = this.points.length / 2 - n;
if (o !== 0) {
if (d && !this._compareStyles(e, k)) {
d.end(m, n);
d = null;
}
if (!d) {
(d = ag.pop() || new $f()).begin(k, m, n);
this.batches.push(d);
e = k;
}
this.addUvs(this.points, b, k.texture, n, o, k.matrix);
}
}
}
}
var p = this.indices.length;
var q = this.points.length / 2;
if (d) {
d.end(p, q);
}
if (this.batches.length !== 0) {
if (this.indicesUint16 && this.indices.length === this.indicesUint16.length) {
this.indicesUint16.set(this.indices);
} else {
var r = q > 65535 && a;
this.indicesUint16 = r ? new Uint32Array(this.indices) : new Uint16Array(this.indices);
}
this.batchable = this.isBatchable();
if (this.batchable) {
this.packBatches();
} else {
this.buildDrawCalls();
}
} else {
this.batchable = true;
}
}
} else {
this.batchable = true;
}
};
b.prototype._compareStyles = function (a, b) {
return !!a && !!b && a.texture.baseTexture === b.texture.baseTexture && a.color + a.alpha === b.color + b.alpha && !!a.native == !!b.native;
};
b.prototype.validateBatching = function () {
if (this.dirty === this.cacheDirty || !this.graphicsData.length) {
return false;
}
for (var a = 0, b = this.graphicsData.length; a < b; a++) {
var c = this.graphicsData[a];
var d = c.fillStyle;
var e = c.lineStyle;
if (d && !d.texture.baseTexture.valid) {
return false;
}
if (e && !e.texture.baseTexture.valid) {
return false;
}
}
return true;
};
b.prototype.packBatches = function () {
this.batchDirty++;
this.uvsFloat32 = new Float32Array(this.uvs);
for (var a = this.batches, b = 0, c = a.length; b < c; b++) {
for (var d = a[b], e = 0; e < d.size; e++) {
var f = d.start + e;
this.indicesUint16[f] = this.indicesUint16[f] - d.attribStart;
}
}
};
b.prototype.isBatchable = function () {
if (this.points.length > 131070) {
return false;
}
for (var a = this.batches, c = 0; c < a.length; c++) {
if (a[c].style.native) {
return false;
}
}
return this.points.length < b.BATCHABLE_SIZE * 2;
};
b.prototype.buildDrawCalls = function () {
for (var a = ++Bc._globalBatch, b = 0; b < this.drawCalls.length; b++) {
this.drawCalls[b].texArray.clear();
bg.push(this.drawCalls[b]);
}
this.drawCalls.length = 0;
var c = this.colors;
var d = this.textureIds;
var e = bg.pop();
if (!e) {
(e = new ue()).texArray = new ve();
}
e.texArray.count = 0;
e.start = 0;
e.size = 0;
e.type = qa.TRIANGLES;
var f = 0;
var g = null;
var h = 0;
var i = false;
var j = qa.TRIANGLES;
var k = 0;
this.drawCalls.push(e);
b = 0;
for (; b < this.batches.length; b++) {
var l = this.batches[b];
var m = l.style;
var n = m.texture.baseTexture;
if (i !== !!m.native) {
j = (i = !!m.native) ? qa.LINES : qa.TRIANGLES;
g = null;
f = 8;
a++;
}
if (g !== n) {
g = n;
if (n._batchEnabled !== a) {
if (f === 8) {
a++;
f = 0;
if (e.size > 0) {
if (!(e = bg.pop())) {
(e = new ue()).texArray = new ve();
}
this.drawCalls.push(e);
}
e.start = k;
e.size = 0;
e.texArray.count = 0;
e.type = j;
}
n.touched = 1;
n._batchEnabled = a;
n._batchLocation = f;
n.wrapMode = wa.REPEAT;
e.texArray.elements[e.texArray.count++] = n;
f++;
}
}
e.size += l.size;
k += l.size;
h = n._batchLocation;
this.addColors(c, m.color, m.alpha, l.attribSize, l.attribStart);
this.addTextureIds(d, h, l.attribSize, l.attribStart);
}
Bc._globalBatch = a;
this.packAttributes();
};
b.prototype.packAttributes = function () {
for (var a = this.points, b = this.uvs, c = this.colors, d = this.textureIds, e = new ArrayBuffer(a.length * 3 * 4), f = new Float32Array(e), g = new Uint32Array(e), h = 0, i = 0; i < a.length / 2; i++) {
f[h++] = a[i * 2];
f[h++] = a[i * 2 + 1];
f[h++] = b[i * 2];
f[h++] = b[i * 2 + 1];
g[h++] = c[i];
f[h++] = d[i];
}
this._buffer.update(e);
this._indexBuffer.update(this.indicesUint16);
};
b.prototype.processFill = function (a) {
if (a.holes.length) {
Nf.triangulate(a, this);
} else {
_f[a.type].triangulate(a, this);
}
};
b.prototype.processLine = function (a) {
Uf(a, this);
for (var b = 0; b < a.holes.length; b++) {
Uf(a.holes[b], this);
}
};
b.prototype.processHoles = function (a) {
for (var b = 0; b < a.length; b++) {
var c = a[b];
_f[c.type].build(c);
if (c.matrix) {
this.transformPoints(c.points, c.matrix);
}
}
};
b.prototype.calculateBounds = function () {
var a = this._bounds;
var b = eg;
var c = wb.IDENTITY;
this._bounds.clear();
b.clear();
for (var d = 0; d < this.graphicsData.length; d++) {
var e = this.graphicsData[d];
var f = e.shape;
var g = e.type;
var h = e.lineStyle;
var i = e.matrix || wb.IDENTITY;
var j = 0;
if (h && h.visible) {
j = h.width;
if (g !== kb.POLY || e.fillStyle.visible) {
j *= Math.max(0, h.alignment);
} else {
j *= Math.max(h.alignment, 1 - h.alignment);
}
}
if (c !== i) {
if (!b.isEmpty()) {
a.addBoundsMatrix(b, c);
b.clear();
}
c = i;
}
if (g === kb.RECT || g === kb.RREC) {
var k = f;
b.addFramePad(k.x, k.y, k.x + k.width, k.y + k.height, j, j);
} else if (g === kb.CIRC) {
var l = f;
b.addFramePad(l.x, l.y, l.x, l.y, l.radius + j, l.radius + j);
} else if (g === kb.ELIP) {
var m = f;
b.addFramePad(m.x, m.y, m.x, m.y, m.width + j, m.height + j);
} else {
var n = f;
a.addVerticesMatrix(c, n.points, 0, n.points.length, j, j);
}
}
if (!b.isEmpty()) {
a.addBoundsMatrix(b, c);
}
a.pad(this.boundsPadding, this.boundsPadding);
};
b.prototype.transformPoints = function (a, b) {
for (var c = 0; c < a.length / 2; c++) {
var d = a[c * 2];
var e = a[c * 2 + 1];
a[c * 2] = b.a * d + b.c * e + b.tx;
a[c * 2 + 1] = b.b * d + b.d * e + b.ty;
}
};
b.prototype.addColors = function (a, b, c, d, e) {
if (e === undefined) {
e = 0;
}
var f = Ua((b >> 16) + (b & 65280) + ((b & 255) << 16), c);
a.length = Math.max(a.length, e + d);
for (var g = 0; g < d; g++) {
a[e + g] = f;
}
};
b.prototype.addTextureIds = function (a, b, c, d) {
if (d === undefined) {
d = 0;
}
a.length = Math.max(a.length, d + c);
for (var e = 0; e < c; e++) {
a[d + e] = b;
}
};
b.prototype.addUvs = function (a, b, c, d, e, f) {
if (f === undefined) {
f = null;
}
for (var g = 0, h = b.length, i = c.frame; g < e;) {
var j = a[(d + g) * 2];
var k = a[(d + g) * 2 + 1];
if (f) {
var l = f.a * j + f.c * k + f.tx;
k = f.b * j + f.d * k + f.ty;
j = l;
}
g++;
b.push(j / i.width, k / i.height);
}
var m = c.baseTexture;
if (i.width < m.width || i.height < m.height) {
this.adjustUvs(b, c, h, e);
}
};
b.prototype.adjustUvs = function (a, b, c, d) {
for (var e = b.baseTexture, f = 0.000001, g = c + d * 2, h = b.frame, i = h.width / e.width, j = h.height / e.height, k = h.x / h.width, l = h.y / h.height, m = Math.floor(a[c] + f), n = Math.floor(a[c + 1] + f), o = c + 2; o < g; o += 2) {
m = Math.min(m, Math.floor(a[o] + f));
n = Math.min(n, Math.floor(a[o + 1] + f));
}
k -= m;
l -= n;
o = c;
for (; o < g; o += 2) {
a[o] = (a[o] + k) * i;
a[o + 1] = (a[o + 1] + l) * j;
}
};
b.BATCHABLE_SIZE = 100;
return b;
}(ze);
var gg = function (a) {
function b() {
var b = a !== null && a.apply(this, arguments) || this;
b.width = 0;
b.alignment = 0.5;
b.native = false;
b.cap = Ff.BUTT;
b.join = Ef.MITER;
b.miterLimit = 10;
return b;
}
Lf(b, a);
b.prototype.clone = function () {
var a = new b();
a.color = this.color;
a.alpha = this.alpha;
a.texture = this.texture;
a.matrix = this.matrix;
a.visible = this.visible;
a.width = this.width;
a.alignment = this.alignment;
a.native = this.native;
a.cap = this.cap;
a.join = this.join;
a.miterLimit = this.miterLimit;
return a;
};
b.prototype.reset = function () {
a.prototype.reset.call(this);
this.color = 0;
this.alignment = 0.5;
this.width = 0;
this.native = false;
};
return b;
}(Jf);
var hg = new Float32Array(3);
var ig = {};
var jg = function (a) {
function b(b) {
if (b === undefined) {
b = null;
}
var c = a.call(this) || this;
c.shader = null;
c.pluginName = "batch";
c.currentPath = null;
c.batches = [];
c.batchTint = -1;
c.batchDirty = -1;
c.vertexData = null;
c._fillStyle = new Jf();
c._lineStyle = new gg();
c._matrix = null;
c._holeMode = false;
c.state = Qd.for2d();
c._geometry = b || new fg();
c._geometry.refCount++;
c._transformID = -1;
c.tint = 16777215;
c.blendMode = pa.NORMAL;
return c;
}
Lf(b, a);
Object.defineProperty(b.prototype, "geometry", {
get: function () {
return this._geometry;
},
enumerable: false,
configurable: true
});
b.prototype.clone = function () {
this.finishPoly();
return new b(this._geometry);
};
Object.defineProperty(b.prototype, "blendMode", {
get: function () {
return this.state.blendMode;
},
set: function (a) {
this.state.blendMode = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tint", {
get: function () {
return this._tint;
},
set: function (a) {
this._tint = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "fill", {
get: function () {
return this._fillStyle;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "line", {
get: function () {
return this._lineStyle;
},
enumerable: false,
configurable: true
});
b.prototype.lineStyle = function (a, b, c, d, e) {
if (a === undefined) {
a = null;
}
if (b === undefined) {
b = 0;
}
if (c === undefined) {
c = 1;
}
if (d === undefined) {
d = 0.5;
}
if (e === undefined) {
e = false;
}
if (typeof a == "number") {
a = {
width: a,
color: b,
alpha: c,
alignment: d,
native: e
};
}
return this.lineTextureStyle(a);
};
b.prototype.lineTextureStyle = function (a) {
a = Object.assign({
width: 0,
texture: Sc.WHITE,
color: a && a.texture ? 16777215 : 0,
alpha: 1,
matrix: null,
alignment: 0.5,
native: false,
cap: Ff.BUTT,
join: Ef.MITER,
miterLimit: 10
}, a);
if (this.currentPath) {
this.startPoly();
}
var b = a.width > 0 && a.alpha > 0;
if (b) {
if (a.matrix) {
a.matrix = a.matrix.clone();
a.matrix.invert();
}
Object.assign(this._lineStyle, {
visible: b
}, a);
} else {
this._lineStyle.reset();
}
return this;
};
b.prototype.startPoly = function () {
if (this.currentPath) {
var a = this.currentPath.points;
var b = this.currentPath.points.length;
if (b > 2) {
this.drawShape(this.currentPath);
this.currentPath = new tb();
this.currentPath.closeStroke = false;
this.currentPath.points.push(a[b - 2], a[b - 1]);
}
} else {
this.currentPath = new tb();
this.currentPath.closeStroke = false;
}
};
b.prototype.finishPoly = function () {
if (this.currentPath) {
if (this.currentPath.points.length > 2) {
this.drawShape(this.currentPath);
this.currentPath = null;
} else {
this.currentPath.points.length = 0;
}
}
};
b.prototype.moveTo = function (a, b) {
this.startPoly();
this.currentPath.points[0] = a;
this.currentPath.points[1] = b;
return this;
};
b.prototype.lineTo = function (a, b) {
if (!this.currentPath) {
this.moveTo(0, 0);
}
var c = this.currentPath.points;
var d = c[c.length - 2];
var e = c[c.length - 1];
if (d !== a || e !== b) {
c.push(a, b);
}
return this;
};
b.prototype._initCurve = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 0;
}
if (this.currentPath) {
if (this.currentPath.points.length === 0) {
this.currentPath.points = [a, b];
}
} else {
this.moveTo(a, b);
}
};
b.prototype.quadraticCurveTo = function (a, b, c, d) {
this._initCurve();
var e = this.currentPath.points;
if (e.length === 0) {
this.moveTo(0, 0);
}
Zf.curveTo(a, b, c, d, e);
return this;
};
b.prototype.bezierCurveTo = function (a, b, c, d, e, f) {
this._initCurve();
Yf.curveTo(a, b, c, d, e, f, this.currentPath.points);
return this;
};
b.prototype.arcTo = function (a, b, c, d, e) {
this._initCurve(a, b);
var f = this.currentPath.points;
var g = Xf.curveTo(a, b, c, d, e, f);
if (g) {
var h = g.cx;
var i = g.cy;
var j = g.radius;
var k = g.startAngle;
var l = g.endAngle;
var m = g.anticlockwise;
this.arc(h, i, j, k, l, m);
}
return this;
};
b.prototype.arc = function (a, b, c, d, e, f) {
if (f === undefined) {
f = false;
}
if (d === e) {
return this;
}
if (!f && e <= d) {
e += lb;
} else if (f && d <= e) {
d += lb;
}
if (e - d == 0) {
return this;
}
var g = a + Math.cos(d) * c;
var h = b + Math.sin(d) * c;
var i = this._geometry.closePointEps;
var j = this.currentPath ? this.currentPath.points : null;
if (j) {
var k = Math.abs(j[j.length - 2] - g);
var l = Math.abs(j[j.length - 1] - h);
if (k >= i || l >= i) {
j.push(g, h);
}
} else {
this.moveTo(g, h);
j = this.currentPath.points;
}
Xf.arc(g, h, a, b, c, d, e, f, j);
return this;
};
b.prototype.beginFill = function (a, b) {
if (a === undefined) {
a = 0;
}
if (b === undefined) {
b = 1;
}
return this.beginTextureFill({
texture: Sc.WHITE,
color: a,
alpha: b
});
};
b.prototype.beginTextureFill = function (a) {
a = Object.assign({
texture: Sc.WHITE,
color: 16777215,
alpha: 1,
matrix: null
}, a);
if (this.currentPath) {
this.startPoly();
}
var b = a.alpha > 0;
if (b) {
if (a.matrix) {
a.matrix = a.matrix.clone();
a.matrix.invert();
}
Object.assign(this._fillStyle, {
visible: b
}, a);
} else {
this._fillStyle.reset();
}
return this;
};
b.prototype.endFill = function () {
this.finishPoly();
this._fillStyle.reset();
return this;
};
b.prototype.drawRect = function (a, b, c, d) {
return this.drawShape(new qb(a, b, c, d));
};
b.prototype.drawRoundedRect = function (a, b, c, d, e) {
return this.drawShape(new ub(a, b, c, d, e));
};
b.prototype.drawCircle = function (a, b, c) {
return this.drawShape(new rb(a, b, c));
};
b.prototype.drawEllipse = function (a, b, c, d) {
return this.drawShape(new sb(a, b, c, d));
};
b.prototype.drawPolygon = function () {
for (var a, b = arguments, c = [], d = 0; d < arguments.length; d++) {
c[d] = b[d];
}
var e = true;
var f = c[0];
if (f.points) {
e = f.closeStroke;
a = f.points;
} else {
a = Array.isArray(c[0]) ? c[0] : c;
}
var g = new tb(a);
g.closeStroke = e;
this.drawShape(g);
return this;
};
b.prototype.drawShape = function (a) {
if (this._holeMode) {
this._geometry.drawHole(a, this._matrix);
} else {
this._geometry.drawShape(a, this._fillStyle.clone(), this._lineStyle.clone(), this._matrix);
}
return this;
};
b.prototype.clear = function () {
this._geometry.clear();
this._lineStyle.reset();
this._fillStyle.reset();
this._boundsID++;
this._matrix = null;
this._holeMode = false;
this.currentPath = null;
return this;
};
b.prototype.isFastRect = function () {
var a = this._geometry.graphicsData;
return a.length === 1 && a[0].shape.type === kb.RECT && !a[0].matrix && !a[0].holes.length && (!a[0].lineStyle.visible || !a[0].lineStyle.width);
};
b.prototype._render = function (a) {
this.finishPoly();
var b = this._geometry;
var c = a.context.supports.uint32Indices;
b.updateBatches(c);
if (b.batchable) {
if (this.batchDirty !== b.batchDirty) {
this._populateBatches();
}
this._renderBatched(a);
} else {
a.batch.flush();
this._renderDirect(a);
}
};
b.prototype._populateBatches = function () {
var a = this._geometry;
var b = this.blendMode;
var c = a.batches.length;
this.batchTint = -1;
this._transformID = -1;
this.batchDirty = a.batchDirty;
this.batches.length = c;
this.vertexData = new Float32Array(a.points);
for (var d = 0; d < c; d++) {
var e = a.batches[d];
var f = e.style.color;
var g = new Float32Array(this.vertexData.buffer, e.attribStart * 4 * 2, e.attribSize * 2);
var h = new Float32Array(a.uvsFloat32.buffer, e.attribStart * 4 * 2, e.attribSize * 2);
var i = {
vertexData: g,
blendMode: b,
indices: new Uint16Array(a.indicesUint16.buffer, e.start * 2, e.size),
uvs: h,
_batchRGB: Pa(f),
_tintRGB: f,
_texture: e.style.texture,
alpha: e.style.alpha,
worldAlpha: 1
};
this.batches[d] = i;
}
};
b.prototype._renderBatched = function (a) {
if (this.batches.length) {
a.batch.setObjectRenderer(a.plugins[this.pluginName]);
this.calculateVertices();
this.calculateTints();
for (var b = 0, c = this.batches.length; b < c; b++) {
var d = this.batches[b];
d.worldAlpha = this.worldAlpha * d.alpha;
a.plugins[this.pluginName].render(d);
}
}
};
b.prototype._renderDirect = function (a) {
var b = this._resolveDirectShader(a);
var c = this._geometry;
var d = this.tint;
var e = this.worldAlpha;
var f = b.uniforms;
var g = c.drawCalls;
f.translationMatrix = this.transform.worldTransform;
f.tint[0] = (d >> 16 & 255) / 255 * e;
f.tint[1] = (d >> 8 & 255) / 255 * e;
f.tint[2] = (d & 255) / 255 * e;
f.tint[3] = e;
a.shader.bind(b);
a.geometry.bind(c, b);
a.state.set(this.state);
for (var h = 0, i = g.length; h < i; h++) {
this._renderDrawCallDirect(a, c.drawCalls[h]);
}
};
b.prototype._renderDrawCallDirect = function (a, b) {
for (var c = b.texArray, d = b.type, e = b.size, f = b.start, g = c.count, h = 0; h < g; h++) {
a.texture.bind(c.elements[h], h);
}
a.geometry.draw(d, e, f);
};
b.prototype._resolveDirectShader = function (a) {
var b = this.shader;
var c = this.pluginName;
if (!b) {
if (!ig[c]) {
for (var d = a.plugins[c].MAX_TEXTURES, e = new Int32Array(d), f = 0; f < d; f++) {
e[f] = f;
}
var g = {
tint: new Float32Array([1, 1, 1, 1]),
translationMatrix: new wb(),
default: ed.from({
uSamplers: e
}, true)
};
var h = a.plugins[c]._shader.program;
ig[c] = new Pd(h, g);
}
b = ig[c];
}
return b;
};
b.prototype._calculateBounds = function () {
this.finishPoly();
var a = this._geometry;
if (a.graphicsData.length) {
var b = a.bounds;
var c = b.minX;
var d = b.minY;
var e = b.maxX;
var f = b.maxY;
this._bounds.addFrame(this.transform, c, d, e, f);
}
};
b.prototype.containsPoint = function (a) {
this.worldTransform.applyInverse(a, b._TEMP_POINT);
return this._geometry.containsPoint(b._TEMP_POINT);
};
b.prototype.calculateTints = function () {
if (this.batchTint !== this.tint) {
this.batchTint = this.tint;
for (var a = Pa(this.tint, hg), b = 0; b < this.batches.length; b++) {
var c = this.batches[b];
var d = c._batchRGB;
var e = (a[0] * d[0] * 255 << 16) + (a[1] * d[1] * 255 << 8) + (a[2] * d[2] * 255 | 0);
c._tintRGB = (e >> 16) + (e & 65280) + ((e & 255) << 16);
}
}
};
b.prototype.calculateVertices = function () {
var a = this.transform._worldID;
if (this._transformID !== a) {
this._transformID = a;
for (var b = this.transform.worldTransform, c = b.a, d = b.b, e = b.c, f = b.d, g = b.tx, h = b.ty, i = this._geometry.points, j = this.vertexData, k = 0, l = 0; l < i.length; l += 2) {
var m = i[l];
var n = i[l + 1];
j[k++] = c * m + e * n + g;
j[k++] = f * n + d * m + h;
}
}
};
b.prototype.closePath = function () {
var a = this.currentPath;
if (a) {
a.closeStroke = true;
this.finishPoly();
}
return this;
};
b.prototype.setMatrix = function (a) {
this._matrix = a;
return this;
};
b.prototype.beginHole = function () {
this.finishPoly();
this._holeMode = true;
return this;
};
b.prototype.endHole = function () {
this.finishPoly();
this._holeMode = false;
return this;
};
b.prototype.destroy = function (b) {
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;
a.prototype.destroy.call(this, b);
};
b.nextRoundedRectBehavior = false;
b._TEMP_POINT = new ob();
return b;
}(dc);
function kg(a, b) {
kg = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return kg(a, b);
}
var lg = new ob();
var mg = new Uint16Array([0, 1, 2, 0, 2, 3]);
var ng = function (a) {
function b(b) {
var c = a.call(this) || this;
c._anchor = new vb(c._onAnchorUpdate, c, b ? b.defaultAnchor.x : 0, b ? b.defaultAnchor.y : 0);
c._texture = null;
c._width = 0;
c._height = 0;
c._tint = null;
c._tintRGB = null;
c.tint = 16777215;
c.blendMode = pa.NORMAL;
c._cachedTint = 16777215;
c.uvs = null;
c.texture = b || Sc.EMPTY;
c.vertexData = new Float32Array(8);
c.vertexTrimmedData = null;
c._transformID = -1;
c._textureID = -1;
c._transformTrimmedID = -1;
c._textureTrimmedID = -1;
c.indices = mg;
c.pluginName = "batch";
c.isSprite = true;
c._roundPixels = Fa.ROUND_PIXELS;
return c;
}
(function (a, b) {
function c() {
this.constructor = a;
}
kg(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype._onTextureUpdate = function () {
this._textureID = -1;
this._textureTrimmedID = -1;
this._cachedTint = 16777215;
if (this._width) {
this.scale.x = _a(this.scale.x) * this._width / this._texture.orig.width;
}
if (this._height) {
this.scale.y = _a(this.scale.y) * this._height / this._texture.orig.height;
}
};
b.prototype._onAnchorUpdate = function () {
this._transformID = -1;
this._transformTrimmedID = -1;
};
b.prototype.calculateVertices = function () {
var a = this._texture;
if (this._transformID !== this.transform._worldID || this._textureID !== a._updateID) {
if (this._textureID !== a._updateID) {
this.uvs = this._texture._uvs.uvsFloat32;
}
this._transformID = this.transform._worldID;
this._textureID = a._updateID;
var b = this.transform.worldTransform;
var c = b.a;
var d = b.b;
var e = b.c;
var f = b.d;
var g = b.tx;
var h = b.ty;
var i = this.vertexData;
var j = a.trim;
var k = a.orig;
var l = this._anchor;
var m = 0;
var n = 0;
var o = 0;
var p = 0;
if (j) {
m = (n = j.x - l._x * k.width) + j.width;
o = (p = j.y - l._y * k.height) + j.height;
} else {
m = (n = -l._x * k.width) + k.width;
o = (p = -l._y * k.height) + k.height;
}
i[0] = c * n + e * p + g;
i[1] = f * p + d * n + h;
i[2] = c * m + e * p + g;
i[3] = f * p + d * m + h;
i[4] = c * m + e * o + g;
i[5] = f * o + d * m + h;
i[6] = c * n + e * o + g;
i[7] = f * o + d * n + h;
if (this._roundPixels) {
for (var q = Fa.RESOLUTION, r = 0; r < i.length; ++r) {
i[r] = Math.round((i[r] * q | 0) / q);
}
}
}
};
b.prototype.calculateTrimmedVertices = function () {
if (this.vertexTrimmedData) {
if (this._transformTrimmedID === this.transform._worldID && this._textureTrimmedID === this._texture._updateID) {
return;
}
} else {
this.vertexTrimmedData = new Float32Array(8);
}
this._transformTrimmedID = this.transform._worldID;
this._textureTrimmedID = this._texture._updateID;
var a = this._texture;
var b = this.vertexTrimmedData;
var c = a.orig;
var d = this._anchor;
var e = this.transform.worldTransform;
var f = e.a;
var g = e.b;
var h = e.c;
var i = e.d;
var j = e.tx;
var k = e.ty;
var l = -d._x * c.width;
var m = l + c.width;
var n = -d._y * c.height;
var o = n + c.height;
b[0] = f * l + h * n + j;
b[1] = i * n + g * l + k;
b[2] = f * m + h * n + j;
b[3] = i * n + g * m + k;
b[4] = f * m + h * o + j;
b[5] = i * o + g * m + k;
b[6] = f * l + h * o + j;
b[7] = i * o + g * l + k;
};
b.prototype._render = function (a) {
this.calculateVertices();
a.batch.setObjectRenderer(a.plugins[this.pluginName]);
a.plugins[this.pluginName].render(this);
};
b.prototype._calculateBounds = function () {
var a = this._texture.trim;
var b = this._texture.orig;
if (!a || a.width === b.width && a.height === b.height) {
this.calculateVertices();
this._bounds.addQuad(this.vertexData);
} else {
this.calculateTrimmedVertices();
this._bounds.addQuad(this.vertexTrimmedData);
}
};
b.prototype.getLocalBounds = function (b) {
if (this.children.length === 0) {
this._localBounds ||= new Gb();
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 (!b) {
this._localBoundsRect ||= new qb();
b = this._localBoundsRect;
}
return this._localBounds.getRectangle(b);
} else {
return a.prototype.getLocalBounds.call(this, b);
}
};
b.prototype.containsPoint = function (a) {
this.worldTransform.applyInverse(a, lg);
var b = this._texture.orig.width;
var c = this._texture.orig.height;
var d = -b * this.anchor.x;
var e = 0;
return lg.x >= d && lg.x < d + b && (e = -c * this.anchor.y, lg.y >= e && lg.y < e + c);
};
b.prototype.destroy = function (b) {
a.prototype.destroy.call(this, b);
this._texture.off("update", this._onTextureUpdate, this);
this._anchor = null;
if (typeof b == "boolean" ? b : b && b.texture) {
var c = typeof b == "boolean" ? b : b && b.baseTexture;
this._texture.destroy(!!c);
}
this._texture = null;
};
b.from = function (a, c) {
return new b(a instanceof Sc ? a : Sc.from(a, c));
};
Object.defineProperty(b.prototype, "roundPixels", {
get: function () {
return this._roundPixels;
},
set: function (a) {
if (this._roundPixels !== a) {
this._transformID = -1;
}
this._roundPixels = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "width", {
get: function () {
return Math.abs(this.scale.x) * this._texture.orig.width;
},
set: function (a) {
var b = _a(this.scale.x) || 1;
this.scale.x = b * a / this._texture.orig.width;
this._width = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return Math.abs(this.scale.y) * this._texture.orig.height;
},
set: function (a) {
var b = _a(this.scale.y) || 1;
this.scale.y = b * a / this._texture.orig.height;
this._height = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "anchor", {
get: function () {
return this._anchor;
},
set: function (a) {
this._anchor.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tint", {
get: function () {
return this._tint;
},
set: function (a) {
this._tint = a;
this._tintRGB = (a >> 16) + (a & 65280) + ((a & 255) << 16);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "texture", {
get: function () {
return this._texture;
},
set: function (a) {
if (this._texture !== a) {
if (this._texture) {
this._texture.off("update", this._onTextureUpdate, this);
}
this._texture = a || Sc.EMPTY;
this._cachedTint = 16777215;
this._textureID = -1;
this._textureTrimmedID = -1;
if (a) {
if (a.baseTexture.valid) {
this._onTextureUpdate();
} else {
a.once("update", this._onTextureUpdate, this);
}
}
}
},
enumerable: false,
configurable: true
});
return b;
}(dc);
function og(a, b) {
og = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return og(a, b);
}
(function (a) {
a[a.LINEAR_VERTICAL = 0] = "LINEAR_VERTICAL";
a[a.LINEAR_HORIZONTAL = 1] = "LINEAR_HORIZONTAL";
})(Wf ||= {});
var pg = {
align: "left",
breakWords: false,
dropShadow: false,
dropShadowAlpha: 1,
dropShadowAngle: Math.PI / 6,
dropShadowBlur: 0,
dropShadowColor: "black",
dropShadowDistance: 5,
fill: "black",
fillGradientType: Wf.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
};
var qg = ["serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui"];
var rg = function () {
function a(a) {
this.styleID = 0;
this.reset();
ug(this, a, a);
}
a.prototype.clone = function () {
var b = {};
ug(b, this, pg);
return new a(b);
};
a.prototype.reset = function () {
ug(this, pg, pg);
};
Object.defineProperty(a.prototype, "align", {
get: function () {
return this._align;
},
set: function (a) {
if (this._align !== a) {
this._align = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "breakWords", {
get: function () {
return this._breakWords;
},
set: function (a) {
if (this._breakWords !== a) {
this._breakWords = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadow", {
get: function () {
return this._dropShadow;
},
set: function (a) {
if (this._dropShadow !== a) {
this._dropShadow = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadowAlpha", {
get: function () {
return this._dropShadowAlpha;
},
set: function (a) {
if (this._dropShadowAlpha !== a) {
this._dropShadowAlpha = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadowAngle", {
get: function () {
return this._dropShadowAngle;
},
set: function (a) {
if (this._dropShadowAngle !== a) {
this._dropShadowAngle = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadowBlur", {
get: function () {
return this._dropShadowBlur;
},
set: function (a) {
if (this._dropShadowBlur !== a) {
this._dropShadowBlur = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadowColor", {
get: function () {
return this._dropShadowColor;
},
set: function (a) {
var b = tg(a);
if (this._dropShadowColor !== b) {
this._dropShadowColor = b;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "dropShadowDistance", {
get: function () {
return this._dropShadowDistance;
},
set: function (a) {
if (this._dropShadowDistance !== a) {
this._dropShadowDistance = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fill", {
get: function () {
return this._fill;
},
set: function (a) {
var b = tg(a);
if (this._fill !== b) {
this._fill = b;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fillGradientType", {
get: function () {
return this._fillGradientType;
},
set: function (a) {
if (this._fillGradientType !== a) {
this._fillGradientType = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fillGradientStops", {
get: function () {
return this._fillGradientStops;
},
set: function (a) {
if (! function (a, b) {
if (!Array.isArray(a) || !Array.isArray(b)) {
return false;
}
if (a.length !== b.length) {
return false;
}
for (var c = 0; c < a.length; ++c) {
if (a[c] !== b[c]) {
return false;
}
}
return true;
}(this._fillGradientStops, a)) {
this._fillGradientStops = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fontFamily", {
get: function () {
return this._fontFamily;
},
set: function (a) {
if (this.fontFamily !== a) {
this._fontFamily = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fontSize", {
get: function () {
return this._fontSize;
},
set: function (a) {
if (this._fontSize !== a) {
this._fontSize = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fontStyle", {
get: function () {
return this._fontStyle;
},
set: function (a) {
if (this._fontStyle !== a) {
this._fontStyle = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fontVariant", {
get: function () {
return this._fontVariant;
},
set: function (a) {
if (this._fontVariant !== a) {
this._fontVariant = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "fontWeight", {
get: function () {
return this._fontWeight;
},
set: function (a) {
if (this._fontWeight !== a) {
this._fontWeight = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "letterSpacing", {
get: function () {
return this._letterSpacing;
},
set: function (a) {
if (this._letterSpacing !== a) {
this._letterSpacing = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "lineHeight", {
get: function () {
return this._lineHeight;
},
set: function (a) {
if (this._lineHeight !== a) {
this._lineHeight = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "leading", {
get: function () {
return this._leading;
},
set: function (a) {
if (this._leading !== a) {
this._leading = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "lineJoin", {
get: function () {
return this._lineJoin;
},
set: function (a) {
if (this._lineJoin !== a) {
this._lineJoin = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "miterLimit", {
get: function () {
return this._miterLimit;
},
set: function (a) {
if (this._miterLimit !== a) {
this._miterLimit = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "padding", {
get: function () {
return this._padding;
},
set: function (a) {
if (this._padding !== a) {
this._padding = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "stroke", {
get: function () {
return this._stroke;
},
set: function (a) {
var b = tg(a);
if (this._stroke !== b) {
this._stroke = b;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "strokeThickness", {
get: function () {
return this._strokeThickness;
},
set: function (a) {
if (this._strokeThickness !== a) {
this._strokeThickness = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "textBaseline", {
get: function () {
return this._textBaseline;
},
set: function (a) {
if (this._textBaseline !== a) {
this._textBaseline = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "trim", {
get: function () {
return this._trim;
},
set: function (a) {
if (this._trim !== a) {
this._trim = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "whiteSpace", {
get: function () {
return this._whiteSpace;
},
set: function (a) {
if (this._whiteSpace !== a) {
this._whiteSpace = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "wordWrap", {
get: function () {
return this._wordWrap;
},
set: function (a) {
if (this._wordWrap !== a) {
this._wordWrap = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(a.prototype, "wordWrapWidth", {
get: function () {
return this._wordWrapWidth;
},
set: function (a) {
if (this._wordWrapWidth !== a) {
this._wordWrapWidth = a;
this.styleID++;
}
},
enumerable: false,
configurable: true
});
a.prototype.toFontString = function () {
var a = typeof this.fontSize == "number" ? this.fontSize + "px" : this.fontSize;
var b = this.fontFamily;
if (!Array.isArray(this.fontFamily)) {
b = this.fontFamily.split(",");
}
for (var c = b.length - 1; c >= 0; c--) {
var d = b[c].trim();
if (!/([\"\'])[^\'\"]+\1/.test(d) && qg.indexOf(d) < 0) {
d = "\"" + d + "\"";
}
b[c] = d;
}
return this.fontStyle + " " + this.fontVariant + " " + this.fontWeight + " " + a + " " + b.join(",");
};
return a;
}();
function sg(a) {
if (typeof a == "number") {
return Qa(a);
} else {
if (typeof a == "string" && a.indexOf("0x") === 0) {
a = a.replace("0x", "#");
}
return a;
}
}
function tg(a) {
if (Array.isArray(a)) {
for (var b = 0; b < a.length; ++b) {
a[b] = sg(a[b]);
}
return a;
}
return sg(a);
}
function ug(a, b, c) {
for (var d in c) {
if (Array.isArray(b[d])) {
a[d] = b[d].slice();
} else {
a[d] = b[d];
}
}
}
var vg = function () {
function a(a, b, c, d, e, f, g, h, i) {
this.text = a;
this.style = b;
this.width = c;
this.height = d;
this.lines = e;
this.lineWidths = f;
this.lineHeight = g;
this.maxLineWidth = h;
this.fontProperties = i;
}
a.measureText = function (b, c, d, e) {
if (e === undefined) {
e = a._canvas;
}
d = d == null ? c.wordWrap : d;
var f = c.toFontString();
var g = a.measureFont(f);
if (g.fontSize === 0) {
g.fontSize = c.fontSize;
g.ascent = c.fontSize;
}
var h = e.getContext("2d");
h.font = f;
for (var i = (d ? a.wordWrap(b, c, e) : b).split(/(?:\r\n|\r|\n)/), j = new Array(i.length), k = 0, l = 0; l < i.length; l++) {
var m = h.measureText(i[l]).width + (i[l].length - 1) * c.letterSpacing;
j[l] = m;
k = Math.max(k, m);
}
var n = k + c.strokeThickness;
if (c.dropShadow) {
n += c.dropShadowDistance;
}
var o = c.lineHeight || g.fontSize + c.strokeThickness;
var p = Math.max(o, g.fontSize + c.strokeThickness) + (i.length - 1) * (o + c.leading);
if (c.dropShadow) {
p += c.dropShadowDistance;
}
return new a(b, c, n, p, i, j, o + c.leading, k, g);
};
a.wordWrap = function (b, c, d) {
if (d === undefined) {
d = a._canvas;
}
for (var e = d.getContext("2d"), f = 0, g = "", h = "", i = Object.create(null), j = c.letterSpacing, k = c.whiteSpace, l = a.collapseSpaces(k), m = a.collapseNewlines(k), n = !l, o = c.wordWrapWidth + j, p = a.tokenize(b), q = 0; q < p.length; q++) {
var r = p[q];
if (a.isNewline(r)) {
if (!m) {
h += a.addLine(g);
n = !l;
g = "";
f = 0;
continue;
}
r = " ";
}
if (l) {
var s = a.isBreakingSpace(r);
var t = a.isBreakingSpace(g[g.length - 1]);
if (s && t) {
continue;
}
}
var u = a.getFromCache(r, j, i, e);
if (u > o) {
if (g !== "") {
h += a.addLine(g);
g = "";
f = 0;
}
if (a.canBreakWords(r, c.breakWords)) {
for (var v = a.wordWrapSplit(r), w = 0; w < v.length; w++) {
for (var x = v[w], y = 1; v[w + y];) {
var z = v[w + y];
var A = x[x.length - 1];
if (a.canBreakChars(A, z, r, w, c.breakWords)) {
break;
}
x += z;
y++;
}
w += x.length - 1;
var B = a.getFromCache(x, j, i, e);
if (B + f > o) {
h += a.addLine(g);
n = false;
g = "";
f = 0;
}
g += x;
f += B;
}
} else {
if (g.length > 0) {
h += a.addLine(g);
g = "";
f = 0;
}
var C = q === p.length - 1;
h += a.addLine(r, !C);
n = false;
g = "";
f = 0;
}
} else {
if (u + f > o) {
n = false;
h += a.addLine(g);
g = "";
f = 0;
}
if (g.length > 0 || !a.isBreakingSpace(r) || n) {
g += r;
f += u;
}
}
}
return h + a.addLine(g, false);
};
a.addLine = function (b, c) {
if (c === undefined) {
c = true;
}
b = a.trimRight(b);
if (c) {
return b + "\n";
} else {
return b;
}
};
a.getFromCache = function (a, b, c, d) {
var e = c[a];
if (typeof e != "number") {
var f = a.length * b;
e = d.measureText(a).width + f;
c[a] = e;
}
return e;
};
a.collapseSpaces = function (a) {
return a === "normal" || a === "pre-line";
};
a.collapseNewlines = function (a) {
return a === "normal";
};
a.trimRight = function (b) {
if (typeof b != "string") {
return "";
}
for (var c = b.length - 1; c >= 0; c--) {
var d = b[c];
if (!a.isBreakingSpace(d)) {
break;
}
b = b.slice(0, -1);
}
return b;
};
a.isNewline = function (b) {
return typeof b == "string" && a._newlines.indexOf(b.charCodeAt(0)) >= 0;
};
a.isBreakingSpace = function (b, c) {
return typeof b == "string" && a._breakingSpaces.indexOf(b.charCodeAt(0)) >= 0;
};
a.tokenize = function (b) {
var c = [];
var d = "";
if (typeof b != "string") {
return c;
}
for (var e = 0; e < b.length; e++) {
var f = b[e];
var g = b[e + 1];
if (a.isBreakingSpace(f, g) || a.isNewline(f)) {
if (d !== "") {
c.push(d);
d = "";
}
c.push(f);
} else {
d += f;
}
}
if (d !== "") {
c.push(d);
}
return c;
};
a.canBreakWords = function (a, b) {
return b;
};
a.canBreakChars = function (a, b, c, d, e) {
return true;
};
a.wordWrapSplit = function (a) {
return a.split("");
};
a.measureFont = function (b) {
if (a._fonts[b]) {
return a._fonts[b];
}
var c = {
ascent: 0,
descent: 0,
fontSize: 0
};
var d = a._canvas;
var e = a._context;
e.font = b;
var f = a.METRICS_STRING + a.BASELINE_SYMBOL;
var g = Math.ceil(e.measureText(f).width);
var h = Math.ceil(e.measureText(a.BASELINE_SYMBOL).width);
var i = Math.ceil(a.HEIGHT_MULTIPLIER * h);
h = h * a.BASELINE_MULTIPLIER | 0;
d.width = g;
d.height = i;
e.fillStyle = "#f00";
e.fillRect(0, 0, g, i);
e.font = b;
e.textBaseline = "alphabetic";
e.fillStyle = "#000";
e.fillText(f, 0, h);
var j = e.getImageData(0, 0, g, i).data;
var k = j.length;
var l = g * 4;
var m = 0;
var n = 0;
var o = false;
for (m = 0; m < h; ++m) {
for (var p = 0; p < l; p += 4) {
if (j[n + p] !== 255) {
o = true;
break;
}
}
if (o) {
break;
}
n += l;
}
c.ascent = h - m;
n = k - l;
o = false;
m = i;
for (; m > h; --m) {
for (p = 0; p < l; p += 4) {
if (j[n + p] !== 255) {
o = true;
break;
}
}
if (o) {
break;
}
n -= l;
}
c.descent = m - h;
c.fontSize = c.ascent + c.descent;
a._fonts[b] = c;
return c;
};
a.clearMetrics = function (b) {
if (b === undefined) {
b = "";
}
if (b) {
delete a._fonts[b];
} else {
a._fonts = {};
}
};
Object.defineProperty(a, "_canvas", {
get: function () {
if (!a.__canvas) {
var b = undefined;
try {
var c = new OffscreenCanvas(0, 0);
var d = c.getContext("2d");
if (d && d.measureText) {
a.__canvas = c;
return c;
}
b = document.createElement("canvas");
} catch (a) {
b = document.createElement("canvas");
}
b.width = b.height = 10;
a.__canvas = b;
}
return a.__canvas;
},
enumerable: false,
configurable: true
});
Object.defineProperty(a, "_context", {
get: function () {
a.__context ||= a._canvas.getContext("2d");
return a.__context;
},
enumerable: false,
configurable: true
});
return a;
}();
vg._fonts = {};
vg.METRICS_STRING = "|ÉqÅ";
vg.BASELINE_SYMBOL = "M";
vg.BASELINE_MULTIPLIER = 1.4;
vg.HEIGHT_MULTIPLIER = 2;
vg._newlines = [10, 13];
vg._breakingSpaces = [9, 32, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8200, 8201, 8202, 8287, 12288];
var wg = {
texture: true,
children: false,
baseTexture: true
};
var xg = function (a) {
function b(b, c, d) {
var e = this;
var f = false;
if (!d) {
d = document.createElement("canvas");
f = true;
}
d.width = 3;
d.height = 3;
var g = Sc.from(d);
g.orig = new qb();
g.trim = new qb();
(e = a.call(this, g) || this)._ownCanvas = f;
e.canvas = d;
e.context = e.canvas.getContext("2d");
e._resolution = Fa.RESOLUTION;
e._autoResolution = true;
e._text = null;
e._style = null;
e._styleListener = null;
e._font = "";
e.text = b;
e.style = c;
e.localStyleID = -1;
return e;
}
(function (a, b) {
function c() {
this.constructor = a;
}
og(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype.updateText = function (a) {
var c = this._style;
if (this.localStyleID !== c.styleID) {
this.dirty = true;
this.localStyleID = c.styleID;
}
if (this.dirty || !a) {
this._font = this._style.toFontString();
var d;
var e;
var f = this.context;
var g = vg.measureText(this._text || " ", this._style, this._style.wordWrap, this.canvas);
var h = g.width;
var i = g.height;
var j = g.lines;
var k = g.lineHeight;
var l = g.lineWidths;
var m = g.maxLineWidth;
var n = g.fontProperties;
this.canvas.width = Math.ceil(Math.ceil(Math.max(1, h) + c.padding * 2) * this._resolution);
this.canvas.height = Math.ceil(Math.ceil(Math.max(1, i) + c.padding * 2) * this._resolution);
f.scale(this._resolution, this._resolution);
f.clearRect(0, 0, this.canvas.width, this.canvas.height);
f.font = this._font;
f.lineWidth = c.strokeThickness;
f.textBaseline = c.textBaseline;
f.lineJoin = c.lineJoin;
f.miterLimit = c.miterLimit;
for (var o = c.dropShadow ? 2 : 1, p = 0; p < o; ++p) {
var q = c.dropShadow && p === 0;
var r = q ? Math.ceil(Math.max(1, i) + c.padding * 2) : 0;
var s = r * this._resolution;
if (q) {
f.fillStyle = "black";
f.strokeStyle = "black";
var t = c.dropShadowColor;
var u = Pa(typeof t == "number" ? t : Ra(t));
var v = c.dropShadowBlur * this._resolution;
var w = c.dropShadowDistance * this._resolution;
f.shadowColor = "rgba(" + u[0] * 255 + "," + u[1] * 255 + "," + u[2] * 255 + "," + c.dropShadowAlpha + ")";
f.shadowBlur = v;
f.shadowOffsetX = Math.cos(c.dropShadowAngle) * w;
f.shadowOffsetY = Math.sin(c.dropShadowAngle) * w + s;
} else {
f.fillStyle = this._generateFillStyle(c, j, g);
f.strokeStyle = c.stroke;
f.shadowColor = "black";
f.shadowBlur = 0;
f.shadowOffsetX = 0;
f.shadowOffsetY = 0;
}
var x = (k - n.fontSize) / 2;
if (!b.nextLineHeightBehavior || k - n.fontSize < 0) {
x = 0;
}
for (var y = 0; y < j.length; y++) {
d = c.strokeThickness / 2;
e = c.strokeThickness / 2 + y * k + n.ascent + x;
if (c.align === "right") {
d += m - l[y];
} else if (c.align === "center") {
d += (m - l[y]) / 2;
}
if (c.stroke && c.strokeThickness) {
this.drawLetterSpacing(j[y], d + c.padding, e + c.padding - r, true);
}
if (c.fill) {
this.drawLetterSpacing(j[y], d + c.padding, e + c.padding - r);
}
}
}
this.updateTexture();
}
};
b.prototype.drawLetterSpacing = function (a, c, d, e) {
if (e === undefined) {
e = false;
}
var f = this._style.letterSpacing;
var g = b.experimentalLetterSpacing && ("letterSpacing" in CanvasRenderingContext2D.prototype || "textLetterSpacing" in CanvasRenderingContext2D.prototype);
if (f === 0 || g) {
if (g) {
this.context.letterSpacing = f;
this.context.textLetterSpacing = f;
}
if (e) {
this.context.strokeText(a, c, d);
} else {
this.context.fillText(a, c, d);
}
return;
}
for (var h = c, i = Array.from ? Array.from(a) : a.split(""), j = this.context.measureText(a).width, k = 0, l = 0; l < i.length; ++l) {
var m = i[l];
if (e) {
this.context.strokeText(m, h, d);
} else {
this.context.fillText(m, h, d);
}
for (var n = "", o = l + 1; o < i.length; ++o) {
n += i[o];
}
h += j - (k = this.context.measureText(n).width) + f;
j = k;
}
};
b.prototype.updateTexture = function () {
var a = this.canvas;
if (this._style.trim) {
var b = function (a) {
var b;
var c;
var d;
var e = a.width;
var f = a.height;
var g = a.getContext("2d");
var h = g.getImageData(0, 0, e, f).data;
var i = h.length;
var j = {
top: null,
left: null,
right: null,
bottom: null
};
var k = null;
for (b = 0; b < i; b += 4) {
if (h[b + 3] !== 0) {
c = b / 4 % e;
d = ~~(b / 4 / e);
if (j.top === null) {
j.top = d;
}
if (j.left === null || c < j.left) {
j.left = c;
}
if (j.right === null || j.right < c) {
j.right = c + 1;
}
if (j.bottom === null || j.bottom < d) {
j.bottom = d;
}
}
}
if (j.top !== null) {
e = j.right - j.left;
f = j.bottom - j.top + 1;
k = g.getImageData(j.left, j.top, e, f);
}
return {
height: f,
width: e,
data: k
};
}(a);
if (b.data) {
a.width = b.width;
a.height = b.height;
this.context.putImageData(b.data, 0, 0);
}
}
var c = this._texture;
var d = this._style;
var e = d.trim ? 0 : d.padding;
var f = c.baseTexture;
c.trim.width = c._frame.width = a.width / this._resolution;
c.trim.height = c._frame.height = a.height / this._resolution;
c.trim.x = -e;
c.trim.y = -e;
c.orig.width = c._frame.width - e * 2;
c.orig.height = c._frame.height - e * 2;
this._onTextureUpdate();
f.setRealSize(a.width, a.height, this._resolution);
c.updateUvs();
this._recursivePostUpdateTransform();
this.dirty = false;
};
b.prototype._render = function (b) {
if (this._autoResolution && this._resolution !== b.resolution) {
this._resolution = b.resolution;
this.dirty = true;
}
this.updateText(true);
a.prototype._render.call(this, b);
};
b.prototype.getLocalBounds = function (b) {
this.updateText(true);
return a.prototype.getLocalBounds.call(this, b);
};
b.prototype._calculateBounds = function () {
this.updateText(true);
this.calculateVertices();
this._bounds.addQuad(this.vertexData);
};
b.prototype._generateFillStyle = function (a, b, c) {
var d;
var e = a.fill;
if (!Array.isArray(e)) {
return e;
}
if (e.length === 1) {
return e[0];
}
var f = a.dropShadow ? a.dropShadowDistance : 0;
var g = a.padding || 0;
var h = this.canvas.width / this._resolution - f - g * 2;
var i = this.canvas.height / this._resolution - f - g * 2;
var j = e.slice();
var k = a.fillGradientStops.slice();
if (!k.length) {
for (var l = j.length + 1, m = 1; m < l; ++m) {
k.push(m / l);
}
}
j.unshift(e[0]);
k.unshift(0);
j.push(e[e.length - 1]);
k.push(1);
if (a.fillGradientType === Wf.LINEAR_VERTICAL) {
d = this.context.createLinearGradient(h / 2, g, h / 2, i + g);
var n = c.fontProperties.fontSize + a.strokeThickness;
for (m = 0; m < b.length; m++) {
var o = c.lineHeight * (m - 1) + n;
var p = c.lineHeight * m;
var q = p;
if (m > 0 && o > p) {
q = (p + o) / 2;
}
var r = p + n;
var s = c.lineHeight * (m + 1);
var t = r;
if (m + 1 < b.length && s < r) {
t = (r + s) / 2;
}
for (var u = (t - q) / i, v = 0; v < j.length; v++) {
var w;
w = typeof k[v] == "number" ? k[v] : v / j.length;
var x = Math.min(1, Math.max(0, q / i + w * u));
x = Number(x.toFixed(5));
d.addColorStop(x, j[v]);
}
}
} else {
d = this.context.createLinearGradient(g, i / 2, h + g, i / 2);
var y = j.length + 1;
var z = 1;
for (m = 0; m < j.length; m++) {
var A;
A = typeof k[m] == "number" ? k[m] : z / y;
d.addColorStop(A, j[m]);
z++;
}
}
return d;
};
b.prototype.destroy = function (b) {
if (typeof b == "boolean") {
b = {
children: b
};
}
b = Object.assign({}, wg, b);
a.prototype.destroy.call(this, b);
if (this._ownCanvas) {
this.canvas.height = this.canvas.width = 0;
}
this.context = null;
this.canvas = null;
this._style = null;
};
Object.defineProperty(b.prototype, "width", {
get: function () {
this.updateText(true);
return Math.abs(this.scale.x) * this._texture.orig.width;
},
set: function (a) {
this.updateText(true);
var b = _a(this.scale.x) || 1;
this.scale.x = b * a / this._texture.orig.width;
this._width = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
this.updateText(true);
return Math.abs(this.scale.y) * this._texture.orig.height;
},
set: function (a) {
this.updateText(true);
var b = _a(this.scale.y) || 1;
this.scale.y = b * a / this._texture.orig.height;
this._height = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "style", {
get: function () {
return this._style;
},
set: function (a) {
a = a || {};
this._style = a instanceof rg ? a : new rg(a);
this.localStyleID = -1;
this.dirty = true;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "text", {
get: function () {
return this._text;
},
set: function (a) {
a = String(a == null ? "" : a);
if (this._text !== a) {
this._text = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "resolution", {
get: function () {
return this._resolution;
},
set: function (a) {
this._autoResolution = false;
if (this._resolution !== a) {
this._resolution = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
b.nextLineHeightBehavior = false;
b.experimentalLetterSpacing = false;
return b;
}(ng);
Fa.UPLOADS_PER_FRAME = 4;
function yg(a, b) {
yg = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return yg(a, b);
}
var zg = function () {
function a(a) {
this.maxItemsPerFrame = a;
this.itemsLeft = 0;
}
a.prototype.beginFrame = function () {
this.itemsLeft = this.maxItemsPerFrame;
};
a.prototype.allowedToUpload = function () {
return this.itemsLeft-- > 0;
};
return a;
}();
function Ag(a, b) {
var c = false;
if (a && a._textures && a._textures.length) {
for (var d = 0; d < a._textures.length; d++) {
if (a._textures[d] instanceof Sc) {
var e = a._textures[d].baseTexture;
if (b.indexOf(e) === -1) {
b.push(e);
c = true;
}
}
}
}
return c;
}
function Bg(a, b) {
if (a.baseTexture instanceof Bc) {
var c = a.baseTexture;
if (b.indexOf(c) === -1) {
b.push(c);
}
return true;
}
return false;
}
function Cg(a, b) {
if (a._texture && a._texture instanceof Sc) {
var c = a._texture.baseTexture;
if (b.indexOf(c) === -1) {
b.push(c);
}
return true;
}
return false;
}
function Dg(a, b) {
return b instanceof xg && (b.updateText(true), true);
}
function Eg(a, b) {
if (b instanceof rg) {
var c = b.toFontString();
vg.measureFont(c);
return true;
}
return false;
}
function Fg(a, b) {
if (a instanceof xg) {
if (b.indexOf(a.style) === -1) {
b.push(a.style);
}
if (b.indexOf(a) === -1) {
b.push(a);
}
var c = a._texture.baseTexture;
if (b.indexOf(c) === -1) {
b.push(c);
}
return true;
}
return false;
}
function Gg(a, b) {
return a instanceof rg && (b.indexOf(a) === -1 && b.push(a), true);
}
function Hg(a, b) {
return b instanceof Bc && (b._glTextures[a.CONTEXT_UID] || a.texture.bind(b), true);
}
function Ig(a, b) {
if (!(b instanceof jg)) {
return false;
}
var c = b.geometry;
b.finishPoly();
c.updateBatches();
for (var d = c.batches, e = 0; e < d.length; e++) {
var f = d[e].style.texture;
if (f) {
Hg(a, f.baseTexture);
}
}
if (!c.batchable) {
a.geometry.bind(c, b._resolveDirectShader(a));
}
return true;
}
function Jg(a, b) {
return a instanceof jg && (b.push(a), true);
}
var Kg = function (a) {
function b(b) {
var c = a.call(this, b) || this;
c.uploadHookHelper = c.renderer;
c.registerFindHook(Jg);
c.registerUploadHook(Hg);
c.registerUploadHook(Ig);
return c;
}
(function (a, b) {
function c() {
this.constructor = a;
}
yg(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
return b;
}(function () {
function a(a) {
var b = this;
this.limiter = new zg(Fa.UPLOADS_PER_FRAME);
this.renderer = a;
this.uploadHookHelper = null;
this.queue = [];
this.addHooks = [];
this.uploadHooks = [];
this.completes = [];
this.ticking = false;
this.delayedTick = function () {
if (b.queue) {
b.prepareItems();
}
};
this.registerFindHook(Fg);
this.registerFindHook(Gg);
this.registerFindHook(Ag);
this.registerFindHook(Bg);
this.registerFindHook(Cg);
this.registerUploadHook(Dg);
this.registerUploadHook(Eg);
}
a.prototype.upload = function (a, b) {
if (typeof a == "function") {
b = a;
a = null;
}
if (a) {
this.add(a);
}
if (this.queue.length) {
if (b) {
this.completes.push(b);
}
if (!this.ticking) {
this.ticking = true;
ic.system.addOnce(this.tick, this, ec.UTILITY);
}
} else if (b) {
b();
}
};
a.prototype.tick = function () {
setTimeout(this.delayedTick, 0);
};
a.prototype.prepareItems = function () {
for (this.limiter.beginFrame(); this.queue.length && this.limiter.allowedToUpload();) {
var a = this.queue[0];
var b = false;
if (a && !a._destroyed) {
for (var c = 0, d = this.uploadHooks.length; c < d; c++) {
if (this.uploadHooks[c](this.uploadHookHelper, a)) {
this.queue.shift();
b = true;
break;
}
}
}
if (!b) {
this.queue.shift();
}
}
if (this.queue.length) {
ic.system.addOnce(this.tick, this, ec.UTILITY);
} else {
this.ticking = false;
var e = this.completes.slice(0);
this.completes.length = 0;
c = 0;
d = e.length;
for (; c < d; c++) {
e[c]();
}
}
};
a.prototype.registerFindHook = function (a) {
if (a) {
this.addHooks.push(a);
}
return this;
};
a.prototype.registerUploadHook = function (a) {
if (a) {
this.uploadHooks.push(a);
}
return this;
};
a.prototype.add = function (a) {
for (var b = 0, c = this.addHooks.length; b < c && !this.addHooks[b](a, this.queue); b++);
if (a instanceof dc) {
for (b = a.children.length - 1; b >= 0; b--) {
this.add(a.children[b]);
}
}
return this;
};
a.prototype.destroy = function () {
if (this.ticking) {
ic.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;
};
return a;
}());
(function () {
function a(a) {
this.maxMilliseconds = a;
this.frameStart = 0;
}
a.prototype.beginFrame = function () {
this.frameStart = Date.now();
};
a.prototype.allowedToUpload = function () {
return Date.now() - this.frameStart < this.maxMilliseconds;
};
})();
var Lg = function () {
function a(a, b, c) {
if (c === undefined) {
c = null;
}
this._texture = a instanceof Sc ? a : null;
this.baseTexture = a instanceof Bc ? a : this._texture.baseTexture;
this.textures = {};
this.animations = {};
this.data = b;
var d = this.baseTexture.resource;
this.resolution = this._updateResolution(c || (d ? d.url : null));
this._frames = this.data.frames;
this._frameKeys = Object.keys(this._frames);
this._batchIndex = 0;
this._callback = null;
}
a.prototype._updateResolution = function (a) {
if (a === undefined) {
a = null;
}
var b = this.data.meta.scale;
var c = jb(a, null);
if (c === null) {
c = b !== undefined ? parseFloat(b) : 1;
}
if (c !== 1) {
this.baseTexture.setResolution(c);
}
return c;
};
a.prototype.parse = function (b) {
this._batchIndex = 0;
this._callback = b;
if (this._frameKeys.length <= a.BATCH_SIZE) {
this._processFrames(0);
this._processAnimations();
this._parseComplete();
} else {
this._nextBatch();
}
};
a.prototype._processFrames = function (b) {
for (var c = b, d = a.BATCH_SIZE; c - b < d && c < this._frameKeys.length;) {
var e = this._frameKeys[c];
var f = this._frames[e];
var g = f.frame;
if (g) {
var h;
var i = null;
var j = f.trimmed !== false && f.sourceSize ? f.sourceSize : f.frame;
var k = new qb(0, 0, Math.floor(j.w) / this.resolution, Math.floor(j.h) / this.resolution);
h = f.rotated ? new qb(Math.floor(g.x) / this.resolution, Math.floor(g.y) / this.resolution, Math.floor(g.h) / this.resolution, Math.floor(g.w) / this.resolution) : new qb(Math.floor(g.x) / this.resolution, Math.floor(g.y) / this.resolution, Math.floor(g.w) / this.resolution, Math.floor(g.h) / this.resolution);
if (f.trimmed !== false && f.spriteSourceSize) {
i = new qb(Math.floor(f.spriteSourceSize.x) / this.resolution, Math.floor(f.spriteSourceSize.y) / this.resolution, Math.floor(g.w) / this.resolution, Math.floor(g.h) / this.resolution);
}
this.textures[e] = new Sc(this.baseTexture, h, k, i, f.rotated ? 2 : 0, f.anchor);
Sc.addToCache(this.textures[e], e);
}
c++;
}
};
a.prototype._processAnimations = function () {
var a = this.data.animations || {};
for (var b in a) {
this.animations[b] = [];
for (var c = 0; c < a[b].length; c++) {
var d = a[b][c];
this.animations[b].push(this.textures[d]);
}
}
};
a.prototype._parseComplete = function () {
var a = this._callback;
this._callback = null;
this._batchIndex = 0;
a.call(this, this.textures);
};
a.prototype._nextBatch = function () {
var b = this;
this._processFrames(this._batchIndex * a.BATCH_SIZE);
this._batchIndex++;
setTimeout(function () {
if (b._batchIndex * a.BATCH_SIZE < b._frameKeys.length) {
b._nextBatch();
} else {
b._processAnimations();
b._parseComplete();
}
}, 0);
};
a.prototype.destroy = function (a) {
var b;
if (a === undefined) {
a = false;
}
for (var c in this.textures) {
this.textures[c].destroy();
}
this._frames = null;
this._frameKeys = null;
this.data = null;
this.textures = null;
if (a) {
if ((b = this._texture) !== null && b !== undefined) {
b.destroy();
}
this.baseTexture.destroy();
}
this._texture = null;
this.baseTexture = null;
};
a.BATCH_SIZE = 1000;
return a;
}();
var Mg = function () {
function a() {}
a.use = function (b, c) {
var d = this;
var e = b.name + "_image";
if (b.data && b.type === We.TYPE.JSON && b.data.frames && !d.resources[e]) {
var f = b.data?.meta?.related_multi_packs;
if (Array.isArray(f)) {
for (var g = function (a) {
if (typeof a != "string") {
return "continue";
}
var c = a.replace(".json", "");
var e = La.resolve(b.url.replace(d.baseUrl, ""), a);
if (d.resources[c] || Object.values(d.resources).some(function (a) {
return La.format(La.parse(a.url)) === e;
})) {
return "continue";
}
var f = {
crossOrigin: b.crossOrigin,
loadType: We.LOAD_TYPE.XHR,
xhrType: We.XHR_RESPONSE_TYPE.JSON,
parentResource: b,
metadata: b.metadata
};
d.add(c, e, f);
}, h = 0, i = f; h < i.length; h++) {
g(i[h]);
}
}
var j = {
crossOrigin: b.crossOrigin,
metadata: b.metadata.imageMetadata,
parentResource: b
};
var k = a.getResourcePath(b, d.baseUrl);
d.add(e, k, j, function (a) {
if (a.error) {
c(a.error);
} else {
var d = new Lg(a.texture, b.data, b.url);
d.parse(function () {
b.spritesheet = d;
b.textures = d.textures;
c();
});
}
});
} else {
c();
}
};
a.getResourcePath = function (a, b) {
if (a.isDataUrl) {
return a.data.meta.image;
} else {
return La.resolve(a.url.replace(b, ""), a.data.meta.image);
}
};
return a;
}();
function Ng(a, b) {
Ng = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Ng(a, b);
}
function Og(a, b) {
function c() {
this.constructor = a;
}
Ng(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var Pg = new ob();
var Qg = function (a) {
function b(b, c, d) {
if (c === undefined) {
c = 100;
}
if (d === undefined) {
d = 100;
}
var e = a.call(this, b) || this;
e.tileTransform = new Fb();
e._width = c;
e._height = d;
e.uvMatrix = e.texture.uvMatrix || new Td(b);
e.pluginName = "tilingSprite";
e.uvRespectAnchor = false;
return e;
}
Og(b, a);
Object.defineProperty(b.prototype, "clampMargin", {
get: function () {
return this.uvMatrix.clampMargin;
},
set: function (a) {
this.uvMatrix.clampMargin = a;
this.uvMatrix.update(true);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tileScale", {
get: function () {
return this.tileTransform.scale;
},
set: function (a) {
this.tileTransform.scale.copyFrom(a);
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tilePosition", {
get: function () {
return this.tileTransform.position;
},
set: function (a) {
this.tileTransform.position.copyFrom(a);
},
enumerable: false,
configurable: true
});
b.prototype._onTextureUpdate = function () {
if (this.uvMatrix) {
this.uvMatrix.texture = this._texture;
}
this._cachedTint = 16777215;
};
b.prototype._render = function (a) {
var b = this._texture;
if (b && b.valid) {
this.tileTransform.updateLocalTransform();
this.uvMatrix.update();
a.batch.setObjectRenderer(a.plugins[this.pluginName]);
a.plugins[this.pluginName].render(this);
}
};
b.prototype._calculateBounds = function () {
var a = this._width * -this._anchor._x;
var b = this._height * -this._anchor._y;
var c = this._width * (1 - this._anchor._x);
var d = this._height * (1 - this._anchor._y);
this._bounds.addFrame(this.transform, a, b, c, d);
};
b.prototype.getLocalBounds = function (b) {
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 (!b) {
this._localBoundsRect ||= new qb();
b = this._localBoundsRect;
}
return this._bounds.getRectangle(b);
} else {
return a.prototype.getLocalBounds.call(this, b);
}
};
b.prototype.containsPoint = function (a) {
this.worldTransform.applyInverse(a, Pg);
var b = this._width;
var c = this._height;
var d = -b * this.anchor._x;
if (Pg.x >= d && Pg.x < d + b) {
var e = -c * this.anchor._y;
if (Pg.y >= e && Pg.y < e + c) {
return true;
}
}
return false;
};
b.prototype.destroy = function (b) {
a.prototype.destroy.call(this, b);
this.tileTransform = null;
this.uvMatrix = null;
};
b.from = function (a, c) {
return new b(a instanceof Sc ? a : Sc.from(a, c), c.width, c.height);
};
Object.defineProperty(b.prototype, "width", {
get: function () {
return this._width;
},
set: function (a) {
this._width = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return this._height;
},
set: function (a) {
this._height = a;
},
enumerable: false,
configurable: true
});
return b;
}(ng);
var Rg = "#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 Sg = new wb();
var Tg = function (a) {
function b(b) {
var c = a.call(this, b) || this;
b.runners.contextChange.add(c);
c.quad = new cd();
c.state = Qd.for2d();
return c;
}
Og(b, a);
b.prototype.contextChange = function () {
var a = this.renderer;
var b = {
globals: a.globalUniforms
};
this.simpleShader = Pd.from(Rg, "#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", b);
this.shader = a.context.webGLVersion > 1 ? Pd.from("#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", "#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", b) : Pd.from(Rg, "#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", b);
};
b.prototype.render = function (a) {
var b = this.renderer;
var c = this.quad;
var d = c.vertices;
d[0] = d[6] = a._width * -a.anchor.x;
d[1] = d[3] = a._height * -a.anchor.y;
d[2] = d[4] = a._width * (1 - a.anchor.x);
d[5] = d[7] = a._height * (1 - a.anchor.y);
var e = a.uvRespectAnchor ? a.anchor.x : 0;
var f = a.uvRespectAnchor ? a.anchor.y : 0;
(d = c.uvs)[0] = d[6] = -e;
d[1] = d[3] = -f;
d[2] = d[4] = 1 - e;
d[5] = d[7] = 1 - f;
c.invalidate();
var g = a._texture;
var h = g.baseTexture;
var i = a.tileTransform.localTransform;
var j = a.uvMatrix;
var k = h.isPowerOfTwo && g.frame.width === h.width && g.frame.height === h.height;
if (k) {
if (h._glTextures[b.CONTEXT_UID]) {
k = h.wrapMode !== wa.CLAMP;
} else if (h.wrapMode === wa.CLAMP) {
h.wrapMode = wa.REPEAT;
}
}
var l = k ? this.simpleShader : this.shader;
var m = g.width;
var n = g.height;
var o = a._width;
var p = a._height;
Sg.set(i.a * m / o, i.b * m / p, i.c * n / o, i.d * n / p, i.tx / o, i.ty / p);
Sg.invert();
if (k) {
Sg.prepend(j.mapCoord);
} else {
l.uniforms.uMapCoord = j.mapCoord.toArray(true);
l.uniforms.uClampFrame = j.uClampFrame;
l.uniforms.uClampOffset = j.uClampOffset;
}
l.uniforms.uTransform = Sg.toArray(true);
l.uniforms.uColor = Va(a.tint, a.worldAlpha, l.uniforms.uColor, h.alphaMode);
l.uniforms.translationMatrix = a.transform.worldTransform.toArray(true);
l.uniforms.uSampler = g;
b.shader.bind(l);
b.geometry.bind(c);
this.state.blendMode = Ta(a.blendMode, h.alphaMode);
b.state.set(this.state);
b.geometry.draw(this.renderer.gl.TRIANGLES, 6, 0);
};
return b;
}(jd);
function Ug(a, b) {
Ug = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Ug(a, b);
}
function Vg(a, b) {
function c() {
this.constructor = a;
}
Ug(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var Wg = function () {
function a(a, b) {
this.uvBuffer = a;
this.uvMatrix = b;
this.data = null;
this._bufferUpdateId = -1;
this._textureUpdateId = -1;
this._updateID = 0;
}
a.prototype.update = function (a) {
if (a || this._bufferUpdateId !== this.uvBuffer._updateID || this._textureUpdateId !== this.uvMatrix._updateID) {
this._bufferUpdateId = this.uvBuffer._updateID;
this._textureUpdateId = this.uvMatrix._updateID;
var b = this.uvBuffer.data;
if (!this.data || this.data.length !== b.length) {
this.data = new Float32Array(b.length);
}
this.uvMatrix.multiplyUvs(b, this.data);
this._updateID++;
}
};
return a;
}();
var Xg = new ob();
var Yg = new tb();
var Zg = function (a) {
function b(b, c, d, e) {
if (e === undefined) {
e = qa.TRIANGLES;
}
var f = a.call(this) || this;
f.geometry = b;
f.shader = c;
f.state = d || Qd.for2d();
f.drawMode = e;
f.start = 0;
f.size = 0;
f.uvs = null;
f.indices = null;
f.vertexData = new Float32Array(1);
f.vertexDirty = -1;
f._transformID = -1;
f._roundPixels = Fa.ROUND_PIXELS;
f.batchUvs = null;
return f;
}
Vg(b, a);
Object.defineProperty(b.prototype, "geometry", {
get: function () {
return this._geometry;
},
set: function (a) {
if (this._geometry !== a) {
if (this._geometry) {
this._geometry.refCount--;
if (this._geometry.refCount === 0) {
this._geometry.dispose();
}
}
this._geometry = a;
if (this._geometry) {
this._geometry.refCount++;
}
this.vertexDirty = -1;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "uvBuffer", {
get: function () {
return this.geometry.buffers[1];
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "verticesBuffer", {
get: function () {
return this.geometry.buffers[0];
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "material", {
get: function () {
return this.shader;
},
set: function (a) {
this.shader = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "blendMode", {
get: function () {
return this.state.blendMode;
},
set: function (a) {
this.state.blendMode = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "roundPixels", {
get: function () {
return this._roundPixels;
},
set: function (a) {
if (this._roundPixels !== a) {
this._transformID = -1;
}
this._roundPixels = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tint", {
get: function () {
if ("tint" in this.shader) {
return this.shader.tint;
} else {
return null;
}
},
set: function (a) {
this.shader.tint = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "texture", {
get: function () {
if ("texture" in this.shader) {
return this.shader.texture;
} else {
return null;
}
},
set: function (a) {
this.shader.texture = a;
},
enumerable: false,
configurable: true
});
b.prototype._render = function (a) {
var c = this.geometry.buffers[0].data;
if (this.shader.batchable && this.drawMode === qa.TRIANGLES && c.length < b.BATCHABLE_SIZE * 2) {
this._renderToBatch(a);
} else {
this._renderDefault(a);
}
};
b.prototype._renderDefault = function (a) {
var b = this.shader;
b.alpha = this.worldAlpha;
if (b.update) {
b.update();
}
a.batch.flush();
b.uniforms.translationMatrix = this.transform.worldTransform.toArray(true);
a.shader.bind(b);
a.state.set(this.state);
a.geometry.bind(this.geometry, b);
a.geometry.draw(this.drawMode, this.size, this.start, this.geometry.instanceCount);
};
b.prototype._renderToBatch = function (a) {
var b = this.geometry;
var c = this.shader;
if (c.uvMatrix) {
c.uvMatrix.update();
this.calculateUvs();
}
this.calculateVertices();
this.indices = b.indexBuffer.data;
this._tintRGB = c._tintRGB;
this._texture = c.texture;
var d = this.material.pluginName;
a.batch.setObjectRenderer(a.plugins[d]);
a.plugins[d].render(this);
};
b.prototype.calculateVertices = function () {
var a = this.geometry.buffers[0];
var b = a.data;
var c = a._updateID;
if (c !== this.vertexDirty || this._transformID !== this.transform._worldID) {
this._transformID = this.transform._worldID;
if (this.vertexData.length !== b.length) {
this.vertexData = new Float32Array(b.length);
}
for (var d = this.transform.worldTransform, e = d.a, f = d.b, g = d.c, h = d.d, i = d.tx, j = d.ty, k = this.vertexData, l = 0; l < k.length / 2; l++) {
var m = b[l * 2];
var n = b[l * 2 + 1];
k[l * 2] = e * m + g * n + i;
k[l * 2 + 1] = f * m + h * n + j;
}
if (this._roundPixels) {
var o = Fa.RESOLUTION;
for (l = 0; l < k.length; ++l) {
k[l] = Math.round((k[l] * o | 0) / o);
}
}
this.vertexDirty = c;
}
};
b.prototype.calculateUvs = function () {
var a = this.geometry.buffers[1];
var b = this.shader;
if (b.uvMatrix.isSimple) {
this.uvs = a.data;
} else {
this.batchUvs ||= new Wg(a, b.uvMatrix);
this.batchUvs.update();
this.uvs = this.batchUvs.data;
}
};
b.prototype._calculateBounds = function () {
this.calculateVertices();
this._bounds.addVertexData(this.vertexData, 0, this.vertexData.length);
};
b.prototype.containsPoint = function (a) {
if (!this.getBounds().contains(a.x, a.y)) {
return false;
}
this.worldTransform.applyInverse(a, Xg);
for (var b = this.geometry.getBuffer("aVertexPosition").data, c = Yg.points, d = this.geometry.getIndex().data, e = d.length, f = this.drawMode === 4 ? 3 : 1, g = 0; g + 2 < e; g += f) {
var h = d[g] * 2;
var i = d[g + 1] * 2;
var j = d[g + 2] * 2;
c[0] = b[h];
c[1] = b[h + 1];
c[2] = b[i];
c[3] = b[i + 1];
c[4] = b[j];
c[5] = b[j + 1];
if (Yg.contains(Xg.x, Xg.y)) {
return true;
}
}
return false;
};
b.prototype.destroy = function (b) {
a.prototype.destroy.call(this, b);
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;
};
b.BATCHABLE_SIZE = 100;
return b;
}(dc);
var $g = function (a) {
function b(b, c) {
var d = this;
var e = {
uSampler: b,
alpha: 1,
uTextureMatrix: wb.IDENTITY,
uColor: new Float32Array([1, 1, 1, 1])
};
if ((c = Object.assign({
tint: 16777215,
alpha: 1,
pluginName: "batch"
}, c)).uniforms) {
Object.assign(e, c.uniforms);
}
(d = a.call(this, c.program || Od.from("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", "varying vec2 vTextureCoord;\nuniform vec4 uColor;\n\nuniform sampler2D uSampler;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uColor;\n}\n"), e) || this)._colorDirty = false;
d.uvMatrix = new Td(b);
d.batchable = c.program === undefined;
d.pluginName = c.pluginName;
d.tint = c.tint;
d.alpha = c.alpha;
return d;
}
Vg(b, a);
Object.defineProperty(b.prototype, "texture", {
get: function () {
return this.uniforms.uSampler;
},
set: function (a) {
if (this.uniforms.uSampler !== a) {
this.uniforms.uSampler = a;
this.uvMatrix.texture = a;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "alpha", {
get: function () {
return this._alpha;
},
set: function (a) {
if (a !== this._alpha) {
this._alpha = a;
this._colorDirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "tint", {
get: function () {
return this._tint;
},
set: function (a) {
if (a !== this._tint) {
this._tint = a;
this._tintRGB = (a >> 16) + (a & 65280) + ((a & 255) << 16);
this._colorDirty = true;
}
},
enumerable: false,
configurable: true
});
b.prototype.update = function () {
if (this._colorDirty) {
this._colorDirty = false;
var a = this.texture.baseTexture;
Va(this._tint, this._alpha, this.uniforms.uColor, a.alphaMode);
}
if (this.uvMatrix.update()) {
this.uniforms.uTextureMatrix = this.uvMatrix.mapCoord;
}
};
return b;
}(Pd);
var _g = function (a) {
function b(b, c, d) {
var e = a.call(this) || this;
var f = new Xc(b);
var g = new Xc(c, true);
var h = new Xc(d, true, true);
e.addAttribute("aVertexPosition", f, 2, false, ta.FLOAT).addAttribute("aTextureCoord", g, 2, false, ta.FLOAT).addIndex(h);
e._updateId = -1;
return e;
}
Vg(b, a);
Object.defineProperty(b.prototype, "vertexDirtyId", {
get: function () {
return this.buffers[0]._updateID;
},
enumerable: false,
configurable: true
});
return b;
}(ad);
function ah(a, b) {
ah = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return ah(a, b);
}
function bh() {
this.info = [];
this.common = [];
this.page = [];
this.char = [];
this.kerning = [];
this.distanceField = [];
}
var ch = function () {
function a() {}
a.test = function (a) {
return typeof a == "string" && a.indexOf("info face=") === 0;
};
a.parse = function (a) {
var b = a.match(/^[a-z]+\s+.+$/gm);
var c = {
info: [],
common: [],
page: [],
char: [],
chars: [],
kerning: [],
kernings: [],
distanceField: []
};
for (var d in b) {
var e = b[d].match(/^[a-z]+/gm)[0];
var f = b[d].match(/[a-zA-Z]+=([^\s"']+|"([^"]*)")/gm);
var g = {};
for (var h in f) {
var i = f[h].split("=");
var j = i[0];
var k = i[1].replace(/"/gm, "");
var l = parseFloat(k);
var m = isNaN(l) ? k : l;
g[j] = m;
}
c[e].push(g);
}
var n = new bh();
c.info.forEach(function (a) {
return n.info.push({
face: a.face,
size: parseInt(a.size, 10)
});
});
c.common.forEach(function (a) {
return n.common.push({
lineHeight: parseInt(a.lineHeight, 10)
});
});
c.page.forEach(function (a) {
return n.page.push({
id: parseInt(a.id, 10),
file: a.file
});
});
c.char.forEach(function (a) {
return n.char.push({
id: parseInt(a.id, 10),
page: parseInt(a.page, 10),
x: parseInt(a.x, 10),
y: parseInt(a.y, 10),
width: parseInt(a.width, 10),
height: parseInt(a.height, 10),
xoffset: parseInt(a.xoffset, 10),
yoffset: parseInt(a.yoffset, 10),
xadvance: parseInt(a.xadvance, 10)
});
});
c.kerning.forEach(function (a) {
return n.kerning.push({
first: parseInt(a.first, 10),
second: parseInt(a.second, 10),
amount: parseInt(a.amount, 10)
});
});
c.distanceField.forEach(function (a) {
return n.distanceField.push({
distanceRange: parseInt(a.distanceRange, 10),
fieldType: a.fieldType
});
});
return n;
};
return a;
}();
var dh = function () {
function a() {}
a.test = function (a) {
return a instanceof XMLDocument && a.getElementsByTagName("page").length && a.getElementsByTagName("info")[0].getAttribute("face") !== null;
};
a.parse = function (a) {
for (var b = new bh(), c = a.getElementsByTagName("info"), d = a.getElementsByTagName("common"), e = a.getElementsByTagName("page"), f = a.getElementsByTagName("char"), g = a.getElementsByTagName("kerning"), h = a.getElementsByTagName("distanceField"), i = 0; i < c.length; i++) {
b.info.push({
face: c[i].getAttribute("face"),
size: parseInt(c[i].getAttribute("size"), 10)
});
}
for (i = 0; i < d.length; i++) {
b.common.push({
lineHeight: parseInt(d[i].getAttribute("lineHeight"), 10)
});
}
for (i = 0; i < e.length; i++) {
b.page.push({
id: parseInt(e[i].getAttribute("id"), 10) || 0,
file: e[i].getAttribute("file")
});
}
for (i = 0; i < f.length; i++) {
var j = f[i];
b.char.push({
id: parseInt(j.getAttribute("id"), 10),
page: parseInt(j.getAttribute("page"), 10) || 0,
x: parseInt(j.getAttribute("x"), 10),
y: parseInt(j.getAttribute("y"), 10),
width: parseInt(j.getAttribute("width"), 10),
height: parseInt(j.getAttribute("height"), 10),
xoffset: parseInt(j.getAttribute("xoffset"), 10),
yoffset: parseInt(j.getAttribute("yoffset"), 10),
xadvance: parseInt(j.getAttribute("xadvance"), 10)
});
}
for (i = 0; i < g.length; i++) {
b.kerning.push({
first: parseInt(g[i].getAttribute("first"), 10),
second: parseInt(g[i].getAttribute("second"), 10),
amount: parseInt(g[i].getAttribute("amount"), 10)
});
}
for (i = 0; i < h.length; i++) {
b.distanceField.push({
fieldType: h[i].getAttribute("fieldType"),
distanceRange: parseInt(h[i].getAttribute("distanceRange"), 10)
});
}
return b;
};
return a;
}();
var eh = function () {
function a() {}
a.test = function (a) {
if (typeof a == "string" && a.indexOf("<font>") > -1) {
var b = new globalThis.DOMParser().parseFromString(a, "text/xml");
return dh.test(b);
}
return false;
};
a.parse = function (a) {
var b = new globalThis.DOMParser().parseFromString(a, "text/xml");
return dh.parse(b);
};
return a;
}();
var fh = [ch, dh, eh];
function gh(a) {
for (var b = 0; b < fh.length; b++) {
if (fh[b].test(a)) {
return fh[b];
}
}
return null;
}
function hh(a, b, c, d, e, f, g) {
var h = c.text;
var i = c.fontProperties;
b.translate(d, e);
b.scale(f, f);
var j = g.strokeThickness / 2;
var k = -g.strokeThickness / 2;
b.font = g.toFontString();
b.lineWidth = g.strokeThickness;
b.textBaseline = g.textBaseline;
b.lineJoin = g.lineJoin;
b.miterLimit = g.miterLimit;
b.fillStyle = function (a, b, c, d, e, f) {
var g;
var h = c.fill;
if (!Array.isArray(h)) {
return h;
}
if (h.length === 1) {
return h[0];
}
var i = c.dropShadow ? c.dropShadowDistance : 0;
var j = c.padding || 0;
var k = a.width / d - i - j * 2;
var l = a.height / d - i - j * 2;
var m = h.slice();
var n = c.fillGradientStops.slice();
if (!n.length) {
for (var o = m.length + 1, p = 1; p < o; ++p) {
n.push(p / o);
}
}
m.unshift(h[0]);
n.unshift(0);
m.push(h[h.length - 1]);
n.push(1);
if (c.fillGradientType === Wf.LINEAR_VERTICAL) {
g = b.createLinearGradient(k / 2, j, k / 2, l + j);
var q = 0;
var r = (f.fontProperties.fontSize + c.strokeThickness) / l;
for (p = 0; p < e.length; p++) {
for (var s = f.lineHeight * p, t = 0; t < m.length; t++) {
var u = s / l + (typeof n[t] == "number" ? n[t] : t / m.length) * r;
var v = Math.max(q, u);
v = Math.min(v, 1);
g.addColorStop(v, m[t]);
q = v;
}
}
} else {
g = b.createLinearGradient(j, l / 2, k + j, l / 2);
var w = m.length + 1;
var x = 1;
for (p = 0; p < m.length; p++) {
var y;
y = typeof n[p] == "number" ? n[p] : x / w;
g.addColorStop(y, m[p]);
x++;
}
}
return g;
}(a, b, g, f, [h], c);
b.strokeStyle = g.stroke;
if (g.dropShadow) {
var l = g.dropShadowColor;
var m = Pa(typeof l == "number" ? l : Ra(l));
var n = g.dropShadowBlur * f;
var o = g.dropShadowDistance * f;
b.shadowColor = "rgba(" + m[0] * 255 + "," + m[1] * 255 + "," + m[2] * 255 + "," + g.dropShadowAlpha + ")";
b.shadowBlur = n;
b.shadowOffsetX = Math.cos(g.dropShadowAngle) * o;
b.shadowOffsetY = Math.sin(g.dropShadowAngle) * o;
} else {
b.shadowColor = "black";
b.shadowBlur = 0;
b.shadowOffsetX = 0;
b.shadowOffsetY = 0;
}
if (g.stroke && g.strokeThickness) {
b.strokeText(h, j, k + c.lineHeight - i.descent);
}
if (g.fill) {
b.fillText(h, j, k + c.lineHeight - i.descent);
}
b.setTransform(1, 0, 0, 1, 0, 0);
b.fillStyle = "rgba(0, 0, 0, 0)";
}
function ih(a) {
if (Array.from) {
return Array.from(a);
} else {
return a.split("");
}
}
function jh(a) {
if (a.codePointAt) {
return a.codePointAt(0);
} else {
return a.charCodeAt(0);
}
}
var kh = function () {
function a(a, b, c) {
var d;
var e = a.info[0];
var f = a.common[0];
var g = a.page[0];
var h = a.distanceField[0];
var i = jb(g.file);
var j = {};
this._ownsTextures = c;
this.font = e.face;
this.size = e.size;
this.lineHeight = f.lineHeight / i;
this.chars = {};
this.pageTextures = j;
for (var k = 0; k < a.page.length; k++) {
var l = a.page[k];
var m = l.id;
var n = l.file;
j[m] = b instanceof Array ? b[k] : b[n];
if ((h == null ? undefined : h.fieldType) && h.fieldType !== "none") {
j[m].baseTexture.alphaMode = ya.NO_PREMULTIPLIED_ALPHA;
}
}
for (k = 0; k < a.char.length; k++) {
var o = a.char[k];
m = o.id;
var p = o.page;
var q = a.char[k];
var r = q.x;
var s = q.y;
var t = q.width;
var u = q.height;
var v = q.xoffset;
var w = q.yoffset;
var x = q.xadvance;
s /= i;
t /= i;
u /= i;
v /= i;
w /= i;
x /= i;
var y = new qb((r /= i) + j[p].frame.x / i, s + j[p].frame.y / i, t, u);
this.chars[m] = {
xOffset: v,
yOffset: w,
xAdvance: x,
kerning: {},
texture: new Sc(j[p].baseTexture, y),
page: p
};
}
for (k = 0; k < a.kerning.length; k++) {
var z = a.kerning[k];
var A = z.first;
var B = z.second;
var C = z.amount;
A /= i;
B /= i;
C /= i;
if (this.chars[B]) {
this.chars[B].kerning[A] = C;
}
}
this.distanceFieldRange = h == null ? undefined : h.distanceRange;
this.distanceFieldType = ((d = h == null ? undefined : h.fieldType) === null || d === undefined ? undefined : d.toLowerCase()) ?? "none";
}
a.prototype.destroy = function () {
for (var a in this.chars) {
this.chars[a].texture.destroy();
this.chars[a].texture = null;
}
for (var a in this.pageTextures) {
if (this._ownsTextures) {
this.pageTextures[a].destroy(true);
}
this.pageTextures[a] = null;
}
this.chars = null;
this.pageTextures = null;
};
a.install = function (b, c, d) {
var e;
if (b instanceof bh) {
e = b;
} else {
var f = gh(b);
if (!f) {
throw new Error("Unrecognized data format for font.");
}
e = f.parse(b);
}
if (c instanceof Sc) {
c = [c];
}
var g = new a(e, c, d);
a.available[g.font] = g;
return g;
};
a.uninstall = function (b) {
var c = a.available[b];
if (!c) {
throw new Error("No font found named '" + b + "'");
}
c.destroy();
delete a.available[b];
};
a.from = function (b, c, d) {
if (!b) {
throw new Error("[BitmapFont] Property `name` is required.");
}
var e = Object.assign({}, a.defaultOptions, d);
var f = e.chars;
var g = e.padding;
var h = e.resolution;
var i = e.textureWidth;
var j = e.textureHeight;
var k = function (a) {
if (typeof a == "string") {
a = [a];
}
for (var b = [], c = 0, d = a.length; c < d; c++) {
var e = a[c];
if (Array.isArray(e)) {
if (e.length !== 2) {
throw new Error("[BitmapFont]: Invalid character range length, expecting 2 got " + e.length + ".");
}
var f = e[0].charCodeAt(0);
var g = e[1].charCodeAt(0);
if (g < f) {
throw new Error("[BitmapFont]: Invalid character range.");
}
for (var h = f, i = g; h <= i; h++) {
b.push(String.fromCharCode(h));
}
} else {
b.push.apply(b, ih(e));
}
}
if (b.length === 0) {
throw new Error("[BitmapFont]: Empty set when resolving characters.");
}
return b;
}(f);
var l = c instanceof rg ? c : new rg(c);
var m = i;
var n = new bh();
n.info[0] = {
face: l.fontFamily,
size: l.fontSize
};
n.common[0] = {
lineHeight: l.fontSize
};
for (var o, p, q, r = 0, s = 0, t = 0, u = [], v = 0; v < k.length; v++) {
if (!o) {
(o = document.createElement("canvas")).width = i;
o.height = j;
p = o.getContext("2d");
q = new Bc(o, {
resolution: h
});
u.push(new Sc(q));
n.page.push({
id: u.length - 1,
file: ""
});
}
var w = vg.measureText(k[v], l, false, o);
var x = w.width;
var y = Math.ceil(w.height);
var z = Math.ceil((l.fontStyle === "italic" ? 2 : 1) * x);
if (s >= j - y * h) {
if (s === 0) {
throw new Error("[BitmapFont] textureHeight " + j + "px is too small for " + l.fontSize + "px fonts");
}
--v;
o = null;
p = null;
q = null;
s = 0;
r = 0;
t = 0;
} else {
t = Math.max(y + w.fontProperties.descent, t);
if (z * h + r >= m) {
--v;
s += t * h;
s = Math.ceil(s);
r = 0;
t = 0;
} else {
hh(o, p, w, r, s, h, l);
var A = jh(w.text);
n.char.push({
id: A,
page: u.length - 1,
x: r / h,
y: s / h,
width: z,
height: y,
xoffset: 0,
yoffset: 0,
xadvance: Math.ceil(x - (l.dropShadow ? l.dropShadowDistance : 0) - (l.stroke ? l.strokeThickness : 0))
});
r += (z + g * 2) * h;
r = Math.ceil(r);
}
}
}
v = 0;
for (var B = k.length; v < B; v++) {
for (var C = k[v], D = 0; D < B; D++) {
var E = k[D];
var F = p.measureText(C).width;
var G = p.measureText(E).width;
var H = p.measureText(C + E).width - (F + G);
if (H) {
n.kerning.push({
first: jh(C),
second: jh(E),
amount: H
});
}
}
}
var I = new a(n, u, true);
if (a.available[b] !== undefined) {
a.uninstall(b);
}
a.available[b] = I;
return I;
};
a.ALPHA = [
["a", "z"],
["A", "Z"], " "
];
a.NUMERIC = [
["0", "9"]
];
a.ALPHANUMERIC = [
["a", "z"],
["A", "Z"],
["0", "9"], " "
];
a.ASCII = [
[" ", "~"]
];
a.defaultOptions = {
resolution: 1,
textureWidth: 512,
textureHeight: 512,
padding: 4,
chars: a.ALPHANUMERIC
};
a.available = {};
return a;
}();
var lh = [];
var mh = [];
var nh = [];
(function (a) {
function b(c, d) {
if (d === undefined) {
d = {};
}
var e = a.call(this) || this;
e._tint = 16777215;
var f = Object.assign({}, b.styleDefaults, d);
var g = f.align;
var h = f.tint;
var i = f.maxWidth;
var j = f.letterSpacing;
var k = f.fontName;
var l = f.fontSize;
if (!kh.available[k]) {
throw new Error("Missing BitmapFont \"" + k + "\"");
}
e._activePagesMeshData = [];
e._textWidth = 0;
e._textHeight = 0;
e._align = g;
e._tint = h;
e._fontName = k;
e._fontSize = l || kh.available[k].size;
e.text = c;
e._maxWidth = i;
e._maxLineHeight = 0;
e._letterSpacing = j;
e._anchor = new vb(function () {
e.dirty = true;
}, e, 0, 0);
e._roundPixels = Fa.ROUND_PIXELS;
e.dirty = true;
e._textureCache = {};
return e;
}
(function (a, b) {
function c() {
this.constructor = a;
}
ah(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype.updateText = function () {
for (var a = kh.available[this._fontName], b = this._fontSize / a.size, c = new ob(), d = [], e = [], f = [], g = ih(this._text.replace(/(?:\r\n|\r)/g, "\n") || " "), h = this._maxWidth * a.size / this._fontSize, i = a.distanceFieldType === "none" ? lh : mh, j = null, k = 0, l = 0, m = 0, n = -1, o = 0, p = 0, q = 0, r = 0, s = 0; s < g.length; s++) {
var t = jh(N = g[s]);
if (/(?:\s)/.test(N)) {
n = s;
o = k;
r++;
}
if (N !== "\r" && N !== "\n") {
var u = a.chars[t];
if (u) {
if (j && u.kerning[j]) {
c.x += u.kerning[j];
}
var v = nh.pop() || {
texture: Sc.EMPTY,
line: 0,
charCode: 0,
prevSpaces: 0,
position: new ob()
};
v.texture = u.texture;
v.line = m;
v.charCode = t;
v.position.x = c.x + u.xOffset + this._letterSpacing / 2;
v.position.y = c.y + u.yOffset;
v.prevSpaces = r;
d.push(v);
k = v.position.x + Math.max(u.xAdvance, u.texture.orig.width);
c.x += u.xAdvance + this._letterSpacing;
q = Math.max(q, u.yOffset + u.texture.height);
j = t;
if (n !== -1 && h > 0 && c.x > h) {
$a(d, 1 + n - ++p, 1 + s - n);
s = n;
n = -1;
e.push(o);
f.push(d.length > 0 ? d[d.length - 1].prevSpaces : 0);
l = Math.max(l, o);
m++;
c.x = 0;
c.y += a.lineHeight;
j = null;
r = 0;
}
}
} else {
e.push(k);
f.push(-1);
l = Math.max(l, k);
++m;
++p;
c.x = 0;
c.y += a.lineHeight;
j = null;
r = 0;
}
}
var w = g[g.length - 1];
if (w !== "\r" && w !== "\n") {
if (/(?:\s)/.test(w)) {
k = o;
}
e.push(k);
l = Math.max(l, k);
f.push(-1);
}
var x = [];
for (s = 0; s <= m; s++) {
var y = 0;
if (this._align === "right") {
y = l - e[s];
} else if (this._align === "center") {
y = (l - e[s]) / 2;
} else if (this._align === "justify") {
y = f[s] < 0 ? 0 : (l - e[s]) / f[s];
}
x.push(y);
}
var z = d.length;
var A = {};
var B = [];
var C = this._activePagesMeshData;
for (s = 0; s < C.length; s++) {
i.push(C[s]);
}
for (s = 0; s < z; s++) {
var D = (P = d[s].texture).baseTexture.uid;
if (!A[D]) {
if (!(W = i.pop())) {
var E = new _g();
var F = undefined;
var G = undefined;
if (a.distanceFieldType === "none") {
F = new $g(Sc.EMPTY);
G = pa.NORMAL;
} else {
F = new $g(Sc.EMPTY, {
program: Od.from("// 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", "// 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\r\n // NPM Textures, NPM outputs\r\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\r\n\r\n}\r\n"),
uniforms: {
uFWidth: 0
}
});
G = pa.NORMAL_NPM;
}
var H = new Zg(E, F);
H.blendMode = G;
W = {
index: 0,
indexCount: 0,
vertexCount: 0,
uvsCount: 0,
total: 0,
mesh: H,
vertices: null,
uvs: null,
indices: null
};
}
W.index = 0;
W.indexCount = 0;
W.vertexCount = 0;
W.uvsCount = 0;
W.total = 0;
var I = this._textureCache;
I[D] = I[D] || new Sc(P.baseTexture);
W.mesh.texture = I[D];
W.mesh.tint = this._tint;
B.push(W);
A[D] = W;
}
A[D].total++;
}
for (s = 0; s < C.length; s++) {
if (B.indexOf(C[s]) === -1) {
this.removeChild(C[s].mesh);
}
}
for (s = 0; s < B.length; s++) {
if (B[s].mesh.parent !== this) {
this.addChild(B[s].mesh);
}
}
this._activePagesMeshData = B;
for (var s in A) {
var J = (W = A[s]).total;
if (W.indices?.length <= J * 6 || W.vertices.length < Zg.BATCHABLE_SIZE * 2) {
W.vertices = new Float32Array(J * 8);
W.uvs = new Float32Array(J * 8);
W.indices = new Uint16Array(J * 6);
} else {
for (var K = W.total, L = W.vertices, M = K * 4 * 2; M < L.length; M++) {
L[M] = 0;
}
}
W.mesh.size = J * 6;
}
for (s = 0; s < z; s++) {
var N;
var O = (N = d[s]).position.x + x[N.line] * (this._align === "justify" ? N.prevSpaces : 1);
if (this._roundPixels) {
O = Math.round(O);
}
var P;
var Q = O * b;
var R = N.position.y * b;
var S = A[(P = N.texture).baseTexture.uid];
var T = P.frame;
var U = P._uvs;
var V = S.index++;
S.indices[V * 6 + 0] = 0 + V * 4;
S.indices[V * 6 + 1] = 1 + V * 4;
S.indices[V * 6 + 2] = 2 + V * 4;
S.indices[V * 6 + 3] = 0 + V * 4;
S.indices[V * 6 + 4] = 2 + V * 4;
S.indices[V * 6 + 5] = 3 + V * 4;
S.vertices[V * 8 + 0] = Q;
S.vertices[V * 8 + 1] = R;
S.vertices[V * 8 + 2] = Q + T.width * b;
S.vertices[V * 8 + 3] = R;
S.vertices[V * 8 + 4] = Q + T.width * b;
S.vertices[V * 8 + 5] = R + T.height * b;
S.vertices[V * 8 + 6] = Q;
S.vertices[V * 8 + 7] = R + T.height * b;
S.uvs[V * 8 + 0] = U.x0;
S.uvs[V * 8 + 1] = U.y0;
S.uvs[V * 8 + 2] = U.x1;
S.uvs[V * 8 + 3] = U.y1;
S.uvs[V * 8 + 4] = U.x2;
S.uvs[V * 8 + 5] = U.y2;
S.uvs[V * 8 + 6] = U.x3;
S.uvs[V * 8 + 7] = U.y3;
}
this._textWidth = l * b;
this._textHeight = (c.y + a.lineHeight) * b;
for (var s in A) {
var W = A[s];
if (this.anchor.x !== 0 || this.anchor.y !== 0) {
for (var X = 0, Y = this._textWidth * this.anchor.x, Z = this._textHeight * this.anchor.y, $ = 0; $ < W.total; $++) {
W.vertices[X++] -= Y;
W.vertices[X++] -= Z;
W.vertices[X++] -= Y;
W.vertices[X++] -= Z;
W.vertices[X++] -= Y;
W.vertices[X++] -= Z;
W.vertices[X++] -= Y;
W.vertices[X++] -= Z;
}
}
this._maxLineHeight = q * b;
var _ = W.mesh.geometry.getBuffer("aVertexPosition");
var aa = W.mesh.geometry.getBuffer("aTextureCoord");
var ba = W.mesh.geometry.getIndex();
_.data = W.vertices;
aa.data = W.uvs;
ba.data = W.indices;
_.update();
aa.update();
ba.update();
}
for (s = 0; s < d.length; s++) {
nh.push(d[s]);
}
};
b.prototype.updateTransform = function () {
this.validate();
this.containerUpdateTransform();
};
b.prototype._render = function (b) {
var c = kh.available[this._fontName];
var d = c.distanceFieldRange;
var e = c.distanceFieldType;
var f = c.size;
if (e !== "none") {
for (var g = this.worldTransform, h = g.a, i = g.b, j = g.c, k = g.d, l = Math.sqrt(h * h + i * i), m = Math.sqrt(j * j + k * k), n = (Math.abs(l) + Math.abs(m)) / 2, o = this._fontSize / f, p = 0, q = this._activePagesMeshData; p < q.length; p++) {
q[p].mesh.shader.uniforms.uFWidth = n * d * o * b.resolution;
}
}
a.prototype._render.call(this, b);
};
b.prototype.getLocalBounds = function () {
this.validate();
return a.prototype.getLocalBounds.call(this);
};
b.prototype.validate = function () {
if (this.dirty) {
this.updateText();
this.dirty = false;
}
};
Object.defineProperty(b.prototype, "tint", {
get: function () {
return this._tint;
},
set: function (a) {
if (this._tint !== a) {
this._tint = a;
for (var b = 0; b < this._activePagesMeshData.length; b++) {
this._activePagesMeshData[b].mesh.tint = a;
}
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "align", {
get: function () {
return this._align;
},
set: function (a) {
if (this._align !== a) {
this._align = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "fontName", {
get: function () {
return this._fontName;
},
set: function (a) {
if (!kh.available[a]) {
throw new Error("Missing BitmapFont \"" + a + "\"");
}
if (this._fontName !== a) {
this._fontName = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "fontSize", {
get: function () {
return this._fontSize;
},
set: function (a) {
if (this._fontSize !== a) {
this._fontSize = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "anchor", {
get: function () {
return this._anchor;
},
set: function (a) {
if (typeof a == "number") {
this._anchor.set(a);
} else {
this._anchor.copyFrom(a);
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "text", {
get: function () {
return this._text;
},
set: function (a) {
a = String(a == null ? "" : a);
if (this._text !== a) {
this._text = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "maxWidth", {
get: function () {
return this._maxWidth;
},
set: function (a) {
if (this._maxWidth !== a) {
this._maxWidth = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "maxLineHeight", {
get: function () {
this.validate();
return this._maxLineHeight;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "textWidth", {
get: function () {
this.validate();
return this._textWidth;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "letterSpacing", {
get: function () {
return this._letterSpacing;
},
set: function (a) {
if (this._letterSpacing !== a) {
this._letterSpacing = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "roundPixels", {
get: function () {
return this._roundPixels;
},
set: function (a) {
if (a !== this._roundPixels) {
this._roundPixels = a;
this.dirty = true;
}
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "textHeight", {
get: function () {
this.validate();
return this._textHeight;
},
enumerable: false,
configurable: true
});
b.prototype.destroy = function (b) {
var c = this._textureCache;
for (var d in c) {
c[d].destroy();
delete c[d];
}
this._textureCache = null;
a.prototype.destroy.call(this, b);
};
b.styleDefaults = {
align: "left",
tint: 16777215,
maxWidth: 0,
letterSpacing: 0
};
})(dc);
var oh = function () {
function a() {}
a.add = function () {
We.setExtensionXhrType("fnt", We.XHR_RESPONSE_TYPE.TEXT);
};
a.use = function (b, c) {
var d = gh(b.data);
if (d) {
for (var e = a.getBaseUrl(this, b), f = d.parse(b.data), g = {}, h = function (a) {
g[a.metadata.pageFile] = a.texture;
if (Object.keys(g).length === f.page.length) {
b.bitmapFont = kh.install(f, g, true);
c();
}
}, i = 0; i < f.page.length; ++i) {
var j = f.page[i].file;
var k = e + j;
var l = false;
for (var m in this.resources) {
var n = this.resources[m];
if (n.url === k) {
n.metadata.pageFile = j;
if (n.texture) {
h(n);
} else {
n.onAfterMiddleware.add(h);
}
l = true;
break;
}
}
if (!l) {
var o = {
crossOrigin: b.crossOrigin,
loadType: We.LOAD_TYPE.IMAGE,
metadata: Object.assign({
pageFile: j
}, b.metadata.imageMetadata),
parentResource: b
};
this.add(k, o, h);
}
}
} else {
c();
}
};
a.getBaseUrl = function (b, c) {
var d = c.isDataUrl ? "" : a.dirname(c.url);
if (c.isDataUrl) {
if (d === ".") {
d = "";
}
if (b.baseUrl && d && b.baseUrl.charAt(b.baseUrl.length - 1) === "/") {
d += "/";
}
}
if ((d = d.replace(b.baseUrl, "")) && d.charAt(d.length - 1) !== "/") {
d += "/";
}
return d;
};
a.dirname = function (a) {
var b = a.replace(/\\/g, "/").replace(/\/$/, "").replace(/\/[^\/]*$/, "");
if (b === a) {
return ".";
} else if (b === "") {
return "/";
} else {
return b;
}
};
return a;
}();
function ph(a, b) {
ph = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return ph(a, b);
}
(function (a) {
function b(b) {
if (b === undefined) {
b = 1;
}
var c = a.call(this, "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}", "varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float uAlpha;\n\nvoid main(void)\n{\n gl_FragColor = texture2D(uSampler, vTextureCoord) * uAlpha;\n}\n", {
uAlpha: 1
}) || this;
c.alpha = b;
return c;
}
(function (a, b) {
function c() {
this.constructor = a;
}
ph(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
Object.defineProperty(b.prototype, "alpha", {
get: function () {
return this.uniforms.uAlpha;
},
set: function (a) {
this.uniforms.uAlpha = a;
},
enumerable: false,
configurable: true
});
})(Rd);
function qh(a, b) {
qh = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return qh(a, b);
}
function rh(a, b) {
function c() {
this.constructor = a;
}
qh(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var sh;
var th;
var uh;
var vh;
var wh;
var xh;
var yh;
var zh;
var Ah;
var Bh;
var Ch;
var Dh;
var Eh;
var Fh;
var Gh;
var Hh;
var Ih;
var Jh;
var Kh;
var Lh = {
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: [0.0093, 0.028002, 0.065984, 0.121703, 0.175713, 0.198596],
13: [0.002406, 0.009255, 0.027867, 0.065666, 0.121117, 0.174868, 0.197641],
15: [0.000489, 0.002403, 0.009246, 0.02784, 0.065602, 0.120999, 0.174697, 0.197448]
};
var Mh = ["varying vec2 vBlurTexCoords[%size%];", "uniform sampler2D uSampler;", "void main(void)", "{", " gl_FragColor = vec4(0.0);", " %blur%", "}"].join("\n");
(function (a) {
a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY";
a[a.WEBGL = 1] = "WEBGL";
a[a.WEBGL2 = 2] = "WEBGL2";
})(sh ||= {});
(function (a) {
a[a.UNKNOWN = 0] = "UNKNOWN";
a[a.WEBGL = 1] = "WEBGL";
a[a.CANVAS = 2] = "CANVAS";
})(th ||= {});
(function (a) {
a[a.COLOR = 16384] = "COLOR";
a[a.DEPTH = 256] = "DEPTH";
a[a.STENCIL = 1024] = "STENCIL";
})(uh ||= {});
(function (a) {
a[a.NORMAL = 0] = "NORMAL";
a[a.ADD = 1] = "ADD";
a[a.MULTIPLY = 2] = "MULTIPLY";
a[a.SCREEN = 3] = "SCREEN";
a[a.OVERLAY = 4] = "OVERLAY";
a[a.DARKEN = 5] = "DARKEN";
a[a.LIGHTEN = 6] = "LIGHTEN";
a[a.COLOR_DODGE = 7] = "COLOR_DODGE";
a[a.COLOR_BURN = 8] = "COLOR_BURN";
a[a.HARD_LIGHT = 9] = "HARD_LIGHT";
a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT";
a[a.DIFFERENCE = 11] = "DIFFERENCE";
a[a.EXCLUSION = 12] = "EXCLUSION";
a[a.HUE = 13] = "HUE";
a[a.SATURATION = 14] = "SATURATION";
a[a.COLOR = 15] = "COLOR";
a[a.LUMINOSITY = 16] = "LUMINOSITY";
a[a.NORMAL_NPM = 17] = "NORMAL_NPM";
a[a.ADD_NPM = 18] = "ADD_NPM";
a[a.SCREEN_NPM = 19] = "SCREEN_NPM";
a[a.NONE = 20] = "NONE";
a[a.SRC_OVER = 0] = "SRC_OVER";
a[a.SRC_IN = 21] = "SRC_IN";
a[a.SRC_OUT = 22] = "SRC_OUT";
a[a.SRC_ATOP = 23] = "SRC_ATOP";
a[a.DST_OVER = 24] = "DST_OVER";
a[a.DST_IN = 25] = "DST_IN";
a[a.DST_OUT = 26] = "DST_OUT";
a[a.DST_ATOP = 27] = "DST_ATOP";
a[a.ERASE = 26] = "ERASE";
a[a.SUBTRACT = 28] = "SUBTRACT";
a[a.XOR = 29] = "XOR";
})(vh ||= {});
(function (a) {
a[a.POINTS = 0] = "POINTS";
a[a.LINES = 1] = "LINES";
a[a.LINE_LOOP = 2] = "LINE_LOOP";
a[a.LINE_STRIP = 3] = "LINE_STRIP";
a[a.TRIANGLES = 4] = "TRIANGLES";
a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP";
a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN";
})(wh ||= {});
(function (a) {
a[a.RGBA = 6408] = "RGBA";
a[a.RGB = 6407] = "RGB";
a[a.RG = 33319] = "RG";
a[a.RED = 6403] = "RED";
a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER";
a[a.RGB_INTEGER = 36248] = "RGB_INTEGER";
a[a.RG_INTEGER = 33320] = "RG_INTEGER";
a[a.RED_INTEGER = 36244] = "RED_INTEGER";
a[a.ALPHA = 6406] = "ALPHA";
a[a.LUMINANCE = 6409] = "LUMINANCE";
a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA";
a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT";
a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL";
})(xh ||= {});
(function (a) {
a[a.TEXTURE_2D = 3553] = "TEXTURE_2D";
a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP";
a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY";
a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z";
})(yh ||= {});
(function (a) {
a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE";
a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT";
a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5";
a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4";
a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1";
a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT";
a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV";
a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV";
a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8";
a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV";
a[a.BYTE = 5120] = "BYTE";
a[a.SHORT = 5122] = "SHORT";
a[a.INT = 5124] = "INT";
a[a.FLOAT = 5126] = "FLOAT";
a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV";
a[a.HALF_FLOAT = 36193] = "HALF_FLOAT";
})(zh ||= {});
(function (a) {
a[a.FLOAT = 0] = "FLOAT";
a[a.INT = 1] = "INT";
a[a.UINT = 2] = "UINT";
})(Ah ||= {});
(function (a) {
a[a.NEAREST = 0] = "NEAREST";
a[a.LINEAR = 1] = "LINEAR";
})(Bh ||= {});
(function (a) {
a[a.CLAMP = 33071] = "CLAMP";
a[a.REPEAT = 10497] = "REPEAT";
a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT";
})(Ch ||= {});
(function (a) {
a[a.OFF = 0] = "OFF";
a[a.POW2 = 1] = "POW2";
a[a.ON = 2] = "ON";
a[a.ON_MANUAL = 3] = "ON_MANUAL";
})(Dh ||= {});
(function (a) {
a[a.NPM = 0] = "NPM";
a[a.UNPACK = 1] = "UNPACK";
a[a.PMA = 2] = "PMA";
a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA";
a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD";
a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA";
a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA";
})(Eh ||= {});
(function (a) {
a[a.NO = 0] = "NO";
a[a.YES = 1] = "YES";
a[a.AUTO = 2] = "AUTO";
a[a.BLEND = 0] = "BLEND";
a[a.CLEAR = 1] = "CLEAR";
a[a.BLIT = 2] = "BLIT";
})(Fh ||= {});
(function (a) {
a[a.AUTO = 0] = "AUTO";
a[a.MANUAL = 1] = "MANUAL";
})(Gh ||= {});
(function (a) {
a.LOW = "lowp";
a.MEDIUM = "mediump";
a.HIGH = "highp";
})(Hh ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.SCISSOR = 1] = "SCISSOR";
a[a.STENCIL = 2] = "STENCIL";
a[a.SPRITE = 3] = "SPRITE";
})(Ih ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.LOW = 2] = "LOW";
a[a.MEDIUM = 4] = "MEDIUM";
a[a.HIGH = 8] = "HIGH";
})(Jh ||= {});
(function (a) {
a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER";
a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER";
a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER";
})(Kh ||= {});
var Nh = function (a) {
function b(b, c, d, e, f) {
if (c === undefined) {
c = 8;
}
if (d === undefined) {
d = 4;
}
if (e === undefined) {
e = Fa.FILTER_RESOLUTION;
}
if (f === undefined) {
f = 5;
}
var g = this;
var h = function (a, b) {
var c;
var d = Math.ceil(a / 2);
var e = "\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 }";
var f = "";
c = b ? "vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * strength, 0.0);" : "vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * strength);";
for (var g = 0; g < a; g++) {
var h = c.replace("%index%", g.toString());
f += h = h.replace("%sampleIndex%", g - (d - 1) + ".0");
f += "\n";
}
return (e = e.replace("%blur%", f)).replace("%size%", a.toString());
}(f, b);
var i = function (a) {
for (var b, c = Lh[a], d = c.length, e = Mh, f = "", g = 0; g < a; g++) {
var h = "gl_FragColor += texture2D(uSampler, vBlurTexCoords[%index%]) * %value%;".replace("%index%", g.toString());
b = g;
if (g >= d) {
b = a - g - 1;
}
f += h = h.replace("%value%", c[b].toString());
f += "\n";
}
return (e = e.replace("%blur%", f)).replace("%size%", a.toString());
}(f);
(g = a.call(this, h, i) || this).horizontal = b;
g.resolution = e;
g._quality = 0;
g.quality = d;
g.blur = c;
return g;
}
rh(b, a);
b.prototype.apply = function (a, b, c, d) {
if (c) {
if (this.horizontal) {
this.uniforms.strength = 1 / c.width * (c.width / b.width);
} else {
this.uniforms.strength = 1 / c.height * (c.height / b.height);
}
} else if (this.horizontal) {
this.uniforms.strength = 1 / a.renderer.width * (a.renderer.width / b.width);
} else {
this.uniforms.strength = 1 / a.renderer.height * (a.renderer.height / b.height);
}
this.uniforms.strength *= this.strength;
this.uniforms.strength /= this.passes;
if (this.passes === 1) {
a.applyFilter(this, b, c, d);
} else {
var e = a.getFilterTexture();
var f = a.renderer;
var g = b;
var h = e;
this.state.blend = false;
a.applyFilter(this, g, h, Fh.CLEAR);
for (var i = 1; i < this.passes - 1; i++) {
a.bindAndClear(g, Fh.BLIT);
this.uniforms.uSampler = h;
var j = h;
h = g;
g = j;
f.shader.bind(this);
f.geometry.draw(5);
}
this.state.blend = true;
a.applyFilter(this, h, c, d);
a.returnFilterTexture(e);
}
};
Object.defineProperty(b.prototype, "blur", {
get: function () {
return this.strength;
},
set: function (a) {
this.padding = 1 + Math.abs(a) * 2;
this.strength = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "quality", {
get: function () {
return this._quality;
},
set: function (a) {
this._quality = a;
this.passes = a;
},
enumerable: false,
configurable: true
});
return b;
}(Rd);
(function (a) {
function b(b, c, d, e) {
if (b === undefined) {
b = 8;
}
if (c === undefined) {
c = 4;
}
if (d === undefined) {
d = Fa.FILTER_RESOLUTION;
}
if (e === undefined) {
e = 5;
}
var f = a.call(this) || this;
f.blurXFilter = new Nh(true, b, c, d, e);
f.blurYFilter = new Nh(false, b, c, d, e);
f.resolution = d;
f.quality = c;
f.blur = b;
f.repeatEdgePixels = false;
return f;
}
rh(b, a);
b.prototype.apply = function (a, b, c, d) {
var e = Math.abs(this.blurXFilter.strength);
var f = Math.abs(this.blurYFilter.strength);
if (e && f) {
var g = a.getFilterTexture();
this.blurXFilter.apply(a, b, g, Fh.CLEAR);
this.blurYFilter.apply(a, g, c, d);
a.returnFilterTexture(g);
} else if (f) {
this.blurYFilter.apply(a, b, c, d);
} else {
this.blurXFilter.apply(a, b, c, d);
}
};
b.prototype.updatePadding = function () {
if (this._repeatEdgePixels) {
this.padding = 0;
} else {
this.padding = Math.max(Math.abs(this.blurXFilter.strength), Math.abs(this.blurYFilter.strength)) * 2;
}
};
Object.defineProperty(b.prototype, "blur", {
get: function () {
return this.blurXFilter.blur;
},
set: function (a) {
this.blurXFilter.blur = this.blurYFilter.blur = a;
this.updatePadding();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "quality", {
get: function () {
return this.blurXFilter.quality;
},
set: function (a) {
this.blurXFilter.quality = this.blurYFilter.quality = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "blurX", {
get: function () {
return this.blurXFilter.blur;
},
set: function (a) {
this.blurXFilter.blur = a;
this.updatePadding();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "blurY", {
get: function () {
return this.blurYFilter.blur;
},
set: function (a) {
this.blurYFilter.blur = a;
this.updatePadding();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "blendMode", {
get: function () {
return this.blurYFilter.blendMode;
},
set: function (a) {
this.blurYFilter.blendMode = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "repeatEdgePixels", {
get: function () {
return this._repeatEdgePixels;
},
set: function (a) {
this._repeatEdgePixels = a;
this.updatePadding();
},
enumerable: false,
configurable: true
});
})(Rd);
function Oh(a, b) {
Oh = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Oh(a, b);
}
var Ph = function (a) {
function b() {
var b = this;
var c = {
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
};
(b = a.call(this, te, "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", c) || this).alpha = 1;
return b;
}
(function (a, b) {
function c() {
this.constructor = a;
}
Oh(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype._loadMatrix = function (a, b) {
if (b === undefined) {
b = false;
}
var c = a;
if (b) {
this._multiply(c, this.uniforms.m, a);
c = this._colorMatrix(c);
}
this.uniforms.m = c;
};
b.prototype._multiply = function (a, b, c) {
a[0] = b[0] * c[0] + b[1] * c[5] + b[2] * c[10] + b[3] * c[15];
a[1] = b[0] * c[1] + b[1] * c[6] + b[2] * c[11] + b[3] * c[16];
a[2] = b[0] * c[2] + b[1] * c[7] + b[2] * c[12] + b[3] * c[17];
a[3] = b[0] * c[3] + b[1] * c[8] + b[2] * c[13] + b[3] * c[18];
a[4] = b[0] * c[4] + b[1] * c[9] + b[2] * c[14] + b[3] * c[19] + b[4];
a[5] = b[5] * c[0] + b[6] * c[5] + b[7] * c[10] + b[8] * c[15];
a[6] = b[5] * c[1] + b[6] * c[6] + b[7] * c[11] + b[8] * c[16];
a[7] = b[5] * c[2] + b[6] * c[7] + b[7] * c[12] + b[8] * c[17];
a[8] = b[5] * c[3] + b[6] * c[8] + b[7] * c[13] + b[8] * c[18];
a[9] = b[5] * c[4] + b[6] * c[9] + b[7] * c[14] + b[8] * c[19] + b[9];
a[10] = b[10] * c[0] + b[11] * c[5] + b[12] * c[10] + b[13] * c[15];
a[11] = b[10] * c[1] + b[11] * c[6] + b[12] * c[11] + b[13] * c[16];
a[12] = b[10] * c[2] + b[11] * c[7] + b[12] * c[12] + b[13] * c[17];
a[13] = b[10] * c[3] + b[11] * c[8] + b[12] * c[13] + b[13] * c[18];
a[14] = b[10] * c[4] + b[11] * c[9] + b[12] * c[14] + b[13] * c[19] + b[14];
a[15] = b[15] * c[0] + b[16] * c[5] + b[17] * c[10] + b[18] * c[15];
a[16] = b[15] * c[1] + b[16] * c[6] + b[17] * c[11] + b[18] * c[16];
a[17] = b[15] * c[2] + b[16] * c[7] + b[17] * c[12] + b[18] * c[17];
a[18] = b[15] * c[3] + b[16] * c[8] + b[17] * c[13] + b[18] * c[18];
a[19] = b[15] * c[4] + b[16] * c[9] + b[17] * c[14] + b[18] * c[19] + b[19];
return a;
};
b.prototype._colorMatrix = function (a) {
var b = new Float32Array(a);
b[4] /= 255;
b[9] /= 255;
b[14] /= 255;
b[19] /= 255;
return b;
};
b.prototype.brightness = function (a, b) {
var c = [a, 0, 0, 0, 0, 0, a, 0, 0, 0, 0, 0, a, 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(c, b);
};
b.prototype.tint = function (a, b) {
var c = [(a >> 16 & 255) / 255, 0, 0, 0, 0, 0, (a >> 8 & 255) / 255, 0, 0, 0, 0, 0, (a & 255) / 255, 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(c, b);
};
b.prototype.greyscale = function (a, b) {
var c = [a, a, a, 0, 0, a, a, a, 0, 0, a, a, a, 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(c, b);
};
b.prototype.blackAndWhite = function (a) {
this._loadMatrix([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], a);
};
b.prototype.hue = function (a, b) {
a = (a || 0) / 180 * Math.PI;
var c = Math.cos(a);
var d = Math.sin(a);
var e = 1 / 3;
var f = (0, Math.sqrt)(e);
var g = [c + (1 - c) * e, e * (1 - c) - f * d, e * (1 - c) + f * d, 0, 0, e * (1 - c) + f * d, c + e * (1 - c), e * (1 - c) - f * d, 0, 0, e * (1 - c) - f * d, e * (1 - c) + f * d, c + e * (1 - c), 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(g, b);
};
b.prototype.contrast = function (a, b) {
var c = (a || 0) + 1;
var d = (c - 1) * -0.5;
var e = [c, 0, 0, 0, d, 0, c, 0, 0, d, 0, 0, c, 0, d, 0, 0, 0, 1, 0];
this._loadMatrix(e, b);
};
b.prototype.saturate = function (a, b) {
if (a === undefined) {
a = 0;
}
var c = a * 2 / 3 + 1;
var d = (c - 1) * -0.5;
var e = [c, d, d, 0, 0, d, c, d, 0, 0, d, d, c, 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(e, b);
};
b.prototype.desaturate = function () {
this.saturate(-1);
};
b.prototype.negative = function (a) {
this._loadMatrix([-1, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0], a);
};
b.prototype.sepia = function (a) {
this._loadMatrix([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], a);
};
b.prototype.technicolor = function (a) {
this._loadMatrix([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], a);
};
b.prototype.polaroid = function (a) {
this._loadMatrix([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], a);
};
b.prototype.toBGR = function (a) {
this._loadMatrix([0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0], a);
};
b.prototype.kodachrome = function (a) {
this._loadMatrix([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], a);
};
b.prototype.browni = function (a) {
this._loadMatrix([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], a);
};
b.prototype.vintage = function (a) {
this._loadMatrix([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], a);
};
b.prototype.colorTone = function (a, b, c, d, e) {
var f = ((c = c || 16770432) >> 16 & 255) / 255;
var g = (c >> 8 & 255) / 255;
var h = (c & 255) / 255;
var i = ((d = d || 3375104) >> 16 & 255) / 255;
var j = (d >> 8 & 255) / 255;
var k = (d & 255) / 255;
var l = [0.3, 0.59, 0.11, 0, 0, f, g, h, a = a || 0.2, 0, i, j, k, b = b || 0.15, 0, f - i, g - j, h - k, 0, 0];
this._loadMatrix(l, e);
};
b.prototype.night = function (a, b) {
var c = [(a = a || 0.1) * -2, -a, 0, 0, 0, -a, 0, a, 0, 0, 0, a, a * 2, 0, 0, 0, 0, 0, 1, 0];
this._loadMatrix(c, b);
};
b.prototype.predator = function (a, b) {
var c = [a * 11.224130630493164, a * -4.794486999511719, a * -2.8746118545532227, a * 0, a * 0.40342438220977783, a * -3.6330697536468506, a * 9.193157196044922, a * -2.951810836791992, a * 0, a * -1.316135048866272, a * -3.2184197902679443, a * -4.2375030517578125, a * 7.476448059082031, a * 0, a * 0.8044459223747253, 0, 0, 0, 1, 0];
this._loadMatrix(c, b);
};
b.prototype.lsd = function (a) {
this._loadMatrix([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], a);
};
b.prototype.reset = function () {
this._loadMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0], false);
};
Object.defineProperty(b.prototype, "matrix", {
get: function () {
return this.uniforms.m;
},
set: function (a) {
this.uniforms.m = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "alpha", {
get: function () {
return this.uniforms.uAlpha;
},
set: function (a) {
this.uniforms.uAlpha = a;
},
enumerable: false,
configurable: true
});
return b;
}(Rd);
Ph.prototype.grayscale = Ph.prototype.greyscale;
function Qh(a, b) {
Qh = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Qh(a, b);
}
(function (a) {
function b(b, c) {
var d = this;
var e = new wb();
b.renderable = false;
(d = a.call(this, "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", "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", {
mapSampler: b._texture,
filterMatrix: e,
scale: {
x: 1,
y: 1
},
rotation: new Float32Array([1, 0, 0, 1])
}) || this).maskSprite = b;
d.maskMatrix = e;
if (c == null) {
c = 20;
}
d.scale = new ob(c, c);
return d;
}
(function (a, b) {
function c() {
this.constructor = a;
}
Qh(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype.apply = function (a, b, c, d) {
this.uniforms.filterMatrix = a.calculateSpriteMatrix(this.maskMatrix, this.maskSprite);
this.uniforms.scale.x = this.scale.x;
this.uniforms.scale.y = this.scale.y;
var e = this.maskSprite.worldTransform;
var f = Math.sqrt(e.a * e.a + e.b * e.b);
var g = Math.sqrt(e.c * e.c + e.d * e.d);
if (f !== 0 && g !== 0) {
this.uniforms.rotation[0] = e.a / f;
this.uniforms.rotation[1] = e.b / f;
this.uniforms.rotation[2] = e.c / g;
this.uniforms.rotation[3] = e.d / g;
}
a.applyFilter(this, b, c, d);
};
Object.defineProperty(b.prototype, "map", {
get: function () {
return this.uniforms.mapSampler;
},
set: function (a) {
this.uniforms.mapSampler = a;
},
enumerable: false,
configurable: true
});
})(Rd);
var Rh;
function Sh(a, b) {
Sh = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return Sh(a, b);
}
(function (a, b) {
function c() {
this.constructor = a;
}
Sh(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(function () {
return Rh.call(this, "\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", "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") || this;
}, Rh = Rd);
var Th;
var Uh;
var Vh;
var Wh;
var Xh;
var Yh;
var Zh;
var $h;
var _h;
var ai;
var bi;
var ci;
var di;
var ei;
var fi;
var gi;
var hi;
var ii;
var ji;
function ki(a, b) {
ki = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return ki(a, b);
}
(function (a) {
function b(b, c) {
if (b === undefined) {
b = 0.5;
}
if (c === undefined) {
c = Math.random();
}
var d = a.call(this, te, "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", {
uNoise: 0,
uSeed: 0
}) || this;
d.noise = b;
d.seed = c;
return d;
}
(function (a, b) {
function c() {
this.constructor = a;
}
ki(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
Object.defineProperty(b.prototype, "noise", {
get: function () {
return this.uniforms.uNoise;
},
set: function (a) {
this.uniforms.uNoise = a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "seed", {
get: function () {
return this.uniforms.uSeed;
},
set: function (a) {
this.uniforms.uSeed = a;
},
enumerable: false,
configurable: true
});
})(Rd);
(function (a) {
a[a.WEBGL_LEGACY = 0] = "WEBGL_LEGACY";
a[a.WEBGL = 1] = "WEBGL";
a[a.WEBGL2 = 2] = "WEBGL2";
})(Th ||= {});
(function (a) {
a[a.UNKNOWN = 0] = "UNKNOWN";
a[a.WEBGL = 1] = "WEBGL";
a[a.CANVAS = 2] = "CANVAS";
})(Uh ||= {});
(function (a) {
a[a.COLOR = 16384] = "COLOR";
a[a.DEPTH = 256] = "DEPTH";
a[a.STENCIL = 1024] = "STENCIL";
})(Vh ||= {});
(function (a) {
a[a.NORMAL = 0] = "NORMAL";
a[a.ADD = 1] = "ADD";
a[a.MULTIPLY = 2] = "MULTIPLY";
a[a.SCREEN = 3] = "SCREEN";
a[a.OVERLAY = 4] = "OVERLAY";
a[a.DARKEN = 5] = "DARKEN";
a[a.LIGHTEN = 6] = "LIGHTEN";
a[a.COLOR_DODGE = 7] = "COLOR_DODGE";
a[a.COLOR_BURN = 8] = "COLOR_BURN";
a[a.HARD_LIGHT = 9] = "HARD_LIGHT";
a[a.SOFT_LIGHT = 10] = "SOFT_LIGHT";
a[a.DIFFERENCE = 11] = "DIFFERENCE";
a[a.EXCLUSION = 12] = "EXCLUSION";
a[a.HUE = 13] = "HUE";
a[a.SATURATION = 14] = "SATURATION";
a[a.COLOR = 15] = "COLOR";
a[a.LUMINOSITY = 16] = "LUMINOSITY";
a[a.NORMAL_NPM = 17] = "NORMAL_NPM";
a[a.ADD_NPM = 18] = "ADD_NPM";
a[a.SCREEN_NPM = 19] = "SCREEN_NPM";
a[a.NONE = 20] = "NONE";
a[a.SRC_OVER = 0] = "SRC_OVER";
a[a.SRC_IN = 21] = "SRC_IN";
a[a.SRC_OUT = 22] = "SRC_OUT";
a[a.SRC_ATOP = 23] = "SRC_ATOP";
a[a.DST_OVER = 24] = "DST_OVER";
a[a.DST_IN = 25] = "DST_IN";
a[a.DST_OUT = 26] = "DST_OUT";
a[a.DST_ATOP = 27] = "DST_ATOP";
a[a.ERASE = 26] = "ERASE";
a[a.SUBTRACT = 28] = "SUBTRACT";
a[a.XOR = 29] = "XOR";
})(Wh ||= {});
(function (a) {
a[a.POINTS = 0] = "POINTS";
a[a.LINES = 1] = "LINES";
a[a.LINE_LOOP = 2] = "LINE_LOOP";
a[a.LINE_STRIP = 3] = "LINE_STRIP";
a[a.TRIANGLES = 4] = "TRIANGLES";
a[a.TRIANGLE_STRIP = 5] = "TRIANGLE_STRIP";
a[a.TRIANGLE_FAN = 6] = "TRIANGLE_FAN";
})(Xh ||= {});
(function (a) {
a[a.RGBA = 6408] = "RGBA";
a[a.RGB = 6407] = "RGB";
a[a.RG = 33319] = "RG";
a[a.RED = 6403] = "RED";
a[a.RGBA_INTEGER = 36249] = "RGBA_INTEGER";
a[a.RGB_INTEGER = 36248] = "RGB_INTEGER";
a[a.RG_INTEGER = 33320] = "RG_INTEGER";
a[a.RED_INTEGER = 36244] = "RED_INTEGER";
a[a.ALPHA = 6406] = "ALPHA";
a[a.LUMINANCE = 6409] = "LUMINANCE";
a[a.LUMINANCE_ALPHA = 6410] = "LUMINANCE_ALPHA";
a[a.DEPTH_COMPONENT = 6402] = "DEPTH_COMPONENT";
a[a.DEPTH_STENCIL = 34041] = "DEPTH_STENCIL";
})(Yh ||= {});
(function (a) {
a[a.TEXTURE_2D = 3553] = "TEXTURE_2D";
a[a.TEXTURE_CUBE_MAP = 34067] = "TEXTURE_CUBE_MAP";
a[a.TEXTURE_2D_ARRAY = 35866] = "TEXTURE_2D_ARRAY";
a[a.TEXTURE_CUBE_MAP_POSITIVE_X = 34069] = "TEXTURE_CUBE_MAP_POSITIVE_X";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_X = 34070] = "TEXTURE_CUBE_MAP_NEGATIVE_X";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Y = 34071] = "TEXTURE_CUBE_MAP_POSITIVE_Y";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072] = "TEXTURE_CUBE_MAP_NEGATIVE_Y";
a[a.TEXTURE_CUBE_MAP_POSITIVE_Z = 34073] = "TEXTURE_CUBE_MAP_POSITIVE_Z";
a[a.TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074] = "TEXTURE_CUBE_MAP_NEGATIVE_Z";
})(Zh ||= {});
(function (a) {
a[a.UNSIGNED_BYTE = 5121] = "UNSIGNED_BYTE";
a[a.UNSIGNED_SHORT = 5123] = "UNSIGNED_SHORT";
a[a.UNSIGNED_SHORT_5_6_5 = 33635] = "UNSIGNED_SHORT_5_6_5";
a[a.UNSIGNED_SHORT_4_4_4_4 = 32819] = "UNSIGNED_SHORT_4_4_4_4";
a[a.UNSIGNED_SHORT_5_5_5_1 = 32820] = "UNSIGNED_SHORT_5_5_5_1";
a[a.UNSIGNED_INT = 5125] = "UNSIGNED_INT";
a[a.UNSIGNED_INT_10F_11F_11F_REV = 35899] = "UNSIGNED_INT_10F_11F_11F_REV";
a[a.UNSIGNED_INT_2_10_10_10_REV = 33640] = "UNSIGNED_INT_2_10_10_10_REV";
a[a.UNSIGNED_INT_24_8 = 34042] = "UNSIGNED_INT_24_8";
a[a.UNSIGNED_INT_5_9_9_9_REV = 35902] = "UNSIGNED_INT_5_9_9_9_REV";
a[a.BYTE = 5120] = "BYTE";
a[a.SHORT = 5122] = "SHORT";
a[a.INT = 5124] = "INT";
a[a.FLOAT = 5126] = "FLOAT";
a[a.FLOAT_32_UNSIGNED_INT_24_8_REV = 36269] = "FLOAT_32_UNSIGNED_INT_24_8_REV";
a[a.HALF_FLOAT = 36193] = "HALF_FLOAT";
})($h ||= {});
(function (a) {
a[a.FLOAT = 0] = "FLOAT";
a[a.INT = 1] = "INT";
a[a.UINT = 2] = "UINT";
})(_h ||= {});
(function (a) {
a[a.NEAREST = 0] = "NEAREST";
a[a.LINEAR = 1] = "LINEAR";
})(ai ||= {});
(function (a) {
a[a.CLAMP = 33071] = "CLAMP";
a[a.REPEAT = 10497] = "REPEAT";
a[a.MIRRORED_REPEAT = 33648] = "MIRRORED_REPEAT";
})(bi ||= {});
(function (a) {
a[a.OFF = 0] = "OFF";
a[a.POW2 = 1] = "POW2";
a[a.ON = 2] = "ON";
a[a.ON_MANUAL = 3] = "ON_MANUAL";
})(ci ||= {});
(function (a) {
a[a.NPM = 0] = "NPM";
a[a.UNPACK = 1] = "UNPACK";
a[a.PMA = 2] = "PMA";
a[a.NO_PREMULTIPLIED_ALPHA = 0] = "NO_PREMULTIPLIED_ALPHA";
a[a.PREMULTIPLY_ON_UPLOAD = 1] = "PREMULTIPLY_ON_UPLOAD";
a[a.PREMULTIPLY_ALPHA = 2] = "PREMULTIPLY_ALPHA";
a[a.PREMULTIPLIED_ALPHA = 2] = "PREMULTIPLIED_ALPHA";
})(di ||= {});
(function (a) {
a[a.NO = 0] = "NO";
a[a.YES = 1] = "YES";
a[a.AUTO = 2] = "AUTO";
a[a.BLEND = 0] = "BLEND";
a[a.CLEAR = 1] = "CLEAR";
a[a.BLIT = 2] = "BLIT";
})(ei ||= {});
(function (a) {
a[a.AUTO = 0] = "AUTO";
a[a.MANUAL = 1] = "MANUAL";
})(fi ||= {});
(function (a) {
a.LOW = "lowp";
a.MEDIUM = "mediump";
a.HIGH = "highp";
})(gi ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.SCISSOR = 1] = "SCISSOR";
a[a.STENCIL = 2] = "STENCIL";
a[a.SPRITE = 3] = "SPRITE";
})(hi ||= {});
(function (a) {
a[a.NONE = 0] = "NONE";
a[a.LOW = 2] = "LOW";
a[a.MEDIUM = 4] = "MEDIUM";
a[a.HIGH = 8] = "HIGH";
})(ii ||= {});
(function (a) {
a[a.ELEMENT_ARRAY_BUFFER = 34963] = "ELEMENT_ARRAY_BUFFER";
a[a.ARRAY_BUFFER = 34962] = "ARRAY_BUFFER";
a[a.UNIFORM_BUFFER = 35345] = "UNIFORM_BUFFER";
})(ji ||= {});
var li = new wb();
ac.prototype._cacheAsBitmap = false;
ac.prototype._cacheData = null;
ac.prototype._cacheAsBitmapResolution = null;
ac.prototype._cacheAsBitmapMultisample = ii.NONE;
function mi() {
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(ac.prototype, {
cacheAsBitmapResolution: {
get: function () {
return this._cacheAsBitmapResolution;
},
set: function (a) {
if (a !== this._cacheAsBitmapResolution) {
this._cacheAsBitmapResolution = a;
if (this.cacheAsBitmap) {
this.cacheAsBitmap = false;
this.cacheAsBitmap = true;
}
}
}
},
cacheAsBitmapMultisample: {
get: function () {
return this._cacheAsBitmapMultisample;
},
set: function (a) {
if (a !== this._cacheAsBitmapMultisample) {
this._cacheAsBitmapMultisample = a;
if (this.cacheAsBitmap) {
this.cacheAsBitmap = false;
this.cacheAsBitmap = true;
}
}
}
},
cacheAsBitmap: {
get: function () {
return this._cacheAsBitmap;
},
set: function (a) {
var b;
if (this._cacheAsBitmap !== a) {
this._cacheAsBitmap = a;
if (a) {
this._cacheData ||= new mi();
(b = this._cacheData).originalRender = this.render;
b.originalRenderCanvas = this.renderCanvas;
b.originalUpdateTransform = this.updateTransform;
b.originalCalculateBounds = this.calculateBounds;
b.originalGetLocalBounds = this.getLocalBounds;
b.originalDestroy = this.destroy;
b.originalContainsPoint = this.containsPoint;
b.originalMask = this._mask;
b.originalFilterArea = this.filterArea;
this.render = this._renderCached;
this.renderCanvas = this._renderCachedCanvas;
this.destroy = this._cacheAsBitmapDestroy;
} else {
if ((b = this._cacheData).sprite) {
this._destroyCachedDisplayObject();
}
this.render = b.originalRender;
this.renderCanvas = b.originalRenderCanvas;
this.calculateBounds = b.originalCalculateBounds;
this.getLocalBounds = b.originalGetLocalBounds;
this.destroy = b.originalDestroy;
this.updateTransform = b.originalUpdateTransform;
this.containsPoint = b.originalContainsPoint;
this._mask = b.originalMask;
this.filterArea = b.originalFilterArea;
}
}
}
}
});
ac.prototype._renderCached = function (a) {
if (!!this.visible && this.worldAlpha > 0 && !!this.renderable) {
this._initCachedDisplayObject(a);
this._cacheData.sprite.transform._worldID = this.transform._worldID;
this._cacheData.sprite.worldAlpha = this.worldAlpha;
this._cacheData.sprite._render(a);
}
};
ac.prototype._initCachedDisplayObject = function (a) {
if (!this._cacheData || !this._cacheData.sprite) {
var b = this.alpha;
this.alpha = 1;
a.batch.flush();
var c = this.getLocalBounds(null, true).clone();
if (this.filters && this.filters.length) {
var d = this.filters[0].padding;
c.pad(d);
}
c.ceil(Fa.RESOLUTION);
var e = a.renderTexture.current;
var f = a.renderTexture.sourceFrame.clone();
var g = a.renderTexture.destinationFrame.clone();
var h = a.projection.transform;
var i = Tc.create({
width: c.width,
height: c.height,
resolution: this.cacheAsBitmapResolution || a.resolution,
multisample: this.cacheAsBitmapMultisample ?? a.multisample
});
var j = "cacheAsBitmap_" + bb();
this._cacheData.textureCacheId = j;
Bc.addToCache(i.baseTexture, j);
Sc.addToCache(i, j);
var k = this.transform.localTransform.copyTo(li).invert().translate(-c.x, -c.y);
this.render = this._cacheData.originalRender;
a.render(this, {
renderTexture: i,
clear: true,
transform: k,
skipUpdateTransform: false
});
a.framebuffer.blit();
a.projection.transform = h;
a.renderTexture.bind(e, f, g);
this.render = this._renderCached;
this.updateTransform = this.displayObjectUpdateTransform;
this.calculateBounds = this._calculateCachedBounds;
this.getLocalBounds = this._getCachedLocalBounds;
this._mask = null;
this.filterArea = null;
this.alpha = b;
var l = new ng(i);
l.transform.worldTransform = this.transform.worldTransform;
l.anchor.x = -c.x / c.width;
l.anchor.y = -c.y / c.height;
l.alpha = b;
l._bounds = this._bounds;
this._cacheData.sprite = l;
this.transform._parentID = -1;
if (this.parent) {
this.updateTransform();
} else {
this.enableTempParent();
this.updateTransform();
this.disableTempParent(null);
}
this.containsPoint = l.containsPoint.bind(l);
}
};
ac.prototype._renderCachedCanvas = function (a) {
if (!!this.visible && this.worldAlpha > 0 && !!this.renderable) {
this._initCachedDisplayObjectCanvas(a);
this._cacheData.sprite.worldAlpha = this.worldAlpha;
this._cacheData.sprite._renderCanvas(a);
}
};
ac.prototype._initCachedDisplayObjectCanvas = function (a) {
if (!this._cacheData || !this._cacheData.sprite) {
var b = this.getLocalBounds(null, true);
var c = this.alpha;
this.alpha = 1;
var d = a.context;
var e = a._projTransform;
b.ceil(Fa.RESOLUTION);
var f = Tc.create({
width: b.width,
height: b.height
});
var g = "cacheAsBitmap_" + bb();
this._cacheData.textureCacheId = g;
Bc.addToCache(f.baseTexture, g);
Sc.addToCache(f, g);
var h = li;
this.transform.localTransform.copyTo(h);
h.invert();
h.tx -= b.x;
h.ty -= b.y;
this.renderCanvas = this._cacheData.originalRenderCanvas;
a.render(this, {
renderTexture: f,
clear: true,
transform: h,
skipUpdateTransform: false
});
a.context = d;
a._projTransform = e;
this.renderCanvas = this._renderCachedCanvas;
this.updateTransform = this.displayObjectUpdateTransform;
this.calculateBounds = this._calculateCachedBounds;
this.getLocalBounds = this._getCachedLocalBounds;
this._mask = null;
this.filterArea = null;
this.alpha = c;
var i = new ng(f);
i.transform.worldTransform = this.transform.worldTransform;
i.anchor.x = -b.x / b.width;
i.anchor.y = -b.y / b.height;
i.alpha = c;
i._bounds = this._bounds;
this._cacheData.sprite = i;
this.transform._parentID = -1;
if (this.parent) {
this.updateTransform();
} else {
this.parent = a._tempDisplayObjectParent;
this.updateTransform();
this.parent = null;
}
this.containsPoint = i.containsPoint.bind(i);
}
};
ac.prototype._calculateCachedBounds = function () {
this._bounds.clear();
this._cacheData.sprite.transform._worldID = this.transform._worldID;
this._cacheData.sprite._calculateBounds();
this._bounds.updateID = this._boundsID;
};
ac.prototype._getCachedLocalBounds = function () {
return this._cacheData.sprite.getLocalBounds(null);
};
ac.prototype._destroyCachedDisplayObject = function () {
this._cacheData.sprite._texture.destroy(true);
this._cacheData.sprite = null;
Bc.removeFromCache(this._cacheData.textureCacheId);
Sc.removeFromCache(this._cacheData.textureCacheId);
this._cacheData.textureCacheId = null;
};
ac.prototype._cacheAsBitmapDestroy = function (a) {
this.cacheAsBitmap = false;
this.destroy(a);
};
ac.prototype.name = null;
dc.prototype.getChildByName = function (a, b) {
for (var c = 0, d = this.children.length; c < d; c++) {
if (this.children[c].name === a) {
return this.children[c];
}
}
if (b) {
c = 0;
d = this.children.length;
for (; c < d; c++) {
if (this.children[c].getChildByName) {
var e = this.children[c].getChildByName(a, true);
if (e) {
return e;
}
}
}
}
return null;
};
ac.prototype.getGlobalPosition = function (a, b) {
if (a === undefined) {
a = new ob();
}
if (b === undefined) {
b = false;
}
if (this.parent) {
this.parent.toGlobal(this.position, a, b);
} else {
a.x = this.position.x;
a.y = this.position.y;
}
return a;
};
function ni(a, b) {
ni = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return ni(a, b);
}
function oi(a, b) {
function c() {
this.constructor = a;
}
ni(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
}
var pi = function (a) {
function b(b, c, d, e) {
if (b === undefined) {
b = 100;
}
if (c === undefined) {
c = 100;
}
if (d === undefined) {
d = 10;
}
if (e === undefined) {
e = 10;
}
var f = a.call(this) || this;
f.segWidth = d;
f.segHeight = e;
f.width = b;
f.height = c;
f.build();
return f;
}
oi(b, a);
b.prototype.build = function () {
for (var a = this.segWidth * this.segHeight, b = [], c = [], d = [], e = this.segWidth - 1, f = this.segHeight - 1, g = this.width / e, h = this.height / f, i = 0; i < a; i++) {
var j = i % this.segWidth;
var k = i / this.segWidth | 0;
b.push(j * g, k * h);
c.push(j / e, k / f);
}
var l = e * f;
for (i = 0; i < l; i++) {
var m = i % e;
var n = i / e | 0;
var o = n * this.segWidth + m;
var p = n * this.segWidth + m + 1;
var q = (n + 1) * this.segWidth + m;
var r = (n + 1) * this.segWidth + m + 1;
d.push(o, p, q, p, r, q);
}
this.buffers[0].data = new Float32Array(b);
this.buffers[1].data = new Float32Array(c);
this.indexBuffer.data = new Uint16Array(d);
this.buffers[0].update();
this.buffers[1].update();
this.indexBuffer.update();
};
return b;
}(_g);
var qi = function (a) {
function b(b, c, d) {
if (b === undefined) {
b = 200;
}
if (d === undefined) {
d = 0;
}
var e = a.call(this, new Float32Array(c.length * 4), new Float32Array(c.length * 4), new Uint16Array((c.length - 1) * 6)) || this;
e.points = c;
e._width = b;
e.textureScale = d;
e.build();
return e;
}
oi(b, a);
Object.defineProperty(b.prototype, "width", {
get: function () {
return this._width;
},
enumerable: false,
configurable: true
});
b.prototype.build = function () {
var a = this.points;
if (a) {
var b = this.getBuffer("aVertexPosition");
var c = this.getBuffer("aTextureCoord");
var d = this.getIndex();
if (a.length >= 1) {
if (b.data.length / 4 !== a.length) {
b.data = new Float32Array(a.length * 4);
c.data = new Float32Array(a.length * 4);
d.data = new Uint16Array((a.length - 1) * 6);
}
var e = c.data;
var f = d.data;
e[0] = 0;
e[1] = 0;
e[2] = 0;
e[3] = 1;
for (var g = 0, h = a[0], i = this._width * this.textureScale, j = a.length, k = 0; k < j; k++) {
var l = k * 4;
if (this.textureScale > 0) {
var m = h.x - a[k].x;
var n = h.y - a[k].y;
var o = Math.sqrt(m * m + n * n);
h = a[k];
g += o / i;
} else {
g = k / (j - 1);
}
e[l] = g;
e[l + 1] = 0;
e[l + 2] = g;
e[l + 3] = 1;
}
var p = 0;
for (k = 0; k < j - 1; k++) {
l = k * 2;
f[p++] = l;
f[p++] = l + 1;
f[p++] = l + 2;
f[p++] = l + 2;
f[p++] = l + 1;
f[p++] = l + 3;
}
c.update();
d.update();
this.updateVertices();
}
}
};
b.prototype.updateVertices = function () {
var a = this.points;
if (a.length >= 1) {
for (var b, c = a[0], d = 0, e = 0, f = this.buffers[0].data, g = a.length, h = 0; h < g; h++) {
var i = a[h];
var j = h * 4;
e = -((b = h < a.length - 1 ? a[h + 1] : i).x - c.x);
d = b.y - c.y;
var k = Math.sqrt(d * d + e * e);
var l = this.textureScale > 0 ? this.textureScale * this._width / 2 : this._width / 2;
d /= k;
e /= k;
d *= l;
e *= l;
f[j] = i.x + d;
f[j + 1] = i.y + e;
f[j + 2] = i.x - d;
f[j + 3] = i.y - e;
c = i;
}
this.buffers[0].update();
}
};
b.prototype.update = function () {
if (this.textureScale > 0) {
this.build();
} else {
this.updateVertices();
}
};
return b;
}(_g);
(function (a) {
function b(b, c, d) {
if (d === undefined) {
d = 0;
}
var e = this;
var f = new qi(b.height, c, d);
var g = new $g(b);
if (d > 0) {
b.baseTexture.wrapMode = wa.REPEAT;
}
(e = a.call(this, f, g) || this).autoUpdate = true;
return e;
}
oi(b, a);
b.prototype._render = function (b) {
var c = this.geometry;
if (this.autoUpdate || c._width !== this.shader.texture.height) {
c._width = this.shader.texture.height;
c.update();
}
a.prototype._render.call(this, b);
};
})(Zg);
var ri = function (a) {
function b(b, c, d) {
var e = this;
var f = new pi(b.width, b.height, c, d);
var g = new $g(Sc.WHITE);
(e = a.call(this, f, g) || this).texture = b;
e.autoResize = true;
return e;
}
oi(b, a);
b.prototype.textureUpdated = function () {
this._textureID = this.shader.texture._updateID;
var a = this.geometry;
var b = this.shader.texture;
var c = b.width;
var d = b.height;
if (!!this.autoResize && (a.width !== c || a.height !== d)) {
a.width = this.shader.texture.width;
a.height = this.shader.texture.height;
a.build();
}
};
Object.defineProperty(b.prototype, "texture", {
get: function () {
return this.shader.texture;
},
set: function (a) {
if (this.shader.texture !== a) {
this.shader.texture = a;
this._textureID = -1;
if (a.baseTexture.valid) {
this.textureUpdated();
} else {
a.once("update", this.textureUpdated, this);
}
}
},
enumerable: false,
configurable: true
});
b.prototype._render = function (b) {
if (this._textureID !== this.shader.texture._updateID) {
this.textureUpdated();
}
a.prototype._render.call(this, b);
};
b.prototype.destroy = function (b) {
this.shader.texture.off("update", this.textureUpdated, this);
a.prototype.destroy.call(this, b);
};
return b;
}(Zg);
(function (a) {
function b(b, c, d, e, f) {
if (b === undefined) {
b = Sc.EMPTY;
}
var g = this;
var h = new _g(c, d, e);
h.getBuffer("aVertexPosition").static = false;
var i = new $g(b);
(g = a.call(this, h, i, null, f) || this).autoUpdate = true;
return g;
}
oi(b, a);
Object.defineProperty(b.prototype, "vertices", {
get: function () {
return this.geometry.getBuffer("aVertexPosition").data;
},
set: function (a) {
this.geometry.getBuffer("aVertexPosition").data = a;
},
enumerable: false,
configurable: true
});
b.prototype._render = function (b) {
if (this.autoUpdate) {
this.geometry.getBuffer("aVertexPosition").update();
}
a.prototype._render.call(this, b);
};
})(Zg);
(function (a) {
function b(b, c, d, e, f) {
if (c === undefined) {
c = 10;
}
if (d === undefined) {
d = 10;
}
if (e === undefined) {
e = 10;
}
if (f === undefined) {
f = 10;
}
var g = a.call(this, Sc.WHITE, 4, 4) || this;
g._origWidth = b.orig.width;
g._origHeight = b.orig.height;
g._width = g._origWidth;
g._height = g._origHeight;
g._leftWidth = c;
g._rightWidth = e;
g._topHeight = d;
g._bottomHeight = f;
g.texture = b;
return g;
}
oi(b, a);
b.prototype.textureUpdated = function () {
this._textureID = this.shader.texture._updateID;
this._refresh();
};
Object.defineProperty(b.prototype, "vertices", {
get: function () {
return this.geometry.getBuffer("aVertexPosition").data;
},
set: function (a) {
this.geometry.getBuffer("aVertexPosition").data = a;
},
enumerable: false,
configurable: true
});
b.prototype.updateHorizontalVertices = function () {
var a = this.vertices;
var b = this._getMinScale();
a[9] = a[11] = a[13] = a[15] = this._topHeight * b;
a[17] = a[19] = a[21] = a[23] = this._height - this._bottomHeight * b;
a[25] = a[27] = a[29] = a[31] = this._height;
};
b.prototype.updateVerticalVertices = function () {
var a = this.vertices;
var b = this._getMinScale();
a[2] = a[10] = a[18] = a[26] = this._leftWidth * b;
a[4] = a[12] = a[20] = a[28] = this._width - this._rightWidth * b;
a[6] = a[14] = a[22] = a[30] = this._width;
};
b.prototype._getMinScale = function () {
var a = this._leftWidth + this._rightWidth;
var b = this._width > a ? 1 : this._width / a;
var c = this._topHeight + this._bottomHeight;
var d = this._height > c ? 1 : this._height / c;
return Math.min(b, d);
};
Object.defineProperty(b.prototype, "width", {
get: function () {
return this._width;
},
set: function (a) {
this._width = a;
this._refresh();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "height", {
get: function () {
return this._height;
},
set: function (a) {
this._height = a;
this._refresh();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "leftWidth", {
get: function () {
return this._leftWidth;
},
set: function (a) {
this._leftWidth = a;
this._refresh();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "rightWidth", {
get: function () {
return this._rightWidth;
},
set: function (a) {
this._rightWidth = a;
this._refresh();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "topHeight", {
get: function () {
return this._topHeight;
},
set: function (a) {
this._topHeight = a;
this._refresh();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "bottomHeight", {
get: function () {
return this._bottomHeight;
},
set: function (a) {
this._bottomHeight = a;
this._refresh();
},
enumerable: false,
configurable: true
});
b.prototype._refresh = function () {
var a = this.texture;
var b = this.geometry.buffers[1].data;
this._origWidth = a.orig.width;
this._origHeight = a.orig.height;
var c = 1 / this._origWidth;
var d = 1 / this._origHeight;
b[0] = b[8] = b[16] = b[24] = 0;
b[1] = b[3] = b[5] = b[7] = 0;
b[6] = b[14] = b[22] = b[30] = 1;
b[25] = b[27] = b[29] = b[31] = 1;
b[2] = b[10] = b[18] = b[26] = c * this._leftWidth;
b[4] = b[12] = b[20] = b[28] = 1 - c * this._rightWidth;
b[9] = b[11] = b[13] = b[15] = d * this._topHeight;
b[17] = b[19] = b[21] = b[23] = 1 - d * this._bottomHeight;
this.updateHorizontalVertices();
this.updateVerticalVertices();
this.geometry.buffers[0].update();
this.geometry.buffers[1].update();
};
})(ri);
function si(a, b) {
si = Object.setPrototypeOf || {
"__proto__": []
}
instanceof Array && function (a, b) {
a.__proto__ = b;
} || function (a, b) {
for (var c in b) {
if (b.hasOwnProperty(c)) {
a[c] = b[c];
}
}
};
return si(a, b);
}
(function (a) {
function b(b, c) {
if (c === undefined) {
c = true;
}
var d = a.call(this, b[0] instanceof Sc ? b[0] : b[0].texture) || this;
d._textures = null;
d._durations = null;
d._autoUpdate = c;
d._isConnectedToTicker = false;
d.animationSpeed = 1;
d.loop = true;
d.updateAnchor = false;
d.onComplete = null;
d.onFrameChange = null;
d.onLoop = null;
d._currentTime = 0;
d._playing = false;
d._previousFrame = null;
d.textures = b;
return d;
}
(function (a, b) {
function c() {
this.constructor = a;
}
si(a, b);
a.prototype = b === null ? Object.create(b) : (c.prototype = b.prototype, new c());
})(b, a);
b.prototype.stop = function () {
if (this._playing) {
this._playing = false;
if (this._autoUpdate && this._isConnectedToTicker) {
ic.shared.remove(this.update, this);
this._isConnectedToTicker = false;
}
}
};
b.prototype.play = function () {
if (!this._playing) {
this._playing = true;
if (this._autoUpdate && !this._isConnectedToTicker) {
ic.shared.add(this.update, this, ec.HIGH);
this._isConnectedToTicker = true;
}
}
};
b.prototype.gotoAndStop = function (a) {
this.stop();
var b = this.currentFrame;
this._currentTime = a;
if (b !== this.currentFrame) {
this.updateTexture();
}
};
b.prototype.gotoAndPlay = function (a) {
var b = this.currentFrame;
this._currentTime = a;
if (b !== this.currentFrame) {
this.updateTexture();
}
this.play();
};
b.prototype.update = function (a) {
if (this._playing) {
var b = this.animationSpeed * a;
var c = this.currentFrame;
if (this._durations !== null) {
var d = this._currentTime % 1 * this._durations[this.currentFrame];
for (d += b / 60 * 1000; d < 0;) {
this._currentTime--;
d += this._durations[this.currentFrame];
}
var e = Math.sign(this.animationSpeed * a);
for (this._currentTime = Math.floor(this._currentTime); d >= this._durations[this.currentFrame];) {
d -= this._durations[this.currentFrame] * e;
this._currentTime += e;
}
this._currentTime += d / this._durations[this.currentFrame];
} else {
this._currentTime += b;
}
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 (c !== this.currentFrame) {
if (this.loop && this.onLoop && (this.animationSpeed > 0 && this.currentFrame < c || this.animationSpeed < 0 && this.currentFrame > c)) {
this.onLoop();
}
this.updateTexture();
}
}
};
b.prototype.updateTexture = function () {
var a = this.currentFrame;
if (this._previousFrame !== a) {
this._previousFrame = a;
this._texture = this._textures[a];
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);
}
}
};
b.prototype.destroy = function (b) {
this.stop();
a.prototype.destroy.call(this, b);
this.onComplete = null;
this.onFrameChange = null;
this.onLoop = null;
};
b.fromFrames = function (a) {
for (var c = [], d = 0; d < a.length; ++d) {
c.push(Sc.from(a[d]));
}
return new b(c);
};
b.fromImages = function (a) {
for (var c = [], d = 0; d < a.length; ++d) {
c.push(Sc.from(a[d]));
}
return new b(c);
};
Object.defineProperty(b.prototype, "totalFrames", {
get: function () {
return this._textures.length;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "textures", {
get: function () {
return this._textures;
},
set: function (a) {
if (a[0] instanceof Sc) {
this._textures = a;
this._durations = null;
} else {
this._textures = [];
this._durations = [];
for (var b = 0; b < a.length; b++) {
this._textures.push(a[b].texture);
this._durations.push(a[b].time);
}
}
this._previousFrame = null;
this.gotoAndStop(0);
this.updateTexture();
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "currentFrame", {
get: function () {
var a = Math.floor(this._currentTime) % this._textures.length;
if (a < 0) {
a += this._textures.length;
}
return a;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "playing", {
get: function () {
return this._playing;
},
enumerable: false,
configurable: true
});
Object.defineProperty(b.prototype, "autoUpdate", {
get: function () {
return this._autoUpdate;
},
set: function (a) {
if (a !== this._autoUpdate) {
this._autoUpdate = a;
if (!this._autoUpdate && this._isConnectedToTicker) {
ic.shared.remove(this.update, this);
this._isConnectedToTicker = false;
} else if (this._autoUpdate && !this._isConnectedToTicker && this._playing) {
ic.shared.add(this.update, this);
this._isConnectedToTicker = true;
}
}
},
enumerable: false,
configurable: true
});
})(ng);
se.registerPlugin("accessibility", gc);
se.registerPlugin("extract", Me);
se.registerPlugin("interaction", rc);
se.registerPlugin("particle", Hf);
se.registerPlugin("prepare", Kg);
se.registerPlugin("batch", De);
se.registerPlugin("tilingSprite", Tg);
af.registerPlugin(oh);
af.registerPlugin(nf);
af.registerPlugin(wf);
af.registerPlugin(Bf);
af.registerPlugin(Mg);
Je.registerPlugin(jc);
Je.registerPlugin(df);
class ti {
constructor(a = null) {
this.attachments = [];
this.parent = null;
this.isVisible = true;
this.setNode(a || new dc());
}
getNode() {
return this.node;
}
setNode(a) {
this.node = a;
}
getParent() {
return this.parent;
}
setParent(a) {
if (a == null) {
this.currentModel?.removedParentFunction?.();
}
this.parent = a;
}
getAttachments() {
return this.attachments;
}
addAttachment(a, b = 0) {
a.getNode().zIndex = b;
a.setParent(this);
this.node.addChild(a.getNode());
this.attachments.push(a);
this.node.children.sort((a, b) => a.zIndex == b.zIndex ? 0 : a.zIndex < b.zIndex ? -1 : 1);
}
removeAttachment(a) {
if (a) {
this.node.removeChild(a.getNode());
a.setParent(null);
if (this.attachments.indexOf(a) > -1) {
this.attachments.splice(this.attachments.indexOf(a), 1);
}
}
}
getRotation() {
return this.node.rotation * 180 / Math.PI;
}
setRotation(a) {
this.node.rotation = a * Math.PI / 180;
}
getAlpha() {
return this.node.alpha;
}
setAlpha(a) {
if (this.node.alpha !== a) {
this.node.alpha = a;
}
}
getScale() {
return this.node.scale;
}
setScale(a) {
this.node.scale.x = a;
this.node.scale.y = a;
}
getScaleX() {
return this.node.scale.x;
}
setScaleX(a) {
this.node.scale.x = a;
}
getScaleY() {
return this.node.scale.y;
}
setScaleY(a) {
this.node.scale.y = a;
}
getFilters() {
return this.node.filters;
}
setFilters(a) {
this.node.filters = a;
}
getPosition() {
return this.node.position;
}
setPosition(a, b) {
if (this.node.position.x !== a) {
this.node.position.x = a;
}
if (this.node.position.y !== b) {
this.node.position.y = b;
}
}
getPositionX() {
return this.node.position.x;
}
setPositionX(a) {
if (this.node.position.x !== a) {
this.node.position.x = a;
}
}
getPositionY() {
return this.node.position.y;
}
setPositionY(a) {
if (this.node.position.y !== a) {
this.node.position.y = a;
}
}
getPivotPoint() {
return this.node.pivot;
}
setPivotPoint(a, b) {
this.node.pivot.x = a;
this.node.pivot.y = b;
}
getVisible() {
return this.isVisible;
}
setVisible(a) {
this.isVisible = a;
this.node.visible = a;
}
update(a, b) {
for (let c = 0; c < this.attachments.length; c++) {
this.attachments[c].update(a, b);
}
}
}
class ui extends ti {
constructor(a, b, c) {
super();
this.text = new xg(a, {
fontFamily: b,
fontSize: c,
lineJoin: "round",
padding: 10
});
this.text.resolution = window.devicePixelRatio * 2;
this.setNode(this.text);
}
setColor(a, b, c) {
this.text.style.fill = a << 16 | b << 8 | c;
}
setStroke(a, b, c, d) {
this.text.style.stroke = a << 16 | b << 8 | c;
this.text.style.strokeThickness = d;
}
setFontWeight(a) {
this.text.style.fontWeight = a;
}
setLetterSpacing(a) {
this.text.style.letterSpacing = a;
}
setAnchor(a, b) {
this.text.anchor.set(a, b);
}
setString(a) {
this.text.text = a;
}
getString() {
return this.text.text;
}
}
class vi extends ti {
constructor() {
super();
this.wasPreloaded = false;
}
preload() {
this.wasPreloaded = true;
}
reset() {
this.setParent(null);
}
}
class wi extends vi {
constructor() {
super();
this.lastDamagedTick = 0;
this.lastDamagedAnimationDone = true;
this.lastFiringTick = 0;
this.lastFiringAnimationDone = true;
}
update(a, b) {
const c = this.getParent();
if (b) {
this.updateDamageTint(b);
this.weaponUpdateFunc?.(b, c);
}
super.update(a, b);
}
updateDamageTint(a) {
if (a.lastDamagedTick && (a.lastDamagedTick !== this.lastDamagedTick || !this.lastDamagedAnimationDone)) {
this.lastDamagedTick = a.lastDamagedTick;
this.lastDamagedAnimationDone = false;
const b = Jj.renderer.replicator.getMsSinceTick(a.lastDamagedTick);
const c = 100;
const d = Math.min(b / c, 1);
const e = Math.sin(d * Math.PI);
let f = 255 << 16 | 255 - e * 255 / 4 << 8 | 255 - e * 255 / 4 << 0;
if (d === 1) {
f = 16777215;
this.lastDamagedAnimationDone = true;
}
this.base.setTint(f);
if (this.weapon) {
this.weapon.setTint(f);
}
}
}
updatePunchingWeapon(a = 300) {
return (b, c) => {
if (b.firingTick && (b.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = b.firingTick;
this.lastFiringAnimationDone = false;
const c = Jj.currentGame.world.getReplicator().getMsSinceTick(b.firingTick);
const d = Math.min(c / a, 1);
const e = Math.sin(d * 2 * Math.PI) / Math.PI * -1;
if (d === 1) {
this.lastFiringAnimationDone = true;
}
this.weapon.setPositionY(e * 20);
}
};
}
updateStabbingWeapon(a = 300) {
return (b, c) => {
if (b.firingTick && (b.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = b.firingTick;
this.lastFiringAnimationDone = false;
const c = Jj.renderer.replicator.getMsSinceTick(b.firingTick);
const d = Math.min(c / a, 1);
const e = Math.sin(d * 2 * Math.PI) / Math.PI * -1;
if (d === 1) {
this.lastFiringAnimationDone = true;
}
if (c < a / 2) {
this.weaponLeft.setPositionY(e * 20);
} else {
this.weaponRight.setPositionY(e * 20);
}
}
};
}
updateAntiClockwiseSwingingWeapon(a = 300, b = 100) {
return (c, d) => {
if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
const d = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
const e = Math.min(d / a, 1);
const f = Math.sin(e * Math.PI) * b;
if (e === 1) {
this.lastFiringAnimationDone = true;
}
this.weapon.setRotation(-f);
}
};
}
updateClockwiseSwingingWeapon(a = 300, b = 100) {
return (c, d) => {
if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
const d = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
const e = Math.min(d / a, 1);
const f = Math.sin(e * Math.PI) * b;
if (e === 1) {
this.lastFiringAnimationDone = true;
}
this.weapon.setRotation(f);
}
};
}
updateBowWeapon(a = 500, b = 250) {
return (c, d) => {
if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
if (c.startChargingTick) {
this.lastFiringAnimationDone = false;
const b = Jj.renderer.replicator.getMsSinceTick(c.startChargingTick);
const d = Math.min(b / a, 1);
this.bowHands.setPositionY(d * 10);
} else if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
const a = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
const d = Math.min(a / b, 1);
if (d === 1) {
this.lastFiringAnimationDone = true;
}
this.bowHands.setPositionY(10 - d * 10);
}
}
};
}
}
class xi extends ti {
constructor() {
super();
this.draw = new jg();
this.clear();
this.setNode(this.draw);
}
drawTriangle(a, b, c, d = null, e = null, f = null) {
if (f && f > 0) {
this.draw.lineStyle(f, e.r << 16 | e.g << 8 | e.b, e.a);
}
if (d) {
this.draw.beginFill(d.r << 16 | d.g << 8 | d.b, d.a);
}
this.draw.drawPolygon([a.x, a.y, b.x, b.y, c.x, c.y]);
if (d) {
this.draw.endFill();
}
}
drawArc(a, b, c, d, e, f, g = null, h = null, i = null) {
if (i && i > 0) {
this.draw.lineStyle(i, h.r << 16 | h.g << 8 | h.b, h.a);
}
d = d * Math.PI / 180;
e = e * Math.PI / 180;
if (g) {
this.draw.beginFill(g.r << 16 | g.g << 8 | g.b, g.a);
}
this.draw.arc(a, b, c, d, e, f);
if (g) {
this.draw.endFill();
}
}
drawCircle(a, b, c, d = null, e = null, f = null) {
if (f && f > 0) {
this.draw.lineStyle(f, e.r << 16 | e.g << 8 | e.b, e.a);
}
if (d) {
this.draw.beginFill(d.r << 16 | d.g << 8 | d.b, d.a);
}
this.draw.drawCircle(a, b, c);
if (d) {
this.draw.endFill();
}
}
drawRect(a, b, c, d, e = null, f = null, g = null) {
if (g && g > 0) {
this.draw.lineStyle(g, f.r << 16 | f.g << 8 | f.b, f.a);
}
if (e) {
this.draw.beginFill(e.r << 16 | e.g << 8 | e.b, e.a);
}
this.draw.drawRect(a, b, c - a, d - b);
if (e) {
this.draw.endFill();
}
}
drawRoundedRect(a, b, c, d, e, f = null, g = null, h = null) {
if (h && h > 0) {
this.draw.lineStyle(h, g.r << 16 | g.g << 8 | g.b, g.a);
}
if (f) {
this.draw.beginFill(f.r << 16 | f.g << 8 | f.b, f.a);
}
this.draw.drawRoundedRect(a, b, c - a, d - b, e);
if (f) {
this.draw.endFill();
}
}
drawEllipse(a, b, c, d, e = null, f = null, g = null) {
if (g && g > 0) {
this.draw.lineStyle(g, f.r << 16 | f.g << 8 | f.b, f.a);
}
if (e) {
this.draw.beginFill(e.r << 16 | e.g << 8 | e.b, e.a);
}
this.draw.drawEllipse(a, b, c, d);
if (e) {
this.draw.endFill();
}
}
getTexture() {
return Jj.renderer.getInternalRenderer().generateTexture(this.draw);
}
clear() {
this.draw.clear();
}
}
class yi extends ti {
constructor(a) {
super();
this.barColor = a || {
r: 100,
g: 161,
b: 10
};
this.width = 84;
this.height = 12;
this.backgroundNode = new xi();
this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, {
r: 0,
g: 0,
b: 0
});
this.backgroundNode.setAlpha(0.3);
this.barNode = new xi();
this.barNode.drawRoundedRect(2, 2, this.width - 2, this.height - 2, 2, this.barColor);
this.addAttachment(this.backgroundNode);
this.addAttachment(this.barNode);
this.setPivotPoint(this.width / 2, -64);
this.setMaxHealth(100);
this.setHealth(100);
}
setSize(a, b) {
const c = this.percent;
this.width = a;
this.height = b;
this.percent = null;
this.backgroundNode.clear();
this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, {
r: 0,
g: 0,
b: 0
});
this.barNode.clear();
this.barNode.drawRoundedRect(2, 2, this.width - 2, this.height - 2, 2, this.barColor);
this.setPivotPoint(this.width / 2, -64);
this.setPercent(c);
}
setHealth(a) {
this.health = a;
this.setPercent(this.health / this.maxHealth);
}
setMaxHealth(a) {
this.maxHealth = a;
this.setPercent(this.health / this.maxHealth);
}
setPercent(a) {
if (this.percent !== a) {
this.percent = a;
this.barNode.setScaleX(this.percent);
}
}
update(a, b) {
if (b) {
this.setHealth(b.health);
this.setMaxHealth(b.maxHealth);
}
this.setRotation(-this.getParent().getParent().getRotation());
super.update(a, b);
}
}
class zi extends ti {
constructor() {
super();
this.barColor = {
r: 61,
g: 161,
b: 217
};
this.width = 76;
this.height = 8;
this.percent = 1;
this.backgroundNode = new xi();
this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, {
r: 0,
g: 0,
b: 0
});
this.backgroundNode.setAlpha(0.3);
this.barNode = new xi();
this.addAttachment(this.backgroundNode);
this.addAttachment(this.barNode);
this.setPivotPoint(this.width / 2, -80);
this.setMaxHealth(100);
this.setHealth(100);
}
setSize(a, b) {
var c = this.percent;
this.width = a;
this.height = b;
this.percent = null;
this.backgroundNode.clear();
this.backgroundNode.drawRoundedRect(0, 0, this.width, this.height, 3, {
r: 0,
g: 0,
b: 0
});
this.setPivotPoint(this.width / 2, -80);
this.setPercent(c);
}
setHealth(a) {
this.health = a;
this.setPercent(this.health / this.maxHealth);
}
setMaxHealth(a) {
this.maxHealth = a;
this.setPercent(this.health / this.maxHealth);
}
setPercent(a) {
if (this.percent !== a && (this.percent = a, this.barNode.clear(), this.health !== 0)) {
var b = (this.width - 2) * this.percent;
this.barNode.drawRoundedRect(2, 2, b, this.height - 2, 2, this.barColor);
}
}
update(a, b) {
this.getParent();
if (b) {
this.setHealth(b.zombieShieldHealth);
this.setMaxHealth(b.zombieShieldMaxHealth);
}
this.setRotation(-this.getParent().getParent().getRotation());
super.update(a, b);
}
}
class Ai extends ti {
constructor(a, b = false) {
super();
this.sprite = null;
if (typeof a == "string") {
a = Jj.renderer.loader.resources[a] !== undefined ? Jj.renderer.loader.resources[a].texture : Sc.from(a);
}
if (b) {
this.sprite = new Qg(a);
this.sprite.texture.baseTexture.scaleMode = va.NEAREST;
} else {
this.sprite = new ng(a);
}
this.sprite.anchor.x = 0.5;
this.sprite.anchor.y = 0.5;
this.setNode(this.sprite);
}
getAnchor() {
return this.sprite.anchor;
}
setAnchor(a, b) {
this.sprite.anchor.x = a;
this.sprite.anchor.y = b;
}
getTint() {
return this.node.tint;
}
setTint(a) {
this.node.tint = a;
}
getBlendMode() {
return this.node.tint;
}
setBlendMode(a) {
this.node.blendMode = a;
}
getMask() {
return this.node.mask;
}
setMask(a) {
this.node.mask = a.getNode();
}
setDimensions(a, b, c, d) {
this.sprite.x = a;
this.sprite.y = b;
this.sprite.width = c;
this.sprite.height = d;
}
}
const Bi = c(6);
const Ci = c(573);
Bi.loadPlugin(Ci);
Bi.setDefaults({
randomize: false
});
class Di extends vi {
constructor(a) {
super();
this.type = a;
this.healthBar = new yi();
this.healthBar.setSize(82, 16);
this.healthBar.setPivotPoint(41, -25);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 100);
this.lastYaw = 0;
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
this.head?.setRotation(b.aimingYaw);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a != this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
this.removeAttachment(this.head);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for " + this.type + " tower: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg");
this.head = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Head.svg");
this.addAttachment(this.base, 2);
this.addAttachment(this.head, 3);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
}
let Ei = {
Player: class extends wi {
constructor() {
super();
this.base = new Ai("https://cdn.glitch.com/65698807-c047-4e77-bf51-7937b4cef560%2Fzombie-boss-t1-base%5B1%5D.svg");
this.addAttachment(this.base, 2);
this.nameEntity = new ui("Player", "Hammersmith One", 20);
this.nameEntity.setAnchor(0.5, 0.5);
this.nameEntity.setPivotPoint(0, 70);
this.nameEntity.setColor(220, 220, 220);
this.nameEntity.setFontWeight("bold");
this.nameEntity.setStroke(51, 51, 51, 6);
this.nameEntity.setLetterSpacing(1);
this.addAttachment(this.nameEntity, 0);
this.healthBar = new yi();
this.addAttachment(this.healthBar, 0);
this.shieldBar = new zi();
this.addAttachment(this.shieldBar, 0);
this.shieldBar.setVisible(false);
this.rotationLocked = true;
this.nameFiltered = undefined;
this.invulnerabilityAnimationProps = {
isForward: true,
elapsedTime: 0,
animationDuration: 750
};
}
update(a, b) {
const c = this.getParent();
if (b) {
if (c.isLocal() && c.getTargetTick().dead !== true) {
c.getTargetTick().aimingYaw = c.getFromTick().aimingYaw = Jj.network.inputPacketManager.getLastSentYaw();
}
if (b.name !== this.lastName) {
this.lastName = b.name;
this.nameEntity.setString(b.name);
}
if (this.nameFiltered !== Jj.network.languageFilterEnabled) {
this.nameFiltered = !!Jj.network.languageFilterEnabled;
this.nameEntity.setString(this.nameFiltered ? Bi(this.lastName) : this.lastName);
}
if (b.weaponName !== this.lastWeaponName || b.weaponTier !== this.lastWeaponTier) {
this.updateWeapon(b);
}
this.healthBar.setVisible(b.health < b.maxHealth);
if (b.zombieShieldMaxHealth > 0) {
this.shieldBar.setVisible(b.zombieShieldHealth < b.zombieShieldMaxHealth);
} else {
this.shieldBar.setVisible(false);
}
if (b.invulnerable !== undefined) {
this.updateInvulnerabilityIndicator(a, b);
}
}
super.update(a, b);
this.nameEntity.setRotation(-c.getRotation());
}
updateInvulnerabilityIndicator(a, b) {
if (b.invulnerable == 1) {
let b = 16752543;
let c = 16777215;
this.invulnerabilityAnimationProps.elapsedTime += a;
let d = Math.min(this.invulnerabilityAnimationProps.elapsedTime / this.invulnerabilityAnimationProps.animationDuration, 1);
if (!this.invulnerabilityAnimationProps.isForward) {
d = 1 - d;
}
const e = c >> 16 & 255;
const f = c >> 8 & 255;
const g = c & 255;
const h = (e + ((b >> 16 & 255) - e) * d << 16) + (f + ((b >> 8 & 255) - f) * d << 8) + (g + ((b & 255) - g) * d);
this.base.setTint(h);
this.weapon.setTint(h);
if (d >= 1 || d <= 0) {
this.invulnerabilityAnimationProps.isForward = !this.invulnerabilityAnimationProps.isForward;
this.invulnerabilityAnimationProps.elapsedTime = 0;
}
} else {
this.base.setTint(16777215);
this.weapon.setTint(16777215);
}
}
updateAntiClockwiseSwingingWeapon(a = 300, b = 100) {
return (c, d) => {
const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw);
this.setRotation(e);
if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
var f = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
var g = Math.min(f / a, 1);
var h = Math.sin(g * Math.PI) * b;
if (g === 1) {
this.lastFiringAnimationDone = true;
}
this.setRotation(e - h);
}
};
}
updateBowWeapon(a = 500, b = 250) {
return (c, d) => {
const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw);
this.setRotation(e);
if (c.startChargingTick) {
this.lastFiringAnimationDone = false;
let b = Jj.renderer.replicator.getMsSinceTick(c.startChargingTick);
let d = Math.min(b / a, 1);
this.bowHands.setPositionY(d * 10);
} else if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
const a = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
const d = Math.min(a / b, 1);
if (d === 1) {
this.lastFiringAnimationDone = true;
}
this.bowHands.setPositionY(10 - d * 10);
}
};
}
updateDynamiteWeapon(a = 300, b = 100) {
return (c, d) => {
const e = i.interpolateYaw(d.getFromTick().aimingYaw, d.getTargetTick().aimingYaw);
this.setRotation(e);
if (c.firingTick && (c.firingTick !== this.lastFiringTick || !this.lastFiringAnimationDone)) {
this.lastFiringTick = c.firingTick;
this.lastFiringAnimationDone = false;
var f = Jj.renderer.replicator.getMsSinceTick(c.firingTick);
var g = Math.min(f / a, 1);
var h = Math.sin(g * Math.PI) * b;
if (g === 1) {
this.lastFiringAnimationDone = true;
}
this.weapon.setRotation(-h);
}
};
}
updateWeapon(a) {
this.lastWeaponName = a.weaponName;
this.lastWeaponTier = a.weaponTier;
this.removeAttachment(this.weapon);
this.removeAttachment(this.dormantArm);
this.removeAttachment(this.bowHands);
this.bowHands = null;
switch (a.weaponName) {
case "Pickaxe":
case "Sword":
let b = new Ai("http://zombia.io/asset/images/Entity/Player/Player" + a.weaponName + "Tier" + a.weaponTier + ".svg");
b.setAnchor(0.5, 0.9);
this.weapon = b;
this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(Jj.ui.toolData[a.weaponName].msBetweenFires[a.weaponTier - 1], 100);
break;
case "Crossbow":
let c = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier" + a.weaponTier + ".svg");
let d = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier" + a.weaponTier + ".svg");
d.setAnchor(1, 1);
c.setAnchor(0.5, 1);
this.weapon = c;
this.bowHands = d;
this.weaponUpdateFunc = this.updateBowWeapon(Jj.ui.toolData[a.weaponName].msBetweenFires[a.weaponTier - 1], 250);
break;
case "Dynamite":
let e = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier" + a.weaponTier + ".svg");
e.setAnchor(0.5, 0.9);
this.dormantArm = new Ai("http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg");
this.dormantArm.setAnchor(0.5, 1.35);
this.addAttachment(this.dormantArm, 1);
this.weapon = e;
this.weaponUpdateFunc = this.updateDynamiteWeapon(250, 75);
break;
default:
throw new Error("Unknown player weapon: " + a.weaponName);
}
if (this.bowHands !== null) {
this.addAttachment(this.bowHands);
}
this.addAttachment(this.weapon, 1);
}
updateDamageTint(a) {
if (a.zombieShieldHealth > 0) {
this.base.setTint(16777215);
this.weapon.setTint(16777215);
return;
}
super.updateDamageTint(a);
}
},
Resource: class extends vi {
constructor(a) {
super();
this.base = new Ai("http://zombia.io/asset/images/Map/" + a + ".svg");
this.addAttachment(this.base, 1);
}
update(a, b) {
if (b) {
if (b.hits !== undefined) {
this.updateHit(b);
}
if (Math.round(this.base.getRotation()) !== b.aimingYaw) {
this.base.setRotation(b.aimingYaw);
}
}
super.update(a, b);
}
updateHit(a) {
let b = 0;
let c = 0;
for (let d = 0; d < a.hits.length / 2; d++) {
const e = a.hits[d * 2 + 0];
const f = a.hits[d * 2 + 1];
const g = Jj.renderer.replicator.getMsSinceTick(e);
if (g >= 250) {
continue;
}
const h = Math.min(g / 250, 1);
const i = Math.sin(f * Math.PI / 180);
const j = Math.cos(f * Math.PI / 180) * -1;
b += i * 10 * Math.sin(h * Math.PI);
c += j * 10 * Math.sin(h * Math.PI);
}
const d = Math.sqrt(b * b + c * c);
if (d > 10) {
b /= d;
c /= d;
b *= 10;
c *= 10;
}
this.base.setPosition(b, c);
}
},
ArrowTower: class extends Di {
constructor() {
super("ArrowTower");
}
},
MageTower: class extends Di {
constructor() {
super("MageTower");
}
update(a, b) {
super.update(a, b);
if (b && b.firingTick) {
const a = Jj.renderer.replicator.getMsSinceTick(b.firingTick);
const c = 250;
const d = 0.4;
const e = Math.min(a / c, 1);
const f = 1 + Math.sin(e * Math.PI) * d;
this.head.setScale(f);
}
}
updateModel(a = 1) {
if (a != this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
this.removeAttachment(this.head);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(this.currentTier)) {
throw new Error("Unknown tier encountered for " + this.type + " tower: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg");
this.head = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Head.svg");
this.addAttachment(this.base, 2);
this.addAttachment(this.head, 3);
}
}
},
Factory: class extends vi {
constructor() {
super();
this.healthBar = new yi();
this.healthBar.setSize(82, 16);
this.healthBar.setPivotPoint(41, -25);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 3);
this.currentTier = null;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a !== this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for gold stash: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/Factory/FactoryTier" + a + "Base.svg");
this.addAttachment(this.base, 2);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
},
Projectile: class extends vi {
constructor(a) {
super();
this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/" + a + ".svg");
this.addAttachment(this.base);
}
},
DynamiteProjectile: class extends vi {
constructor(a, b = 1) {
super();
this.tier = b;
this.currentRotation = 0;
this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier" + b + ".svg");
this.addAttachment(this.base);
}
update(a, b) {
if (b) {
this.currentRotation += a * 540 / 1000;
this.currentRotation %= 360;
this.base.setRotation(this.currentRotation);
}
}
onDie() {
if (window.storage.getItem("settings-special-effects") == "true") {
return;
}
const a = new jg();
Jj.renderer.groundLayer.node.addChild(a);
const b = this.getParent().targetTick.position;
let c = 0;
const d = Jj.ui.toolData.Dynamite.projectileSplashDamageRange[this.getParent().targetTick.tier - 1];
a.update = e => {
a.clear();
a.lineStyle(10, 16777215, 0.1);
a.drawCircle(b.x, b.y, c);
a.endFill();
c += d / 200 * e;
if (c >= d) {
Jj.renderer.groundLayer.node.removeChild(a);
Jj.renderer.renderingFilters.splice(Jj.renderer.renderingFilters.indexOf(a), 1);
a.destroy();
}
};
Jj.renderer.renderingFilters.push(a);
}
},
RocketProjectile: class extends vi {
constructor(a, b = 1) {
super();
this.tier = b;
this.currentRotation = 0;
this.base = new Ai("http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg");
this.addAttachment(this.base);
}
onDie() {
if (window.storage.getItem("settings-special-effects") == "true") {
return;
}
const a = new jg();
Jj.renderer.groundLayer.node.addChild(a);
const b = this.getParent().targetTick.position;
let c = 0;
const d = Jj.ui.buildingData.RocketTower.projectileAoeRadius[this.tier - 1];
a.update = e => {
a.clear();
a.lineStyle(10, 16777215, 0.1);
a.drawCircle(b.x, b.y, c);
a.endFill();
c += d / 100 * e;
if (c >= d) {
Jj.renderer.groundLayer.node.removeChild(a);
Jj.renderer.renderingFilters.splice(Jj.renderer.renderingFilters.indexOf(a), 1);
a.destroy();
}
};
Jj.renderer.renderingFilters.push(a);
}
},
Wall: class extends vi {
constructor() {
super();
this.healthBar = new yi();
this.healthBar.setSize(35, 10);
this.healthBar.setPivotPoint(17.5, -8);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 3);
this.currentTier = null;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a !== this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for wall: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/Wall/WallTier" + a + ".svg");
this.addAttachment(this.base, 2);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
},
Door: class extends vi {
constructor() {
super();
this.healthBar = new yi();
this.healthBar.setSize(35, 10);
this.healthBar.setPivotPoint(17.5, -8);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 3);
this.currentTier = null;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
this.updateVisibility(b);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a !== this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for door: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/Door/DoorTier" + a + ".svg");
this.addAttachment(this.base, 2);
}
}
updateVisibility(a) {
if (Jj.ui.buildings[a.uid] !== undefined) {
this.base.setAlpha(0.5);
} else {
this.base.setAlpha(1);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
},
SlowTrap: class extends vi {
constructor() {
super();
this.healthBar = new yi();
this.healthBar.setSize(35, 10);
this.healthBar.setPivotPoint(17.5, -8);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 3);
this.currentTier = null;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
this.updateVisibility(b);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a !== this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for slow trap: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/SlowTrap/SlowTrapTier" + a + ".svg");
this.addAttachment(this.base, 2);
}
}
updateVisibility(a) {
if (Jj.ui.buildings[a.uid] !== undefined) {
this.base.setAlpha(0.5);
} else {
this.base.setAlpha(1);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
},
CannonTower: class extends Di {
constructor() {
super("CannonTower");
}
},
RocketTower: class extends Di {
constructor() {
super("RocketTower");
}
},
Drill: class extends vi {
constructor() {
super();
this.healthBar = new yi();
this.healthBar.setSize(82, 16);
this.healthBar.setPivotPoint(41, -25);
this.healthBar.setVisible(false);
this.addAttachment(this.healthBar, 4);
this.currentRotation = 0;
this.currentTier = null;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateHealthBar(b);
this.currentRotation += b.tier * 45 * a / 1000;
this.currentRotation %= 360;
this.drill.setRotation(this.currentRotation);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a != this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.head);
this.removeAttachment(this.drill);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for drill: " + a);
}
this.drill = new Ai("http://zombia.io/asset/images/Entity/Drill/Drill.svg");
this.head = new Ai("http://zombia.io/asset/images/Entity/Drill/DrillTier" + a + "Head.svg");
this.addAttachment(this.drill, 2);
this.addAttachment(this.head, 3);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
},
SawTower: class extends Di {
constructor() {
super("SawTower");
this.currentRotation = 0;
this.extensionPosition = 0;
this.updateModel();
}
update(a, b) {
if (b) {
this.updateModel(b.tier);
this.updateAnimation(a, b);
this.updateHealthBar(b);
}
super.update(a, b);
}
updateModel(a = 1) {
if (a != this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
this.removeAttachment(this.arm);
this.removeAttachment(this.blade);
this.removeAttachment(this.top);
this.removeAttachment(this.brace);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for SawTower: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Base.svg");
this.blade = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg");
this.top = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Top.svg");
this.top.setPositionY(-16);
this.brace = new Ai("http://zombia.io/asset/images/Entity/SawTower/SawTowerTier" + a + "Brace.svg");
this.arm = new xi();
this.arm.drawRect(-8, 0, 8, 48, {
r: 51,
g: 51,
b: 51
});
this.addAttachment(this.arm, 2);
this.addAttachment(this.base, 1);
this.addAttachment(this.blade, 3);
this.addAttachment(this.top, 4);
this.addAttachment(this.brace, 5);
this.brace.setAnchor(0.5, 1);
}
}
updateHealthBar(a) {
this.healthBar.setVisible(a.health !== a.maxHealth);
}
updateAnimation(a, b) {
if (b.firingTick !== 0) {
this.currentRotation += a * 720 / 1000;
this.currentRotation %= 360;
this.blade.setRotation(this.currentRotation);
this.extending = true;
} else {
this.extending = false;
}
if (this.extending === true) {
this.extensionPosition -= 4;
if (this.extensionPosition < -64) {
this.extensionPosition = -64;
}
} else {
this.extensionPosition += 8;
if (this.extensionPosition > 0) {
this.extensionPosition = 0;
}
}
this.blade.setPositionY(this.extensionPosition - 12 - 16);
this.arm.draw.height = this.extensionPosition;
this.brace.setPositionY(this.extensionPosition - 16);
}
},
LightningTower: class extends Di {
constructor() {
super("LightningTower");
this.targetBeams = new xi();
Jj.renderer.projectiles.addAttachment(this.targetBeams, 2);
this.lastFiringTick = 0;
this.hasFired = false;
this.branchTextures = [];
this.currentRotation = 0;
this.currentRotationSpeed = 0;
}
removedParentFunction() {
Jj.renderer.projectiles.removeAttachment(this.targetBeams);
}
createLightningTexture(a, b) {
const c = i.angleTo(a, b);
const d = Math.sqrt(i.measureDistance(a, b));
const e = (2 + Math.floor(Math.random() * 3)) * 2;
this.targetBeams.draw.lineStyle(3, 16777215);
this.targetBeams.draw.moveTo(a.x, a.y);
let f = {
x: a.x,
y: a.y
};
for (let g = 0; g <= e; g++) {
if (g == e) {
this.targetBeams.draw.lineTo(b.x, b.y);
} else if (g % 2 == 0) {
const a = (c - (40 - Math.floor(Math.random() * 10)) + 360) % 360;
const b = {
x: f.x + Math.sin(a * Math.PI / 180) * (d / e * 1.25),
y: f.y - Math.cos(a * Math.PI / 180) * (d / e * 1.25)
};
this.targetBeams.draw.lineTo(b.x, b.y);
f = b;
} else {
const a = (c + (40 - Math.floor(Math.random() * 10)) + 360) % 360;
const b = {
x: f.x + Math.sin(a * Math.PI / 180) * (d / e * 1.25),
y: f.y - Math.cos(a * Math.PI / 180) * (d / e * 1.25)
};
this.targetBeams.draw.lineTo(b.x, b.y);
f = b;
}
}
}
update(a, b) {
if (b) {
this.updateSpinningAnimation(a, b);
this.updateFiringAnimation(a, b);
}
super.update(a, b);
}
updateSpinningAnimation(a, b) {
if (Jj.renderer.replicator.getMsSinceTick(this.lastFiringTick) > 1000) {
this.currentRotationSpeed = Math.max(0, this.currentRotationSpeed - a * 15 / 1000);
} else {
this.currentRotationSpeed = Math.min(this.currentRotationSpeed + a * 36 / 1000, a * 720 / 1000);
}
if (this.currentRotationSpeed > 0) {
this.currentRotation += this.currentRotationSpeed;
this.currentRotation %= 360;
this.coil.setRotation(this.currentRotation);
}
}
clearLightning(a) {
this.hasFired = false;
this.targetBeams.draw.clear();
this.branchTextures.forEach(a => {
a.draw.destroy();
this.targetBeams.removeAttachment(a);
});
this.branchTextures = [];
}
updateFiringAnimation(a, b) {
if (b.firingTick == 0) {
return;
}
const c = Jj.renderer.replicator.getMsSinceTick(b.firingTick);
if (b.firingTick !== this.lastFiringTick) {
this.clearLightning();
const a = this.parent.targetTick.position;
this.targetBeams.setAlpha(1);
this.hasFired = true;
let c = {
x: 0,
y: 0
};
const d = i.angleTo(a, {
x: b.targetBeams[0],
y: b.targetBeams[1]
});
c.x += Math.sin(d * Math.PI / 180) * (Math.floor(Math.random() * 8) + 22);
c.y -= Math.cos(d * Math.PI / 180) * (Math.floor(Math.random() * 8) + 22);
c.x += a.x;
c.y += a.y;
for (let a = 0; a < b.targetBeams.length; a += 2) {
const d = {
x: b.targetBeams[a],
y: b.targetBeams[a + 1]
};
this.createLightningTexture(c, d);
c = d;
}
this.lastFiringTick = b.firingTick;
} else if (this.hasFired == 1) {
const a = Math.min(1, Math.max(0, c / 50));
this.targetBeams.setAlpha(1 - a);
}
if (c >= 100 && this.hasFired == 1) {
this.clearLightning();
}
}
updateModel(a = 1) {
if (a != this.currentTier) {
this.currentTier = a;
this.removeAttachment(this.base);
this.removeAttachment(this.coil);
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(a)) {
throw new Error("Unknown tier encountered for " + this.type + " tower: " + a);
}
this.base = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Base.svg");
this.coil = new Ai("http://zombia.io/asset/images/Entity/" + this.type + "/" + this.type + "Tier" + a + "Coil.svg");
this.addAttachment(this.base, 2);
this.addAttachment(this.coil, 3);
this.coil.setRotation(this.currentRotation);
}
}
},
Zombie: class extends wi {
constructor() {
super();
this.healthBar = new yi({
r: 183,
g: 70,
b: 20
});
this.healthBar.setPosition(0, -5);
this.healthBar.setScale(0.6);
this.addAttachment(this.healthBar, 0);
}
update(a, b) {
const c = this.getParent();
if (b) {
if (this.base === undefined) {
this.updateModel(b, c);
}
this.healthBar.setVisible(b.health < b.maxHealth);
if (b.yaw !== undefined) {
c.targetTick.aimingYaw = b.yaw;
}
}
super.update(a, b);
}
updateModel(a, b) {
if (["Grey", "Green", "Blue"].indexOf(a.colour) < 0) {
throw new Error("Invalid zombie colour received: " + a.colour);
}
if (a.tier < 0 || a.tier > 10) {
throw new Error("Invalid zombie tier received: " + a.tier);
}
if (a.tier == 3) {
this.base = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Base.svg");
this.weaponLeft = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "WeaponLeft.svg");
this.weaponRight = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "WeaponRight.svg");
this.weaponLeft.setAnchor(0.5, 0.75);
this.weaponRight.setAnchor(0.5, 0.75);
this.weaponUpdateFunc = this.updateStabbingWeapon(500);
this.addAttachment(this.base, 2);
this.addAttachment(this.weaponLeft, 1);
this.addAttachment(this.weaponRight, 1);
} else {
this.base = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Base.svg");
this.weapon = new Ai("http://zombia.io/asset/images/Entity/Zombie/Zombie" + a.colour + "/Zombie" + a.colour + "Tier" + a.tier + "Weapon.svg");
switch (a.tier) {
case 2:
this.weapon.setAnchor(0.5, 0.75);
this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(300, 100);
break;
case 4:
case 5:
this.weapon.setAnchor(0.5, 0.85);
this.weaponUpdateFunc = this.updateClockwiseSwingingWeapon(300, 100);
break;
case 6:
case 7:
case 8:
this.weapon.setAnchor(0.5, 0.9);
this.weaponUpdateFunc = this.updateClockwiseSwingingWeapon(300, 100);
break;
default:
this.weapon.setAnchor(0.5, 1);
this.weaponUpdateFunc = this.updateAntiClockwiseSwingingWeapon(300, 100);
}
this.addAttachment(this.base, 2);
this.addAttachment(this.weapon, 1);
}
}
},
Visualiser: class extends vi {
constructor() {
super();
this.text = new ui("X", "Hammersmith One", 15);
this.addAttachment(this.text);
}
}
};
class Fi extends vi {
constructor(a) {
super();
this.isOccupied = false;
this.redSquare = new xi();
this.redSquare.drawRect(-a.width / 2, -a.height / 2, a.width / 2, a.height / 2, {
r: 255,
g: 0,
b: 0
});
this.redSquare.setAlpha(0.2);
this.redSquare.setVisible(false);
this.addAttachment(this.redSquare);
}
setIsOccupied(a) {
this.redSquare.setVisible(this.isOccupied = a);
}
}
class Gi extends vi {
constructor(a) {
super();
this.isCircular = a.isCircular || false;
this.goldRegion = new xi();
this.goldRegion.setAlpha(0.1);
if (this.isCircular) {
this.goldRegion.drawCircle(0, 0, a.radius, a.fill || {
r: 200,
g: 160,
b: 0
}, a.lineFill || {
r: 255,
g: 200,
b: 0
}, 8);
} else {
this.goldRegion.drawRect(-a.width / 2, -a.height / 2, a.width / 2, a.height / 2, a.fill || {
r: 200,
g: 160,
b: 0
}, a.lineFill || {
r: 255,
g: 200,
b: 0
}, a.lineWidth || 8);
}
this.addAttachment(this.goldRegion);
}
}
class Hi extends d {
constructor() {
super("<span></span>");
this.placeholderTints = [];
this.borderTints = [];
this.direction = 0;
this.disableDirection = true;
this.placeholderEntity = null;
this.rangeIndicator = null;
this.placeholderText = new ui("Press R to rotate...", "Hammersmith One", 16);
this.placeholderText.setAnchor(0.5, 0.5);
this.placeholderText.setColor(220, 220, 220);
this.placeholderText.setStroke(51, 51, 51, 3);
this.placeholderText.setFontWeight("bold");
this.placeholderText.setLetterSpacing(1);
this.placeholderText.setAlpha(0);
this.placeholderText.setPosition(-1000, -1000);
}
init() {
Jj.renderer.uiLayer.addAttachment(this.placeholderText);
Jj.eventEmitter.on("82Up", this.cycleDirection.bind(this));
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("CameraUpdate", this.update.bind(this));
Jj.eventEmitter.on("DeadRpcReceived", this.onDead.bind(this));
Jj.eventEmitter.on("27Up", this.cancelPlacing.bind(this));
Jj.eventEmitter.on("BuildingsUpdated", this.onBuildingData.bind(this));
}
onBuildingData(a) {
for (let b in a) {
const c = a[b];
if (c.type == this.buildingType && Jj.ui.buildingData[c.type].built >= Jj.ui.buildingData[c.type].limit) {
this.cancelPlacing();
}
}
}
onEnterWorld(a) {
this.minWallDistance = a.minimumBuildDistanceFromWall;
this.maxFactoryDistance = a.maxFactoryBuildDistance;
this.maxPlayerDistance = a.maxPlayerBuildDistance;
}
cycleDirection() {
if (this.disableDirection !== true && this.placeholderEntity !== null) {
this.direction = (this.direction + 1) % 4;
this.placeholderEntity.setRotation(this.direction * 90);
}
}
onDead() {
this.cancelPlacing();
}
startPlacing(a) {
if (this.buildingType) {
this.cancelPlacing();
}
Jj.ui.components.uiBuildingOverlay.stopWatching();
this.buildingType = a;
const b = Jj.ui.buildingData[a];
if (["SawTower", "Harvester"].includes(this.buildingType)) {
this.disableDirection = false;
this.placeholderText.setAlpha(0.75);
this.placeholderText.setPosition(-1000, -1000);
} else {
this.disableDirection = true;
this.direction = 0;
this.placeholderText.setAlpha(0);
this.placeholderText.setPosition(-1000, -1000);
}
const c = Jj.renderer.world.entityGrid.cellSize;
const d = b.gridWidth * b.gridHeight;
if (Ei[a]) {
this.placeholderEntity = new Ai("http://zombia.io/asset/images/Ui/Buildings/" + a + "/" + a + "Tier1.svg");
this.placeholderEntity.setAlpha(0.5);
this.placeholderEntity.setRotation(this.direction * 90);
Jj.renderer.uiLayer.addAttachment(this.placeholderEntity);
}
for (let b = 0; b < d; b++) {
this.placeholderTints[b] = new Fi({
width: c,
height: c
});
Jj.renderer.uiLayer.addAttachment(this.placeholderTints[b]);
}
if (a !== "Factory" && Jj.ui.getFactory() !== null) {
this.rangeIndicator = new Gi({
width: this.maxFactoryDistance * c * 2,
height: this.maxFactoryDistance * c * 2,
fill: {
r: 0,
b: 0,
g: 0
},
lineFill: {
r: 255,
b: 0,
g: 0
},
lineWidth: 12
});
Jj.renderer.groundLayer.addAttachment(this.rangeIndicator);
this.rangeIndicator.setPosition(Jj.ui.getFactory().x, Jj.ui.getFactory().y);
}
const e = Jj.renderer.world.worldSize.x / c;
const f = Jj.renderer.world.worldSize.y / c;
for (let b = 0; b < 4; b++) {
const a = this.minWallDistance / 2;
if (b == 0 || b == 1) {
this.borderTints[b] = new Fi({
width: c * this.minWallDistance,
height: c * f
});
} else if (b == 2 || b == 3) {
this.borderTints[b] = new Fi({
width: c * (e - this.minWallDistance * 2),
height: c * this.minWallDistance
});
}
Jj.renderer.groundLayer.addAttachment(this.borderTints[b]);
if (b == 0) {
this.borderTints[b].setPosition(c * a, c * (f / 2));
} else if (b == 1) {
this.borderTints[b].setPosition(c * (e - a), c * (f / 2));
} else if (b == 2) {
this.borderTints[b].setPosition(c * (e / 2), c * a);
} else if (b == 3) {
this.borderTints[b].setPosition(c * (e / 2), c * (f - a));
}
this.borderTints[b].setIsOccupied(true);
}
this.update();
}
update() {
if (!this.buildingType) {
return;
}
const a = Jj.ui.buildingData[this.buildingType];
const b = Jj.ui.mousePosition;
const c = Jj.renderer.world;
const d = Jj.renderer.screenToWorld(b.x, b.y);
const e = c.entityGrid.getCellIndices(d.x, d.y, {
width: a.gridWidth,
height: a.gridHeight
});
const f = c.entityGrid.cellSize;
let g = {
x: 0,
y: 0
};
for (let a in e) {
if (!e[a]) {
this.placeholderTints[a].setVisible(false);
continue;
}
const b = c.entityGrid.getCellCoords(e[a]);
let d = {
x: b.x * f + f / 2,
y: b.y * f + f / 2
};
const h = Jj.renderer.worldToUi(d.x, d.y);
const i = this.checkIsOccupied(e[a], b);
this.placeholderTints[a].setPosition(h.x, h.y);
this.placeholderTints[a].setIsOccupied(i);
this.placeholderTints[a].setVisible(true);
g.x += b.x;
g.y += b.y;
}
g.x = g.x / e.length;
g.y = g.y / e.length;
let h = {
x: g.x * f + f / 2,
y: g.y * f + f / 2
};
const i = Jj.renderer.worldToUi(h.x, h.y);
if (this.placeholderEntity !== null) {
this.placeholderEntity.setPosition(i.x, i.y);
this.placeholderText.setPosition(i.x, i.y - 110);
}
}
checkIsOccupied(a, b) {
const c = Jj.renderer.world;
const d = c.entityGrid.cellSize;
const e = c.entityGrid.getEntitiesInCell(a);
const f = b.x * d + d / 2;
const g = b.y * d + d / 2;
if (!e) {
return true;
}
for (const d in e) {
const a = c.entities[parseInt(d)];
if (!a) {
continue;
}
const b = a.getTargetTick();
if (b && b.entityClass !== "Projectile") {
return true;
}
}
const h = Math.min(b.x, c.entityGrid.columns - 1 - b.x);
const i = Math.min(b.y, c.entityGrid.rows - 1 - b.y);
if (h < this.minWallDistance || i < this.minWallDistance) {
return true;
}
if (c.getLocalPlayer()) {
const a = c.entities[c.getLocalPlayer()];
if (a) {
const b = Math.abs(a.getPositionX() - f) / d;
const c = Math.abs(a.getPositionY() - g) / d;
if (b > this.maxPlayerDistance || c > this.maxPlayerDistance) {
return true;
}
}
}
if (Jj.ui.factory && this.buildingType !== "Harvester") {
const a = Math.abs(Jj.ui.factory.x - f) / d;
const b = Math.abs(Jj.ui.factory.y - g) / d;
if (a > this.maxFactoryDistance || b > this.maxFactoryDistance) {
return true;
}
}
return false;
}
cancelPlacing() {
if (this.buildingType) {
Jj.renderer.uiLayer.removeAttachment(this.placeholderEntity);
for (let a in this.placeholderTints) {
Jj.renderer.uiLayer.removeAttachment(this.placeholderTints[a]);
}
for (let a in this.borderTints) {
Jj.renderer.groundLayer.removeAttachment(this.borderTints[a]);
}
if (this.rangeIndicator) {
Jj.renderer.groundLayer.removeAttachment(this.rangeIndicator);
delete this.rangeIndicator;
}
this.placeholderText.setAlpha(0);
this.placeholderText.setPosition(-1000, -1000);
this.placeholderEntity = null;
this.placeholderTints = [];
this.borderTints = [];
this.buildingType = null;
}
}
placeBuilding() {
if (!this.buildingType) {
return;
}
const a = Jj.renderer.world.getLocalPlayer();
if (!a) {
return false;
}
if (!Jj.renderer.world.entities[a]) {
return false;
}
const b = Jj.ui.buildingData[this.buildingType];
const c = Jj.ui.mousePosition;
const d = Jj.renderer.world;
const e = Jj.renderer.screenToWorld(c.x, c.y);
const f = d.entityGrid.getCellIndices(e.x, e.y, {
width: b.gridWidth,
height: b.gridHeight
});
const g = d.entityGrid.cellSize;
let h = {
x: 0,
y: 0
};
for (let a in f) {
if (!f[a]) {
return false;
}
const b = d.entityGrid.getCellCoords(f[a]);
h.x += b.x;
h.y += b.y;
}
h.x /= f.length;
h.y /= f.length;
let i = {
x: h.x * g + g / 2,
y: h.y * g + g / 2
};
Jj.network.sendRpc({
name: "PlaceBuilding",
x: i.x,
y: i.y,
type: this.buildingType,
yaw: this.direction * 90
});
return true;
}
isActive() {
return !!this.buildingType;
}
}
class Ii extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-building-overlay hud-tooltip hud-tooltip-top";
document.getElementById("hud").appendChild(a);
super(a);
this.element.innerHTML = "\n <div class=\"hud-tooltip-building\">\n <h2 class=\"hud-building-name\"></h2>\n <h3>Tier <span id=\"hud-building-tier\" class=\"hud-building-tier\"></span></h3>\n <div class=\"hud-tooltip-body\">\n <div id=\"hud-building-stats\" class=\"hud-building-stats\"></div>\n <p class=\"hud-building-actions\">\n <a class=\"btn btn-green hud-building-upgrade\"></a>\n <a class=\"btn btn-red hud-building-sell\">Sell</a>\n </p>\n </div>\n </div>\n ";
this.nameElem = this.element.querySelector(".hud-building-name");
this.tierElem = this.element.querySelector(".hud-building-tier");
this.statsElem = this.element.querySelector(".hud-building-stats");
this.upgradeElem = this.element.querySelector(".hud-building-upgrade");
this.sellElem = this.element.querySelector(".hud-building-sell");
this.upgradeElem.addEventListener("mouseup", this.upgradeBuilding.bind(this));
this.sellElem.addEventListener("mouseup", this.sellBuilding.bind(this));
this.element.addEventListener("mousedown", this.onMouseDown.bind(this));
this.element.addEventListener("mouseup", this.onMouseUp.bind(this));
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("PlayerTickUpdated", this.updateText.bind(this));
Jj.eventEmitter.on("CameraUpdate", this.update.bind(this));
Jj.eventEmitter.on("BuildingsUpdated", this.updateText.bind(this));
Jj.eventEmitter.on("16Down", this.updateText.bind(this));
Jj.eventEmitter.on("16Up", this.updateText.bind(this));
Jj.eventEmitter.on("69Up", this.upgradeBuilding.bind(this));
Jj.eventEmitter.on("84Up", this.sellBuilding.bind(this));
Jj.eventEmitter.on("27Up", this.stopWatching.bind(this));
}
onEnterWorld(a) {
this.maxFactoryDistance = a.maxFactoryBuildDistance;
}
onMouseDown(a) {
a.stopPropagation();
}
onMouseUp(a) {
a.stopPropagation();
}
upgradeBuilding() {
if (!this.buildingUid) {
return;
}
let a = new Set();
a.add(this.buildingUid);
if (Jj.network.inputPacketManager.shiftDown) {
for (const b in Jj.ui.buildings) {
const c = Jj.ui.buildings[b];
if (c.type == this.buildingId && c.tier == this.buildingTier) {
a.add(c.uid);
}
}
}
Jj.network.sendRpc({
name: "UpgradeBuilding",
uids: Array.from(a)
});
}
sellBuilding() {
if (!this.buildingUid || !Jj.ui.playerPartyCanSell) {
return;
}
let a = new Set();
a.add(this.buildingUid);
if (Jj.network.inputPacketManager.shiftDown) {
for (const b in Jj.ui.buildings) {
const c = Jj.ui.buildings[b];
if (c.type == this.buildingId && c.tier == this.buildingTier) {
a.add(c.uid);
}
}
}
if (a.size > 1) {
Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to sell all <b>" + this.buildingId + "</b>s?", 5000, () => {
Jj.network.sendRpc({
name: "SellBuilding",
uids: Array.from(a)
});
});
} else {
Jj.network.sendRpc({
name: "SellBuilding",
uids: Array.from(a)
});
}
}
update() {
if (!this.buildingUid) {
return;
}
const a = Jj.renderer.world.entities[this.buildingUid];
if (!a) {
return this.stopWatching();
}
const b = Jj.renderer.worldToScreen(a.getPositionX(), a.getPositionY());
const c = Jj.ui.buildingData[this.buildingId];
if (!Jj.ui.buildings[this.buildingUid]) {
return this.stopWatching();
}
const d = c.gridHeight / 2 * 48 * (Jj.renderer.scale / window.devicePixelRatio);
this.element.style.left = b.x - this.element.offsetWidth / 2 + "px";
this.element.style.top = b.y - d - this.element.offsetHeight - 20 + "px";
if (this.rangeIndicator) {
this.rangeIndicator.setPosition(a.getPositionX(), a.getPositionY());
}
}
updateText() {
if (!this.isActive()) {
return;
}
if (!Jj.ui.buildings[this.buildingUid]) {
return this.stopWatching();
}
const a = Jj.ui.buildingData[this.buildingId];
this.buildingId = Jj.ui.buildings[this.buildingUid].type;
this.buildingTier = Jj.ui.buildings[this.buildingUid].tier;
const b = this.buildingTier >= a.tiers || this.buildingId !== "Factory" && this.buildingTier >= Jj.ui.getFactory().tier;
this.nameElem.innerHTML = this.buildingId;
this.tierElem.innerHTML = this.buildingTier;
let c = 1;
if (Jj.network.inputPacketManager.shiftDown) {
for (const a in Jj.ui.buildings) {
const b = Jj.ui.buildings[a];
if (b.type == this.buildingId && b.tier == this.buildingTier && b.uid !== this.buildingUid) {
c++;
}
}
}
if (b) {
this.upgradeElem.classList.add("is-disabled");
}
const d = i.createResourceRefundString(a, this.buildingTier, c);
if (["Factory"].includes(this.buildingId)) {
this.sellElem.classList.add("is-disabled");
this.sellElem.innerHTML = "<span>Can't sell</span>";
} else if (Jj.ui.playerPartyCanSell) {
this.sellElem.classList.remove("is-disabled");
this.sellElem.innerHTML = "<span>Sell" + (Jj.network.inputPacketManager.shiftDown ? " All" : "") + " (" + d + ")</span>";
} else {
this.sellElem.classList.add("is-disabled");
this.sellElem.innerHTML = "<span>Need permission to sell</span>";
}
const e = i.createResourceCostString(a, b ? this.buildingTier : this.buildingTier + 1, c, true);
const f = Jj.ui.getFactory();
if (b) {
if (["Factory"].includes(this.buildingId) || f.tier == this.buildingTier && f.tier >= Jj.ui.buildingData.Factory.tiers) {
this.upgradeElem.innerHTML = "<span>Maximum tier!</span>";
} else {
this.upgradeElem.innerHTML = "<span>Upgrade your Factory</span>";
}
} else {
this.upgradeElem.innerHTML = "<span>Upgrade " + (Jj.network.inputPacketManager.shiftDown ? "All " : "") + " (" + e.elem + ")</span>";
}
const g = {
Range: "towerRadius",
"Max Health": "health",
"Gold/Second": "goldPerSecond",
"Firing Rate": "msBetweenFires",
"Projectile Speed": "projectileSpeed",
"Damage to Zombies": "damageToZombies",
"Target Limit": "attackTargetLimit"
};
let h = "";
let j = "";
for (let b in g) {
if (a[g[b]]) {
h += "<p>" + b + ": <strong class=\"hud-stats-current\">" + a[g[b]][this.buildingTier - 1] + "</strong></p>";
j += "<p>" + b + ": <strong class=\"hud-stats-next\">" + a[g[b]][this.buildingTier - (this.buildingTier >= a.tiers ? 1 : 0)] + "</strong></p>";
}
}
this.statsElem.innerHTML = "<div class=\"hud-stats-current hud-stats-values\">" + h + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + j + "</div>";
}
stopWatching() {
if (this.buildingUid) {
if (this.rangeIndicator) {
Jj.renderer.groundLayer.removeAttachment(this.rangeIndicator);
delete this.rangeIndicator;
}
this.element.style.left = "-1000px";
this.element.style.top = "-1000px";
this.upgradeElem.classList.remove("is-disabled");
this.buildingUid = null;
this.buildingId = null;
this.buildingTier = null;
this.hide();
}
}
startWatching(a) {
if (this.buildingUid) {
this.stopWatching();
}
Jj.ui.components.uiPlacementOverlay.cancelPlacing();
this.buildingUid = a;
if (!Jj.ui.buildings[a]) {
return;
}
this.buildingId = Jj.ui.buildings[a].type;
this.buildingTier = Jj.ui.buildings[a].tier;
const b = Jj.ui.buildingData[this.buildingId];
if (this.buildingId == "Factory") {
const a = Jj.renderer.world.entityGrid.cellSize;
this.rangeIndicator = new Gi({
width: this.maxFactoryDistance * a * 2,
height: this.maxFactoryDistance * a * 2,
fill: {
r: 0,
b: 0,
g: 0
},
lineFill: {
r: 255,
b: 0,
g: 0
},
lineWidth: 12
});
Jj.renderer.groundLayer.addAttachment(this.rangeIndicator);
} else if (b.towerRadius) {
this.rangeIndicator = new Gi({
isCircular: true,
radius: b.towerRadius[this.buildingTier - 1]
});
Jj.renderer.groundLayer.addAttachment(this.rangeIndicator);
}
this.updateText();
this.show();
this.update();
}
isActive() {
return !!this.buildingUid;
}
}
class Ji extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-map";
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.element.addEventListener("mousedown", this.onMouseDown.bind(this));
this.element.addEventListener("mouseup", this.onMouseUp.bind(this));
this.playerElems = {};
this.buildingElems = {};
}
init() {
Jj.eventEmitter.on("RendererUpdated", this.update.bind(this));
Jj.eventEmitter.on("PartyMembersUpdated", this.onPartyMembersUpdate.bind(this));
Jj.eventEmitter.on("BuildingsUpdated", this.onBuildingsUpdate.bind(this));
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
}
onEnterWorld() {
for (let a in this.buildingElems) {
this.buildingElems[a].remove();
delete this.buildingElems[a];
}
}
onMouseDown(a) {
a.stopPropagation();
a.preventDefault();
}
onMouseUp(a) {
a.stopPropagation();
a.preventDefault();
}
update() {
for (const a in this.playerElems) {
const b = this.playerElems[a];
const c = Jj.renderer.world.entities[a];
if (!c) {
//b.marker.style.display = "none";
continue;
}
const d = c.getPositionX() / Jj.renderer.world.worldSize.x * 100;
const e = c.getPositionY() / Jj.renderer.world.worldSize.y * 100;
b.marker.setAttribute("data-index", b.index.toString());
b.marker.style.display = "block";
b.marker.style.left = d + "%";
b.marker.style.top = e + "%";
}
}
onPartyMembersUpdate(a) {
const b = {};
for (const c in this.playerElems) {
b[c] = true;
}
for (const c in a) {
const d = parseInt(c);
const e = Object.values(a)[c].uid;
delete b[e];
if (this.playerElems[e]) {
this.playerElems[e].index = d;
} else {
const a = document.createElement("div");
a.className = "hud-map-player";
a.setAttribute("data-index", d);
this.element.appendChild(a);
this.playerElems[e] = {
index: d,
marker: a
};
}
}
for (const c in b) {
if (this.playerElems[c]) {
this.playerElems[c].marker.remove();
delete this.playerElems[c];
}
}
}
onBuildingsUpdate(a) {
const b = {};
for (const c in a) {
if (a[c].dead !== true) {
if (this.buildingElems[a[c].uid] === undefined) {
const b = document.createElement("div");
b.className = "hud-map-building";
const d = a[c].x / Jj.renderer.world.worldSize.x * 100;
const e = a[c].y / Jj.renderer.world.worldSize.y * 100;
b.style.left = d + "%";
b.style.top = e + "%";
this.element.appendChild(b);
this.buildingElems[a[c].uid] = b;
}
} else {
b[a[c].uid] = true;
}
}
for (const c in b) {
if (this.buildingElems[c]) {
this.buildingElems[c].remove();
delete this.buildingElems[c];
}
}
}
}
const Ki = c(6);
const Li = c(573);
Ki.loadPlugin(Li);
Ki.setDefaults({
randomize: false
});
class Mi extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-chat";
a.innerHTML = "\n <div class=\"hud-chat-messages\" id=\"hud-chat-messages\"></div>\n <input type=\"text\" class=\"hud-chat-input\" id=\"hud-chat-input\" placeholder=\"Send a message to the [All] channel.\" maxlength=\"140\">\n <div class=\"hud-chat-toggle-channel\" id=\"hud-chat-toggle-channel\"></div>";
document.getElementById("hud-top").appendChild(a);
super(a);
this.element.addEventListener("mouseup", this.onMouseUp.bind(this));
this.element.addEventListener("mousedown", this.onMouseDown.bind(this));
this.messagesElem = document.getElementById("hud-chat-messages");
this.inputElem = document.getElementById("hud-chat-input");
this.toggleChannelButton = document.getElementById("hud-chat-toggle-channel");
this.inputElem.addEventListener("keydown", a => {
if (!["Enter", "Escape"].includes(a.code)) {
a.stopPropagation();
}
});
this.inputElem.addEventListener("keyup", a => {
if (!["Enter", "Escape"].includes(a.code)) {
a.stopPropagation();
}
});
this.toggleChannelButton.addEventListener("mousedown", a => {
a.stopPropagation();
});
this.toggleChannelButton.addEventListener("mouseup", a => {
this.toggleChannel();
a.stopPropagation();
this.inputElem.focus();
});
this.typing = false;
this.channels = ["All", "Party"];
this.channelIndex = 0;
}
init() {
Jj.eventEmitter.on("ReceiveChatMessageRpcReceived", this.onMessageReceived.bind(this));
Jj.eventEmitter.on("13Up", this.toggleTyping.bind(this));
Jj.eventEmitter.on("27Up", () => {
if (this.typing == 1) {
this.hideChat();
}
});
Jj.eventEmitter.on("mouseDown", () => {
if (this.typing == 1) {
this.hideChat();
}
});
}
showChat() {
this.toggleChannelButton.style.display = "block";
this.element.classList.add("is-focused");
this.inputElem.focus();
this.typing = true;
}
hideChat() {
this.toggleChannelButton.style.display = "none";
this.element.classList.remove("is-focused");
this.inputElem.blur();
this.typing = false;
}
onMouseUp(a) {
if (this.typing) {
a.stopPropagation();
}
}
onMouseDown(a) {
if (this.typing) {
a.stopPropagation();
}
}
onMessageReceived(a) {
const b = document.createElement("div");
b.className = "hud-chat-message";
b.innerHTML = "<strong style=\"" + (a.channel === "All" ? "color:#FF0000;" : "color:#00FF00;") + "\">[" + a.channel + "] </strong><strong><span id=\"name\"></span>: </strong><span id=\"message\"></span>";
const c = document.createTextNode(Jj.network.languageFilterEnabled ? Ki(a.name) : a.name);
b.querySelector("#name").appendChild(c);
const d = document.createTextNode(Jj.network.languageFilterEnabled ? Ki(a.message) : a.message);
b.querySelector("#message").appendChild(d);
this.messagesElem.appendChild(b);
b.addEventListener("mousedown", a => {
a.stopPropagation();
});
b.addEventListener("mouseup", a => {
a.stopPropagation();
});
this.messagesElem.scrollTop = this.messagesElem.scrollHeight;
if (window.storage.getItem("settings-delete-chat") == "true" && document.getElementsByClassName("hud-chat-message").length > 100) {
document.getElementsByClassName("hud-chat-message")[0].remove();
}
}
toggleTyping() {
if (this.typing) {
if (this.inputElem.value.trim().length > 0) {
let message = this.inputElem.value.trim();
let sendOrginalMsg = () => {
Jj.network.sendRpc({
name: "SendChatMessage",
message: message,
channel: this.channels[this.channelIndex]
});
}
let spearTiers = {
1: 100,
2: 500,
3: 3500,
4: 8600,
5: 30000,
6: 80000,
7: 280000,
}
let chatMsgReceived = (msg) => {
!msg.startsWith("!!") && (msg = msg.split("!")[1]);
let input = msg.split(" ")[0].toLowerCase();
switch (input) {
case "send":
for (let i = 0; i < parseInt(msg.split(" ")[1]); i++)(window.b = new Bot(scannerNames[i % scannerNames.length], game.network.options.serverData.id))
break;
case "reset":
for (let i in sockets) sockets[i].ws.close()
break;
case "r":
for (let i in sockets) {
sockets[i].shouldRespawn = true;
sockets[i].respawn();
}
break;
case "sockets":
sendMsg(`You currently have ${Object.keys(sockets).length}`)
break;
case "arb":
saveBuildings();
autoRebuilder = true;
sendMsg(`AutoRebuilder enabled`)
break;
case "record":
let baseName = msg.split(" ")[1];
recordBase().then(buildCode => {
const parsedObj = JSON.parse(localStorage.recordedBase);
parsedObj[baseName] = buildCode;
localStorage.recordedBase = JSON.stringify(parsedObj);
sendMsg(`Base recorded with name "${baseName}"`)
})
break;
case "list":
let recordedBases = JSON.parse(localStorage.recordedBase);
let baseNames = Object.keys(recordedBases);
if (baseNames.length == 0) {
sendMsg("No bases recorded");
return;
}
sendMsg(`Bases recorded: ${baseNames.join(",")}`);
break;
case "xkey":
xkey = true;
sendMsg(`Enabled xkey`);
break;
case "delete":
const baseToDelete = msg.split(" ")[1];
let recordedBase = JSON.parse(localStorage.recordedBase);
if (recordedBase[baseToDelete]) {
delete recordedBase[baseToDelete];
localStorage.recordedBase = JSON.stringify(recordedBase);
sendMsg(`Deleted base with name ${baseToDelete}`);
return;
};
sendMsg(`base with name ${baseToDelete} is not recorded/does not exist`);
break;
case "build":
const baseToBuild = msg.split(" ")[1];
let Bases = JSON.parse(localStorage.recordedBase);
if(!Bases[baseToBuild]) {
sendMsg(`base with name ${baseToDelete} is not recorded/does not exist`);
return;
};
buildBase(Bases[baseToBuild]);
break;
case "!!arb":
autoRebuilder = false;
buildings.clear();
missingBuildings.clear();
buildingsToUpgrade.clear();
sendMsg(`AutoRebuilder disabled`)
break;
case "!!xkey":
xkey = false;
sendMsg("Disabled xkey");
break;
case "!!as":
spearFarm.enabled = false;
spearFarm.tier = null;
spearFarm.price = null;
sendMsg(`Auto farm spear disabled`)
break
case "!!r":
for (let i in sockets) sockets[i].shouldRespawn = false;
break;
}
if (input.startsWith("as")) {
let tier = parseInt(input.split("as")[1]);
spearTiers[tier] && (spearFarm = { tier: tier, price: spearTiers[tier], enabled: true });
sendMsg(`Auto farm spear tier ${tier} enabled`)
};
};
message.startsWith("!") ? chatMsgReceived(message) : sendOrginalMsg();
}
this.inputElem.value = "";
this.hideChat();
} else {
this.showChat();
}
}
toggleChannel(a) {
if (this.typing) {
this.channelIndex++;
if (this.channelIndex + 1 > this.channels.length) {
this.channelIndex = 0;
}
this.inputElem.placeholder = "Send a message to the [" + this.channels[this.channelIndex] + "] channel.";
}
}
}
class Ni extends d {
constructor(a) {
const b = document.createElement("div");
b.className = "hud-tool";
super(b);
this.type = a;
this.element.addEventListener("click", this.onClick.bind(this));
this.element.addEventListener("mousedown", this.onMouseDown);
this.update();
}
init() {
Jj.eventEmitter.on("SetToolRpcReceived", a => {
for (let b of a) {
if (b.toolName == this.type) {
this.update(b.toolTier);
}
}
});
}
onClick() {
Jj.network.sendRpc({
name: "EquipTool",
toolName: this.type
});
}
onMouseDown(a) {
a.stopPropagation();
a.preventDefault();
}
update(a = 0) {
this.element.classList[a > 0 ? "remove" : "add"]("is-empty");
this.element.style["background-image"] = a > 0 ? "url('http://zombia.io/asset/images/Ui/Icons/Tools/" + this.type + "Tier" + a + ".svg')" : "";
}
}
class Oi extends d {
constructor(a) {
let b = document.createElement("div");
b.className = "hud-grid";
b.setAttribute("grid-type", a);
super(b);
this.type = a;
this.element.addEventListener("mousedown", this.onMouseDown);
this.element.addEventListener("mouseup", this.onMouseUp);
}
onMouseDown(a) {
a.stopPropagation();
}
onMouseUp(a) {
a.stopPropagation();
}
}
class Pi extends d {
constructor(a) {
const b = document.createElement("div");
b.className = "hud-shop-item";
b.setAttribute("item-type", a.class);
super(b);
this.disabled = false;
this.toolData = a;
if (a.name == "ZombieShield") {
this.element.innerHTML = "\n <img class=\"hud-shop-info-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg\">\n <strong style=\"font-size:20px;margin-left: 5px;\">" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-shop-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-shop-item-cost\"></div>\n ";
} else {
this.element.innerHTML = "\n <img class=\"hud-shop-info-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/" + a.class + "/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <strong style=\"font-size:20px;margin-left: 5px;\">" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-shop-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-shop-item-cost\"></div>\n ";
}
this.tierElem = this.element.querySelector(".hud-shop-item-tier");
this.previewElem = this.element.querySelector(".hud-shop-info-preview");
this.costElem = this.element.querySelector(".hud-shop-item-cost");
this.tier = 0;
this.element.addEventListener("click", this.onClick.bind(this));
this.element.addEventListener("mousedown", this.onMouseDown);
this.element.addEventListener("mouseenter", () => {
Jj.ui.components.uiMenuGridShop.shopInfo.setTargetItem(this.toolData, this.tier);
});
this.element.addEventListener("mouseleave", () => {
Jj.ui.components.uiMenuGridShop.shopInfo.setTargetItem(null);
});
this.update();
}
init() {
Jj.eventEmitter.on("SetToolRpcReceived", a => {
for (let b of a) {
if (b.toolName == this.toolData.name) {
this.update(b.toolTier);
}
}
});
}
onClick() {
if (!this.disabled) {
Jj.network.sendRpc({
name: "BuyTool",
toolName: this.toolData.name
});
}
}
onMouseDown(a) {
a.stopPropagation();
a.preventDefault();
}
update(a = 0) {
this.tier = a;
const b = a >= (this.toolData.tiers || 1);
const c = b ? a : a + 1;
this.element.classList[b ? "add" : "remove"]("is-disabled");
this.disabled = b;
if (this.toolData.name == "ZombieShield") {
this.previewElem.src = "http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg";
} else {
this.previewElem.src = "http://zombia.io/asset/images/Ui/Icons/" + this.toolData.class + "/" + this.toolData.name + (this.toolData.tiers > 0 ? "Tier" + (a == 0 ? 1 : c) : "") + ".svg";
}
if (this.toolData.tiers !== undefined) {
this.tierElem.textContent = a == 0 ? "Not Purchased" : "Tier " + c;
} else {
this.tierElem.textContent = "";
}
this.costElem.innerHTML = "<small>" + i.createResourceCostString(this.toolData, c, 1, false).elem.split(", ").join("<br>") + "</small>";
}
}
class Qi extends d {
constructor(a) {
const b = document.createElement("div");
b.className = "hud-ui-potion";
b.setAttribute("potion-type", a.name);
document.getElementById("hud-bottom").appendChild(b);
super(b);
this.potionName = a.name;
this.element.addEventListener("mouseup", this.onMouseUp.bind(this));
this.element.addEventListener("mousedown", a => {
a.stopPropagation();
});
this.element.addEventListener("mouseenter", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element);
});
this.element.addEventListener("mouseleave", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.hide();
});
}
onMouseUp(a) {
a.stopPropagation();
if (this.potionName === "HealthPotion") {
Jj.network.sendRpc({
name: "BuyTool",
toolName: "HealthPotion"
});
}
}
}
class Ri extends d {
constructor() {
super(document.getElementById("hud-shop-info"));
this.targetItem = null;
this.statsElem = null;
Jj.eventEmitter.on("SetToolRpcReceived", a => {
if (this.targetItem !== null) {
for (let b of a) {
if (b.toolName == this.targetItem.name) {
this.updateItemStats(b.toolTier);
}
}
}
});
}
setTargetItem(a, b) {
this.targetItem = a;
if (a !== null) {
this.element.innerHTML = "\n <strong id=\"hud-shop-info-name\">" + a.name.split(/(?=[A-Z])/).join(" ") + " <small class=\"hud-shop-info-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small></strong>\n <img class=\"hud-shop-info-preview shop-info\" src=\"http://zombia.io/asset/images/Ui/Icons/" + a.class + "/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <div class=\"hud-shop-item-description\">" + (a.description || "") + "</div>\n <div class=\"hud-shop-item-stats\"></div>\n ";
this.statsElem = this.element.querySelector(".hud-shop-item-stats");
this.updateItemStats(b);
} else {
this.element.innerHTML = "";
}
}
updateItemStats(a) {
const b = a >= (this.targetItem.tiers || 1);
this.element.classList[b ? "add" : "remove"]("is-disabled");
this.disabled = b;
const c = {
Range: "towerRadius",
"Damage to zombies": "damageToZombies",
"Damage to buildings": "damageToBuildings",
"Damage to players": "damageToPlayers",
"Harvest Amount": "harvestAmount",
"Firing Rate": "msBetweenFires",
"Health Regen/sec": "healthRegenPerSecond",
"Max Health": "health"
};
let d = "";
const e = b ? a : a + 1;
let f = "";
for (const b in c) {
if (this.targetItem[c[b]]) {
d += "<p>" + b + ": <strong class=\"hud-stats-current\">" + (this.targetItem[c[b]][a - 1] || "—") + "</strong></p>";
f += "<p>" + b + ": <strong class=\"hud-stats-next\">" + this.targetItem[c[b]][e - 1] + "</strong></p>";
}
}
this.statsElem.innerHTML = d !== "" && f !== "" ? "<div class=\"hud-stats-current hud-stats-values\">" + d + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + f + "</div>" : "";
if (this.targetItem.name == "ZombieShield") {
document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/Armour/ZombieShield.svg";
document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = a == 0 ? "Not Purchased" : "Tier " + e;
} else if (a == 0) {
document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = "Tier 1";
document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/" + this.targetItem.class + "/" + this.targetItem.name + "Tier1.svg";
} else {
document.getElementsByClassName("hud-shop-info-tier")[0].innerHTML = "Tier " + e;
document.getElementsByClassName("hud-shop-info-preview shop-info")[0].src = "http://zombia.io/asset/images/Ui/Icons/" + this.targetItem.class + "/" + this.targetItem.name + (this.targetItem.tiers > 0 ? "Tier" + e : "") + ".svg";
}
}
}
class Si extends Oi {
constructor() {
super("Shop");
Jj.ui.components.uiMenuGridShop = this;
this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Shop</h3>\n <div class=\"hud-shop-tabs\">\n <a class=\"hud-shop-tabs-link\">Tools</a>\n <a class=\"hud-shop-tabs-link\">Armour</a>\n <a class=\"hud-shop-tabs-link\">Hats</a>\n <a class=\"hud-shop-tabs-link\">Utility</a>\n </div>\n <div class=\"hud-shop-items\">\n <div id=\"hud-shop-grid\" class=\"hud-shop-grid\"></div>\n <div id=\"hud-shop-info\" class=\"hud-shop-info\"></div>\n </div>\n ";
this.init();
}
init() {
const a = this.element.querySelectorAll(".hud-shop-tabs-link");
for (let b of a) {
b.addEventListener("mouseup", this.setTab.bind(this, b));
}
Jj.eventEmitter.on("ToolDataReceived", () => {
document.getElementById("hud-shop-grid").innerHTML = "<h1 id='hud-shop-coming-soon' style='display:none;'>Coming soon</h1>";
for (const a of document.querySelectorAll(".hud-ui-potion")) {
a.remove();
}
const b = Jj.ui.toolData;
for (let a in b) {
const c = b[a];
if (!c.canPurchase) {
continue;
}
let d;
if (c.class == "Potion") {
d = new Qi(c);
} else {
d = new Pi(c);
document.getElementById("hud-shop-grid").appendChild(d.element);
}
d.init?.();
}
this.setTab(a[0]);
});
setTimeout(() => {
this.shopInfo = new Ri();
}, 0);
}
setTab(a) {
const b = this.element.querySelectorAll(".hud-shop-tabs-link");
a.classList.add("is-active");
for (let c of b) {
if (c.textContent !== a.textContent) {
c.classList.remove("is-active");
}
}
const c = this.element.querySelectorAll(".hud-shop-item");
let d = false;
for (let b of c) {
if (b.getAttribute("item-type") == a.textContent) {
b.style.display = "block";
d = true;
} else {
b.style.display = "none";
}
}
document.getElementById("hud-shop-coming-soon").style.display = d ? "none" : "block";
}
}
class Ti extends Oi {
constructor() {
super("Settings");
Jj.ui.components.uiMenuGridSettings = this;
this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <div class=\"hud-grid-settings-controls\">\n <h1 style=\"margin: 0;\">Controls</h1>\n <span style=\"font-size: 24px;\">Buildings</span><br>\n <span>Move your mouse to the bottom of the screen to reveal the buildings</span><br><br>\n <span style=\"font-size: 24px;\">Hotkeys</span><br>\n <span>\n Scroll your mouse wheel to zoom in/out<br>\n [Enter] - Toggle the chat<br>\n [T] - Sell selected building - Hold [Shift] to sell all of the same type and tier<br>\n [E] - Upgrade selected building - Hold [Shift] to upgrade all of the same type and tier<br>\n [F6] - Toggle debugging statistics<br>\n [B] - Toggle the shop menu<br>\n [P] - Toggle the party menu<br>\n [0-9] - Selects a building from the building bar<br>\n [G] - Lock/Unlock inputs\n </span>\n </div>\n <div class=\"hud-grid-settings-divider\"></div>\n <div class=\"hud-grid-settings-options\" style=\"display:flex;flex-direction: column; padding-left: 5px;\">\n <h1 style=\"margin: 0;\">Settings</h1>\n <input type=\"checkbox\" class=\"hud-settings-day-night-opacity dark\" id=\"hud-settings-day-night-opacity\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-day-night-opacity\">Disable night's screen darkening</label>\n <input type=\"checkbox\" class=\"hud-settings-language-filter dark\" id=\"hud-settings-language-filter\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-language-filter\">Enable language filter</label>\n <input type=\"checkbox\" class=\"hud-settings-building-bar dark\" id=\"hud-settings-building-bar\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-building-bar\">Keep building bar visible</label>\n <input type=\"checkbox\" class=\"hud-settings-special-effects dark\" id=\"hud-settings-special-effects\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-special-effects\">Disable special effects</label>\n <input type=\"checkbox\" class=\"hud-settings-delete-chat dark\" id=\"hud-settings-delete-chat\">\n <label style=\"word-wrap:break-word\" for=\"hud-settings-delete-chat\">Delete old chat messages</label>\n </div>\n <div class=\"hud-grid-settings-socials\">\n <p><a target=\"_blank\" href=\"https://discord.gg/4cxREnV4WE\">Discord Server</a></p>\n <p>Programmed by <a target=\"_blank\" href=\"https://www.youtube.com/channel/UCrVyJ-ivzuBDETc7y0MZf9A\"><b>Apex</b></a></p>\n <p>Designed by <a target=\"_blank\" href=\"https://www.youtube.com/c/XperienceYT\"><b>Xperience</b></a></p>\n </div>\n ";
this.element.querySelector(".hud-settings-language-filter").addEventListener("change", () => {
window.storage.setItem("settings-language-filter", this.element.querySelector(".hud-settings-language-filter").checked);
Jj.network.languageFilterEnabled = this.element.querySelector(".hud-settings-language-filter").checked;
});
this.element.querySelector(".hud-settings-building-bar").addEventListener("change", () => {
let a = this.element.querySelector(".hud-settings-building-bar").checked;
window.storage.setItem("settings-building-bar", a);
Jj.ui.components.uiBuildingBar.element.classList[a ? "add" : "remove"]("remain-visible");
if (a == 0 && window.storage.getItem("walkthrough_BuildingBar") == "false") {
Jj.ui.components.uiWalkthrough.showBuildingBarIndicator();
} else if (a == 1) {
Jj.ui.components.uiWalkthrough.hideBuildingBarIndicator();
}
});
this.element.querySelector(".hud-settings-special-effects").addEventListener("change", () => {
window.storage.setItem("settings-special-effects", this.element.querySelector(".hud-settings-special-effects").checked);
});
this.element.querySelector(".hud-settings-delete-chat").addEventListener("change", () => {
const a = this.element.querySelector(".hud-settings-delete-chat").checked;
window.storage.setItem("settings-delete-chat", a);
if (a == 1) {
while (document.getElementsByClassName("hud-chat-message").length > 100) {
document.getElementsByClassName("hud-chat-message")[0].remove();
}
}
});
if (window.storage.getItem("settings-language-filter") == null) {
window.storage.setItem("settings-language-filter", "true");
}
this.element.querySelector(".hud-settings-language-filter").checked = window.storage.getItem("settings-language-filter") === "true";
if (window.storage.getItem("settings-building-bar") == null) {
window.storage.setItem("settings-building-bar", "true");
}
this.element.querySelector(".hud-settings-building-bar").checked = window.storage.getItem("settings-building-bar") === "true";
this.element.querySelector(".hud-settings-special-effects").checked = window.storage.getItem("settings-special-effects") === "true";
this.element.querySelector(".hud-settings-delete-chat").checked = window.storage.getItem("settings-delete-chat") === "true";
Jj.network.languageFilterEnabled = this.element.querySelector(".hud-settings-language-filter").checked;
Jj.ui.components.uiBuildingBar.element.classList[this.element.querySelector(".hud-settings-building-bar").checked ? "add" : "remove"]("remain-visible");
}
}
class Ui extends d {
constructor(a) {
const b = document.createElement("div");
b.className = "hud-spells-item";
super(b);
this.disabled = false;
this.spellData = a;
this.element.innerHTML = "\n <img class=\"hud-spells-item-preview\" src=\"http://zombia.io/asset/images/Ui/Icons/Spells/" + a.name + (a.tiers > 0 ? "Tier1" : "") + ".svg\">\n <strong>" + a.name.split(/(?=[A-Z])/).join(" ") + "</strong> <small class=\"hud-spells-item-tier\" style=\"color: rgba(255, 255, 255, 0.4); font-size: 12px;\">Tier 1</small>\n <div class=\"hud-spells-item-description\">" + (a.description || "") + "</div>\n <div class=\"hud-spells-item-stats\"></div>\n <div class=\"hud-spells-item-cost\"></div>\n ";
this.tierElem = this.element.querySelector(".hud-spells-item-tier");
this.previewElem = this.element.querySelector(".hud-spells-item-preview");
this.statsElem = this.element.querySelector(".hud-spells-item-stats");
this.costElem = this.element.querySelector(".hud-spells-item-cost");
this.element.addEventListener("click", this.onClick.bind(this));
this.element.addEventListener("mousedown", this.onMouseDown);
this.update();
}
init() {
Jj.eventEmitter.on("BuySpellResponseRpcReceived", a => {
if (a.name == this.spellData.name) {
this.disabled = true;
this.element.classList.add("is-disabled");
setTimeout(() => {
this.disabled = false;
this.element.classList.remove("is-disabled");
}, a.cooldown);
}
});
Jj.eventEmitter.on("ClearActiveSpellRpcReceived", a => {
if (a.name == this.spellData.name) {
this.disabled = false;
this.element.classList.remove("is-disabled");
}
});
}
onClick() {
if (!this.disabled) {
Jj.network.sendRpc({
name: "BuySpell",
spellName: this.spellData.name
});
}
}
onMouseDown(a) {
a.stopPropagation();
a.preventDefault();
}
update(a = 0) {
const b = a >= (this.spellData.tiers || 1);
this.element.classList[b ? "add" : "remove"]("is-disabled");
this.disabled = b;
const c = {};
let d = "";
const e = b ? a : a + 1;
let f = "";
for (const b in c) {
if (this.spellData[c[b]]) {
d += "<p>" + b + ": <strong class=\"hud-stats-current\">" + (this.spellData[c[b]][a - 1] || "—") + "</strong></p>";
f += "<p>" + b + ": <strong class=\"hud-stats-next\">" + this.spellData[c[b]][e - 1] + "</strong></p>";
}
}
this.statsElem.innerHTML = d !== "" && f !== "" ? "<div class=\"hud-stats-current hud-stats-values\">" + d + "</div>\n <div class=\"hud-stats-next hud-stats-values\">" + f + "</div>" : "";
this.previewElem = this.element.querySelector(".hud-spells-item-preview").src = "http://zombia.io/asset/images/Ui/Icons/Spells/" + this.spellData.name + (this.spellData.tiers > 0 ? "Tier" + e : "") + ".svg";
if (this.spellData.tiers !== undefined) {
this.tierElem.textContent = "Tier " + e;
} else {
this.tierElem.textContent = "";
}
this.costElem.innerHTML = "<small>" + i.createResourceCostString(this.spellData, e, 1, false).elem.split(", ").join("<br>") + "</small>";
}
}
class Vi extends Oi {
constructor() {
super("Spells");
Jj.ui.components.uiMenuGridSpells = this;
this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Spells</h3>\n <div id=\"hud-spells-grid\" class=\"hud-spells-grid\"></div>\n ";
this.init();
}
init() {
Jj.eventEmitter.on("SpellInfoRpcReceived", this.onSpellDataReceived.bind(this));
}
onSpellDataReceived(a) {
document.getElementById("hud-spells-grid").innerHTML = "";
const b = JSON.parse(a.json);
for (let c in b) {
const a = b[c];
const d = new Ui(a);
document.getElementById("hud-spells-grid").appendChild(d.element);
d.init?.();
}
}
}
const Wi = c(6);
const Xi = c(573);
Wi.loadPlugin(Xi);
Wi.setDefaults({
randomize: false
});
class Yi extends Oi {
constructor() {
super("Parties");
Jj.ui.components.uiMenuGridParties = this;
this.partyLeader = 0;
this.element.innerHTML = "\n <div class=\"hud-grid-exit\"></div>\n <h3>Parties</h3>\n <div class=\"hud-party-tabs\">\n <a class=\"hud-party-tabs-link\">Your Party</a>\n <a class=\"hud-party-tabs-link\">Open Parties</a>\n </div>\n <div id=\"hud-party-members\" class=\"hud-party-members\"></div>\n <div id=\"hud-party-grid\" class=\"hud-party-grid\">\n <div class=\"hud-party-joining\">Requesting to join...</div>\n <button class=\"hud-party-cancel-request\">Cancel your request</button>\n <div class=\"hud-party-empty\">No parties are currently available to join.</div>\n </div>\n <div class=\"hud-party-actions\">\n <input type=\"text\" class=\"hud-party-name\" placeholder=\"Your party\"s name...\" maxlength=\"16\">\n <input type=\"text\" class=\"hud-party-key\" placeholder=\"Your party link...\">\n <a class=\"hud-party-key-randomise\">\n <a class=\"btn btn-red hud-party-leave\">Leave Party</a>\n <a class=\"btn hud-party-visibility is-private\">Private</a>\n </div>\n ";
this.membersElem = this.element.querySelector(".hud-party-members");
this.memberElems = {};
this.requestedUids = {};
this.gridJoiningElem = this.element.querySelector(".hud-party-joining");
this.cancelRequestButton = this.element.querySelector(".hud-party-cancel-request");
this.cancelRequestButton.addEventListener("mouseup", () => {
Jj.network.sendRpc({
name: "CancelPartyRequest"
});
});
this.gridEmptyElem = this.element.querySelector(".hud-party-empty");
this.gridElem = this.element.querySelector(".hud-party-grid");
this.partyNameElem = this.element.querySelector(".hud-party-name");
this.partyNameElem.addEventListener("keydown", a => {
a.stopPropagation();
});
this.partyNameElem.addEventListener("keyup", this.onPartyNameKeyUp.bind(this));
this.partyKeyElem = this.element.querySelector(".hud-party-key");
this.partyKeyElem.addEventListener("focus", () => {
this.partyKeyElem.select();
});
this.partyKeyElem.addEventListener("keydown", a => {
a.stopPropagation();
});
this.partyKeyElem.addEventListener("keyup", a => {
a.stopPropagation();
});
this.leaveElem = this.element.querySelector(".hud-party-leave");
this.leaveElem.addEventListener("click", this.leaveParty.bind(this));
this.visibilityElem = this.element.querySelector(".hud-party-visibility");
this.visibilityElem.addEventListener("click", this.toggleVisiblity.bind(this));
this.randomiseKeyButton = this.element.querySelector(".hud-party-key-randomise");
this.randomiseKeyButton.addEventListener("click", () => {
Jj.network.sendRpc({
name: "RandomisePartyKey"
});
});
this.partyElems = {};
this.partyData = null;
this.init();
}
init() {
const a = this.element.querySelectorAll(".hud-party-tabs-link");
for (let b of a) {
b.addEventListener("mouseup", this.setTab.bind(this, b));
}
this.setTab(a[0]);
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("UpdatePartyRpcReceived", this.onPartyUpdate.bind(this));
Jj.eventEmitter.on("PartyKeyRpcReceived", this.onPartyKey.bind(this));
Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onMembersUpdated.bind(this));
Jj.eventEmitter.on("PartyRequestRpcReceived", this.onPartyRequest.bind(this));
Jj.eventEmitter.on("PartyRequestMetRpcReceived", this.onPartyRequestMet.bind(this));
Jj.eventEmitter.on("PartyRequestCancelledRpcReceived", this.onPartyRequestCancelled.bind(this));
}
onEnterWorld() {
this.gridJoiningElem.style.display = "none";
this.cancelRequestButton.style.display = "none";
}
setTab(a) {
const b = this.element.querySelectorAll(".hud-party-tabs-link");
a.classList.add("is-active");
for (let c of b) {
if (c.textContent !== a.textContent) {
c.classList.remove("is-active");
}
}
this.gridElem.style.display = a.textContent == "Your Party" ? "none" : "block";
this.membersElem.style.display = a.textContent == "Your Party" ? "block" : "none";
}
onPartyUpdate(a) {
let b = {};
for (let c in a) {
b[a[c].partyId] = a[c];
}
this.partyData = b;
this.update();
if (!a.find(e => e.partyId == game.ui.playerTick?.partyId)?.isOpen && game.ui.playerTick?.uid == game.ui.playerPartyLeader) game.network.sendPacket(9, { response: { name: 'TogglePartyVisibility' } })
}
update() {
for (let a in this.partyData) {
if (!(a in this.partyElems) && this.partyData[a].isOpen !== false) {
for (let a in this.partyElems) {
this.partyElems[a].remove();
delete this.partyElems[a];
}
}
}
const a = {};
for (let b in this.partyElems) {
a[b] = true;
}
for (let b in this.partyData) {
if (b == Jj.ui.getPlayerTick()?.partyId && this.partyData[b].isOpen === false) {
continue;
}
delete a[b];
const c = this.partyData[b];
let d = this.partyElems[b];
if (!this.partyElems[b]) {
d = document.createElement("div");
d.className = "hud-party-link";
this.gridElem.appendChild(d);
this.partyElems[b] = d;
d.addEventListener("click", this.onPartyClick.bind(this, c.partyId));
}
if (Jj.ui.getPlayerTick()?.partyId == b) {
d.classList.add("is-active");
d.classList.remove("is-disabled");
} else if (c.memberCount >= c.memberLimit) {
d.classList.remove("is-active");
d.classList.add("is-disabled");
} else {
d.classList.remove("is-active");
d.classList.remove("is-disabled");
}
d.innerHTML = "\n <strong id=\"name\"></strong>\n <span>" + c.memberCount + "/" + c.memberLimit + "</span>";
d.querySelector("#name").appendChild(document.createTextNode(Jj.network.languageFilterEnabled ? Wi(c.partyName) : c.partyName));
}
for (let b in a) {
if (this.partyElems[b]) {
this.partyElems[b].remove();
delete this.partyElems[b];
}
}
this.gridEmptyElem.style.display = Object.keys(this.partyElems || {}).length > 0 ? "none" : "block";
const b = this.partyData?.[Jj.ui.getPlayerTick()?.partyId];
if (!b) {
return;
}
this.partyKeyElem.removeAttribute("disabled");
if (document.activeElement !== this.partyNameElem) {
this.partyNameElem.value = b.partyName;
}
const c = Jj.renderer.world.localPlayer === this.partyLeader;
this.visibilityElem.classList[c ? "remove" : "add"]("is-disabled");
if (c) {
this.partyNameElem.removeAttribute("disabled");
} else {
this.partyNameElem.setAttribute("disabled", "true");
}
this.visibilityElem.classList[b.isOpen ? "remove" : "add"]("is-private");
this.visibilityElem.innerText = b.isOpen ? "Public" : "Private";
}
onPartyKey(a) {
Jj.ui.partyKey = a.partyKey;
this.partyKeyElem.value = window.location.protocol + "//" + document.location.hostname + "/#/" + Jj.network.options.serverData.id + "/" + a.partyKey;
this.update();
}
onPartyNameKeyUp(a) {
Jj.network.sendRpc({
name: "SetPartyName",
partyName: this.partyNameElem.value
});
a.stopPropagation();
}
onMembersUpdated(a) {
this.partyLeader = a.find(a => a.isLeader === true).uid;
const b = Jj.renderer.world.localPlayer === this.partyLeader;
Jj.ui.playerPartyLeader = this.partyLeader;
for (let b in this.memberElems) {
this.memberElems[b].remove();
delete this.memberElems[b];
}
if (a.length <= 1) {
this.leaveElem.classList.add("is-disabled");
} else {
this.leaveElem.classList.remove("is-disabled");
}
for (let c in a) {
const d = document.createElement("div");
const e = a[c];
d.className = "hud-member-link";
d.innerHTML = "\n <strong id=\"name\"></strong>\n <small>" + (e.uid == this.partyLeader ? "Leader" : "Member") + "</small>\n <div class=\"hud-member-actions\">\n <a class=\"hud-member-can-place btn " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + " " + (e.canPlace ? " is-active" : "") + "\">\n <span class=\"hud-party-permissions-tick\">✓</span> Can place\n </a>\n <a class=\"hud-member-can-sell btn " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + " " + (e.canSell ? " is-active" : "") + "\">\n <span class=\"hud-party-permissions-tick\">✓</span> Can sell\n </a>\n <a class=\"hud-member-kick btn btn-red " + (b && e.uid !== this.partyLeader ? "" : " is-disabled") + "\">Kick</a>\n </div>\n ";
d.querySelector("#name").appendChild(document.createTextNode(Jj.network.languageFilterEnabled ? Wi(e.name) : e.name));
this.membersElem.appendChild(d);
this.memberElems[e.uid] = d;
if (b && e.uid !== this.partyLeader) {
d.querySelector(".hud-member-kick").addEventListener("click", this.onPartyMemberKick.bind(this, e));
d.querySelector(".hud-member-can-place").addEventListener("click", this.onPartyMemberPermissionToggle.bind(this, e.uid, "Place"));
d.querySelector(".hud-member-can-sell").addEventListener("click", this.onPartyMemberPermissionToggle.bind(this, e.uid, "Sell"));
}
}
this.randomiseKeyButton.classList[b ? "remove" : "add"]("locked");
}
leaveParty() {
Jj.network.sendRpc({
name: "LeaveParty"
});
}
toggleVisiblity() {
Jj.network.sendRpc({
name: "TogglePartyVisibility"
});
}
onPartyClick(a) {
if (a != Jj.ui.getPlayerTick()?.partyId) {
if (Jj.ui.factory !== null) {
Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to abandon your base?", 10000, () => {
this.requestParty(a);
});
} else {
this.requestParty(a);
}
}
}
requestParty(a) {
if (!this.partyElems[a].classList.contains("is-disabled")) {
this.gridJoiningElem.style.display = "block";
this.cancelRequestButton.style.display = "block";
this.gridElem.classList.add("is-disabled");
Jj.network.sendRpc({
name: "JoinParty",
partyId: a
});
}
}
onPartyMemberKick(a) {
Jj.ui.components.uiPopupOverlay.showConfirmation("Are you sure you want to kick <b>" + a.name + "</b> from your party?", 10000, () => {
Jj.network.sendRpc({
name: "KickMember",
uid: parseInt(a.uid)
});
});
}
onPartyMemberPermissionToggle(a, b) {
Jj.network.sendRpc({
name: "TogglePartyPermission",
permission: b,
uid: parseInt(a)
});
}
onPartyRequest(a) {
this.requestedUids[a.uid] = Jj.ui.components.uiPopupOverlay.showConfirmation("<b>" + a.name + "</b> has requested to join your party.", 30000, () => {
Jj.network.sendRpc({
name: "PartyRequestResponse",
accepted: true,
uid: parseInt(a.uid)
});
}, () => {
Jj.network.sendRpc({
name: "PartyRequestResponse",
accepted: false,
uid: parseInt(a.uid)
});
});
for (let i in sockets) {
if (sockets[i].myPlayer.uid == a.uid) {
game.network.sendPacket(9, { response: { name: 'PartyRequestResponse', accepted: true, uid: a.uid } });
Array.from(document.getElementsByClassName("hud-popup-confirmation hud-popup-confirmation is-visible")).forEach(e => e.remove()) //removes confirmation divs
}
}
}
onPartyRequestMet() {
this.gridJoiningElem.style.display = "none";
this.cancelRequestButton.style.display = "none";
this.gridElem.classList.remove("is-disabled");
}
onPartyRequestCancelled(a) {
Jj.ui.components.uiPopupOverlay.removePopup(this.requestedUids[a.uid]);
delete this.requestedUids[a.uid];
}
}
class script extends Oi {
constructor() {
super("Menu");
this.element.innerHTML = `\n <div class=\"hud-grid-exit\"></div>\n <h3>Script</h3>\n`;
}
}
class Zi extends d {
constructor(a) {
let b;
let c = document.createElement("div");
c.className = "hud-icon";
c.setAttribute("icon-type", a);
super(c);
this.type = a;
this.visible = false;
this.element.addEventListener("click", this.onClick.bind(this));
this.element.addEventListener("mousedown", this.onMouseClick.bind(this));
this.element.addEventListener("mouseup", this.onMouseClick.bind(this));
switch (this.type) {
case "Shop":
this.menuGrid = new Si();
b = 66;
break;
case "Settings":
this.menuGrid = new Ti();
break;
case "Spells":
this.menuGrid = new Vi();
break;
case "Parties":
b = 80;
this.menuGrid = new Yi();
break;
case "Menu":
this.menuGrid = new script();
}
document.body.appendChild(this.menuGrid.element);
this.menuGrid.element.querySelector(".hud-grid-exit").addEventListener("click", () => {
this.hide();
});
if (b !== undefined) {
Jj.eventEmitter.on(b + "Up", this.onClick.bind(this));
}
Jj.eventEmitter.on("27Up", this.hide.bind(this));
}
onClick(a) {
if (Jj.network.connected === true && Jj.ui.playerTick?.health > 0) {
for (let a in Jj.ui.components.uiTopBar.menuIcons) {
if (a == this.type) {
if (this.visible) {
this.hide();
} else {
this.show();
Jj.ui.components.uiPlacementOverlay.cancelPlacing();
Jj.ui.components.uiBuildingOverlay.stopWatching();
}
} else {
Jj.ui.components.uiTopBar.menuIcons[a].hide();
}
}
}
if (a) {
a.stopPropagation();
a.preventDefault();
}
}
show() {
this.visible = true;
this.menuGrid.show();
}
hide() {
this.visible = false;
this.menuGrid.hide();
}
onMouseClick(a) {
a.stopPropagation();
a.preventDefault();
}
}
class $i extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-top-bar";
a.innerHTML = "\n <div id=\"hud-top-bar-left\" class=\"hud-top-bar-left\"></div>\n <div id=\"hud-top-bar-tools\" class=\"hud-top-bar-tools\"></div>\n <div id=\"hud-top-bar-right\" class=\"hud-top-bar-right\"></div>\n ";
document.getElementById("hud-top").appendChild(a);
super(a);
this.tools = {};
}
init() {
this.menuIcons = {};
for (const a of ["Shop", "Settings"]) {
const b = new Zi(a);
document.getElementById("hud-top-bar-left").appendChild(b.element);
this.menuIcons[a] = b;
}
for (const a of ["Spells", "Parties", "Menu"]) {
const b = new Zi(a);
document.getElementById("hud-top-bar-right").appendChild(b.element);
this.menuIcons[a] = b;
}
for (let a in this.menuIcons) {
this.menuIcons[a].element.addEventListener("mouseenter", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.menuIcons[a].element);
});
this.menuIcons[a].element.addEventListener("mouseleave", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.hide();
});
}
Jj.eventEmitter.on("ToolDataReceived", this.onToolDataReceived.bind(this));
Jj.eventEmitter.on("81Up", this.onToggleWeapon.bind(this));
Jj.eventEmitter.on("SetToolRpcReceived", a => {
for (const b of a) {
if (this.tools[b.toolName] !== undefined) {
this.tools[b.toolName] = b.toolTier > 0;
}
}
});
}
onToolDataReceived() {
this.tools = {};
const a = Jj.ui.toolData;
const b = document.getElementById("hud-top-bar-tools");
b.innerHTML = "";
for (let c in a) {
const d = a[c];
if (d.class !== "Tools") {
continue;
}
this.tools[d.name] = false;
const e = new Ni(d.name);
b.appendChild(e.element);
e.init();
}
}
onToggleWeapon() {
const a = [];
for (let b in this.tools) {
if (this.tools[b] === true) {
a.push(b);
}
}
let b = a[0];
let c = false;
for (let d of a) {
if (c) {
b = d;
break;
}
if (d == Jj.ui.playerTick.weaponName) {
c = true;
}
}
if (b !== Jj.ui.playerTick.weaponName) {
Jj.network.sendRpc({
name: "EquipTool",
toolName: b
});
}
}
}
class _i extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-resources";
a.innerHTML = "\n <div class=\"hud-resources-resource hud-resources-wood\" id=\"hud-resources-wood\"></div>\n <div class=\"hud-resources-resource hud-resources-stone\" id=\"hud-resources-stone\"></div>\n <div class=\"hud-resources-resource hud-resources-gold\" id=\"hud-resources-gold\"></div>\n <div class=\"hud-resources-resource hud-resources-tokens\" id=\"hud-resources-tokens\"></div>";
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.woodElem = document.getElementById("hud-resources-wood");
this.stoneElem = document.getElementById("hud-resources-stone");
this.goldElem = document.getElementById("hud-resources-gold");
this.tokensElem = document.getElementById("hud-resources-tokens");
}
init() {
const a = ["wood", "stone", "gold", "tokens"];
for (let b of a) {
Jj.eventEmitter.on(b + "CountUpdated", () => {
let a = Math.round(Jj.ui.getPlayerTick()[b]);
if (a >= 10000) {
a = aj(a, 2);
}
this[b + "Elem"].innerHTML = a;
});
}
}
}
const aj = (a, b) => {
const c = ["K", "M", "B", "T", "q", "Q", "s", "S", "O", "N", "D"];
b = Math.pow(10, b);
for (let d = c.length - 1; d >= 0; d--) {
const e = Math.pow(10, (d + 1) * 3);
if (e <= a) {
if ((a = Math.round(a * b / e) / b) == 1000 && d < c.length - 1) {
a = 1;
d++;
}
a += c[d];
break;
}
}
return a;
};
class bj extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-popup-overlay";
document.getElementById("hud").appendChild(a);
let b = document.createElement("div");
b.className = "hud-confirmation-overlay";
document.getElementById("hud").appendChild(b);
super(a);
this.popupElems = {};
this.popupTimers = {};
this.hintMessages = {};
this.confirmationOverlayDiv = b;
this.confirmationMessages = {};
}
init() {
Jj.eventEmitter.on("FailureRpcReceived", this.onFailure.bind(this));
}
onFailure(a) {
this.showHint(a.failure, 4000);
}
showHint(a, b = 8000) {
for (const c in this.hintMessages) {
if (this.hintMessages[c] == a) {
return null;
}
}
const c = Math.round(Math.random() * 10000000);
const d = document.createElement("div");
d.className = "hud-popup-message hud-popup-hint is-visible";
d.textContent = a;
this.element.insertBefore(d, this.element.firstChild);
this.popupElems[c] = d;
this.popupTimers[c] = setTimeout(() => {
this.removePopup(c);
}, b);
this.hintMessages[c] = a;
return c;
}
showConfirmation(a, b = 30000, c = null, d = null) {
const e = Math.round(Math.random() * 10000000);
const f = document.createElement("div");
f.className = "hud-popup-confirmation hud-popup-confirmation is-visible";
f.innerHTML = "\n <span>" + a + "</span>\n <div class=\"hud-confirmation-actions\">\n <a class=\"btn btn-green hud-confirmation-accept\">✓</a>\n <a class=\"btn btn-red hud-confirmation-decline\">✗</a>\n </div>\n ";
f.addEventListener("mousedown", a => a.stopPropagation());
this.confirmationOverlayDiv.appendChild(f);
this.popupElems[e] = f;
const g = f.querySelector(".hud-confirmation-accept");
const h = f.querySelector(".hud-confirmation-decline");
g.addEventListener("mousedown", a => a.stopPropagation());
g.addEventListener("click", a => {
a.stopPropagation();
this.removePopup(e);
if (c) {
c();
}
});
h.addEventListener("mousedown", a => a.stopPropagation());
h.addEventListener("click", a => {
a.stopPropagation();
this.removePopup(e);
if (d) {
d();
}
});
this.popupTimers[e] = setTimeout(() => {
this.removePopup(e);
}, b);
return e;
}
removePopup(a) {
const b = this.popupElems[a];
if (b) {
if (this.popupTimers[a]) {
clearInterval(this.popupTimers[a]);
}
delete this.popupElems[a];
delete this.popupTimers[a];
delete this.confirmationMessages[a];
delete this.hintMessages[a];
b.classList.remove("is-visible");
setTimeout(() => {
b.remove();
}, 500);
}
}
}
class cj extends d {
constructor() {
const a = document.createElement("div");
a.className = a.id = "hud-pip-overlay";
document.getElementById("hud").appendChild(a);
super(a);
this.resourceGainElems = {};
this.damageElems = {};
this.lastPlayerTick = {
wood: 0,
stone: 0,
gold: 0,
tokens: 0
};
}
init() {
Jj.eventEmitter.on("PlayerTickUpdated", this.onPlayerTickUpdated.bind(this));
}
onPlayerTickUpdated() {
const a = Jj.ui.getPlayerTick();
const b = Jj.ui.getLastPlayerTick();
if (!a || !b) {
return;
}
if (Jj.renderer.replicator.getMsSinceTick(Jj.renderer.replicator.currentTick.tick) > 500) {
return;
}
for (let b = 0; b < a.lastPlayerDamages.length; b += 2) {
this.showDamage(a.lastPlayerDamages[b], a.lastPlayerDamages[b + 1]);
}
const c = ["gold", "wood", "stone", "tokens"];
for (let d of c) {
if (d == "gold" && a[d] > b[d]) {
continue;
}
if (a[d] == b[d]) {
continue;
}
const c = a[d] - b[d];
this.showResourceGain(a.uid, d, c);
}
}
showDamage(a, b) {
const c = Jj.renderer.replicator.currentTick.tick;
for (let d in this.damageElems) {
if (this.damageElems[d].uid == a && this.damageElems[d].value == b && this.damageElems[d].tick == c || this.damageElems[d].tick == c - 1) {
return;
}
}
const d = Math.round(Math.random() * 10000);
const e = document.createElement("div");
e.className = "hud-pip-damage";
e.innerHTML = b.toLocaleString();
const f = Jj.renderer.world.entities[a];
if (!f) {
return;
}
const g = Jj.renderer.worldToScreen(f.getPositionX(), f.getPositionY());
this.element.appendChild(e);
e.style.left = g.x - e.offsetWidth / 2 + "px";
e.style.top = g.y - e.offsetHeight - 10 + "px";
this.damageElems[d] = {
uid: a,
value: b,
tick: c,
elem: e
};
setTimeout(() => {
e.remove();
delete this.damageElems[d].elem;
}, 500);
}
showResourceGain(a, b, c) {
if (Math.abs(c) < 0.5) {
return;
}
c = Math.round(c);
const d = Math.round(Math.random() * 10000);
const e = document.createElement("div");
e.className = "hud-pip-resource-gain";
e.innerText = (c > 0 ? "+" + c.toLocaleString() : c.toLocaleString()) + " " + b;
const f = Jj.renderer.world.entities[a];
if (!f) {
return;
}
this.element.appendChild(e);
const g = Jj.renderer.worldToScreen(f.getPositionX(), f.getPositionY());
e.style.left = g.x - e.offsetWidth / 2 + "px";
e.style.top = g.y - e.offsetHeight - 70 + Object.keys(this.resourceGainElems).length * 16 + "px";
this.resourceGainElems[d] = e;
setTimeout(() => {
e.remove();
}, 500);
setTimeout(() => {
delete this.resourceGainElems[d];
}, 250);
}
}
class dj extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-respawn";
a.innerHTML = "\n <div class=\"hud-respawn-wrapper\">\n <div class=\"hud-respawn-main\">\n <div class=\"hud-respawn-info\">\n <h2>Oh no...</h2>\n <p class=\"hud-respawn-text\"></p>\n <button type=\"submit\" class=\"hud-respawn-btn\">Respawn</button>\n <div class=\"hud-respawn-share\">\n <a href=\"https://discord.gg/4cxREnV4WE\" target=\"_blank\" class=\"btn btn-discord\"></a>\n </div>\n </div>\n </div>\n </div>";
document.getElementById("hud").appendChild(a);
super(a);
this.respawnTextElem = this.element.querySelector(".hud-respawn-text");
this.element.querySelector(".hud-respawn-btn").addEventListener("mouseup", () => {
Jj.network.sendRpc({
name: "Respawn"
});
});
}
init() {
Jj.eventEmitter.on("DeadRpcReceived", this.onDead.bind(this));
Jj.eventEmitter.on("RespawnedRpcReceived", this.onRespawned.bind(this));
}
onDead(a) {
this.show();
let b = "a staggering";
if (a.wave <= 5) {
b = "a disappointing";
} else if (a.wave <= 50) {
b = "a fine";
} else if (a.wave <= 100) {
b = "a decent";
} else if (a.wave <= 300) {
b = "a strong";
} else if (a.wave <= 1000) {
b = "an impressive";
} else if (a.wave <= 20000) {
b = "a staggering";
} else if (a.wave > 20000) {
b = "an amazing (I sure hope you didn't cheat)";
}
switch (a.reason) {
case "FactoryDied":
this.respawnTextElem.innerHTML = "Your base was destroyed after " + b + " " + parseInt(a.wave)?.toLocaleString() + " waves and " + parseInt(a.score)?.toLocaleString() + " score. Totalling " + parseInt(a.partyScore).toLocaleString() + " score across your party.";
break;
case "KilledWithBase":
this.respawnTextElem.innerHTML = "Your player got killed at wave " + parseInt(a.wave)?.toLocaleString() + " with a score of " + parseInt(a.score)?.toLocaleString() + "; but fear not! Your base remains.";
break;
case "Killed":
this.respawnTextElem.innerHTML = "Your player got killed. Too bad you don't have a base to return to.";
}
Jj.ui.components.uiMenuGridParties.hide();
Jj.ui.components.uiMenuGridSettings.hide();
Jj.ui.components.uiMenuGridShop.hide();
Jj.ui.components.uiMenuGridSpells.hide();
}
onRespawned() {
this.hide();
}
}
class ej extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-day-night-ticker";
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.clockCircle = document.createElement("div");
this.clockCircle.className = "hud-day-night-ticker-clock";
this.element.appendChild(this.clockCircle);
this.waveElement = document.createElement("div");
this.waveElement.className = "hud-day-night-ticker-wave";
this.element.appendChild(this.waveElement);
this.lastArmRotation = 0;
this.announcedNight = false;
}
init() {
Jj.eventEmitter.on("UpdateDayNightCycleRpcReceived", this.onDayNightCycleData.bind(this));
Jj.eventEmitter.on("RendererUpdated", this.onRendererUpdate.bind(this));
Jj.eventEmitter.on("waveCountUpdated", () => {
this.waveElement.innerHTML = "<span>" + Jj.ui.getPlayerTick().wave.toLocaleString() + "</span>";
});
}
onDayNightCycleData(a) {
this.nightLength = a.nightLength;
this.dayLength = a.dayLength;
this.cycleLength = this.dayLength + this.nightLength;
let b = this.dayLength / this.cycleLength * 360;
this.clockCircle.style.background = "conic-gradient(#d6ab35ff 0deg " + b + "deg, #8473d4ff " + b + "deg 0deg)";
}
onRendererUpdate() {
if (this.cycleLength == null) {
return;
}
const a = Jj.renderer.replicator.getTickIndex();
const b = this.cycleLength - a % this.cycleLength;
const c = a % this.cycleLength < this.dayLength;
if (c === true) {
let b = this.dayLength - a % this.cycleLength;
if (this.announcedNight === false && b <= this.dayLength / 5) {
this.announcedNight = true;
Jj.ui.components.uiAnnouncementOverlay.showAnnouncement("Night is fast approaching. Get to safety...", this.dayLength / 5 * Jj.renderer.replicator.msPerTick);
}
} else if (c === false) {
this.announcedNight = false;
}
const d = b / this.cycleLength * 360;
if (d < 0) {
return;
}
const e = i.interpolateYaw(this.lastArmRotation, d);
this.clockCircle.style.rotate = e + "deg";
this.lastArmRotation = e;
}
}
class fj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-day-night-overlay";
a.id = "hud-day-night-overlay";
document.getElementById("hud").appendChild(a);
super(a);
}
init() {
Jj.eventEmitter.on("UpdateDayNightCycleRpcReceived", this.onDayNightCycleData.bind(this));
Jj.eventEmitter.on("RendererUpdated", this.update.bind(this));
}
update() {
if (document.getElementsByClassName("hud-settings-day-night-opacity")[0].checked) {
this.element.style.opacity = "0";
return;
}
const a = Jj.renderer.replicator.getTickIndex();
let b = 0;
let c = 0;
let d = 0;
if (a % this.cycleLength < this.dayLength == 1) {
b = 1 - (this.dayLength - a % this.cycleLength) / this.dayLength;
d = b < 0.2 ? (1 - b / 0.2) * 0.5 : b > 0.8 ? (b - 0.8) / 0.2 * 0.5 : 0;
} else {
b = 1;
c = 1 - (this.nightLength - (a - this.dayLength) % this.cycleLength) / this.nightLength;
d = c < 0.2 ? 0.5 + c / 0.2 * 0.5 : c > 0.8 ? 0.5 + (1 - (c - 0.8) / 0.2) * 0.5 : 1;
}
this.element.style.opacity = d.toString();
}
onDayNightCycleData(a) {
this.nightLength = a.nightLength;
this.dayLength = a.dayLength;
this.cycleLength = this.dayLength + this.nightLength;
}
}
class gj extends d {
constructor() {
let a = document.createElement("div");
a.className = "hud-announcement-overlay";
document.getElementById("hud").appendChild(a);
super(a);
}
showAnnouncement(a, b = 8000) {
const c = document.createElement("div");
c.className = "hud-announcement-message";
c.style["animation-duration"] = b + "ms";
c.innerHTML = a;
this.element.appendChild(c);
setTimeout(() => {
c.remove();
}, b);
}
}
const hj = c(6);
const ij = c(573);
hj.loadPlugin(ij);
hj.setDefaults({
randomize: false
});
class jj extends d {
constructor() {
const a = document.createElement("div");
a.id = "hud-leaderboard";
a.className = "hud-leaderboard";
a.innerHTML = "\n <div class=\"hud-leaderboard-player is-header\">\n <span class=\"player-rank\">Rank</span>\n <span class=\"player-name\">Name</span>\n <span class=\"player-score\">Score</span>\n <span class=\"player-wave\">Wave</span>\n </div>\n <div class=\"hud-leaderboard-players\"></div>\n ";
document.getElementById("hud-top").appendChild(a);
super(a);
this.playerElems = [];
this.playerRankElems = [];
this.playerNameElems = [];
this.playerScoreElems = [];
this.playerWaveElems = [];
this.playerNames = {};
this.leaderboardData = [];
this.playersElem = this.element.querySelector(".hud-leaderboard-players");
}
init() {
Jj.eventEmitter.on("UpdateLeaderboardRpcReceived", this.onLeaderboardData.bind(this));
}
update() {
this.playersElem.style.height = this.leaderboardData.length * 28 + "px";
setTimeout(() => {
for (let a = 0; a < this.leaderboardData.length; a++) {
const b = this.leaderboardData[a];
this.playerNames[b.uid] ||= b.name;
if (!(a in this.playerElems)) {
this.playerElems[a] = document.createElement("div");
this.playerElems[a].className = "hud-leaderboard-player";
this.playerRankElems[a] = document.createElement("span");
this.playerRankElems[a].className = "player-rank";
this.playerRankElems[a].innerHTML = "-";
this.playerNameElems[a] = document.createElement("strong");
this.playerNameElems[a].className = "player-name";
this.playerNameElems[a].innerHTML = "-";
this.playerScoreElems[a] = document.createElement("span");
this.playerScoreElems[a].className = "player-score";
this.playerScoreElems[a].innerHTML = "-";
this.playerWaveElems[a] = document.createElement("span");
this.playerWaveElems[a].className = "player-wave";
this.playerWaveElems[a].innerHTML = "-";
this.playerElems[a].appendChild(this.playerRankElems[a]);
this.playerElems[a].appendChild(this.playerNameElems[a]);
this.playerElems[a].appendChild(this.playerScoreElems[a]);
this.playerElems[a].appendChild(this.playerWaveElems[a]);
this.playersElem.appendChild(this.playerElems[a]);
}
if (Jj.renderer.world.localPlayer == b.uid) {
this.playerElems[a].classList.add("is-active");
} else {
this.playerElems[a].classList.remove("is-active");
}
this.playerElems[a].style.display = "block";
this.playerRankElems[a].innerText = "#" + b.rank;
this.playerNameElems[a].innerText = Jj.network.languageFilterEnabled ? hj(b.name) : b.name;
this.playerScoreElems[a].innerText = parseInt(b.score).toLocaleString();
this.playerWaveElems[a].innerHTML = b.wave === 0 ? "<small>—</small>" : parseInt(b.wave).toLocaleString();
}
}, 100);
if (this.leaderboardData.length < this.playerElems.length) {
for (let a = this.leaderboardData.length; a < this.playerElems.length; a++) {
this.playerElems[a].style.display = "none";
}
}
}
onLeaderboardData(a) {
this.leaderboardData = a;
this.update();
}
}
class kj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-party-member-indicator";
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.memberElements = {};
}
init() {
Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onMembersUpdated.bind(this));
}
onMembersUpdated(a) {
for (let b in this.memberElements) {
this.memberElements[b].remove();
delete this.memberElements[b];
}
for (let b of a) {
if (this.memberElements[b.uid] == null) {
this.memberElements[b.uid] = document.createElement("div");
this.memberElements[b.uid].className = "member-indicator";
this.element.appendChild(this.memberElements[b.uid]);
}
this.memberElements[b.uid].setAttribute("data-index", a.indexOf(b));
this.memberElements[b.uid].innerHTML = "<span>" + b.name.substring(0, 2) + "</span>";
}
}
}
class lj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-ui-armour-indicator";
a.setAttribute("item-type", "ZombieShield");
document.getElementById("hud-bottom").appendChild(a);
super(a);
this.element.addEventListener("mousedown", a => {
a.stopPropagation();
});
this.element.addEventListener("mouseenter", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.moveTo(this.element);
});
this.element.addEventListener("mouseleave", () => {
Jj.ui.components.uiBuildingBar.buildingTooltip.hide();
});
this.tier = 0;
}
init() {
Jj.eventEmitter.on("SetToolRpcReceived", a => {
for (let b of a) {
if (b.toolName == "ZombieShield") {
if (b.toolTier > 0) {
this.show();
} else {
this.hide();
}
this.tier = b.toolTier;
}
}
});
Jj.eventEmitter.on("EnterWorldResponse", this.hide.bind(this));
}
}
class mj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-active-spells";
super(a);
this.activeSpells = {};
document.getElementById("hud-right").appendChild(a);
}
init() {
Jj.eventEmitter.on("BuySpellResponseRpcReceived", this.createActiveSpellIcon.bind(this));
Jj.eventEmitter.on("ClearActiveSpellRpcReceived", a => {
this.clearActiveSpell(a.name);
});
}
createActiveSpellIcon(a) {
const b = document.createElement("img");
b.className = "hud-active-spell";
this.element.appendChild(b);
b.src = "http://zombia.io/asset/images/Ui/Icons/Spells/" + a.name + ".svg";
this.activeSpells[a.name] = b;
setTimeout(() => {
this.clearActiveSpell(a.name);
}, a.iconCooldown);
}
clearActiveSpell(a) {
this.activeSpells[a].remove();
}
}
class nj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-ui-walkthrough";
document.getElementById("hud").appendChild(a);
super(a);
if (window.storage.getItem("walkthrough_BuildingBar") == null) {
window.storage.setItem("walkthrough_BuildingBar", "false");
}
this.buildingBarIndicator = document.createElement("div");
this.buildingBarIndicator.className = "hud-ui-walkthrough building-bar";
this.buildingBarIndicator.innerHTML = "<h3>Hover to reveal buildings</h3>";
this.element.appendChild(this.buildingBarIndicator);
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorldResponse.bind(this));
}
onEnterWorldResponse(a) {
if (window.storage.getItem("walkthrough_BuildingBar") == "false" && window.storage.getItem("settings-building-bar") == "false") {
this.showBuildingBarIndicator();
}
}
showBuildingBarIndicator() {
this.buildingBarIndicator.style.display = "block";
}
hideBuildingBarIndicator() {
this.buildingBarIndicator.style.display = "none";
}
}
class oj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-ui-input-lock";
document.getElementById("hud").appendChild(a);
super(a);
this.timeVisible = 0;
}
toggle(a) {
this.element.classList.add("visible");
let b = Date.now();
this.timeVisible = b;
setTimeout(() => {
if (b == this.timeVisible) {
this.element.classList.remove("visible");
}
}, 3000);
this.element.classList[a ? "add" : "remove"]("enabled");
}
}
class pj extends d {
constructor() {
super(document.getElementById("hud"));
this.components = {};
this.components.uiIntro = new e();
this.components.uiIntroLeaderboard = new f();
this.components.uiReconnection = new g();
this.components.uiMap = new Ji();
this.components.uiBuildingBar = new k();
this.components.uiChat = new Mi();
this.components.uiTopBar = new $i();
this.components.uiResources = new _i();
this.components.uiPlacementOverlay = new Hi();
this.components.uiBuildingOverlay = new Ii();
this.components.uiPopupOverlay = new bj();
this.components.uiPipOverlay = new cj();
this.components.uiRespawn = new dj();
this.components.uiDayNightTicker = new ej();
this.components.uiDayNightOverlay = new fj();
this.components.uiAnnouncementOverlay = new gj();
this.components.uiLeaderboard = new jj();
this.components.uiPartyMemberIndicator = new kj();
this.components.uiArmourIndicator = new lj();
this.components.uiActiveSpells = new mj();
this.components.uiWalkthrough = new nj();
this.components.uiInputLock = new oj();
this.hasInitialised = false;
this.playerTick = null;
this.lastPlayerTick = null;
this.factory = null;
this.buildings = {};
this.buildingData = null;
this.mousePosition = {
x: 0,
y: 0
};
this.playerPartyMembers = [];
this.playerPartyLeader = false;
this.playerPartyCanSell = false;
this.playerPartyCanPlace = false;
}
init() {
if (!this.hasInitialised) {
this.hasInitialised = true;
for (let a in this.components) {
if (this.components[a].init) {
this.components[a].init();
}
}
Jj.eventEmitter.on("SocketOpened", this.onSocketOpened.bind(this));
Jj.eventEmitter.on("SocketClosed", this.onSocketClosed.bind(this));
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("BuildingInfoRpcReceived", this.onBuildingDataReceived.bind(this));
Jj.eventEmitter.on("ToolInfoRpcReceived", this.onItemDataReceived.bind(this));
Jj.eventEmitter.on("PartyMembersUpdatedRpcReceived", this.onPartyInfoUpdate.bind(this));
Jj.eventEmitter.on("mouseMoved", this.onMouseMoved.bind(this));
Jj.eventEmitter.on("mouseUp", this.onMouseUp.bind(this));
Jj.eventEmitter.on("mouseDown", this.onMouseDown.bind(this));
Jj.eventEmitter.on("rightMouseUp", this.onRightMouseUp.bind(this));
Jj.eventEmitter.on("PartyBuildingRpcReceived", this.onPartyBuildingUpdate.bind(this));
window.addEventListener("beforeunload", this.onBeforeUnload);
window.addEventListener("keydown", a => {
if (a.code == "Space" && a.target == document.body) {
a.preventDefault();
}
});
}
}
onEnterWorld() {
this.factory = null;
this.playerTick = null;
this.buildings = {};
}
onBuildingDataReceived(a) {
this.buildingData = JSON.parse(a.json);
for (const b in this.buildingData) {
this.buildingData[b].built = 0;
}
Jj.eventEmitter.emit("BuildingDataReceived");
}
onItemDataReceived(a) {
this.toolData = JSON.parse(a.json);
Jj.eventEmitter.emit("ToolDataReceived");
}
onPartyInfoUpdate(a) {
const b = a.length;
const c = Jj.renderer.world.getLocalPlayer();
this.playerPartyMembers = a;
this.playerPartyCanSell = a.find(a => a.uid === c).canSell === true;
this.playerPartyCanPlace = a.find(a => a.uid === c).canPlace === true;
Jj.eventEmitter.emit("PartyMembersUpdated", a);
for (const c in this.buildingData) {
const a = this.buildingData[c];
a.limit = a.limitPerMember * (a.limitStatic === false ? b : 1);
}
Jj.eventEmitter.emit("BuildingDataUpdated");
}
onMouseMoved({
event: a
}) {
this.mousePosition = {
x: a.clientX,
y: a.clientY
};
this.components.uiPlacementOverlay.update();
if (this.components.uiPlacementOverlay.isActive() && Jj.network.inputPacketManager.mouseDown === true) {
this.components.uiPlacementOverlay.placeBuilding();
}
}
onMouseDown({
event: a
}) {
if (this.components.uiPlacementOverlay.isActive()) {
this.components.uiPlacementOverlay.placeBuilding();
}
for (let b in this.components.uiTopBar.menuIcons) {
this.components.uiTopBar.menuIcons[b].hide();
}
}
onMouseUp({
event: a
}) {
if (this.components.uiReconnection.isVisible() || this.components.uiRespawn.isVisible()) {
return;
}
if (this.components.uiPlacementOverlay.isActive()) {
return;
}
for (let b in this.components.uiTopBar.menuIcons) {
this.components.uiTopBar.menuIcons[b].hide();
}
if (this.playerTick?.weaponName !== "Pickaxe") {
return this.components.uiBuildingOverlay.stopWatching();
}
const b = Jj.renderer.world;
const c = Jj.renderer.screenToWorld(this.mousePosition.x, this.mousePosition.y);
const d = b.entityGrid.getCellIndices(c.x, c.y, {
width: 1,
height: 1
});
const e = d.length > 0 && d[0];
if (e === false) {
return;
}
const f = b.entityGrid.getEntitiesInCell(e);
const g = this.components.uiBuildingOverlay;
for (const c in f) {
const a = parseInt(c);
if (a == g.buildingUid) {
return g.stopWatching();
}
const d = b.entities[a].getTargetTick();
for (const b in this.buildingData) {
if (b == d.model) {
g.stopWatching();
g.startWatching(a);
return;
}
}
}
g.stopWatching();
}
onRightMouseUp({
event: a
}) {
this.components.uiPlacementOverlay.cancelPlacing();
this.components.uiBuildingOverlay.stopWatching();
}
onSocketOpened() {
this.components.uiReconnection.hide();
}
onSocketClosed() {
this.components.uiMenuGridParties.hide();
this.components.uiMenuGridSettings.hide();
this.components.uiMenuGridShop.hide();
this.components.uiMenuGridSpells.hide();
this.components.uiRespawn.hide();
this.components.uiReconnection.show();
}
onBeforeUnload(a) {
if (Jj.getInWorld() || this.playerTick !== undefined || this.playerTick?.dead === 1) {
a.returnValue = "Leaving the page will cause you to lose all progress. Are you sure?";
return a.returnValue;
}
}
getFactory() {
return this.factory;
}
setPlayerTick(a) {
this.lastPlayerTick = this.playerTick;
this.playerTick = a;
for (let b of ["wood", "stone", "gold", "tokens", "wave"]) {
if (this.lastPlayerTick !== null) {
if (this.lastPlayerTick[b] !== this.playerTick[b]) {
Jj.eventEmitter.emit(b + "CountUpdated");
}
} else {
Jj.eventEmitter.emit(b + "CountUpdated");
}
}
Jj.eventEmitter.emit("PlayerTickUpdated", a);
}
getPlayerTick() {
return this.playerTick;
}
getLastPlayerTick() {
return this.lastPlayerTick;
}
onPartyBuildingUpdate(a) {
for (let b in a) {
const c = a[b];
if (c.dead == 1) {
delete this.buildings[c.uid];
} else {
this.buildings[c.uid] = c;
}
if (c.type == "Factory") {
this.factory = c.dead ? null : c;
for (const a in this.buildingData) {
this.buildingData[a].disabled = c.dead;
}
this.buildingData.Factory.disabled = !c.dead;
}
this.buildingData[c.type].built = 0;
for (const a in this.buildings) {
if (this.buildings[a].type == c.type) {
this.buildingData[c.type].built++;
}
}
}
for (let building of a) {
let { x, y, tier, type } = building;
let key = `${x}, ${y}, ${type}`;
if (building.dead && buildings.has(key)) {
missingBuildings.set(key, buildings.get(key))
};
if (!building.dead) {
if (missingBuildings.has(key)) {
missingBuildings.delete(key);
if (building.tier !== game.ui.factory.tier) {
buildingsToUpgrade.set(building.uid, building.uid)
};
};
if (buildingsToUpgrade.has(building.uid)) {
if (building.tier == game.ui.factory.tier) {
buildingsToUpgrade.delete(building.uid)
};
};
};
};
Jj.eventEmitter.emit("BuildingsUpdated", a);
}
}
class qj {
constructor() {
this.movementPackets = {};
this.lastSentYaw = 1;
this.hasBoundKeys = false;
this.mouseDown = false;
this.shiftDown = false;
this.inputsLocked = false;
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
}
toggleInputLock() {
if (Jj.network.connected) {
this.inputsLocked = !this.inputsLocked;
Jj.ui.components.uiInputLock.toggle(this.inputsLocked);
}
}
onEnterWorld() {
this.inputsLocked = false;
if (!this.hasBoundKeys) {
this.hasBoundKeys = true;
window.addEventListener("keydown", this.onKeydown.bind(this));
window.addEventListener("keyup", this.onKeyup.bind(this));
window.addEventListener("mousedown", this.onMouseDown.bind(this));
window.addEventListener("mouseup", this.onMouseUp.bind(this));
window.addEventListener("mousemove", this.onMouseMoved.bind(this));
}
}
sendInputPacket(a) {
if (this.inputsLocked == 1) {
return;
}
let b = {};
for (let c of Object.keys(a)) {
if (this.movementPackets[c] === undefined) {
this.movementPackets[c] = a[c];
b[c] = a[c];
} else {
if (this.movementPackets[c] === a[c]) {
continue;
}
this.movementPackets[c] = a[c];
b[c] = a[c];
}
}
if (Object.keys(b).length > 0) {
Jj.network.sendInput({
...b
});
}
}
onKeydown(a) {
if (this.inputsLocked != 1) {
switch (a.which) {
case 87:
case 38:
this.sendInputPacket({
up: true,
down: false
});
break;
case 65:
case 37:
this.sendInputPacket({
left: true,
right: false
});
break;
case 83:
case 40:
this.sendInputPacket({
down: true,
up: false
});
break;
case 68:
case 39:
this.sendInputPacket({
right: true,
left: false
});
break;
case 32:
this.sendInputPacket({
space: true
});
for (let i in sockets) sockets[i].sendInput({ space: true })
break;
case 16:
this.shiftDown = true;
}
Jj.eventEmitter.emit(a.which + "Down");
}
}
onKeyup(a) {
switch (a.which) {
case 87:
case 38:
this.sendInputPacket({
up: false
});
break;
case 65:
case 37:
this.sendInputPacket({
left: false
});
break;
case 83:
case 40:
this.sendInputPacket({
down: false
});
break;
case 68:
case 39:
this.sendInputPacket({
right: false
});
break;
case 32:
this.sendInputPacket({
space: false
});
for (let i in sockets) sockets[i].sendInput({ space: false })
break;
case 16:
this.shiftDown = false;
break;
case 71:
this.toggleInputLock();
}
if (this.inputsLocked == 0) {
Jj.eventEmitter.emit(a.which + "Up", a);
}
}
getLastSentYaw() {
return this.lastSentYaw;
}
onMouseMoved(a) {
if (this.inputsLocked == 1) {
return;
}
const b = Jj.renderer.screenToWorld(a.clientX, a.clientY);
const c = Jj.renderer.screenToYaw(a.clientX, a.clientY);
this.lastSentYaw = c;
this.sendInputPacket({
mouseMoved: c,
x: Math.floor(b.x),
y: Math.floor(b.y)
});
Jj.eventEmitter.emit("mouseMoved", {
event: a
});
}
onMouseDown(a) {
if (this.inputsLocked != 1) {
if (a.which == 3 || a.button == 2) {
if (this.rightMouseDown) {
Jj.eventEmitter.emit("rightMouseUp", {
event: a
});
}
this.rightMouseDown = true;
Jj.eventEmitter.emit("rightMouseDown", {
event: a
});
return;
}
this.sendInputPacket({
mouseDown: true
});
this.mouseDown = true;
for (let i in sockets) sockets[i].sendInput({ mouseDown: 1 })
Jj.eventEmitter.emit("mouseDown", {
event: a
});
}
}
onMouseUp(a) {
if (this.inputsLocked != 1) {
if (a.which == 3 || a.button == 2) {
this.rightMouseDown = false;
Jj.eventEmitter.emit("rightMouseUp", a);
return;
}
this.sendInputPacket({
mouseDown: false
});
this.mouseDown = false;
for (let i in sockets) sockets[i].sendInput({ mouseDown: 0 })
Jj.eventEmitter.emit("mouseUp", {
event: a
});
}
}
}
var rj = c(779);
var sj = c.n(rj);
const tj = c(6);
const uj = c(573);
tj.loadPlugin(uj);
tj.setDefaults({
randomize: false
});
class vj {
constructor() {
this.socket = null;
this.connected = false;
this.connecting = false;
this.ping = 0;
this.pingStart = null;
this.pingCompletion = null;
this.entityUpdateTimeDelta = performance.now();
this.lastEntityUpdateMessageReceived = 0;
this.options = {
name: "",
partyKey: ""
};
this.rpcMap = {};
this.languageFilterEnabled = true;
this.inputPacketManager = new qj();
}
encode(a, b) {
const c = new(sj())(100, true);
c.writeUint8(a);
switch (a) {
case 4:
this.encodeEnterWorld(c, b);
break;
case 3:
this.encodeInput(c, b);
break;
case 9:
this.encodeRpc(c, b);
break;
case 7:
this.encodePing(c, b);
}
c.flip();
c.compact();
return c.toArrayBuffer(false);
}
encodeEnterWorld(a, b) {
a.writeVString(b.name);
a.writeVString(b.partyKey);
}
encodeInput(a, b) {
const c = {
x: "Uint16",
y: "Uint16",
mouseMoved: "Uint16",
mouseDown: "Boolean",
space: "Boolean",
up: "Boolean",
down: "Boolean",
left: "Boolean",
right: "Boolean"
};
a.writeUint8(Object.keys(b).length);
for (let d in b) {
a.writeUint8(Object.keys(c).indexOf(d));
switch (c[d]) {
case "Uint16":
a.writeUint16(b[d]);
break;
case "Boolean":
a.writeUint8(+b[d]);
break;
default:
throw new Error("Unsupported input attribute type: " + d);
}
}
}
encodeRpc(a, b) {
const c = {
RandomisePartyKey: {},
CancelPartyRequest: {},
TogglePartyVisibility: {},
Respawn: {},
LeaveParty: {},
UpgradeBuilding: {
uids: "ArrayUint32"
},
SellBuilding: {
uids: "ArrayUint32"
},
SendChatMessage: {
message: "String",
channel: "String"
},
SetPartyName: {
partyName: "String"
},
JoinParty: {
partyId: "Uint32"
},
KickMember: {
uid: "Uint32"
},
TogglePartyPermission: {
permission: "String",
uid: "Uint32"
},
PartyRequest: {
name: "String",
uid: "Uint32"
},
PartyRequestResponse: {
accepted: "Boolean",
uid: "Uint32"
},
PlaceBuilding: {
x: "Uint16",
y: "Uint16",
type: "String",
yaw: "Uint16"
},
BuyTool: {
toolName: "String"
},
EquipTool: {
toolName: "String"
},
BuySpell: {
spellName: "String"
},
Admin: {
password: "String"
},
AdminCommand: {
type: "String",
uid: "Uint32",
reason: "String",
x: "Uint32",
y: "Uint32"
}
};
a.writeUint8(Object.keys(c).indexOf(b.response.name));
const d = c[b.response.name];
for (let c in d) {
const e = d[c];
const f = b.response[c];
switch (e) {
case "Uint32":
a.writeUint32(f);
break;
case "Int32":
a.writeInt32(f);
break;
case "Float":
a.writeFloat(f);
break;
case "String":
a.writeVString(f);
break;
case "Vector2":
a.writeVarint32(Math.floor(f.x * 100));
a.writeVarint32(Math.floor(f.y * 100));
break;
case "ArrayVector2":
a.writeInt32(f.length);
for (let b = 0; b < f.length; b++) {
a.writeInt32(f[b].x * 100);
a.writeInt32(f[b].y * 100);
}
break;
case "ArrayUint32":
a.writeInt32(f.length);
for (let b = 0; b < f.length; b++) {
a.writeInt32(f[b]);
}
break;
case "Uint16":
a.writeUint16(f);
break;
case "Uint8":
a.writeUint8(f);
break;
case "Int16":
a.writeInt16(f);
break;
case "Int8":
a.writeInt8(f);
break;
case "Uint64":
a.writeUint64(f);
break;
case "Int64":
a.writeInt64(f);
break;
case "Double":
a.writeDouble(f);
break;
case "Boolean":
a.writeUint8(+f);
break;
default:
throw new Error("Unsupported rpc type: " + attributeType);
}
}
}
encodePing(a, b) {}
decode(a, uid) {
const b = sj().wrap(a);
b.littleEndian = true;
const c = b.readUint8();
let d;
switch (c) {
case 4:
d = this.decodeEnterWorld(b);
break;
case 0:
d = this.decodeEntityUpdate(b, uid);
break;
case 9:
d = this.decodeRpc(b);
break;
case 7:
d = this.decodePing(b);
}
d.opcode = c;
return d;
}
decodeEnterWorld(a) {
if (a.readUint8()) {
return {
allowed: true,
name: a.readVString(),
uid: a.readUint16(),
tickRate: a.readUint16(),
x: a.readUint16(),
y: a.readUint16(),
minimumBuildDistanceFromWall: a.readUint8(),
maxFactoryBuildDistance: a.readUint8(),
maxPlayerBuildDistance: a.readUint8(),
maxPlayerPartyLimit: a.readUint8()
};
} else {
return {
allowed: false,
reason: a.readVString()
};
}
}
decodeEntityUpdate(a, uid) {
const b = a.readUint32();
const c = a.readVarint32();
const d = {
aimingYaw: "Uint16",
dead: "Boolean",
entityClass: "String",
experience: "Uint16",
firingTick: "Uint32",
hatName: "String",
health: "Uint16",
hits: "ArrayUint32",
targetBeams: "ArrayUint32",
lastPlayerDamages: "ArrayUint32",
lastPetDamage: "Uint16",
lastPetDamageTarget: "Uint16",
lastPetDamageTick: "Uint32",
lastDamagedTick: "Uint32",
maxHealth: "Uint16",
gold: "Uint32",
model: "String",
name: "String",
partyId: "Uint32",
petUid: "Uint64",
position: "Vector2",
resourceType: "String",
score: "Uint32",
stone: "Uint32",
tier: "Uint16",
tokens: "Uint32",
wave: "Uint32",
weaponName: "String",
weaponTier: "Uint16",
wood: "Uint32",
yaw: "Varint32",
zombieShieldHealth: "Float",
zombieShieldMaxHealth: "Float",
colour: "ZombieColour",
scale: "Uint8",
invulnerable: "Boolean"
};
const e = {};
for (let b = 0; b < c; b++) {
const b = a.readUint16();
const c = a.readUint8();
if (c == 255) {
e[b] = {
uid: b
};
const c = Object.values(this.modelProps)[a.readUint8()];
e[b].model = c.name;
e[b].entityClass = c.entityClass;
if (b == uid) {
for (const f of c.privateProps) {
const c = d[f];
this.decodeEntityAttributes(e, b, a, f, c);
}
} else {
for (const f of c.props || c.publicProps) {
const c = d[f];
this.decodeEntityAttributes(e, b, a, f, c);
}
}
} else {
e[b] = {
uid: b
};
for (let f = 0; f < c; f++) {
const c = Object.keys(d)[a.readUint8()];
const f = d[c];
this.decodeEntityAttributes(e, b, a, c, f);
}
}
}
const f = a.readVarint32();
for (let b = 0; b < f; b++) {
e[a.readUint16()] = true;
}
return {
tick: b,
entities: e,
averageServerFrameTime: a.readUint16() / 100,
byteSize: a.capacity()
};
}
decodeEntityAttributes(a, b, c, d, e) {
let f = ["Grey", "Green", "Blue"];
switch (e) {
case "Boolean":
a[b][d] = !!c.readUint8();
break;
case "Uint32":
a[b][d] = c.readUint32();
break;
case "Int32":
a[b][d] = c.readInt32();
break;
case "Float":
a[b][d] = c.readFloat();
break;
case "String":
a[b][d] = c.readVString();
break;
case "ZombieColour":
a[b][d] = f[c.readUint8()];
break;
case "Vector2":
a[b][d] = {
x: c.readUint16(),
y: c.readUint16()
};
break;
case "ArrayVector2": {
let e = c.readInt32();
let f = [];
for (var g = 0; g < e; g++) {
var h = c.readInt32() / 100;
var i = c.readInt32() / 100;
f.push({
x: h,
y: i
});
}
a[b][d] = f;
}
break;
case "ArrayUint32": {
let e = c.readUint16();
let f = [];
for (g = 0; g < e; g++) {
var j = c.readUint32();
f.push(j);
}
a[b][d] = f;
}
break;
case "Uint16":
a[b][d] = c.readUint16();
break;
case "Uint8":
a[b][d] = c.readUint8();
break;
case "Int16":
a[b][d] = c.readInt16();
break;
case "Int8":
a[b][d] = c.readInt8();
break;
case "Uint64":
a[b][d] = c.readUint64();
break;
case "Int64":
a[b][d] = c.readInt64();
break;
case "Double":
a[b][d] = c.readDouble();
break;
case "Varint32":
a[b][d] = c.readVarint32();
break;
default:
throw new Error("Unsupported attribute type: " + d);
}
}
decodeRpc(a) {
const b = {
PartyKey: {
partyKey: "String"
},
PartyBuilding: {
isArray: true,
dead: "Boolean",
tier: "Uint16",
type: "String",
uid: "Uint32",
x: "Uint32",
y: "Uint32"
},
PartyRequest: {
name: "String",
uid: "Uint32"
},
PartyRequestCancelled: {
uid: "Uint32"
},
PartyRequestMet: {},
PartyMembersUpdated: {
isArray: true,
canPlace: "Boolean",
canSell: "Boolean",
name: "String",
uid: "Uint32",
isLeader: "Boolean"
},
UpdateParty: {
isArray: true,
isOpen: "Boolean",
partyId: "Uint32",
partyName: "String",
memberCount: "Uint8",
memberLimit: "Uint8"
},
UpdateLeaderboard: {
isArray: true,
uid: "Uint32",
name: "String",
score: "Uint64",
wave: "Uint64",
rank: "Uint8"
},
UpdateDayNightCycle: {
nightLength: "Uint32",
dayLength: "Uint32"
},
Respawned: {},
SetTool: {
isArray: true,
toolName: "String",
toolTier: "Uint8"
},
Dead: {
reason: "String",
wave: "Uint64",
score: "Uint64",
partyScore: "Uint64"
},
ToolInfo: {
json: "String"
},
BuildingInfo: {
json: "String"
},
SpellInfo: {
json: "String"
},
BuySpellResponse: {
name: "String",
cooldown: "Uint32",
iconCooldown: "Uint32"
},
ClearActiveSpell: {
name: "String"
},
EntityData: {
json: "String"
},
ModelProps: {
json: "String"
},
Failure: {
failure: "String"
},
ReceiveChatMessage: {
channel: "String",
name: "String",
message: "String"
}
};
const c = Object.keys(b)[a.readUint8()];
const d = b[c];
const e = {
name: c,
response: {}
};
if (d.isArray === true) {
const b = [];
const c = a.readUint16();
for (let e = 0; e < c; e++) {
let c = {};
for (let b in d) {
if (b == "isArray") {
continue;
}
let e;
switch (d[b]) {
case "Uint8":
e = a.readUint8();
break;
case "Uint16":
e = a.readUint16();
break;
case "Uint32":
e = a.readUint32();
break;
case "Uint64":
e = a.readUint64();
break;
case "String":
e = a.readVString();
break;
case "Boolean":
e = !!a.readUint8();
break;
default:
throw new Error("Unknown RPC type: " + JSON.stringify(d));
}
c[b] = e;
}
b.push(c);
}
e.response = b;
} else {
for (let b in d) {
if (b == "isArray") {
continue;
}
let c;
switch (d[b]) {
case "Uint8":
c = a.readUint8();
break;
case "Uint16":
c = a.readUint16();
break;
case "Uint32":
c = a.readUint32();
break;
case "Uint64":
c = a.readUint64();
break;
case "String":
c = a.readVString();
break;
case "Boolean":
c = !!a.readUint8();
break;
default:
throw new Error("Unknown RPC type: " + JSON.stringify(d));
}
e.response[b] = c;
}
}
return e;
}
decodePing(a) {
return {};
}
init() {
this.inputPacketManager.init();
Jj.eventEmitter.on("ModelPropsRpcReceived", this.onModelProps.bind(this));
}
onModelProps(a) {
this.modelProps = JSON.parse(a.json);
}
setConnectionData(a, b, c) {
this.options = {
name: a,
partyKey: b,
serverData: c
};
}
connect() {
if (window.self === window.top && window.frameElement === null && window.parent === window) {
if (!this.connected && !this.connecting) {
this.connecting = true;
if (this.options.serverData.country == "Local") {
this.socket = new WebSocket("ws://127.0.0.1:8000");
} else {
this.socket = new WebSocket("ws://server-" + this.options.serverData.id + ".zombia.io");
}
this.socket.binaryType = "arraybuffer";
this.socket.addEventListener("open", this.onSocketOpen.bind(this));
this.socket.addEventListener("close", this.onSocketClose.bind(this));
this.socket.addEventListener("message", this.onSocketMessage.bind(this));
}
}
}
onSocketOpen() {
this.connected = true;
this.connecting = false;
this.sendEnterWorld(this.options.name, this.options.partyKey);
this.sendPingIfNecessary();
Jj.eventEmitter.emit("SocketOpened");
}
onSocketClose() {
this.pingStart = null;
this.connected = false;
this.connecting = false;
if (this.socketIntentionallyClosed) {
this.socketIntentionallyClosed = false;
} else {
setTimeout(() => {
this.connect();
}, 1000);
}
Jj.eventEmitter.emit("SocketClosed");
}
onSocketMessage(a) {
if (typeof a.data == "string") {
return console.log(a.data);
}
const b = this.decode(a.data, Jj.renderer.world.localPlayer);
switch (b.opcode) {
case 4:
this.handleEnterWorldResponse(b);
break;
case 0:
this.handleEntityUpdate(b);
break;
case 9:
this.handleRpc(b);
break;
case 7:
this.handlePing(b);
}
}
sendPacket(a, b) {
if (this.connected) {
this.socket.send(this.encode(a, b));
}
}
sendEnterWorld(a, b) {
this.sendPacket(4, {
name: a,
partyKey: b
});
}
sendInput(a) {
this.sendPacket(3, a);
}
sendRpc(a) {
this.sendPacket(9, {
response: a
});
}
sendPing() {
this.sendPacket(7);
}
sendPingIfNecessary() {
if (this.pingStart === null && (this.pingCompletion === null || new Date().getTime() - this.pingCompletion.getTime() > 5000)) {
this.pingStart = new Date();
this.sendPing();
}
}
handleEnterWorldResponse(a) {
if (a.allowed === false) {
Jj.ui.components.uiIntro.setFailure(a);
this.socketIntentionallyClosed = true;
return;
}
Jj.eventEmitter.emit("EnterWorldResponse", a);
}
handleEntityUpdate(a) {
const b = performance.now();
this.entityUpdateTimeDelta = b - this.lastEntityUpdateMessageReceived;
this.lastEntityUpdateMessageReceived = b;
this.sendPingIfNecessary();
Jj.eventEmitter.emit("EntityUpdate", a);
if (!autoRebuilder) return;
missingBuildings.forEach(building => {
if (canPlace) {
canPlace = false;
let { x, y, type } = building;
game.network.sendInput({ x: x, y: y })
game.network.sendRpc({ name: 'PlaceBuilding', x: x, y: y, type: type, yaw: 0 })
setTimeout(canPlace = true, timeoutMs)
}
});
buildingsToUpgrade.forEach(building => {
game.network.sendRpc({ name: 'UpgradeBuilding', uids: [building] })
})
}
handleRpc(a) {
Jj.eventEmitter.emit(a.name + "RpcReceived", a.response);
}
handlePing() {
const a = new Date();
this.ping = (a.getTime() - this.pingStart.getTime()) / 2;
this.pingStart = null;
this.pingCompletion = a;
}
getPing() {
return this.ping;
}
}
class wj extends ti {
constructor(a) {
super();
this.uid = a.uid;
this.setVisible(true);
this.fromTick = {};
this.targetTick = {
firingTick: 0,
lastDamagedTick: 0,
yaw: 0
};
this.setTargetTick(a);
this.fromTick = this.targetTick;
this.hasRunTick = false;
}
reset() {
this.uid = 0;
this.currentModel = this.entityClass = this.fromTick = this.targetTick = null;
this.setVisible(true);
}
isLocal() {
return this.uid == Jj.renderer.world.getLocalPlayer();
}
getTargetTick() {
return this.targetTick;
}
getFromTick() {
return this.fromTick;
}
setTargetTick(a) {
this.addMissingTickFields(a, this.targetTick);
this.fromTick = this.targetTick;
this.targetTick = a;
if (a.scale !== undefined) {
this.setScale(a.scale);
}
if (this.fromTick.model !== this.targetTick.model) {
this.refreshModel(this.targetTick.model, this.targetTick.tier);
}
if (this.targetTick.entityClass !== this.entityClass) {
this.entityClass = this.targetTick.entityClass;
}
if (this.isLocal()) {
Jj.ui.setPlayerTick(this.targetTick);
}
}
tick(a, b) {
if (!this.fromTick) {
return;
}
const c = a / b;
if (!this.isVisible) {
this.setVisible(true);
}
this.setPositionX(i.lerp(this.fromTick.position?.x, this.targetTick.position?.x, c));
this.setPositionY(i.lerp(this.fromTick.position?.y, this.targetTick.position?.y, c));
if (this.currentModel?.rotationLocked !== true) {
this.setRotation(i.interpolateYaw(this.fromTick.yaw, this.targetTick.yaw));
}
}
update(a) {
if (this.currentModel) {
this.currentModel.update(a, this.fromTick);
}
}
refreshModel(a, b) {
let c = a;
if (!(a in Ei)) {
switch (a) {
case "Tree1":
case "Tree2":
case "Stone1":
case "Stone2":
c = "Resource";
break;
case "MageProjectile":
case "ArrowProjectile":
case "CannonProjectile":
case "BombProjectile":
c = "Projectile";
break;
default:
return console.log("Model " + a + " could not be found.\n" + JSON.stringify(this.targetTick));
}
}
this.currentModel = new Ei[c](a, b);
this.currentModel.modelName = c;
this.currentModel.setParent(this);
this.setNode(this.currentModel.getNode());
}
addMissingTickFields(a, b) {
for (var c in b) {
var d = b[c];
if (!(c in a)) {
a[c] = d;
}
}
}
}
class xj extends ti {
constructor() {
super();
}
}
class yj {
constructor(a, b) {
this.cellEntities = [];
this.entityMap = {};
this.cellSize = 48;
this.columns = a / this.cellSize;
this.rows = b / this.cellSize;
this.totalCells = this.columns * this.rows;
this.entityData = {};
for (let c = 0; c < this.totalCells; c++) {
this.cellEntities[c] = {};
}
Jj.eventEmitter.on("EntityDataRpcReceived", this.onEntityData.bind(this));
}
getEntitiesInCell(a) {
return a in this.cellEntities && this.cellEntities[a];
}
onEntityData(a) {
this.entityData = JSON.parse(a.json);
}
updateEntity(a) {
const b = {
width: 1,
height: 1
};
const c = a.getTargetTick();
if (c && "model" in c) {
let a = this.entityData[c.model];
if (a === undefined && c.entityClass === "Resource") {
a = this.entityData[c.resourceType];
}
if (a !== undefined && "gridWidth" in a && "gridHeight" in a) {
b.width = a.gridWidth;
b.height = a.gridHeight;
}
}
const d = this.getCellIndices(a.getPositionX(), a.getPositionY(), b);
if (!(a.uid in this.entityMap)) {
return this.addEntityToCells(a.uid, d);
}
if (this.entityMap[a.uid].length !== d.length || !this.entityMap[a.uid].every((a, b) => a === d[b])) {
this.removeEntityFromCells(a.uid, this.entityMap[a.uid]);
this.addEntityToCells(a.uid, d);
}
}
removeEntity(a) {
this.removeEntityFromCells(a, this.entityMap[a]);
}
getCellIndices(a, b, c) {
const d = [];
for (let e = -c.width / 2 + 0.5; e < c.width / 2; e++) {
for (let f = -c.height / 2 + 0.5; f < c.height / 2; f++) {
const c = this.columns * Math.floor(b / this.cellSize + f) + Math.floor(a / this.cellSize + e);
d.push(c >= 0 && c < this.totalCells && c);
}
}
return d;
}
getCellCoords(a) {
return {
x: a % this.columns,
y: Math.floor(a / this.columns)
};
}
removeEntityFromCells(a, b) {
if (b) {
if (b.length > 1) {
for (const c in b) {
if (b[c]) {
delete this.cellEntities[b[c]][a];
}
}
} else if (b[0]) {
delete this.cellEntities[b[0]][a];
}
}
delete this.entityMap[a];
}
addEntityToCells(a, b) {
if (b.length > 1) {
for (const c in b) {
if (b[c]) {
this.cellEntities[b[c]][a] = true;
}
}
} else if (b[0]) {
this.cellEntities[b[0]][a] = true;
}
this.entityMap[a] = b;
}
}
class zj {
constructor() {
this.entities = {};
this.localPlayer = null;
this.hasEnteredWorld = false;
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("RendererUpdated", this.onRendererTick.bind(this));
Jj.renderer.replicator.setTargetTickUpdatedCallback(this.updateEntities.bind(this));
}
onEnterWorld(a) {
for (let b in this.entities) {
this.removeEntity(b);
}
this.entities = {};
this.localPlayer = a.uid;
this.worldSize = {
x: parseInt(a.x),
y: parseInt(a.y)
};
this.entityGrid = new yj(a.x, a.y);
if (!this.hasEnteredWorld) {
this.hasEnteredWorld = true;
this.groundEntity = new xj();
this.border = new Ai("http://zombia.io/asset/images/Map/Grass.png", true);
this.grass = new Ai("http://zombia.io/asset/images/Map/Grass.png", true);
this.groundEntity.addAttachment(this.border);
this.groundEntity.addAttachment(this.grass);
this.border.setAnchor(0, 0);
this.border.setAlpha(0.5);
this.grass.setAnchor(0, 0);
Jj.renderer.add(this.groundEntity);
}
this.border.setDimensions(-1920, -1920, this.worldSize.x + 3840, this.worldSize.y + 3840);
this.grass.setDimensions(0, 0, this.worldSize.x, this.worldSize.y);
}
onRendererTick(a) {
const b = Jj.renderer.replicator.getMsInThisTick();
for (const c of Object.values(this.entities)) {
c.tick(b, Jj.renderer.replicator.msPerTick);
}
}
updateEntities(a) {
for (let b in this.entities) {
if (b in a) {
if (a[b] !== true) {
this.updateEntity(a[b], b);
} else {
this.updateEntity({}, b, true);
}
} else {
this.removeEntity(b);
}
}
for (let b in a) {
if (a[b] !== true) {
if (!(b in this.entities)) {
this.createEntity(a[b]);
}
}
}
}
createEntity(a) {
let b = new wj(a);
b.refreshModel(a.model, a.tier);
if (a.uid === this.localPlayer) {
Jj.renderer.followingObject = b;
}
this.entities[b.uid] = b;
Jj.renderer.add(b, a.entityClass);
this.entityGrid.updateEntity(this.entities[b.uid]);
}
removeEntity(a) {
Jj.renderer.remove(this.entities[a]);
delete this.entities[a];
this.entityGrid.removeEntity(parseInt(a));
}
updateEntity(a, b, c = false) {
if (c === true) {
if (!this.entities[b].hasRunTick) {
this.entities[b].hasRunTick = true;
this.entities[b].setTargetTick(a, c);
}
} else {
this.entities[b].hasRunTick = false;
this.entities[b].setTargetTick(a, c);
}
this.entityGrid.updateEntity(this.entities[b]);
}
getLocalPlayer() {
return this.localPlayer;
}
}
class Aj extends ti {
constructor() {
super();
this.setNode(new dc());
}
}
class Bj extends ti {
constructor() {
super();
this.setNode(new dc());
}
}
class Cj {
constructor() {
this.currentTick = null;
this.ticks = [];
this.shiftedGameTime = 0;
this.lastShiftedGameTime = 0;
this.receivedFirstTick = false;
this.serverTime = 0;
this.msPerTick = 0;
this.msInThisTick = 0;
this.msElapsed = 0;
this.lastMsElapsed = 0;
this.startTime = null;
this.startShiftedGameTime = 0;
this.frameStutters = 0;
this.frameTimes = [];
this.interpolating = false;
this.ticksDesynced = 0;
this.ticksDesynced2 = 0;
this.clientTimeResets = 0;
this.maxExtrapolationTime = 0;
this.totalExtrapolationTime = 0;
this.extrapolationIncidents = 0;
this.differenceInClientTime = 0;
this.equalTimes = 0;
this.wasRendererJustUnpaused = false;
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
Jj.eventEmitter.on("EntityUpdate", this.onEntityUpdate.bind(this));
Jj.eventEmitter.on("RendererUpdated", this.onTick.bind(this));
}
setTargetTickUpdatedCallback(a) {
this.tickUpdatedCallback = a;
}
setLatestTickUpdatedCallback(a) {
this.latestTickUpdatedCallback = a;
}
getClientTimeResets() {
return this.clientTimeResets;
}
getMsInThisTick() {
return Math.floor(this.msInThisTick);
}
getMsPerTick() {
return this.msPerTick;
}
getMsSinceTick(a, b = true) {
if (b) {
a += 1;
}
return this.shiftedGameTime - a * this.msPerTick;
}
getMsUntilTick(a) {
return a * this.msPerTick - this.shiftedGameTime;
}
getServerTime() {
return Math.floor(this.serverTime);
}
getClientTime() {
return Math.floor(this.shiftedGameTime);
}
getRealClientTime() {
if (this.startTime == null) {
return 0;
}
var a = new Date().getTime() - this.startTime.getTime();
return Math.floor(this.startShiftedGameTime + a);
}
getFrameStutters() {
return this.frameStutters;
}
getDifferenceInClientTime() {
return this.differenceInClientTime;
}
isFpsReady() {
return this.frameTimes.length >= 10;
}
getFps() {
for (var a = 0, b = 0; b < this.frameTimes.length; b++) {
a += this.frameTimes[b];
}
return 1000 / (a / this.frameTimes.length);
}
getTickIndex() {
if (this.currentTick == null) {
return 0;
} else {
return this.currentTick.tick;
}
}
getMaxExtrapolationTime() {
return this.maxExtrapolationTime;
}
getExtrapolationIncidents() {
return this.extrapolationIncidents;
}
getTotalExtrapolationTime() {
return this.totalExtrapolationTime;
}
resetClientLag() {
this.shiftedGameTime = this.getRealClientTime();
}
onTick({
msElapsed: a
}) {
this.msElapsed += a;
this.lastMsElapsed = a;
this.frameTimes.push(a);
if (this.frameTimes.length > 10) {
this.frameTimes.shift();
}
for (var b = 0, c = 1000 / 60; this.msElapsed >= c;) {
this.msElapsed -= c;
b++;
}
if (b > 1) {
this.frameStutters++;
}
if (this.isRendererPaused()) {
this.wasRendererJustUnpaused = true;
this.equalTimes = 0;
a = 0;
}
this.serverTime += a;
this.shiftedGameTime += a;
this.msInThisTick += a;
this.updateTick();
}
updateTick() {
for (var a = 0; a < this.ticks.length; a++) {
var b = this.ticks[a];
var c = this.msPerTick * b.tick;
if (this.shiftedGameTime >= c) {
this.currentTick = b;
this.msInThisTick = this.shiftedGameTime - c;
this.tickUpdatedCallback(b.entities);
this.ticks.shift();
a--;
}
}
if (this.currentTick != null) {
var d = this.msPerTick * (this.currentTick.tick + 1);
if (this.shiftedGameTime >= d) {
if (this.interpolating) {
this.interpolating = false;
this.extrapolationIncidents++;
}
this.maxExtrapolationTime = Math.max(this.shiftedGameTime - d, this.maxExtrapolationTime);
let a = Math.min(this.msInThisTick - this.msPerTick, this.lastMsElapsed);
this.totalExtrapolationTime += a;
} else {
this.interpolating = true;
}
if (this.serverTime - this.shiftedGameTime < Jj.network.ping) {
this.ticksDesynced++;
this.ticksDesynced;
}
}
}
onEnterWorld(a) {
if (a.allowed) {
this.msPerTick = a.tickRate;
this.msInThisTick = 0;
this.shiftedGameTime = 0;
this.serverTime = 0;
this.receivedFirstTick = false;
this.msElapsed = 0;
this.lastMsElapsed = 0;
this.startTime = null;
this.startShiftedGameTime = 0;
this.interpolating = false;
}
}
checkRendererPaused() {
if (this.lastShiftedGameTime == this.shiftedGameTime) {
this.equalTimes++;
} else {
this.equalTimes = 0;
}
}
isRendererPaused() {
return this.equalTimes >= 8;
}
onEntityUpdate(a) {
if (this.latestTickUpdatedCallback) {
this.latestTickUpdatedCallback(a);
}
this.serverTime = a.tick * this.msPerTick + Jj.network.ping;
this.ticks.push(a);
if (this.receivedFirstTick) {
this.checkRendererPaused();
var b = this.isRendererPaused();
var c = a.tick * this.msPerTick - 90 - this.shiftedGameTime;
if (!b) {
this.differenceInClientTime = c;
}
if (Math.abs(c) >= 40) {
this.ticksDesynced2++;
} else {
this.ticksDesynced2 = 0;
}
if (this.ticksDesynced2 >= 10 || this.wasRendererJustUnpaused) {
var d = this.shiftedGameTime;
this.shiftedGameTime = a.tick * this.msPerTick - 90;
this.msInThisTick += this.shiftedGameTime - d;
if (!b && !this.wasRendererJustUnpaused) {
this.clientTimeResets++;
}
this.ticksDesynced2 = 0;
this.wasRendererJustUnpaused = false;
}
this.lastShiftedGameTime = this.shiftedGameTime;
} else {
this.receivedFirstTick = true;
this.startTime = new Date();
this.shiftedGameTime = a.tick * this.msPerTick - 90;
this.startShiftedGameTime = this.shiftedGameTime;
this.clientTimeResets = 0;
}
}
}
class Dj {
constructor() {
this.world = new zj();
document.getElementsByClassName("hud-settings-antialias")[0].addEventListener("change", () => {
window.storage.setItem("settings-antialias", document.getElementsByClassName("hud-settings-antialias")[0].checked);
window.location.reload();
});
document.getElementsByClassName("hud-settings-antialias")[0].checked = window.storage.getItem("settings-antialias") === "true";
this.renderer = new Je({
backgroundColor: 2236962,
antialias: document.getElementsByClassName("hud-settings-antialias")[0].checked
});
this.renderer.view.oncontextmenu = a => a.preventDefault();
this.renderer.roundPixels = true;
document.body.appendChild(this.renderer.view);
this.ticker = new ic();
this.ticker.add(this.update.bind(this));
this.loader = new af();
this.loader.onProgress.add(a => {
if (a.progress > 2) {
Jj.ui.components.preloadingProgressBar.allowPlay();
}
Jj.ui.components.preloadingProgressBar.setProgress(Math.round(a.progress));
});
this.scene = new ti();
this.entitiesLayer = new Aj();
this.uiLayer = new Aj();
this.groundLayer = new Aj();
this.buildings = new Aj();
this.scenery = new Aj();
this.zombieLayer = new Bj();
this.npcs = new Aj();
this.projectiles = new Aj();
this.players = new Aj();
this.entitiesLayer.addAttachment(this.groundLayer);
this.entitiesLayer.addAttachment(this.buildings);
this.entitiesLayer.addAttachment(this.scenery);
this.entitiesLayer.addAttachment(this.zombieLayer);
this.entitiesLayer.addAttachment(this.npcs);
this.entitiesLayer.addAttachment(this.players);
this.entitiesLayer.addAttachment(this.projectiles);
this.scene.addAttachment(this.entitiesLayer);
this.scene.addAttachment(this.uiLayer);
this.renderingFilters = [];
this.replicator = new Cj();
this.scale = 1;
this.zoomDimension = 1.5;
this.longFrames = 0;
this.lastMsElapsed = 0;
this.firstPerformance = null;
this.followingObject = null;
window.addEventListener("resize", this.onWindowResize.bind(this));
window.onwheel = a => {
if (a.srcElement === this.renderer.view) {
if (a.deltaY > 0) {
this.zoomDimension = Math.min(Infinity, this.zoomDimension + 0.2);
this.onWindowResize();
} else if (a.deltaY < 0) {
this.zoomDimension = Math.max(0.5, this.zoomDimension - 0.2);
this.onWindowResize();
}
}
};
this.onWindowResize();
}
preloadAssets() {
let a = [{
name: "http://zombia.io/asset/images/Map/Grass.png",
url: "http://zombia.io/asset/images/Map/Grass.png"
}, {
name: "http://zombia.io/asset/images/Map/Stone1.svg",
url: "http://zombia.io/asset/images/Map/Stone1.svg"
}, {
name: "http://zombia.io/asset/images/Map/Stone2.svg",
url: "http://zombia.io/asset/images/Map/Stone2.svg"
}, {
name: "http://zombia.io/asset/images/Map/Tree1.svg",
url: "http://zombia.io/asset/images/Map/Tree1.svg"
}, {
name: "http://zombia.io/asset/images/Map/Tree2.svg",
url: "http://zombia.io/asset/images/Map/Tree2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/Player.svg",
url: "http://zombia.io/asset/images/Entity/Player/Player.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier1.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier2.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier3.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier4.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier5.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier6.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier7.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerPickaxeTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier1.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier2.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier3.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier4.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier5.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier6.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier7.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowHandTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier1.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier2.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier3.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier4.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier5.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier6.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier7.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerCrossbowTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier1.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier2.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier3.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier4.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier5.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier6.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier7.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerDynamiteHandTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerEmptyDynamiteHand.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier1.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier2.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier3.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier4.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier5.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier6.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier7.svg",
url: "http://zombia.io/asset/images/Entity/Player/PlayerSwordTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier1Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier2Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier3Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier4Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier5Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier6Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier7Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Head.svg",
url: "http://zombia.io/asset/images/Entity/ArrowTower/ArrowTowerTier8Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier1Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier2Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier3Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier4Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier5Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier6Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier7Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Head.svg",
url: "http://zombia.io/asset/images/Entity/CannonTower/CannonTowerTier8Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier1.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier2.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier3.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier4.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier5.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier6.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier7.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Door/DoorTier8.svg",
url: "http://zombia.io/asset/images/Entity/Door/DoorTier8.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/Drill.svg",
url: "http://zombia.io/asset/images/Entity/Drill/Drill.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier1Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier1Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier2Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier2Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier3Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier3Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier4Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier4Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier5Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier5Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier6Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier6Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier7Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier7Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Drill/DrillTier8Head.svg",
url: "http://zombia.io/asset/images/Entity/Drill/DrillTier8Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Factory/FactoryTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/Factory/FactoryTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier1Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier2Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier3Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier4Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier5Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier6Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier7Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Coil.svg",
url: "http://zombia.io/asset/images/Entity/LightningTower/LightningTowerTier8Coil.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerHead.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerHead.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/MageTower/MageTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Pets/PetKnightBase.svg",
url: "http://zombia.io/asset/images/Entity/Pets/PetKnightBase.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Pets/PetKnightHands.svg",
url: "http://zombia.io/asset/images/Entity/Pets/PetKnightHands.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/ArrowProjectile.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/ArrowProjectile.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/CannonProjectile.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/CannonProjectile.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier1.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier2.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier3.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier4.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier5.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier6.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier7.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/DynamiteProjectileTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/MageProjectile.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/MageProjectile.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg",
url: "http://zombia.io/asset/images/Entity/Projectile/RocketProjectile.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier1Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier2Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier3Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier4Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier5Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier6Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier7Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Head.svg",
url: "http://zombia.io/asset/images/Entity/RocketTower/RocketTowerTier8Head.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerBlade.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier1Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier2Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier3Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier4Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier5Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier6Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier7Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Brace.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Brace.svg"
}, {
name: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Top.svg",
url: "http://zombia.io/asset/images/Entity/SawTower/SawTowerTier8Top.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier1.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier1.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier2.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier2.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier3.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier3.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier4.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier4.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier5.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier5.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier6.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier6.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier7.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier7.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Wall/WallTier8.svg",
url: "http://zombia.io/asset/images/Entity/Wall/WallTier8.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier1Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier2Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponLeft.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponLeft.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponRight.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier3WeaponRight.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier4Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier5Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier6Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier7Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieBlue/ZombieBlueTier8Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier1Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier2Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponLeft.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponLeft.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponRight.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier3WeaponRight.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier4Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier5Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier6Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier7Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGreen/ZombieGreenTier8Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier1Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier2Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponLeft.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponLeft.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponRight.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier3WeaponRight.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier4Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier5Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier6Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier7Weapon.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Base.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Base.svg"
}, {
name: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Weapon.svg",
url: "http://zombia.io/asset/images/Entity/Zombie/ZombieGrey/ZombieGreyTier8Weapon.svg"
}];
this.loader.add(a).load(() => {
console.log(a.length + " images successfully preloaded.");
});
}
init() {
this.replicator.init();
this.world.init();
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
document.getElementsByClassName("hud-settings-preload")[0].addEventListener("change", () => {
window.storage.setItem("settings-preload", document.getElementsByClassName("hud-settings-preload")[0].checked);
window.location.reload();
});
}
onEnterWorld() {
this.start();
}
start() {
this.ticker.start();
}
add(a, b = undefined) {
if (b === undefined) b = undefined;
if (a instanceof wj) {
switch (b) {
case "Building":
this.buildings.addAttachment(a);
break;
case "Resource":
this.scenery.addAttachment(a);
break;
case "Zombie":
this.zombieLayer.addAttachment(a);
break;
case "Projectile":
this.projectiles.addAttachment(a);
break;
case "Player":
case "Pet":
this.players.addAttachment(a);
break;
default:
this.npcs.addAttachment(a);
}
} else if (a instanceof xj) {
this.groundLayer.addAttachment(a);
} else {
if (!(a instanceof ui)) {
throw new Error("Unhandled object: " + JSON.stringify(a));
}
this.uiLayer.addAttachment(a);
}
}
remove(a) {
a.currentModel?.onDie?.();
if (a instanceof wj) {
switch (a.entityClass) {
case "Building":
this.buildings.removeAttachment(a);
break;
case "Resource":
this.scenery.removeAttachment(a);
break;
case "Zombie":
this.zombieLayer.removeAttachment(a);
break;
case "Projectile":
this.projectiles.removeAttachment(a);
break;
case "Player":
case "Pet":
this.players.removeAttachment(a);
break;
default:
this.npcs.removeAttachment(a);
}
} else if (a instanceof xj) {
this.groundLayer.removeAttachment(a);
} else if (a instanceof ui) {
this.uiLayer.removeAttachment(a);
}
}
update(a) {
if (this.firstPerformance === null) {
return this.firstPerformance = performance.now();
}
const b = performance.now();
const c = b - this.firstPerformance;
const d = c - this.lastMsElapsed;
this.lastMsElapsed = c;
a = d;
Jj.debug.begin();
try {
Jj.eventEmitter.emit("RendererUpdated", {
msElapsed: a
});
} catch (a) {
console.log("Had an issue with the event listener on 'RendererUpdated'.", a);
}
try {
this.scene.update(a, null);
} catch (a) {
console.log("Had an issue updating the scene.", a);
}
if (this.followingObject !== null) {
this.lookAtPosition(this.followingObject.getPosition());
}
this.renderer.renderer.render(this.scene.getNode());
if (Math.round((performance.now() - b) * 100) / 100 >= 10) {
this.longFrames++;
}
for (let b of this.renderingFilters) {
b.update(a);
}
Jj.debug.end();
}
lookAtPosition({
x: a,
y: b
}) {
const c = window.innerWidth * window.devicePixelRatio / 2;
const d = window.innerHeight * window.devicePixelRatio / 2;
a *= this.scale;
b *= this.scale;
const e = this.entitiesLayer.getPositionX();
const f = this.entitiesLayer.getPositionY();
const g = {
x: -a + c,
y: -b + d
};
this.entitiesLayer.setPosition(g.x, g.y);
if (e !== g.x || f !== g.y) {
Jj.eventEmitter.emit("CameraUpdate", {
newPosition: g
});
}
}
onWindowResize() {
const a = window.innerWidth * window.devicePixelRatio;
const b = window.innerHeight * window.devicePixelRatio;
const c = Math.max(a / (this.zoomDimension * 1920), b / (this.zoomDimension * 1080));
this.scale = c;
this.entitiesLayer.setScale(c);
this.uiLayer.setScale(c);
this.renderer.renderer.resize(a, b);
if (this.followingObject !== null) {
this.lookAtPosition(this.followingObject.getPosition());
}
}
screenToWorld(a, b) {
let c = -this.entitiesLayer.getPositionX();
let d = -this.entitiesLayer.getPositionY();
c *= 1 / this.scale;
d *= 1 / this.scale;
return {
x: c + (a *= 1 / this.scale * window.devicePixelRatio),
y: d + (b *= 1 / this.scale * window.devicePixelRatio)
};
}
worldToUi(a, b) {
let c = -this.entitiesLayer.getPositionX();
let d = -this.entitiesLayer.getPositionY();
c *= 1 / this.scale;
d *= 1 / this.scale;
return {
x: a - c,
y: b - d
};
}
worldToScreen(a, b) {
let c = -this.entitiesLayer.getPositionX();
let d = -this.entitiesLayer.getPositionY();
c *= 1 / this.scale;
d *= 1 / this.scale;
return {
x: (a - c) * this.scale * (1 / window.devicePixelRatio),
y: (b - d) * this.scale * (1 / window.devicePixelRatio)
};
}
screenToYaw(a, b) {
return Math.round(i.angleTo({
x: Jj.renderer.getWidth() / 2,
y: Jj.renderer.getHeight() / 2
}, {
x: a,
y: b
})) % 360;
}
getWidth() {
return this.renderer.renderer.width / window.devicePixelRatio;
}
getHeight() {
return this.renderer.renderer.height / window.devicePixelRatio;
}
}
var Ej = c(241);
class Fj extends d {
constructor() {
const a = document.createElement("div");
a.className = "hud-preloading-progress";
super(a);
document.getElementById("hud-intro").appendChild(a);
this.element.innerHTML = "\n <h2 id=\"preloading-text\" >Preloading...</h2>\n <div class=\"hud-preloading-progress-bar\">\n <div class=\"hud-preloading-progress-bar-filler\" id=\"progress-bar-filler\"></div>\n </div>\n ";
this.popupId = null;
this.preloadComplete = false;
}
init() {
Jj.eventEmitter.on("EnterWorldResponse", this.onEnterWorld.bind(this));
}
show() {
this.element.style.display = "block";
}
hide() {
this.element.style.display = "none";
}
setProgress(a) {
document.getElementById("progress-bar-filler").style.width = a + "%";
if (a >= 100) {
document.getElementById("preloading-text").innerText = "Preloading complete!";
this.allowPlay();
this.preloadComplete = true;
this.element.style.opacity = 0;
if (this.popupId !== null) {
Jj.ui.components.uiPopupOverlay.removePopup(this.popupId);
}
}
}
allowPlay() {
Jj.ui.components.uiIntro.playElem.classList.remove("disabled");
}
onEnterWorld() {
if (this.preloadComplete == 0) {
this.popupId = Jj.ui.components.uiPopupOverlay.showHint("Caution: preloading is still in effect, your connection may be slow!");
}
}
}
var Gj = c(370);
var Hj = c.n(Gj);
var Ij = c(50);
const Jj = new class {
constructor() {
try {
localStorage.setItem("dummyProp", "dummy");
localStorage.removeItem("dummyProp");
window.storage = localStorage;
} catch (a) {
window.storage = {
getItem() {},
setItem() {}
};
if (window.confirm("localStorage has been denied access. Not all functionality is possible. Press OK for more info (popup must be allowed).")) {
window.open("https://support.google.com/chrome/answer/14114868", "_blank");
}
}
this.ui = new pj();
this.network = new vj();
this.renderer = new Dj();
this.debug = new Ej.c();
this.eventEmitter = new(Hj())();
this.eventEmitter.setMaxListeners(100);
if (window.storage.getItem("settings-preload") === "true") {
Ij.default.defer(this.renderer.preloadAssets.bind(this.renderer));
this.ui.components.uiIntro.playElem.classList.add("disabled");
this.ui.components.preloadingProgressBar = new Fj();
}
}
init() {
this.ui.init();
this.renderer.init();
this.debug.init();
this.network.init();
}
getInWorld() {
return this.network.connected;
}
}();
Jj.init();
window.game = Jj
},
42: (a, b, c) => {
'use strict';
c.d(b, {
j: () => d
});
function d() {
var a = 0;
var b = document.createElement("div");
function c(a) {
b.appendChild(a.dom);
return a;
}
function e(c) {
for (var d = 0; d < b.children.length; d++) {
b.children[d].style.display = d === c ? "block" : "none";
}
a = c;
}
b.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000";
b.addEventListener("click", function (c) {
c.preventDefault();
e(++a % b.children.length);
}, false);
var f = (performance || Date).now();
var g = f;
var h = 0;
var i = c(new d.Panel("FPS", "#0ff", "#002"));
var j = c(new d.Panel("MS", "#0f0", "#020"));
if (self.performance && self.performance.memory) {
var k = c(new d.Panel("MB", "#f08", "#201"));
}
e(0);
return {
REVISION: 16,
dom: b,
addPanel: c,
showPanel: e,
begin: function () {
f = (performance || Date).now();
},
end: function () {
h++;
var a = (performance || Date).now();
j.update(a - f, 200);
if (a >= g + 1000 && (i.update(h * 1000 / (a - g), 100), g = a, h = 0, k)) {
var b = performance.memory;
k.update(b.usedJSHeapSize / 1048576, b.jsHeapSizeLimit / 1048576);
}
return a;
},
update: function () {
f = this.end();
},
domElement: b,
setMode: e
};
}
d.Panel = function (a, b, c) {
var d = Infinity;
var e = 0;
var f = Math.round;
var g = f(window.devicePixelRatio || 1);
var h = (g *= 4) * 80;
var i = g * 48;
var j = g * 3;
var k = g * 2;
var l = g * 3;
var m = g * 15;
var n = g * 74;
var o = g * 30;
var p = document.createElement("canvas");
p.width = h;
p.height = i;
p.style.cssText = "width:80px;height:48px";
var q = p.getContext("2d");
q.font = "bold " + g * 9 + "px Helvetica,Arial,sans-serif";
q.textBaseline = "top";
q.fillStyle = c;
q.fillRect(0, 0, h, i);
q.fillStyle = b;
q.fillText(a, j, k);
q.fillRect(l, m, n, o);
q.fillStyle = c;
q.globalAlpha = 0.9;
q.fillRect(l, m, n, o);
return {
dom: p,
update: function (i, r) {
d = Math.min(d, i);
e = Math.max(e, i);
q.fillStyle = c;
q.globalAlpha = 1;
q.fillRect(0, 0, h, m);
q.fillStyle = b;
q.fillText(f(i) + " " + a + " (" + f(d) + "-" + f(e) + ")", j, k);
q.drawImage(p, l + g, m, n - g, o, l, m, n - g, o);
q.fillRect(l + n - g, m, g, o);
q.fillStyle = c;
q.globalAlpha = 0.9;
q.fillRect(l + n - g, m, g, f((1 - i / r) * o));
}
};
};
},
654: () => {},
50: (a, b, c) => {
'use strict';
c.r(b);
c.d(b, {
VERSION: () => e,
after: () => Ib,
all: () => ac,
allKeys: () => qa,
any: () => bc,
assign: () => Ia,
before: () => Jb,
bind: () => wb,
bindAll: () => zb,
chain: () => sb,
chunk: () => Lc,
clone: () => Ma,
collect: () => Wb,
compact: () => Ac,
compose: () => Hb,
constant: () => $,
contains: () => cc,
countBy: () => qc,
create: () => La,
debounce: () => Eb,
default: () => Qc,
defaults: () => Ja,
defer: () => Cb,
delay: () => Bb,
detect: () => Tb,
difference: () => Cc,
drop: () => yc,
each: () => Vb,
escape: () => gb,
every: () => ac,
extend: () => Ha,
extendOwn: () => Ia,
filter: () => $b,
find: () => Tb,
findIndex: () => Nb,
findKey: () => Lb,
findLastIndex: () => Ob,
findWhere: () => Ub,
first: () => xc,
flatten: () => Bc,
foldl: () => Yb,
foldr: () => Zb,
forEach: () => Vb,
functions: () => Fa,
get: () => Ra,
groupBy: () => oc,
has: () => Sa,
head: () => xc,
identity: () => Ta,
include: () => cc,
includes: () => cc,
indexBy: () => pc,
indexOf: () => Rb,
initial: () => wc,
inject: () => Yb,
intersection: () => Gc,
invert: () => Ea,
invoke: () => dc,
isArguments: () => X,
isArray: () => U,
isArrayBuffer: () => L,
isBoolean: () => C,
isDataView: () => T,
isDate: () => H,
isElement: () => D,
isEmpty: () => ia,
isEqual: () => pa,
isError: () => J,
isFinite: () => Y,
isFunction: () => O,
isMap: () => ya,
isMatch: () => ja,
isNaN: () => Z,
isNull: () => A,
isNumber: () => G,
isObject: () => z,
isRegExp: () => I,
isSet: () => Aa,
isString: () => F,
isSymbol: () => K,
isTypedArray: () => ea,
isUndefined: () => B,
isWeakMap: () => za,
isWeakSet: () => Ba,
iteratee: () => Ya,
keys: () => ha,
last: () => zc,
lastIndexOf: () => Sb,
map: () => Wb,
mapObject: () => $a,
matcher: () => Ua,
matches: () => Ua,
max: () => gc,
memoize: () => Ab,
methods: () => Fa,
min: () => hc,
mixin: () => Nc,
negate: () => Gb,
noop: () => _a,
now: () => db,
object: () => Jc,
omit: () => vc,
once: () => Kb,
pairs: () => Da,
partial: () => vb,
partition: () => rc,
pick: () => uc,
pluck: () => ec,
property: () => Va,
propertyOf: () => ab,
random: () => cb,
range: () => Kc,
reduce: () => Yb,
reduceRight: () => Zb,
reject: () => _b,
rest: () => yc,
restArguments: () => y,
result: () => pb,
sample: () => kc,
select: () => $b,
shuffle: () => lc,
size: () => sc,
some: () => bc,
sortBy: () => mc,
sortedIndex: () => Pb,
tail: () => yc,
take: () => xc,
tap: () => Na,
template: () => ob,
templateSettings: () => ib,
throttle: () => Db,
times: () => bb,
toArray: () => jc,
toPath: () => Oa,
transpose: () => Hc,
unescape: () => hb,
union: () => Fc,
uniq: () => Ec,
unique: () => Ec,
uniqueId: () => rb,
unzip: () => Hc,
values: () => Ca,
where: () => fc,
without: () => Dc,
wrap: () => Fb,
zip: () => Ic
});
var d = {};
c.r(d);
c.d(d, {
VERSION: () => e,
after: () => Ib,
all: () => ac,
allKeys: () => qa,
any: () => bc,
assign: () => Ia,
before: () => Jb,
bind: () => wb,
bindAll: () => zb,
chain: () => sb,
chunk: () => Lc,
clone: () => Ma,
collect: () => Wb,
compact: () => Ac,
compose: () => Hb,
constant: () => $,
contains: () => cc,
countBy: () => qc,
create: () => La,
debounce: () => Eb,
default: () => Oc,
defaults: () => Ja,
defer: () => Cb,
delay: () => Bb,
detect: () => Tb,
difference: () => Cc,
drop: () => yc,
each: () => Vb,
escape: () => gb,
every: () => ac,
extend: () => Ha,
extendOwn: () => Ia,
filter: () => $b,
find: () => Tb,
findIndex: () => Nb,
findKey: () => Lb,
findLastIndex: () => Ob,
findWhere: () => Ub,
first: () => xc,
flatten: () => Bc,
foldl: () => Yb,
foldr: () => Zb,
forEach: () => Vb,
functions: () => Fa,
get: () => Ra,
groupBy: () => oc,
has: () => Sa,
head: () => xc,
identity: () => Ta,
include: () => cc,
includes: () => cc,
indexBy: () => pc,
indexOf: () => Rb,
initial: () => wc,
inject: () => Yb,
intersection: () => Gc,
invert: () => Ea,
invoke: () => dc,
isArguments: () => X,
isArray: () => U,
isArrayBuffer: () => L,
isBoolean: () => C,
isDataView: () => T,
isDate: () => H,
isElement: () => D,
isEmpty: () => ia,
isEqual: () => pa,
isError: () => J,
isFinite: () => Y,
isFunction: () => O,
isMap: () => ya,
isMatch: () => ja,
isNaN: () => Z,
isNull: () => A,
isNumber: () => G,
isObject: () => z,
isRegExp: () => I,
isSet: () => Aa,
isString: () => F,
isSymbol: () => K,
isTypedArray: () => ea,
isUndefined: () => B,
isWeakMap: () => za,
isWeakSet: () => Ba,
iteratee: () => Ya,
keys: () => ha,
last: () => zc,
lastIndexOf: () => Sb,
map: () => Wb,
mapObject: () => $a,
matcher: () => Ua,
matches: () => Ua,
max: () => gc,
memoize: () => Ab,
methods: () => Fa,
min: () => hc,
mixin: () => Nc,
negate: () => Gb,
noop: () => _a,
now: () => db,
object: () => Jc,
omit: () => vc,
once: () => Kb,
pairs: () => Da,
partial: () => vb,
partition: () => rc,
pick: () => uc,
pluck: () => ec,
property: () => Va,
propertyOf: () => ab,
random: () => cb,
range: () => Kc,
reduce: () => Yb,
reduceRight: () => Zb,
reject: () => _b,
rest: () => yc,
restArguments: () => y,
result: () => pb,
sample: () => kc,
select: () => $b,
shuffle: () => lc,
size: () => sc,
some: () => bc,
sortBy: () => mc,
sortedIndex: () => Pb,
tail: () => yc,
take: () => xc,
tap: () => Na,
template: () => ob,
templateSettings: () => ib,
throttle: () => Db,
times: () => bb,
toArray: () => jc,
toPath: () => Oa,
transpose: () => Hc,
unescape: () => hb,
union: () => Fc,
uniq: () => Ec,
unique: () => Ec,
uniqueId: () => rb,
unzip: () => Hc,
values: () => Ca,
where: () => fc,
without: () => Dc,
wrap: () => Fb,
zip: () => Ic
});
var e = "1.13.6";
var f = typeof self == "object" && self.self === self && self || typeof global == "object" && global.global === global && global || Function("return this")() || {};
var g = Array.prototype;
var h = Object.prototype;
var i = typeof Symbol != "undefined" ? Symbol.prototype : null;
var j = g.push;
var k = g.slice;
var l = h.toString;
var m = h.hasOwnProperty;
var n = typeof ArrayBuffer != "undefined";
var o = typeof DataView != "undefined";
var p = Array.isArray;
var q = Object.keys;
var r = Object.create;
var s = n && ArrayBuffer.isView;
var t = isNaN;
var u = isFinite;
var v = !{
toString: null
}.propertyIsEnumerable("toString");
var w = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
var x = Math.pow(2, 53) - 1;
function y(a, b) {
b = b == null ? a.length - 1 : +b;
return function () {
for (var c = Math.max(arguments.length - b, 0), d = Array(c), e = 0; e < c; e++) {
d[e] = arguments[e + b];
}
switch (b) {
case 0:
return a.call(this, d);
case 1:
return a.call(this, arguments[0], d);
case 2:
return a.call(this, arguments[0], arguments[1], d);
}
var f = Array(b + 1);
for (e = 0; e < b; e++) {
f[e] = arguments[e];
}
f[b] = d;
return a.apply(this, f);
};
}
function z(a) {
var b = typeof a;
return b === "function" || b === "object" && !!a;
}
function A(a) {
return a === null;
}
function B(a) {
return a === undefined;
}
function C(a) {
return a === true || a === false || l.call(a) === "[object Boolean]";
}
function D(a) {
return !!a && a.nodeType === 1;
}
function E(a) {
var b = "[object " + a + "]";
return function (a) {
return l.call(a) === b;
};
}
const F = E("String");
const G = E("Number");
const H = E("Date");
const I = E("RegExp");
const J = E("Error");
const K = E("Symbol");
const L = E("ArrayBuffer");
var M = E("Function");
var N = f.document && f.document.childNodes;
if (typeof Int8Array != "object" && typeof N != "function") {
M = function (a) {
return typeof a == "function" || false;
};
}
const O = M;
const P = E("Object");
var Q = o && P(new DataView(new ArrayBuffer(8)));
var R = typeof Map != "undefined" && P(new Map());
var S = E("DataView");
const T = Q ? function (a) {
return a != null && O(a.getInt8) && L(a.buffer);
} : S;
const U = p || E("Array");
function V(a, b) {
return a != null && m.call(a, b);
}
var W = E("Arguments");
(function () {
if (!W(arguments)) {
W = function (a) {
return V(a, "callee");
};
}
})();
const X = W;
function Y(a) {
return !K(a) && u(a) && !isNaN(parseFloat(a));
}
function Z(a) {
return G(a) && t(a);
}
function $(a) {
return function () {
return a;
};
}
function _(a) {
return function (b) {
var c = a(b);
return typeof c == "number" && c >= 0 && c <= x;
};
}
function aa(a) {
return function (b) {
if (b == null) {
return undefined;
} else {
return b[a];
}
};
}
const ba = aa("byteLength");
const ca = _(ba);
var da = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;
const ea = n ? function (a) {
if (s) {
return s(a) && !T(a);
} else {
return ca(a) && da.test(l.call(a));
}
} : $(false);
const fa = aa("length");
function ga(a, b) {
b = function (a) {
for (var b = {}, c = a.length, d = 0; d < c; ++d) {
b[a[d]] = true;
}
return {
contains: function (a) {
return b[a] === true;
},
push: function (c) {
b[c] = true;
return a.push(c);
}
};
}(b);
var c = w.length;
var d = a.constructor;
var e = O(d) && d.prototype || h;
var f = "constructor";
for (V(a, f) && !b.contains(f) && b.push(f); c--;) {
if ((f = w[c]) in a && a[f] !== e[f] && !b.contains(f)) {
b.push(f);
}
}
}
function ha(a) {
if (!z(a)) {
return [];
}
if (q) {
return q(a);
}
var b = [];
for (var c in a) {
if (V(a, c)) {
b.push(c);
}
}
if (v) {
ga(a, b);
}
return b;
}
function ia(a) {
if (a == null) {
return true;
}
var b = fa(a);
if (typeof b == "number" && (U(a) || F(a) || X(a))) {
return b === 0;
} else {
return fa(ha(a)) === 0;
}
}
function ja(a, b) {
var c = ha(b);
var d = c.length;
if (a == null) {
return !d;
}
for (var e = Object(a), f = 0; f < d; f++) {
var g = c[f];
if (b[g] !== e[g] || !(g in e)) {
return false;
}
}
return true;
}
function ka(a) {
if (a instanceof ka) {
return a;
} else if (this instanceof ka) {
this._wrapped = a;
return;
} else {
return new ka(a);
}
}
function la(a) {
return new Uint8Array(a.buffer || a, a.byteOffset || 0, ba(a));
}
ka.VERSION = e;
ka.prototype.value = function () {
return this._wrapped;
};
ka.prototype.valueOf = ka.prototype.toJSON = ka.prototype.value;
ka.prototype.toString = function () {
return String(this._wrapped);
};
var ma = "[object DataView]";
function na(a, b, c, d) {
if (a === b) {
return a !== 0 || 1 / a == 1 / b;
}
if (a == null || b == null) {
return false;
}
if (a != a) {
return b != b;
}
var e = typeof a;
return (e === "function" || e === "object" || typeof b == "object") && oa(a, b, c, d);
}
function oa(a, b, c, d) {
if (a instanceof ka) {
a = a._wrapped;
}
if (b instanceof ka) {
b = b._wrapped;
}
var e = l.call(a);
if (e !== l.call(b)) {
return false;
}
if (Q && e == "[object Object]" && T(a)) {
if (!T(b)) {
return false;
}
e = ma;
}
switch (e) {
case "[object RegExp]":
case "[object String]":
return "" + a == "" + b;
case "[object Number]":
if (+a != +a) {
return +b != +b;
} else if (+a == 0) {
return 1 / +a == 1 / b;
} else {
return +a == +b;
}
case "[object Date]":
case "[object Boolean]":
return +a == +b;
case "[object Symbol]":
return i.valueOf.call(a) === i.valueOf.call(b);
case "[object ArrayBuffer]":
case ma:
return oa(la(a), la(b), c, d);
}
var f = e === "[object Array]";
if (!f && ea(a)) {
if (ba(a) !== ba(b)) {
return false;
}
if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) {
return true;
}
f = true;
}
if (!f) {
if (typeof a != "object" || typeof b != "object") {
return false;
}
var g = a.constructor;
var h = b.constructor;
if (g !== h && (!O(g) || !(g instanceof g) || !O(h) || !(h instanceof h)) && "constructor" in a && "constructor" in b) {
return false;
}
}
d = d || [];
for (var j = (c = c || []).length; j--;) {
if (c[j] === a) {
return d[j] === b;
}
}
c.push(a);
d.push(b);
if (f) {
if ((j = a.length) !== b.length) {
return false;
}
while (j--) {
if (!na(a[j], b[j], c, d)) {
return false;
}
}
} else {
var k;
var m = ha(a);
j = m.length;
if (ha(b).length !== j) {
return false;
}
while (j--) {
if (!V(b, k = m[j]) || !na(a[k], b[k], c, d)) {
return false;
}
}
}
c.pop();
d.pop();
return true;
}
function pa(a, b) {
return na(a, b);
}
function qa(a) {
if (!z(a)) {
return [];
}
var b = [];
for (var c in a) {
b.push(c);
}
if (v) {
ga(a, b);
}
return b;
}
function ra(a) {
var b = fa(a);
return function (c) {
if (c == null) {
return false;
}
var d = qa(c);
if (fa(d)) {
return false;
}
for (var e = 0; e < b; e++) {
if (!O(c[a[e]])) {
return false;
}
}
return a !== wa || !O(c[sa]);
};
}
var sa = "forEach";
var ta = ["clear", "delete"];
var ua = ["get", "has", "set"];
var va = ta.concat(sa, ua);
var wa = ta.concat(ua);
var xa = ["add"].concat(ta, sa, "has");
const ya = R ? ra(va) : E("Map");
const za = R ? ra(wa) : E("WeakMap");
const Aa = R ? ra(xa) : E("Set");
const Ba = E("WeakSet");
function Ca(a) {
for (var b = ha(a), c = b.length, d = Array(c), e = 0; e < c; e++) {
d[e] = a[b[e]];
}
return d;
}
function Da(a) {
for (var b = ha(a), c = b.length, d = Array(c), e = 0; e < c; e++) {
d[e] = [b[e], a[b[e]]];
}
return d;
}
function Ea(a) {
for (var b = {}, c = ha(a), d = 0, e = c.length; d < e; d++) {
b[a[c[d]]] = c[d];
}
return b;
}
function Fa(a) {
var b = [];
for (var c in a) {
if (O(a[c])) {
b.push(c);
}
}
return b.sort();
}
function Ga(a, b) {
return function (c) {
var d = arguments.length;
if (b) {
c = Object(c);
}
if (d < 2 || c == null) {
return c;
}
for (var e = 1; e < d; e++) {
for (var f = arguments[e], g = a(f), h = g.length, i = 0; i < h; i++) {
var j = g[i];
if (!b || c[j] === undefined) {
c[j] = f[j];
}
}
}
return c;
};
}
const Ha = Ga(qa);
const Ia = Ga(ha);
const Ja = Ga(qa, true);
function Ka(a) {
if (!z(a)) {
return {};
}
if (r) {
return r(a);
}
function b() {}
b.prototype = a;
var c = new b();
b.prototype = null;
return c;
}
function La(a, b) {
var c = Ka(a);
if (b) {
Ia(c, b);
}
return c;
}
function Ma(a) {
if (z(a)) {
if (U(a)) {
return a.slice();
} else {
return Ha({}, a);
}
} else {
return a;
}
}
function Na(a, b) {
b(a);
return a;
}
function Oa(a) {
if (U(a)) {
return a;
} else {
return [a];
}
}
function Pa(a) {
return ka.toPath(a);
}
function Qa(a, b) {
for (var c = b.length, d = 0; d < c; d++) {
if (a == null) {
return;
}
a = a[b[d]];
}
if (c) {
return a;
} else {
return undefined;
}
}
function Ra(a, b, c) {
var d = Qa(a, Pa(b));
if (B(d)) {
return c;
} else {
return d;
}
}
function Sa(a, b) {
for (var c = (b = Pa(b)).length, d = 0; d < c; d++) {
var e = b[d];
if (!V(a, e)) {
return false;
}
a = a[e];
}
return !!c;
}
function Ta(a) {
return a;
}
function Ua(a) {
a = Ia({}, a);
return function (b) {
return ja(b, a);
};
}
function Va(a) {
a = Pa(a);
return function (b) {
return Qa(b, a);
};
}
function Wa(a, b, c) {
if (b === undefined) {
return a;
}
switch (c == null ? 3 : c) {
case 1:
return function (c) {
return a.call(b, c);
};
case 3:
return function (c, d, e) {
return a.call(b, c, d, e);
};
case 4:
return function (c, d, e, f) {
return a.call(b, c, d, e, f);
};
}
return function () {
return a.apply(b, arguments);
};
}
function Xa(a, b, c) {
if (a == null) {
return Ta;
} else if (O(a)) {
return Wa(a, b, c);
} else if (z(a) && !U(a)) {
return Ua(a);
} else {
return Va(a);
}
}
function Ya(a, b) {
return Xa(a, b, Infinity);
}
function Za(a, b, c) {
if (ka.iteratee !== Ya) {
return ka.iteratee(a, b);
} else {
return Xa(a, b, c);
}
}
function $a(a, b, c) {
b = Za(b, c);
for (var d = ha(a), e = d.length, f = {}, g = 0; g < e; g++) {
var h = d[g];
f[h] = b(a[h], h, a);
}
return f;
}
function _a() {}
function ab(a) {
if (a == null) {
return _a;
} else {
return function (b) {
return Ra(a, b);
};
}
}
function bb(a, b, c) {
var d = Array(Math.max(0, a));
b = Wa(b, c, 1);
for (var e = 0; e < a; e++) {
d[e] = b(e);
}
return d;
}
function cb(a, b) {
if (b == null) {
b = a;
a = 0;
}
return a + Math.floor(Math.random() * (b - a + 1));
}
ka.toPath = Oa;
ka.iteratee = Ya;
const db = Date.now || function () {
return new Date().getTime();
};
function eb(a) {
function b(b) {
return a[b];
}
var c = "(?:" + ha(a).join("|") + ")";
var d = RegExp(c);
var e = RegExp(c, "g");
return function (a) {
a = a == null ? "" : "" + a;
if (d.test(a)) {
return a.replace(e, b);
} else {
return a;
}
};
}
const fb = {
"&": "&",
"<": "<",
">": ">",
"\"": """,
"'": "'",
"`": "`"
};
const gb = eb(fb);
const hb = eb(Ea(fb));
const ib = ka.templateSettings = {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
var jb = /(.)^/;
var kb = {
"'": "'",
"\\": "\\",
"\r": "r",
"\n": "n",
"\u2028": "u2028",
"\u2029": "u2029"
};
var lb = /\\|'|\r|\n|\u2028|\u2029/g;
function mb(a) {
return "\\" + kb[a];
}
var nb = /^\s*(\w|\$)+\s*$/;
function ob(a, b, c) {
if (!b && c) {
b = c;
}
b = Ja({}, b, ka.templateSettings);
var d = RegExp([(b.escape || jb).source, (b.interpolate || jb).source, (b.evaluate || jb).source].join("|") + "|$", "g");
var e = 0;
var f = "__p+='";
a.replace(d, function (b, c, d, g, h) {
f += a.slice(e, h).replace(lb, mb);
e = h + b.length;
if (c) {
f += "'+\n((__t=(" + c + "))==null?'':_.escape(__t))+\n'";
} else if (d) {
f += "'+\n((__t=(" + d + "))==null?'':__t)+\n'";
} else if (g) {
f += "';\n" + g + "\n__p+='";
}
return b;
});
f += "';\n";
var g;
var h = b.variable;
if (h) {
if (!nb.test(h)) {
throw new Error("variable is not a bare identifier: " + h);
}
} else {
f = "with(obj||{}){\n" + f + "}\n";
h = "obj";
}
f = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + f + "return __p;\n";
try {
g = new Function(h, "_", f);
} catch (a) {
a.source = f;
throw a;
}
function i(a) {
return g.call(this, a, ka);
}
i.source = "function(" + h + "){\n" + f + "}";
return i;
}
function pb(a, b, c) {
var d = (b = Pa(b)).length;
if (!d) {
if (O(c)) {
return c.call(a);
} else {
return c;
}
}
for (var e = 0; e < d; e++) {
var f = a == null ? undefined : a[b[e]];
if (f === undefined) {
f = c;
e = d;
}
a = O(f) ? f.call(a) : f;
}
return a;
}
var qb = 0;
function rb(a) {
var b = ++qb + "";
if (a) {
return a + b;
} else {
return b;
}
}
function sb(a) {
var b = ka(a);
b._chain = true;
return b;
}
function tb(a, b, c, d, e) {
if (!(d instanceof b)) {
return a.apply(c, e);
}
var f = Ka(a.prototype);
var g = a.apply(f, e);
if (z(g)) {
return g;
} else {
return f;
}
}
var ub = y(function (a, b) {
var c = ub.placeholder;
function d() {
for (var e = 0, f = b.length, g = Array(f), h = 0; h < f; h++) {
g[h] = b[h] === c ? arguments[e++] : b[h];
}
while (e < arguments.length) {
g.push(arguments[e++]);
}
return tb(a, d, this, this, g);
}
return d;
});
ub.placeholder = ka;
const vb = ub;
const wb = y(function (a, b, c) {
if (!O(a)) {
throw new TypeError("Bind must be called on a function");
}
var d = y(function (e) {
return tb(a, d, b, this, c.concat(e));
});
return d;
});
const xb = _(fa);
function yb(a, b, c, d) {
d = d || [];
if (b || b === 0) {
if (b <= 0) {
return d.concat(a);
}
} else {
b = Infinity;
}
for (var e = d.length, f = 0, g = fa(a); f < g; f++) {
var h = a[f];
if (xb(h) && (U(h) || X(h))) {
if (b > 1) {
yb(h, b - 1, c, d);
e = d.length;
} else {
for (var i = 0, j = h.length; i < j;) {
d[e++] = h[i++];
}
}
} else if (!c) {
d[e++] = h;
}
}
return d;
}
const zb = y(function (a, b) {
var c = (b = yb(b, false, false)).length;
if (c < 1) {
throw new Error("bindAll must be passed function names");
}
while (c--) {
var d = b[c];
a[d] = wb(a[d], a);
}
return a;
});
function Ab(a, b) {
function c(d) {
var e = c.cache;
var f = "" + (b ? b.apply(this, arguments) : d);
if (!V(e, f)) {
e[f] = a.apply(this, arguments);
}
return e[f];
}
c.cache = {};
return c;
}
const Bb = y(function (a, b, c) {
return setTimeout(function () {
return a.apply(null, c);
}, b);
});
const Cb = vb(Bb, ka, 1);
function Db(a, b, c) {
var d;
var e;
var f;
var g;
var h = 0;
c ||= {};
function i() {
h = c.leading === false ? 0 : db();
d = null;
g = a.apply(e, f);
if (!d) {
e = f = null;
}
}
function j() {
var j = db();
if (!h && c.leading === false) {
h = j;
}
var k = b - (j - h);
e = this;
f = arguments;
if (k <= 0 || k > b) {
if (d) {
clearTimeout(d);
d = null;
}
h = j;
g = a.apply(e, f);
if (!d) {
e = f = null;
}
} else if (!d && c.trailing !== false) {
d = setTimeout(i, k);
}
return g;
}
j.cancel = function () {
clearTimeout(d);
h = 0;
d = e = f = null;
};
return j;
}
function Eb(a, b, c) {
var d;
var e;
var f;
var g;
var h;
function i() {
var j = db() - e;
if (b > j) {
d = setTimeout(i, b - j);
} else {
d = null;
if (!c) {
g = a.apply(h, f);
}
if (!d) {
f = h = null;
}
}
}
var j = y(function (j) {
h = this;
f = j;
e = db();
if (!d) {
d = setTimeout(i, b);
if (c) {
g = a.apply(h, f);
}
}
return g;
});
j.cancel = function () {
clearTimeout(d);
d = f = h = null;
};
return j;
}
function Fb(a, b) {
return vb(b, a);
}
function Gb(a) {
return function () {
return !a.apply(this, arguments);
};
}
function Hb() {
var a = arguments;
var b = a.length - 1;
return function () {
for (var c = b, d = a[b].apply(this, arguments); c--;) {
d = a[c].call(this, d);
}
return d;
};
}
function Ib(a, b) {
return function () {
if (--a < 1) {
return b.apply(this, arguments);
}
};
}
function Jb(a, b) {
var c;
return function () {
if (--a > 0) {
c = b.apply(this, arguments);
}
if (a <= 1) {
b = null;
}
return c;
};
}
const Kb = vb(Jb, 2);
function Lb(a, b, c) {
b = Za(b, c);
for (var d, e = ha(a), f = 0, g = e.length; f < g; f++) {
if (b(a[d = e[f]], d, a)) {
return d;
}
}
}
function Mb(a) {
return function (b, c, d) {
c = Za(c, d);
for (var e = fa(b), f = a > 0 ? 0 : e - 1; f >= 0 && f < e; f += a) {
if (c(b[f], f, b)) {
return f;
}
}
return -1;
};
}
const Nb = Mb(1);
const Ob = Mb(-1);
function Pb(a, b, c, d) {
for (var e = (c = Za(c, d, 1))(b), f = 0, g = fa(a); f < g;) {
var h = Math.floor((f + g) / 2);
if (c(a[h]) < e) {
f = h + 1;
} else {
g = h;
}
}
return f;
}
function Qb(a, b, c) {
return function (d, e, f) {
var g = 0;
var h = fa(d);
if (typeof f == "number") {
if (a > 0) {
g = f >= 0 ? f : Math.max(f + h, g);
} else {
h = f >= 0 ? Math.min(f + 1, h) : f + h + 1;
}
} else if (c && f && h) {
if (d[f = c(d, e)] === e) {
return f;
} else {
return -1;
}
}
if (e != e) {
if ((f = b(k.call(d, g, h), Z)) >= 0) {
return f + g;
} else {
return -1;
}
}
for (f = a > 0 ? g : h - 1; f >= 0 && f < h; f += a) {
if (d[f] === e) {
return f;
}
}
return -1;
};
}
const Rb = Qb(1, Nb, Pb);
const Sb = Qb(-1, Ob);
function Tb(a, b, c) {
var d = (xb(a) ? Nb : Lb)(a, b, c);
if (d !== undefined && d !== -1) {
return a[d];
}
}
function Ub(a, b) {
return Tb(a, Ua(b));
}
function Vb(a, b, c) {
var d;
var e;
b = Wa(b, c);
if (xb(a)) {
d = 0;
e = a.length;
for (; d < e; d++) {
b(a[d], d, a);
}
} else {
var f = ha(a);
d = 0;
e = f.length;
for (; d < e; d++) {
b(a[f[d]], f[d], a);
}
}
return a;
}
function Wb(a, b, c) {
b = Za(b, c);
for (var d = !xb(a) && ha(a), e = (d || a).length, f = Array(e), g = 0; g < e; g++) {
var h = d ? d[g] : g;
f[g] = b(a[h], h, a);
}
return f;
}
function Xb(a) {
return function (b, c, d, e) {
var f = arguments.length >= 3;
return function (b, c, d, e) {
var f = !xb(b) && ha(b);
var g = (f || b).length;
var h = a > 0 ? 0 : g - 1;
for (e || (d = b[f ? f[h] : h], h += a); h >= 0 && h < g; h += a) {
var i = f ? f[h] : h;
d = c(d, b[i], i, b);
}
return d;
}(b, Wa(c, e, 4), d, f);
};
}
const Yb = Xb(1);
const Zb = Xb(-1);
function $b(a, b, c) {
var d = [];
b = Za(b, c);
Vb(a, function (a, c, e) {
if (b(a, c, e)) {
d.push(a);
}
});
return d;
}
function _b(a, b, c) {
return $b(a, Gb(Za(b)), c);
}
function ac(a, b, c) {
b = Za(b, c);
for (var d = !xb(a) && ha(a), e = (d || a).length, f = 0; f < e; f++) {
var g = d ? d[f] : f;
if (!b(a[g], g, a)) {
return false;
}
}
return true;
}
function bc(a, b, c) {
b = Za(b, c);
for (var d = !xb(a) && ha(a), e = (d || a).length, f = 0; f < e; f++) {
var g = d ? d[f] : f;
if (b(a[g], g, a)) {
return true;
}
}
return false;
}
function cc(a, b, c, d) {
if (!xb(a)) {
a = Ca(a);
}
if (typeof c != "number" || d) {
c = 0;
}
return Rb(a, b, c) >= 0;
}
const dc = y(function (a, b, c) {
var d;
var e;
if (O(b)) {
e = b;
} else {
b = Pa(b);
d = b.slice(0, -1);
b = b[b.length - 1];
}
return Wb(a, function (a) {
var f = e;
if (!f) {
if (d && d.length) {
a = Qa(a, d);
}
if (a == null) {
return;
}
f = a[b];
}
if (f == null) {
return f;
} else {
return f.apply(a, c);
}
});
});
function ec(a, b) {
return Wb(a, Va(b));
}
function fc(a, b) {
return $b(a, Ua(b));
}
function gc(a, b, c) {
var d;
var e;
var f = -Infinity;
var g = -Infinity;
if (b == null || typeof b == "number" && typeof a[0] != "object" && a != null) {
for (var h = 0, i = (a = xb(a) ? a : Ca(a)).length; h < i; h++) {
if ((d = a[h]) != null && d > f) {
f = d;
}
}
} else {
b = Za(b, c);
Vb(a, function (a, c, d) {
if ((e = b(a, c, d)) > g || e === -Infinity && f === -Infinity) {
f = a;
g = e;
}
});
}
return f;
}
function hc(a, b, c) {
var d;
var e;
var f = Infinity;
var g = Infinity;
if (b == null || typeof b == "number" && typeof a[0] != "object" && a != null) {
for (var h = 0, i = (a = xb(a) ? a : Ca(a)).length; h < i; h++) {
if ((d = a[h]) != null && d < f) {
f = d;
}
}
} else {
b = Za(b, c);
Vb(a, function (a, c, d) {
if ((e = b(a, c, d)) < g || e === Infinity && f === Infinity) {
f = a;
g = e;
}
});
}
return f;
}
var ic = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g;
function jc(a) {
if (a) {
if (U(a)) {
return k.call(a);
} else if (F(a)) {
return a.match(ic);
} else if (xb(a)) {
return Wb(a, Ta);
} else {
return Ca(a);
}
} else {
return [];
}
}
function kc(a, b, c) {
if (b == null || c) {
if (!xb(a)) {
a = Ca(a);
}
return a[cb(a.length - 1)];
}
var d = jc(a);
var e = fa(d);
b = Math.max(Math.min(b, e), 0);
for (var f = e - 1, g = 0; g < b; g++) {
var h = cb(g, f);
var i = d[g];
d[g] = d[h];
d[h] = i;
}
return d.slice(0, b);
}
function lc(a) {
return kc(a, Infinity);
}
function mc(a, b, c) {
var d = 0;
b = Za(b, c);
return ec(Wb(a, function (a, c, e) {
return {
value: a,
index: d++,
criteria: b(a, c, e)
};
}).sort(function (a, b) {
var c = a.criteria;
var d = b.criteria;
if (c !== d) {
if (c > d || c === undefined) {
return 1;
}
if (c < d || d === undefined) {
return -1;
}
}
return a.index - b.index;
}), "value");
}
function nc(a, b) {
return function (c, d, e) {
var f = b ? [
[],
[]
] : {};
d = Za(d, e);
Vb(c, function (b, e) {
var g = d(b, e, c);
a(f, b, g);
});
return f;
};
}
const oc = nc(function (a, b, c) {
if (V(a, c)) {
a[c].push(b);
} else {
a[c] = [b];
}
});
const pc = nc(function (a, b, c) {
a[c] = b;
});
const qc = nc(function (a, b, c) {
if (V(a, c)) {
a[c]++;
} else {
a[c] = 1;
}
});
const rc = nc(function (a, b, c) {
a[c ? 0 : 1].push(b);
}, true);
function sc(a) {
if (a == null) {
return 0;
} else if (xb(a)) {
return a.length;
} else {
return ha(a).length;
}
}
function tc(a, b, c) {
return b in c;
}
const uc = y(function (a, b) {
var c = {};
var d = b[0];
if (a == null) {
return c;
}
if (O(d)) {
if (b.length > 1) {
d = Wa(d, b[1]);
}
b = qa(a);
} else {
d = tc;
b = yb(b, false, false);
a = Object(a);
}
for (var e = 0, f = b.length; e < f; e++) {
var g = b[e];
var h = a[g];
if (d(h, g, a)) {
c[g] = h;
}
}
return c;
});
const vc = y(function (a, b) {
var c;
var d = b[0];
if (O(d)) {
d = Gb(d);
if (b.length > 1) {
c = b[1];
}
} else {
b = Wb(yb(b, false, false), String);
d = function (a, c) {
return !cc(b, c);
};
}
return uc(a, d, c);
});
function wc(a, b, c) {
return k.call(a, 0, Math.max(0, a.length - (b == null || c ? 1 : b)));
}
function xc(a, b, c) {
if (a == null || a.length < 1) {
if (b == null || c) {
return undefined;
} else {
return [];
}
} else if (b == null || c) {
return a[0];
} else {
return wc(a, a.length - b);
}
}
function yc(a, b, c) {
return k.call(a, b == null || c ? 1 : b);
}
function zc(a, b, c) {
if (a == null || a.length < 1) {
if (b == null || c) {
return undefined;
} else {
return [];
}
} else if (b == null || c) {
return a[a.length - 1];
} else {
return yc(a, Math.max(0, a.length - b));
}
}
function Ac(a) {
return $b(a, Boolean);
}
function Bc(a, b) {
return yb(a, b, false);
}
const Cc = y(function (a, b) {
b = yb(b, true, true);
return $b(a, function (a) {
return !cc(b, a);
});
});
const Dc = y(function (a, b) {
return Cc(a, b);
});
function Ec(a, b, c, d) {
if (!C(b)) {
d = c;
c = b;
b = false;
}
if (c != null) {
c = Za(c, d);
}
for (var e = [], f = [], g = 0, h = fa(a); g < h; g++) {
var i = a[g];
var j = c ? c(i, g, a) : i;
if (b && !c) {
if (!g || f !== j) {
e.push(i);
}
f = j;
} else if (c) {
if (!cc(f, j)) {
f.push(j);
e.push(i);
}
} else if (!cc(e, i)) {
e.push(i);
}
}
return e;
}
const Fc = y(function (a) {
return Ec(yb(a, true, true));
});
function Gc(a) {
for (var b = [], c = arguments.length, d = 0, e = fa(a); d < e; d++) {
var f = a[d];
if (!cc(b, f)) {
var g;
for (g = 1; g < c && cc(arguments[g], f); g++);
if (g === c) {
b.push(f);
}
}
}
return b;
}
function Hc(a) {
for (var b = a && gc(a, fa).length || 0, c = Array(b), d = 0; d < b; d++) {
c[d] = ec(a, d);
}
return c;
}
const Ic = y(Hc);
function Jc(a, b) {
for (var c = {}, d = 0, e = fa(a); d < e; d++) {
if (b) {
c[a[d]] = b[d];
} else {
c[a[d][0]] = a[d][1];
}
}
return c;
}
function Kc(a, b, c) {
if (b == null) {
b = a || 0;
a = 0;
}
c ||= b < a ? -1 : 1;
for (var d = Math.max(Math.ceil((b - a) / c), 0), e = Array(d), f = 0; f < d; f++, a += c) {
e[f] = a;
}
return e;
}
function Lc(a, b) {
if (b == null || b < 1) {
return [];
}
for (var c = [], d = 0, e = a.length; d < e;) {
c.push(k.call(a, d, d += b));
}
return c;
}
function Mc(a, b) {
if (a._chain) {
return ka(b).chain();
} else {
return b;
}
}
function Nc(a) {
Vb(Fa(a), function (b) {
var c = ka[b] = a[b];
ka.prototype[b] = function () {
var a = [this._wrapped];
j.apply(a, arguments);
return Mc(this, c.apply(ka, a));
};
});
return ka;
}
Vb(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function (a) {
var b = g[a];
ka.prototype[a] = function () {
var c = this._wrapped;
if (c != null) {
b.apply(c, arguments);
if ((a === "shift" || a === "splice") && c.length === 0) {
delete c[0];
}
}
return Mc(this, c);
};
});
Vb(["concat", "join", "slice"], function (a) {
var b = g[a];
ka.prototype[a] = function () {
var a = this._wrapped;
if (a != null) {
a = b.apply(a, arguments);
}
return Mc(this, a);
};
});
const Oc = ka;
var Pc = Nc(d);
Pc._ = Pc;
const Qc = Pc;
}
};
var b = {};
function c(d) {
var e = b[d];
if (e !== undefined) {
return e.exports;
}
var f = b[d] = {
id: d,
loaded: false,
exports: {}
};
a[d].call(f.exports, f, f.exports, c);
f.loaded = true;
return f.exports;
}
c.n = a => {
var b = a && a.__esModule ? () => a.default : () => a;
c.d(b, {
a: b
});
return b;
};
c.d = (a, b) => {
for (var d in b) {
if (c.o(b, d) && !c.o(a, d)) {
Object.defineProperty(a, d, {
enumerable: true,
get: b[d]
});
}
}
};
c.g = function () {
if (typeof globalThis == "object") {
return globalThis;
}
try {
return this || new Function("return this")();
} catch (a) {
if (typeof window == "object") {
return window;
}
}
}();
c.o = (a, b) => Object.prototype.hasOwnProperty.call(a, b);
c.r = a => {
if (typeof Symbol != "undefined" && Symbol.toStringTag) {
Object.defineProperty(a, Symbol.toStringTag, {
value: "Module"
});
}
Object.defineProperty(a, "__esModule", {
value: true
});
};
c.nmd = a => {
a.paths = [];
a.children ||= [];
return a;
};
var d = c(911);
})();