239?4:s>223?3:s>191?2:1;if(a+u<=r)switch(u){case 1:s<128&&(h=s);break;case 2:(192&(n=e[a+1]))==128&&(f=(31&s)<<6|63&n)>127&&(h=f);break;case 3:n=e[a+1],o=e[a+2],(192&n)==128&&(192&o)==128&&(f=(15&s)<<12|(63&n)<<6|63&o)>2047&&(f<55296||f>57343)&&(h=f);break;case 4:n=e[a+1],o=e[a+2],l=e[a+3],(192&n)==128&&(192&o)==128&&(192&l)==128&&(f=(15&s)<<18|(63&n)<<12|(63&o)<<6|63&l)>65535&&f<1114112&&(h=f)}null===h?(h=65533,u=1):h>65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h),a+=u}var c=i,p=c.length;if(p<=4096)return String.fromCharCode.apply(String,c);for(var d="",g=0;gr)throw RangeError("Trying to access beyond buffer length")}function _(e,t,r,i,a,n){if(!l.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>a||te.length)throw RangeError("Index out of range")}function w(e,t,r,i,a,n){if(r+i>e.length||r<0)throw RangeError("Index out of range")}function D(e,t,r,i,n){return t*=1,r>>>=0,n||w(e,t,r,4,34028234663852886e22,-34028234663852886e22),a.write(e,t,r,i,23,4),r+4}function S(e,t,r,i,n){return t*=1,r>>>=0,n||w(e,t,r,8,17976931348623157e292,-17976931348623157e292),a.write(e,t,r,i,52,8),r+8}l.prototype.write=function(e,t,r,i){if(void 0===t)i="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)i=t,r=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var a,n,o,l,f,s,h,u,c=this.length-t;if((void 0===r||r>c)&&(r=c),e.length>0&&(r<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var p=!1;;)switch(i){case"hex":return function(e,t,r,i){r=Number(r)||0;var a=e.length-r;i?(i=Number(i))>a&&(i=a):i=a;var n=t.length;i>n/2&&(i=n/2);for(var o=0;o>8,a.push(r%256),a.push(i);return a}(e,this.length-h),this,h,u);default:if(p)throw TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),p=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},l.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||v(e,t,this.length);for(var i=this[e],a=1,n=0;++n>>=0,t>>>=0,r||v(e,t,this.length);for(var i=this[e+--t],a=1;t>0&&(a*=256);)i+=this[e+--t]*a;return i},l.prototype.readUInt8=function(e,t){return e>>>=0,t||v(e,1,this.length),this[e]},l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+0x1000000*this[e+3]},l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),0x1000000*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var i=this[e],a=1,n=0;++n=(a*=128)&&(i-=Math.pow(2,8*t)),i},l.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var i=t,a=1,n=this[e+--i];i>0&&(a*=256);)n+=this[e+--i]*a;return n>=(a*=128)&&(n-=Math.pow(2,8*t)),n},l.prototype.readInt8=function(e,t){return(e>>>=0,t||v(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?0xffff0000|r:r},l.prototype.readInt16BE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?0xffff0000|r:r},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readFloatLE=function(e,t){return e>>>=0,t||v(e,4,this.length),a.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||v(e,4,this.length),a.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||v(e,8,this.length),a.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||v(e,8,this.length),a.read(this,e,!1,52,8)},l.prototype.writeUIntLE=function(e,t,r,i){if(e*=1,t>>>=0,r>>>=0,!i){var a=Math.pow(2,8*r)-1;_(this,e,t,r,a,0)}var n=1,o=0;for(this[t]=255&e;++o>>=0,r>>>=0,!i){var a=Math.pow(2,8*r)-1;_(this,e,t,r,a,0)}var n=r-1,o=1;for(this[t+n]=255&e;--n>=0&&(o*=256);)this[t+n]=e/o&255;return t+r},l.prototype.writeUInt8=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUInt16LE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUInt16BE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUInt32LE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,4,0xffffffff,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUInt32BE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,4,0xffffffff,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeIntLE=function(e,t,r,i){if(e*=1,t>>>=0,!i){var a=Math.pow(2,8*r-1);_(this,e,t,r,a-1,-a)}var n=0,o=1,l=0;for(this[t]=255&e;++n>>=0,!i){var a=Math.pow(2,8*r-1);_(this,e,t,r,a-1,-a)}var n=r-1,o=1,l=0;for(this[t+n]=255&e;--n>=0&&(o*=256);)e<0&&0===l&&0!==this[t+n+1]&&(l=1),this[t+n]=(e/o|0)-l&255;return t+r},l.prototype.writeInt8=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,4,0x7fffffff,-0x80000000),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,r){return e*=1,t>>>=0,r||_(this,e,t,4,0x7fffffff,-0x80000000),e<0&&(e=0xffffffff+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeFloatLE=function(e,t,r){return D(this,e,t,!0,r)},l.prototype.writeFloatBE=function(e,t,r){return D(this,e,t,!1,r)},l.prototype.writeDoubleLE=function(e,t,r){return S(this,e,t,!0,r)},l.prototype.writeDoubleBE=function(e,t,r){return S(this,e,t,!1,r)},l.prototype.copy=function(e,t,r,i){if(!l.isBuffer(e))throw TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw RangeError("Index out of range");if(i<0)throw RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t=0;--n)e[n+t]=this[n+r];else Uint8Array.prototype.set.call(e,this.subarray(r,i),t);return a},l.prototype.fill=function(e,t,r,i){if("string"==typeof e){if("string"==typeof t?(i=t,t=0,r=this.length):"string"==typeof r&&(i=r,r=this.length),void 0!==i&&"string"!=typeof i)throw TypeError("encoding must be a string");if("string"==typeof i&&!l.isEncoding(i))throw TypeError("Unknown encoding: "+i);if(1===e.length){var a,n=e.charCodeAt(0);("utf8"===i&&n<128||"latin1"===i)&&(e=n)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a55295&&r<57344){if(!a){if(r>56319||o+1===i){(t-=3)>-1&&n.push(239,191,189);continue}a=r;continue}if(r<56320){(t-=3)>-1&&n.push(239,191,189),a=r;continue}r=(a-55296<<10|r-56320)+65536}else a&&(t-=3)>-1&&n.push(239,191,189);if(a=null,r<128){if((t-=1)<0)break;n.push(r)}else if(r<2048){if((t-=2)<0)break;n.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;n.push(r>>12|224,r>>6&63|128,63&r|128)}else if(r<1114112){if((t-=4)<0)break;n.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else throw Error("Invalid code point")}return n}function E(e){for(var t=[],r=0;r=t.length)&&!(a>=e.length);++a)t[a+r]=e[a];return a}function T(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}var x=function(){for(var e="0123456789abcdef",t=Array(256),r=0;r<16;++r)for(var i=16*r,a=0;a<16;++a)t[i+a]=e[r]+e[a];return t}()},783:function(e,t){t.read=function(e,t,r,i,a){var n,o,l=8*a-i-1,f=(1<>1,h=-7,u=r?a-1:0,c=r?-1:1,p=e[t+u];for(u+=c,n=p&(1<<-h)-1,p>>=-h,h+=l;h>0;n=256*n+e[t+u],u+=c,h-=8);for(o=n&(1<<-h)-1,n>>=-h,h+=i;h>0;o=256*o+e[t+u],u+=c,h-=8);if(0===n)n=1-s;else{if(n===f)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,i),n-=s}return(p?-1:1)*o*Math.pow(2,n-i)},t.write=function(e,t,r,i,a,n){var o,l,f,s=8*n-a-1,h=(1<>1,c=5960464477539062e-23*(23===a),p=i?0:n-1,d=i?1:-1,g=+(t<0||0===t&&1/t<0);for(isNaN(t=Math.abs(t))||t===1/0?(l=+!!isNaN(t),o=h):(o=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-o))<1&&(o--,f*=2),o+u>=1?t+=c/f:t+=c*Math.pow(2,1-u),t*f>=2&&(o++,f/=2),o+u>=h?(l=0,o=h):o+u>=1?(l=(t*f-1)*Math.pow(2,a),o+=u):(l=t*Math.pow(2,u-1)*Math.pow(2,a),o=0));a>=8;e[r+p]=255&l,p+=d,l/=256,a-=8);for(o=o<0;e[r+p]=255&o,p+=d,o/=256,s-=8);e[r+p-d]|=128*g}}},r={};function i(t){var a=r[t];if(void 0!==a)return a.exports;var n=r[t]={exports:{}},o=!0;try{e[t](n,n.exports,i),o=!1}finally{o&&delete r[t]}return n.exports}i.ab="/ROOT/node_modules/next/dist/compiled/buffer/",t.exports=i(72)}()},63871,e=>{"use strict";e.s(["ModelViewerContext",()=>r,"default",()=>i]);var t=e.i(71645);let r=t.default.createContext(null);function i(){let e=(0,t.useContext)(r);if(!e)throw Error("No ModelViewerContext.Provider");return e}r.displayName="ModelViewerContext"},29947,e=>{e.v(JSON.parse('{"defaultSkins":{"lmale":["Blood Eagle","Children of the Phoenix","Diamond Sword","Inferno","Starwolf","Storm"],"mmale":["Blood Eagle","Children of the Phoenix","Diamond Sword","Inferno","Starwolf","Storm"],"hmale":["Blood Eagle","Children of the Phoenix","Diamond Sword","Inferno","Starwolf","Storm"],"lfemale":["Blood Eagle","Children of the Phoenix","Diamond Sword","Inferno","Starwolf","Storm"],"mfemale":["Blood Eagle","Children of the Phoenix","Diamond Sword","Inferno","Starwolf","Storm"],"hfemale":[],"lbioderm":["Horde","Inferno","Storm"],"mbioderm":["Horde","Inferno","Storm"],"hbioderm":["Horde","Inferno","Storm"]},"modelDefaults":{"lmale":"Blood Eagle","mmale":"Blood Eagle","hmale":"Blood Eagle","lfemale":"Blood Eagle","mfemale":"Blood Eagle","hfemale":"Blood Eagle","lbioderm":"Storm","mbioderm":"Storm","hbioderm":"Storm","chaingun":"weapon_chaingun","disc":"weapon_disc","elf":"weapon_elf","energy":"weapon_energy","grenade_launcher":"weapon_grenade_launcher","mine":"mine","missile":"weapon_missile","mortar":"weapon_mortar","plasmathrower":"weapon_plasmathrower","repair":"weapon_repair","shocklance":"weapon_shocklance","sniper":"weapon_sniper","targeting":"weapon_targeting","vehicle_land_mpbbase":"vehicle_land_mpbbase","vehicle_grav_scout":"vehicle_grav_scout","vehicle_grav_tank":"vehicle_grav_tank","turret_assaulttank_mortar":"turret_assaulttank_mortar","vehicle_air_scout":"vehicle_air_scout","vehicle_air_bomber":"vehicle_air_bomber","vehicle_air_hapc":"vehicle_air_hapc"},"animationLabels":{"Forward":"Run Forward","Back":"Run Backward","Back0":"Run Backward","Root":"Idle","Root2":"Run Backward","Root3":"Idle","Idlepda":"Idle (PDA)","PDA":"Idle (PDA)","Root1":"Idle (PDA)","Jump":"Jump","Jump0":"Jump (Alternate)","Jump1":"Jump (Alternate)","Jump2":"Jump (Alternate)","Jump3":"Jump (Alternate)","Jet":"Jet","Fall":"Fall","Land":"Land","Land1":"Land (Alternate)","ski":"Ski","Side":"Strafe Left","Celwave":"Wave","Celbow":"Bow","Celdisco":"Dance","Celdance":"Dance","Celflex":"Flex","Celflex1":"Flex","Celrocky":"Awesome","Celjump":"Awesome","Celsalute":"Salute","celTaunt":"Too Bad","CelebrationGora":"Wave Arms","Celgora":"Wave Arms","CelebrationJump":"Bull Charge","Tauntbull":"Bull Charge","CelebrationJump0":"Celebrate","CelebrationJump4":"The Greatest","CelebrationRoar":"Roar","Celroar":"Roar","Celraor":"Roar","Celflex2":"Flex","celyeah":"Yeah","celtaunt":"Too Bad","Tauntbutt":"Butt","Tauntkiss":"Blow Kiss","Tauntbest":"The Greatest","Taunimp":"Move!","Tauntimp":"Move!","Sitting":"Sit","Scoutroot":"Gravcycle","Recoilde":"Recoil","Light_recoil":"Recoil","Dieforward":"Death (Fall Forward)","DeathForward":"Death (Fall Forward)","Dieslump":"Death (Slump)","DeathSlump":"Death (Slump)","Diespin":"Death (Spin)","DeathSpin":"Death (Spin)","diechest":"Death (Hold Chest)","Diechest":"Death (Hold Chest)","DeathChest":"Death (Hold Chest)","Dieback":"Death (Hold Back)","DeathBack":"Death (Hold Back)","Diehead":"Death (Hold Head)","DeathHead":"Death (Hold Head)","Dieknees":"Death (On Knees)","DeathKnees":"Death (On Knees)","Dieleglf":"Death (Left Leg Injury)","Dieleglft":"Death (Left Leg Injury)","DeathLegLeft":"Death (Left Leg Injury)","Dielegrt":"Death (Right Leg Injury)","Dielegtrt":"Death (Right Leg Injury)","DeathLegRight":"Death (Right Leg Injury)","Dielegrt0":"Death (Right Leg Injury)","Diesidelf":"Death (Left Side)","DeathSideLeft":"Death (Left Side)","Diesidert":"Death (Right Side)","DeathSideRight":"Death (Right Side)","Diesidert0":"Death (Right Side Alternate)"},"cameraOverrides":{"chaingun":{"target":"0m 0m 0m","fov":"12deg"},"plasmathrower":{"target":"0.002m -0.001m 0m","fov":"12deg"},"energy":{"fov":"31deg","orbit":"135deg 70deg 105%"},"hmale":{"fov":"24deg"},"hfemale":{"fov":"24deg"},"hbioderm":{"fov":"24deg"},"vehicle_grav_scout":{"orbit":"290deg 60deg 130%"},"vehicle_grav_tank":{"orbit":"290deg 60deg 130%"},"turret_assaulttank_mortar":{"orbit":"290deg 60deg 130%"},"vehicle_land_mpbbase":{"orbit":"290deg 60deg 130%"},"vehicle_air_scout":{"orbit":"290deg 60deg 130%"},"vehicle_air_bomber":{"orbit":"290deg 60deg 130%"},"vehicle_air_hapc":{"orbit":"290deg 60deg 130%"}},"animationLabelOverrides":{"mmale":{"Back":"Strafe Left"},"mfemale":{"Dielegrt":"Death (Slump)"},"lbioderm":{"Root":"Gravcycle"}},"materials":{"lmale":[{"name":"base","label":"Warrior","fileSuffix":".lmale"}],"mmale":[{"name":"base","label":"Warrior","fileSuffix":".mmale"}],"hmale":[{"name":"base","label":"Warrior","fileSuffix":".hmale"}],"lfemale":[{"name":"base","label":"Warrior","fileSuffix":".lfemale"}],"mfemale":[{"name":"base","label":"Warrior","fileSuffix":".mfemale"}],"lbioderm":[{"name":"base","label":"Warrior","fileSuffix":".lbioderm"}],"mbioderm":[{"name":"base","label":"Warrior","fileSuffix":".mbioderm"}],"hbioderm":[{"name":"base","label":"Warrior","fileSuffix":".hbioderm"}],"disc":[{"name":"weapon_disc","label":"Weapon"},{"name":"dcase00","label":"Disc Case","size":[256,256],"baseColorFactor":[1,1,1,0.7],"emissiveFactor":[1,1,1],"emissiveTexture":true,"alphaMode":"BLEND","metallicFactor":0,"roughnessFactor":1,"frameCount":6,"frameTimings":[21,1,1,1,1,1],"optional":true}],"chaingun":[{"label":"Chaingun","name":"weapon_chaingun"}],"grenade_launcher":[{"label":"Grenade Launcher","name":"weapon_grenade_launcher"}],"sniper":[{"label":"Weapon","name":"weapon_sniper"},{"label":"Green Light","name":"greenlight","hasDefault":false,"optional":true},{"label":"Red Light","name":"lite_red","hasDefault":false,"optional":true}],"plasmathrower":[{"label":"Rear & Barrel","name":"weapon_plasma10","file":"weapon_plasma1"},{"label":"Top & Front","name":"weapon_plasma21","file":"weapon_plasma2"},{"name":"weapon_plasma1","file":"weapon_plasma1","selectable":false},{"name":"weapon_plasma2","file":"weapon_plasma2","selectable":false}],"energy":[{"label":"Weapon","name":"blinn1","file":"weapon_energy"}],"shocklance":[{"label":"Weapon","name":"weapon_shocklance","size":[512,256]},{"label":"Glow","name":"weapon_shocklance_glow_","file":"weapon_shocklance_glow ","emissiveFactor":[1,1,1],"alphaMode":"MASK","alphaCutoff":255,"emissiveTexture":true,"metallicFactor":0,"roughnessFactor":1,"size":[256,128],"optional":true}],"elf":[{"label":"Weapon","name":"weapon_elf","file":"weapon_elf"},{"label":"Glow","name":"weapon_elf0","file":"weapon_elf"}],"missile":[{"label":"Weapon","name":"weapon_missile"}],"mortar":[{"label":"Weapon","name":"weapon_mortar"}],"repair":[{"label":"Weapon","name":"weapon_repair"}],"targeting":[{"label":"Weapon","name":"weapon_targeting"}],"mine":[{"label":"Weapon","name":"mine","size":[512,512],"metallicFactor":0,"roughnessFactor":1}],"vehicle_air_scout":[{"label":"Vehicle","name":"vehicle_air_scout0","file":"vehicle_air_scout"},{"name":"Unassigned","hidden":true,"hasDefault":false},{"name":"vehicle_air_scout","hidden":true,"hasDefault":false},{"label":"Flare","name":"shrikeflare2","emissiveFactor":[0,0,0],"alphaMode":"BLEND","emissiveTexture":true,"metallicFactor":0,"roughnessFactor":1,"size":[256,256],"optional":true}],"vehicle_air_bomber":[{"label":"Cockpit & Thrusters","name":"vehicle_air_bomber10","file":"vehicle_air_bomber1","size":[256,512]},{"name":"Unassigned","hidden":true,"hasDefault":false},{"label":"Rear","name":"vehicle_air_bomber2","size":[256,512]},{"label":"Wings","name":"vehicle_air_bomber31","file":"vehicle_air_bomber3"},{"name":"vehicle_air_bomber1","size":[256,512],"selectable":false},{"name":"vehicle_air_bomber3","selectable":false}],"vehicle_air_hapc":[{"label":"Cockpit","name":"vehicle_air_bomber1","size":[256,512]},{"name":"Unassigned","hidden":true,"hasDefault":false},{"label":"Wings","name":"vehicle_air_hpc2"},{"label":"Seats","name":"vehicle_air_hpc1"},{"label":"Thrusters","name":"vehicle_air_hpc30","file":"vehicle_air_hpc3"},{"name":"vehicle_air_hpc3","selectable":false}],"vehicle_grav_scout":[{"label":"Vehicle","name":"Vehicle_grav_scout0","file":"Vehicle_grav_scout","size":[512,256]},{"name":"Unassigned","hidden":true,"hasDefault":false},{"label":"Pipes","name":"Vehicle_grav_scout_pipes1","file":"Vehicle_grav_scout_pipes","metallicFactor":0,"roughnessFactor":1},{"name":"Vehicle_grav_scout","hidden":true,"hasDefault":false},{"label":"Side Thrusters","name":"Vehicle_grav_scout_pipes","file":"Vehicle_grav_scout_pipes","emissiveFactor":[1,1,1],"alphaMode":"OPAQUE","metallicFactor":0,"roughnessFactor":1,"emissiveTexture":true,"selectable":false},{"label":"Windshield","name":"Vehicle_grav_scout_windshield","file":"Vehicle_grav_scout_windshield","selectable":false,"alphaMode":"BLEND","baseColorFactor":[1,1,1,0.5],"metallicFactor":0,"roughnessFactor":1,"size":[128,128],"optional":true},{"label":"Windshield Inner","name":"Vehicle_grav_scout_windshieldInner","file":"Vehicle_grav_scout_windshieldInner","selectable":false,"alphaMode":"BLEND","baseColorFactor":[1,1,1,0.5],"metallicFactor":0,"roughnessFactor":1,"size":[128,128],"optional":true}],"vehicle_grav_tank":[{"label":"Center","name":"Vehicle_grav_tank_bodyMain","size":[256,512]},{"name":"Unassigned","hidden":true,"hasDefault":false},{"label":"Sides","name":"vehicle_grav_tank_bodyside10","file":"vehicle_grav_tank_bodyside1","size":[256,512]},{"label":"Thrusters","name":"vehicle_grav_tank_bodyside21","file":"vehicle_grav_tank_bodyside2"},{"name":"vehicle_grav_tank_bodyside2","selectable":false},{"name":"vehicle_grav_tank_bodyside1","selectable":false}],"turret_assaulttank_mortar":[{"label":"Turret","name":"turret_assaulttank_mortar","file":"turret_assaultTank"}],"vehicle_land_mpbbase":[{"label":"Vehicle Front","name":"vehicle_land_mpb1"},{"label":"Vehicle Back","name":"vehicle_land_mpb2"},{"label":"Wheels","name":"Vehicle_Land_Assault_wheel","file":"Vehicle_Land_Assault_Wheel","size":[512,256],"optional":true}]},"animations":{"global":["Forward","Back","Jump","Jet","Fall","Land","ski","Root"],"lmale":["Idlepda","Side","Jump0","Land1","Recoilde","Celwave","Celdisco","Celflex","Celrocky","Celsalute","celTaunt","Taunimp","Tauntbest","Dieback","diechest","Dieforward","Diehead","Dieknees","Dieleglf","Dielegrt","Diesidelf","Diesidert","Dieslump","Diespin","Scoutroot","Sitting"],"mmale":["Back0","Jump3","Recoilde","Celwave","Celdance","Celflex","Celrocky","Celsalute","celtaunt","Tauntbest","Tauntimp","Dieback","Diechest","Dieforward","Diehead","Dieknees","Dieleglf","Dielegrt","Diesidelf","Diesidert","Diespin","Sitting"],"hmale":["Idlepda","Jump1","Side","Recoilde","Celwave","Celdance","Celflex","Celjump","Celsalute","celtaunt","Tauntbest","Tauntimp","Dieback","Diechest","Dieforward","Diehead","Dieknees","Dielegrt","Diesidelf","Diesidert","Diesidert0","Dieslump","Diespin"],"lfemale":["Idlepda","Jump1","Side","Recoilde","Celwave","Celbow","Celdance","Celsalute","Tauntbest","Tauntbutt","Tauntimp","Tauntkiss","Dieback","Diechest","Dieforward","Diehead","Dieknees","Dieleglf","Dielegrt","Diesidelf","Diesidert","Dieslump","Diespin","Scoutroot","Sitting"],"mfemale":["Idlepda","Jump1","Side","Recoilde","Celwave","Celbow","Celdisco","Celsalute","Tauntbest","Tauntbutt","Tauntimp","Tauntkiss","Dieback","Diechest","Dieforward","Diehead","Dieknees","Dieleglf","Dielegrt","Dielegrt0","Diesidelf","Diesidert","Diespin","Sitting"],"lbioderm":["Root3","PDA","Jump2","Side","Light_recoil","CelebrationGora","CelebrationJump","CelebrationJump0","CelebrationJump4","CelebrationRoar","Salute","Celflex2","celyeah","DeathBack","DeathChest","DeathForward","DeathHead","DeathKnees","DeathLegLeft","DeathLegRight","DeathSideLeft","DeathSideRight","DeathSlump","DeathSpin","Sitting"],"mbioderm":["Root1","Jump2","Side","Recoilde","Salute","Celflex1","Celgora","Celjump","Celroar","celyeah","Tauntbest","Tauntbull","DeathBack","DeathChest","DeathHead","DeathSideLeft","DeathSpin","Dieforward","Dieknees","Dieleglft","Dielegtrt","Diesidert","Dieslump","Sitting"],"hbioderm":["Root1","Jump2","Side","Recoilde","Salute","Celflex2","Celgora","Celjump","Celraor","celyeah","Tauntbest","Tauntbull","DeathBack","DeathChest","DeathForward","DeathHead","DeathKnees","DeathLegLeft","DeathLegRight","DeathSideLeft","DeathSideRight","DeathSlump","DeathSpin"]}}'))},5993,e=>{e.v("/t2-model-skinner/_next/static/media/imageProcessing.worker.dbca7ab4.ts")},91135,e=>{e.v(t=>Promise.all(["static/chunks/2d2bdb29c69093a9.js"].map(t=>e.l(t))).then(()=>t(69642)))},22143,e=>{e.v(t=>Promise.all(["static/chunks/2d6d26cb79779ffe.js"].map(t=>e.l(t))).then(()=>t(66641)))}]);
\ No newline at end of file
diff --git a/docs/_next/static/chunks/9072f9dc67ad2fb2.js b/docs/_next/static/chunks/9072f9dc67ad2fb2.js
deleted file mode 100644
index f7018c1..0000000
--- a/docs/_next/static/chunks/9072f9dc67ad2fb2.js
+++ /dev/null
@@ -1 +0,0 @@
-(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,43794,(t,e,r)=>{!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var t=[],e=0;e{t.v(t.b(["static/chunks/9338a92aac995757.js","static/chunks/a55df98dcb3b60ad.js","static/chunks/turbopack-95cb340f669027bc.js"]))},67585,(t,e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"BailoutToCSR",{enumerable:!0,get:function(){return n}});let i=t.r(32061);function n(t){let{reason:e,children:r}=t;if("undefined"==typeof window)throw Object.defineProperty(new i.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r}},9885,(t,e,r)=>{"use strict";function i(t){return t.split("/").map(t=>encodeURIComponent(t)).join("/")}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"encodeURIPath",{enumerable:!0,get:function(){return i}})},52157,(t,e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"PreloadChunks",{enumerable:!0,get:function(){return o}});let i=t.r(43476),n=t.r(74080),s=t.r(63599),a=t.r(9885);function o(t){let{moduleIds:e}=t;if("undefined"!=typeof window)return null;let r=s.workAsyncStorage.getStore();if(void 0===r)return null;let o=[];if(r.reactLoadableManifest&&e){let t=r.reactLoadableManifest;for(let r of e){if(!t[r])continue;let e=t[r].files;o.push(...e)}}return 0===o.length?null:(0,i.jsx)(i.Fragment,{children:o.map(t=>{let e=r.assetPrefix+"/_next/"+(0,a.encodeURIPath)(t);return t.endsWith(".css")?(0,i.jsx)("link",{precedence:"dynamic",href:e,rel:"stylesheet",as:"style"},t):((0,n.preload)(e,{as:"script",fetchPriority:"low"}),null)})})}},69093,(t,e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return h}});let i=t.r(43476),n=t.r(71645),s=t.r(67585),a=t.r(52157);function o(t){return{default:t&&"default"in t?t.default:t}}let l={loader:()=>Promise.resolve(o(()=>null)),loading:null,ssr:!0},h=function(t){let e={...l,...t},r=(0,n.lazy)(()=>e.loader().then(o)),h=e.loading;function c(t){let o=h?(0,i.jsx)(h,{isLoading:!0,pastDelay:!0,error:null}):null,l=!e.ssr||!!e.loading,c=l?n.Suspense:n.Fragment,u=e.ssr?(0,i.jsxs)(i.Fragment,{children:["undefined"==typeof window?(0,i.jsx)(a.PreloadChunks,{moduleIds:e.modules}):null,(0,i.jsx)(r,{...t})]}):(0,i.jsx)(s.BailoutToCSR,{reason:"next/dynamic",children:(0,i.jsx)(r,{...t})});return(0,i.jsx)(c,{...l?{fallback:o}:{},children:u})}return c.displayName="LoadableComponent",c}},70703,(t,e,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}});let i=t.r(55682)._(t.r(69093));function n(t,e){var r;let n={};"function"==typeof t&&(n.loader=t);let s={...n,...e};return(0,i.default)({...s,modules:null==(r=s.loadableGenerated)?void 0:r.modules})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),e.exports=r.default)},52683,t=>{"use strict";let e,r,i,n,s;t.s(["default",()=>da],52683);var a,o,l,h,c,u,d,f,g,p,m,y,x,b,_,w,C,S,T,O,k,M,E,D,j,A,P,F,L,R,I,B,N,W,U,H,X,V,z,Y,G,q,K,Q,J=t.i(43476),Z=t.i(71645);function $(t,e,r){var i;return(e="symbol"==typeof(i=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,e||"default");if("object"!=typeof i)return i;throw TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(e,"string"))?i:i+"")in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function tt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,i)}return r}function te(t){for(var e=1;e=0)continue;r[i]=t[i]}return r}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i=0||({}).propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function ti(t,e){return e||(e=t.slice(0)),Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))}class tn{constructor(){$(this,"browserShadowBlurConstant",1),$(this,"DPI",96),$(this,"devicePixelRatio","undefined"!=typeof window?window.devicePixelRatio:1),$(this,"perfLimitSizeTotal",2097152),$(this,"maxCacheSideLimit",4096),$(this,"minCacheSideLimit",256),$(this,"disableStyleCopyPaste",!1),$(this,"enableGLFiltering",!0),$(this,"textureSize",4096),$(this,"forceGLPutImageData",!1),$(this,"cachesBoundsOfCurve",!1),$(this,"fontPaths",{}),$(this,"NUM_FRACTION_DIGITS",4)}}let ts=new class extends tn{configure(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.assign(this,t)}addFonts(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.fontPaths=te(te({},this.fontPaths),t)}removeFonts(){(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach(t=>{delete this.fontPaths[t]})}clearFonts(){this.fontPaths={}}restoreDefaults(t){let e=new tn,r=(null==t?void 0:t.reduce((t,r)=>(t[r]=e[r],t),{}))||e;this.configure(r)}constructor(t){super(),this.configure(t)}},ta=function(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;ithis.testPrecision(e,t)),e.getExtension("WEBGL_lose_context").loseContext(),ta("log","WebGL: max texture size ".concat(this.maxTextureSize)))}isSupported(t){return!!this.maxTextureSize&&this.maxTextureSize>=t}}let tu={},td=()=>e||(e={document:document,window:window,isTouchSupported:"ontouchstart"in window||"ontouchstart"in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new tc,dispose(){},copyPasteData:tu}),tf=()=>td().document,tg=()=>td().window,tp=()=>{var t;return Math.max(null!=(t=ts.devicePixelRatio)?t:tg().devicePixelRatio,1)},tm=new class{getFontCache(t){let{fontFamily:e,fontStyle:r,fontWeight:i}=t;e=e.toLowerCase(),this.charWidthsCache[e]||(this.charWidthsCache[e]={});let n=this.charWidthsCache[e],s="".concat(r.toLowerCase(),"_").concat((i+"").toLowerCase());return n[s]||(n[s]={}),n[s]}clearFontCache(t){(t=(t||"").toLowerCase())?this.charWidthsCache[t]&&delete this.charWidthsCache[t]:this.charWidthsCache={}}limitDimsByArea(t){let{perfLimitSizeTotal:e}=ts,r=Math.sqrt(e*t);return[Math.floor(r),Math.floor(e/r)]}constructor(){$(this,"charWidthsCache",{}),$(this,"boundsOfCurveCache",{})}},tv="6.7.1";function ty(){}let tx=Math.PI/2,tb=2*Math.PI,t_=Math.PI/180,tw=Object.freeze([1,0,0,1,0,0]),tC="center",tS="left",tT="bottom",tO="right",tk="none",tM=/\r?\n/,tE="moving",tD="scaling",tj="rotating",tA="rotate",tP="skewing",tF="resizing",tL="modifyPoly",tR="changed",tI="scale",tB="scaleX",tN="scaleY",tW="skewX",tU="skewY",tH="fill",tX="stroke",tV="modified",tz="json",tY=new class{has(t){return this[tz].has(t)}getClass(t){let e=this[tz].get(t);if(!e)throw new to("No class registered for ".concat(t));return e}setClass(t,e){e?this[tz].set(e,t):(this[tz].set(t.type,t),this[tz].set(t.type.toLowerCase(),t))}getSVGClass(t){return this.svg.get(t)}setSVGClass(t,e){this.svg.set(null!=e?e:t.type.toLowerCase(),t)}constructor(){this[tz]=new Map,this.svg=new Map}},tG=new class extends Array{remove(t){let e=this.indexOf(t);e>-1&&this.splice(e,1)}cancelAll(){let t=this.splice(0);return t.forEach(t=>t.abort()),t}cancelByCanvas(t){if(!t)return[];let e=this.filter(e=>{var r;return e.target===t||"object"==typeof e.target&&(null==(r=e.target)?void 0:r.canvas)===t});return e.forEach(t=>t.abort()),e}cancelByTarget(t){if(!t)return[];let e=this.filter(e=>e.target===t);return e.forEach(t=>t.abort()),e}};class tq{on(t,e){return(this.__eventListeners||(this.__eventListeners={}),"object"==typeof t)?(Object.entries(t).forEach(t=>{let[e,r]=t;this.on(e,r)}),()=>this.off(t)):e?(this.__eventListeners[t]||(this.__eventListeners[t]=[]),this.__eventListeners[t].push(e),()=>this.off(t,e)):()=>!1}once(t,e){if("object"==typeof t){let e=[];return Object.entries(t).forEach(t=>{let[r,i]=t;e.push(this.once(r,i))}),()=>e.forEach(t=>t())}if(e){let r=this.on(t,function(){for(var t=arguments.length,i=Array(t),n=0;n!1}_removeEventListener(t,e){if(this.__eventListeners[t])if(e){let r=this.__eventListeners[t],i=r.indexOf(e);i>-1&&r.splice(i,1)}else this.__eventListeners[t]=[]}off(t,e){if(this.__eventListeners)if(void 0===t)for(let t in this.__eventListeners)this._removeEventListener(t);else"object"==typeof t?Object.entries(t).forEach(t=>{let[e,r]=t;this._removeEventListener(e,r)}):this._removeEventListener(t,e)}fire(t,e){var r;if(!this.__eventListeners)return;let i=null==(r=this.__eventListeners[t])?void 0:r.concat();if(i)for(let t=0;t{let r=t.indexOf(e);return -1!==r&&t.splice(r,1),t},tQ=t=>{if(0===t)return 1;switch(Math.abs(t)/tx){case 1:case 3:return 0;case 2:return -1}return Math.cos(t)},tJ=t=>{if(0===t)return 0;let e=Math.sign(t);switch(t/tx){case 1:return e;case 2:return 0;case 3:return-e}return Math.sin(t)};class tZ{add(t){return new tZ(this.x+t.x,this.y+t.y)}addEquals(t){return this.x+=t.x,this.y+=t.y,this}scalarAdd(t){return new tZ(this.x+t,this.y+t)}scalarAddEquals(t){return this.x+=t,this.y+=t,this}subtract(t){return new tZ(this.x-t.x,this.y-t.y)}subtractEquals(t){return this.x-=t.x,this.y-=t.y,this}scalarSubtract(t){return new tZ(this.x-t,this.y-t)}scalarSubtractEquals(t){return this.x-=t,this.y-=t,this}multiply(t){return new tZ(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new tZ(this.x*t,this.y*t)}scalarMultiplyEquals(t){return this.x*=t,this.y*=t,this}divide(t){return new tZ(this.x/t.x,this.y/t.y)}scalarDivide(t){return new tZ(this.x/t,this.y/t)}scalarDivideEquals(t){return this.x/=t,this.y/=t,this}eq(t){return this.x===t.x&&this.y===t.y}lt(t){return this.xt.x&&this.y>t.y}gte(t){return this.x>=t.x&&this.y>=t.y}lerp(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5;return e=Math.max(Math.min(1,e),0),new tZ(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)}distanceFrom(t){let e=this.x-t.x,r=this.y-t.y;return Math.sqrt(e*e+r*r)}midPointFrom(t){return this.lerp(t)}min(t){return new tZ(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new tZ(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return"".concat(this.x,",").concat(this.y)}setXY(t,e){return this.x=t,this.y=e,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setFromPoint(t){return this.x=t.x,this.y=t.y,this}swap(t){let e=this.x,r=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=r}clone(){return new tZ(this.x,this.y)}rotate(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t$,r=tJ(t),i=tQ(t),n=this.subtract(e);return new tZ(n.x*i-n.y*r,n.x*r+n.y*i).add(e)}transform(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new tZ(t[0]*this.x+t[2]*this.y+(e?0:t[4]),t[1]*this.x+t[3]*this.y+(e?0:t[5]))}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;"object"==typeof t?(this.x=t.x,this.y=t.y):(this.x=t,this.y=e)}}let t$=new tZ(0,0),t0=t=>!!t&&Array.isArray(t._objects);function t1(t){class e extends t{_onObjectAdded(t){}_onObjectRemoved(t){}_onStackOrderChanged(t){}add(){for(var t=arguments.length,e=Array(t),r=0;rthis._onObjectAdded(t)),i}insertAt(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;ithis._onObjectAdded(t)),this._objects.length}remove(){let t=this._objects,e=[];for(var r=arguments.length,i=Array(r),n=0;n{let i=t.indexOf(r);-1!==i&&(t.splice(i,1),e.push(r),this._onObjectRemoved(r))}),e}forEachObject(t){this.getObjects().forEach((e,r,i)=>t(e,r,i))}getObjects(){for(var t=arguments.length,e=Array(t),r=0;rt.isType(...e))}item(t){return this._objects[t]}isEmpty(){return 0===this._objects.length}size(){return this._objects.length}contains(t,r){return!!this._objects.includes(t)||!!r&&this._objects.some(r=>r instanceof e&&r.contains(t,!0))}complexity(){return this._objects.reduce((t,e)=>t+=e.complexity?e.complexity():0,0)}sendObjectToBack(t){return!(!t||t===this._objects[0])&&(tK(this._objects,t),this._objects.unshift(t),this._onStackOrderChanged(t),!0)}bringObjectToFront(t){return!(!t||t===this._objects[this._objects.length-1])&&(tK(this._objects,t),this._objects.push(t),this._onStackOrderChanged(t),!0)}sendObjectBackwards(t,e){if(!t)return!1;let r=this._objects.indexOf(t);if(0!==r){let i=this.findNewLowerIndex(t,r,e);return tK(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}bringObjectForward(t,e){if(!t)return!1;let r=this._objects.indexOf(t);if(r!==this._objects.length-1){let i=this.findNewUpperIndex(t,r,e);return tK(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}moveObjectTo(t,e){return t!==this._objects[e]&&(tK(this._objects,t),this._objects.splice(e,0,t),this._onStackOrderChanged(t),!0)}findNewLowerIndex(t,e,r){let i;if(r){i=e;for(let r=e-1;r>=0;--r)if(t.isOverlapping(this._objects[r])){i=r;break}}else i=e-1;return i}findNewUpperIndex(t,e,r){let i;if(r){i=e;for(let r=e+1;r1&&void 0!==arguments[1]?arguments[1]:{},a=[],o=new tZ(e,r),l=o.add(new tZ(i,n));for(let t=this._objects.length-1;t>=0;t--){let e=this._objects[t];e.selectable&&e.visible&&(s&&e.intersectsWithRect(o,l)||e.isContainedWithinRect(o,l)||s&&e.containsPoint(o)||s&&e.containsPoint(l))&&a.push(e)}return a}constructor(){super(...arguments),$(this,"_objects",[])}}return e}class t2 extends tq{_setOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(let e in t)this.set(e,t[e])}_setObject(t){for(let e in t)this._set(e,t[e])}set(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this}_set(t,e){this[t]=e}toggle(t){let e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this}get(t){return this[t]}}function t5(t){return tg().requestAnimationFrame(t)}function t4(t){return tg().cancelAnimationFrame(t)}let t3=0,t9=()=>t3++,t6=()=>{let t=tf().createElement("canvas");if(!t||void 0===t.getContext)throw new to("Failed to create `canvas` element");return t},t8=()=>tf().createElement("img"),t7=t=>{let e=t6();return e.width=t.width,e.height=t.height,e},et=(t,e,r)=>t.toDataURL("image/".concat(e),r),ee=(t,e,r)=>new Promise((i,n)=>{t.toBlob(i,"image/".concat(e),r)}),er=t=>t*t_,ei=t=>t/t_,en=t=>t.every((t,e)=>t===tw[e]),es=(t,e,r)=>new tZ(t).transform(e,r),ea=t=>{let e=1/(t[0]*t[3]-t[1]*t[2]),r=[e*t[3],-e*t[1],-e*t[2],e*t[0],0,0],{x:i,y:n}=new tZ(t[4],t[5]).transform(r,!0);return r[4]=-i,r[5]=-n,r},eo=(t,e,r)=>[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],r?0:t[0]*e[4]+t[2]*e[5]+t[4],r?0:t[1]*e[4]+t[3]*e[5]+t[5]],el=(t,e)=>t.reduceRight((t,r)=>r&&t?eo(r,t,e):r||t,void 0)||tw.concat(),eh=t=>{let[e,r]=t;return Math.atan2(r,e)},ec=t=>{let e=eh(t),r=Math.pow(t[0],2)+Math.pow(t[1],2),i=Math.sqrt(r),n=(t[0]*t[3]-t[2]*t[1])/i,s=Math.atan2(t[0]*t[2]+t[1]*t[3],r);return{angle:ei(e),scaleX:i,scaleY:n,skewX:ei(s),skewY:0,translateX:t[4]||0,translateY:t[5]||0}},eu=function(t){return[1,0,0,1,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0]};function ed(){let{angle:t=0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{x:e=0,y:r=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=er(t),n=tQ(i),s=tJ(i);return[n,s,-s,n,e?e-(n*e-s*r):0,r?r-(s*e+n*r):0]}let ef=function(t){return[t,0,0,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,0,0]},eg=t=>Math.tan(er(t)),ep=t=>[1,0,eg(t),1,0,0],em=t=>[1,eg(t),0,1,0,0],ev=t=>{let{scaleX:e=1,scaleY:r=1,flipX:i=!1,flipY:n=!1,skewX:s=0,skewY:a=0}=t,o=ef(i?-e:e,n?-r:r);return s&&(o=eo(o,ep(s),!0)),a&&(o=eo(o,em(a),!0)),o},ey=t=>{let{translateX:e=0,translateY:r=0,angle:i=0}=t,n=eu(e,r);i&&(n=eo(n,ed({angle:i})));let s=ev(t);return en(s)||(n=eo(n,s)),n},ex=function(t){let{signal:e,crossOrigin:r=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(function(i,n){let s;if(e&&e.aborted)return n(new tl("loadImage"));let a=t8();e&&(s=function(t){a.src="",n(t)},e.addEventListener("abort",s,{once:!0}));let o=function(){a.onload=a.onerror=null,s&&(null==e||e.removeEventListener("abort",s)),i(a)};t?(a.onload=o,a.onerror=function(){s&&(null==e||e.removeEventListener("abort",s)),n(new to("Error loading ".concat(a.src)))},r&&(a.crossOrigin=r),a.src=t):o()})},eb=function(t){let{signal:e,reviver:r=ty}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((i,n)=>{let s=[];e&&e.addEventListener("abort",n,{once:!0}),Promise.all(t.map(t=>tY.getClass(t.type).fromObject(t,{signal:e}).then(e=>(r(t,e),s.push(e),e)))).then(i).catch(t=>{s.forEach(t=>{t.dispose&&t.dispose()}),n(t)}).finally(()=>{e&&e.removeEventListener("abort",n)})})},e_=function(t){let{signal:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((r,i)=>{let n=[];e&&e.addEventListener("abort",i,{once:!0});let s=Object.values(t).map(t=>t&&t.type&&tY.has(t.type)?eb([t],{signal:e}).then(t=>{let[e]=t;return n.push(e),e}):t),a=Object.keys(t);Promise.all(s).then(t=>t.reduce((t,e,r)=>(t[a[r]]=e,t),{})).then(r).catch(t=>{n.forEach(t=>{t.dispose&&t.dispose()}),i(t)}).finally(()=>{e&&e.removeEventListener("abort",i)})})},ew=function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).reduce((e,r)=>(r in t&&(e[r]=t[r]),e),{})},eC=(t,e)=>Object.keys(t).reduce((r,i)=>(e(t[i],i,t)&&(r[i]=t[i]),r),{}),eS=(t,e)=>parseFloat(Number(t).toFixed(e)),eT=t=>"matrix("+t.map(t=>eS(t,ts.NUM_FRACTION_DIGITS)).join(" ")+")",eO=t=>!!t&&void 0!==t.toLive,ek=t=>!!t&&"function"==typeof t.toObject,eM=t=>!!t&&void 0!==t.offsetX&&"source"in t,eE=t=>!!t&&"multiSelectionStacking"in t;function eD(t){let e=t&&ej(t),r=0,i=0;if(!t||!e)return{left:r,top:i};let n=t,s=e.documentElement,a=e.body||{scrollLeft:0,scrollTop:0};for(;n&&(n.parentNode||n.host)&&((n=n.parentNode||n.host)===e?(r=a.scrollLeft||s.scrollLeft||0,i=a.scrollTop||s.scrollTop||0):(r+=n.scrollLeft||0,i+=n.scrollTop||0),1!==n.nodeType||"fixed"!==n.style.position););return{left:r,top:i}}let ej=t=>t.ownerDocument||null,eA=t=>{var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||null},eP=function(t,e,r){let{width:i,height:n}=r,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;t.width=i,t.height=n,s>1&&(t.setAttribute("width",(i*s).toString()),t.setAttribute("height",(n*s).toString()),e.scale(s,s))},eF=(t,e)=>{let{width:r,height:i}=e;r&&(t.style.width="number"==typeof r?"".concat(r,"px"):r),i&&(t.style.height="number"==typeof i?"".concat(i,"px"):i)};function eL(t){return void 0!==t.onselectstart&&(t.onselectstart=()=>!1),t.style.userSelect=tk,t}class eR{createLowerCanvas(t){let e=t&&void 0!==t.getContext?t:t&&tf().getElementById(t)||t6();if(e.hasAttribute("data-fabric"))throw new to("Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?");return this._originalCanvasStyle=e.style.cssText,e.setAttribute("data-fabric","main"),e.classList.add("lower-canvas"),e}cleanupDOM(t){let{width:e,height:r}=t,{el:i}=this.lower;i.classList.remove("lower-canvas"),i.removeAttribute("data-fabric"),i.setAttribute("width","".concat(e)),i.setAttribute("height","".concat(r)),i.style.cssText=this._originalCanvasStyle||"",this._originalCanvasStyle=void 0}setDimensions(t,e){let{el:r,ctx:i}=this.lower;eP(r,i,t,e)}setCSSDimensions(t){eF(this.lower.el,t)}calcOffset(){return function(t){var e;let r=t&&ej(t),i={left:0,top:0};if(!r)return i;let n=(null==(e=eA(t))?void 0:e.getComputedStyle(t,null))||{};i.left+=parseInt(n.borderLeftWidth,10)||0,i.top+=parseInt(n.borderTopWidth,10)||0,i.left+=parseInt(n.paddingLeft,10)||0,i.top+=parseInt(n.paddingTop,10)||0;let s={left:0,top:0},a=r.documentElement;void 0!==t.getBoundingClientRect&&(s=t.getBoundingClientRect());let o=eD(t);return{left:s.left+o.left-(a.clientLeft||0)+i.left,top:s.top+o.top-(a.clientTop||0)+i.top}}(this.lower.el)}dispose(){td().dispose(this.lower.el),delete this.lower}constructor(t){$(this,"_originalCanvasStyle",void 0),$(this,"lower",void 0);let e=this.createLowerCanvas(t);this.lower={el:e,ctx:e.getContext("2d")}}}let eI={backgroundVpt:!0,backgroundColor:"",overlayVpt:!0,overlayColor:"",includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...tw]};class eB extends t1(t2){get lowerCanvasEl(){var t;return null==(t=this.elements.lower)?void 0:t.el}get contextContainer(){var t;return null==(t=this.elements.lower)?void 0:t.ctx}static getDefaults(){return eB.ownDefaults}initElements(t){this.elements=new eR(t)}add(){let t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,r=Array(e>1?e-1:0),i=1;i0&&this.renderOnAddRemove&&this.requestRenderAll(),n}remove(){let t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(ta("warn","Canvas is trying to add an object that belongs to a different canvas.\nResulting to default behavior: removing object from previous canvas and adding to new canvas"),t.canvas.remove(t)),t._set("canvas",this),t.setCoords(),this.fire("object:added",{target:t}),t.fire("added",{target:this})}_onObjectRemoved(t){t._set("canvas",void 0),this.fire("object:removed",{target:t}),t.fire("removed",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?tp():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}setWidth(t,e){return this.setDimensions({width:t},e)}setHeight(t,e){return this.setDimensions({height:t},e)}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:r=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e){let e=te({width:this.width,height:this.height},t);this.elements.setDimensions(e,this.getRetinaScaling()),this.hasLostContext=!0,this.width=e.width,this.height=e.height}r||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){let r=[...this.viewportTransform],i=es(t,ea(r));r[0]=e,r[3]=e;let n=es(i,r);r[4]+=t.x-n.x,r[5]+=t.y-n.y,this.setViewportTransform(r)}setZoom(t){this.zoomToPoint(new tZ(0,0),t)}absolutePan(t){let e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new tZ(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor="",this.overlayColor="",this.clearContext(this.getContext()),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=t5(()=>this.renderAndReset()))}calcViewportBoundaries(){let t=this.width,e=this.height,r=ea(this.viewportTransform),i=es({x:0,y:0},r),n=es({x:t,y:e},r),s=i.min(n),a=i.max(n);return this.vptCoords={tl:s,tr:new tZ(a.x,s.y),bl:new tZ(s.x,a.y),br:a}}cancelRequestedRender(){this.nextRenderHandle&&(t4(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;let r=this.viewportTransform,i=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality="best",this.fire("before:render",{ctx:t}),this._renderBackground(t),t.save(),t.transform(r[0],r[1],r[2],r[3],r[4],r[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),i&&(i._set("canvas",this),i.shouldCache(),i._transformDone=!0,i.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,i)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire("after:render",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){let r=this.viewportTransform;t.save(),t.transform(...r),t.globalCompositeOperation="destination-in",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let r=0,i=e.length;r!t.excludeFromExport).map(r=>this._toObject(r,t,e))},this.__serializeBgOverlay(t,e)),i?{clipPath:i}:null)}_toObject(t,e,r){let i;this.includeDefaultValues||(i=t.includeDefaultValues,t.includeDefaultValues=!1);let n=t[e](r);return this.includeDefaultValues||(t.includeDefaultValues=!!i),n}__serializeBgOverlay(t,e){let r={},i=this.backgroundImage,n=this.overlayImage,s=this.backgroundColor,a=this.overlayColor;return eO(s)?s.excludeFromExport||(r.background=s.toObject(e)):s&&(r.background=s),eO(a)?a.excludeFromExport||(r.overlay=a.toObject(e)):a&&(r.overlay=a),i&&!i.excludeFromExport&&(r.backgroundImage=this._toObject(i,t,e)),n&&!n.excludeFromExport&&(r.overlayImage=this._toObject(n,t,e)),r}toSVG(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;let r=[];return this._setSVGPreamble(r,t),this._setSVGHeader(r,t),this.clipPath&&r.push('\n')),this._setSVGBgOverlayColor(r,"background"),this._setSVGBgOverlayImage(r,"backgroundImage",e),this._setSVGObjects(r,e),this.clipPath&&r.push("\n"),this._setSVGBgOverlayColor(r,"overlay"),this._setSVGBgOverlayImage(r,"overlayImage",e),r.push("