404: This page could not be found.T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
+404: This page could not be found.T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
diff --git a/docs/404/index.html b/docs/404/index.html
index bd60608..b032867 100644
--- a/docs/404/index.html
+++ b/docs/404/index.html
@@ -1 +1 @@
-404: This page could not be found.T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
+404: This page could not be found.T2 Model Viewer & Skinner
404
This page could not be found.
\ No newline at end of file
diff --git a/docs/_next/static/J9hUTJgCvSDMXCjR51slX/_buildManifest.js b/docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_buildManifest.js
similarity index 100%
rename from docs/_next/static/J9hUTJgCvSDMXCjR51slX/_buildManifest.js
rename to docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_buildManifest.js
diff --git a/docs/_next/static/J9hUTJgCvSDMXCjR51slX/_clientMiddlewareManifest.json b/docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_clientMiddlewareManifest.json
similarity index 100%
rename from docs/_next/static/J9hUTJgCvSDMXCjR51slX/_clientMiddlewareManifest.json
rename to docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_clientMiddlewareManifest.json
diff --git a/docs/_next/static/J9hUTJgCvSDMXCjR51slX/_ssgManifest.js b/docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_ssgManifest.js
similarity index 100%
rename from docs/_next/static/J9hUTJgCvSDMXCjR51slX/_ssgManifest.js
rename to docs/_next/static/HVLdZFp1rz0i50CxjnUcW/_ssgManifest.js
diff --git a/docs/_next/static/chunks/185de9d007942943.css b/docs/_next/static/chunks/185de9d007942943.css
new file mode 100644
index 0000000..f461a11
--- /dev/null
+++ b/docs/_next/static/chunks/185de9d007942943.css
@@ -0,0 +1 @@
+.gallery-module__zlwOTG__GalleryPage{flex-direction:column}.gallery-module__zlwOTG__Tools{text-align:center;z-index:2;background:rgba(0,0,0,.7);flex:none;grid-template-columns:1fr auto 1fr;justify-content:space-between;align-items:center;gap:10px;padding:10px;display:grid;position:-webkit-sticky;position:sticky;top:0}.gallery-module__zlwOTG__Tools select:focus{outline:none;box-shadow:0 0 1px 1px rgba(0,0,0,.5),0 0 2px 3px #98ffd4}.gallery-module__zlwOTG__HeaderEnd{justify-content:space-between;align-items:center;gap:20px;display:flex}.gallery-module__zlwOTG__DownloadSection{align-items:center;gap:8px;display:flex}.gallery-module__zlwOTG__PackVersion{color:rgba(127,180,166,.6);font-size:11px}.gallery-module__zlwOTG__DownloadButton{color:#f7ffdc;letter-spacing:-.03em;text-shadow:0 -1px rgba(25,39,34,.4);cursor:pointer;background:0 0,linear-gradient(#43a782,#0f5957);border:0;border-radius:4px;margin-left:3px;padding:4px 8px 5px;font-size:13px;font-weight:500;text-decoration:none;display:inline-block}.gallery-module__zlwOTG__DownloadButton:active{transform:translateY(1px)}.gallery-module__zlwOTG__Back{color:#fff;justify-self:start;align-items:center;gap:4px;font-size:14px;text-decoration:none;display:inline-flex}.gallery-module__zlwOTG__IconLink{color:rgba(255,255,255,.3);place-content:center;justify-self:end;margin-left:auto;display:grid}.gallery-module__zlwOTG__IconLink:hover{color:#fff}.gallery-module__zlwOTG__Gallery{background:#0c1f28;flex:none;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));width:100%;display:grid}.gallery-module__zlwOTG__Skin{text-align:center;padding-bottom:32px;font-size:12px;position:relative;overflow:hidden}.gallery-module__zlwOTG__Preview{width:100%;height:auto;display:block}.gallery-module__zlwOTG__DownloadHiRes{align-items:center;gap:.5em;margin-left:auto;font-size:11px;display:flex}.gallery-module__zlwOTG__HiResSelect{font-size:11px}.gallery-module__zlwOTG__Detail{background:rgba(0,0,0,.2);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:5px 9px;display:flex;position:absolute;bottom:8px;left:6px;right:6px;box-shadow:inset 0 1px 10px rgba(0,0,0,.3)}.gallery-module__zlwOTG__LoadInEditor,.gallery-module__zlwOTG__DownloadSkin{color:#28d9b2;visibility:hidden;place-content:center;font-size:24px;display:grid}.gallery-module__zlwOTG__DownloadSkin{cursor:pointer;background:0 0;border:0;margin:0;padding:0;font-size:17px}.gallery-module__zlwOTG__Detail:hover .gallery-module__zlwOTG__LoadInEditor,.gallery-module__zlwOTG__Detail:hover .gallery-module__zlwOTG__DownloadSkin{visibility:visible}.gallery-module__zlwOTG__Name{white-space:nowrap;color:rgba(158,192,209,.9);border-radius:9999px;padding:3px 10px}.gallery-module__zlwOTG__Detail:hover .gallery-module__zlwOTG__Name{color:#fff}@keyframes gallery-module__zlwOTG__spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.gallery-module__zlwOTG__Spinner{flex:none;margin:auto;font-size:64px;animation:2s linear infinite gallery-module__zlwOTG__spin}.gallery-module__zlwOTG__DownloadSpinner{flex:none;margin:auto;font-size:20px;animation:2s linear infinite gallery-module__zlwOTG__spin}@media (max-width:1023px){.gallery-module__zlwOTG__Tools{grid-template-columns:auto auto 1fr;justify-content:space-between}}@media (max-width:719px){.gallery-module__zlwOTG__PackVersion{display:none}}@media (max-width:639px){.gallery-module__zlwOTG__Back .gallery-module__zlwOTG__Label,.gallery-module__zlwOTG__DownloadButton,.gallery-module__zlwOTG__DownloadHiRes{display:none}.gallery-module__zlwOTG__Tools{grid-template-columns:1fr auto 1fr}}
diff --git a/docs/_next/static/chunks/c498d0f8e7ead48a.js b/docs/_next/static/chunks/2abf3874637c5516.js
similarity index 96%
rename from docs/_next/static/chunks/c498d0f8e7ead48a.js
rename to docs/_next/static/chunks/2abf3874637c5516.js
index c4dd373..b0d6fa4 100644
--- a/docs/_next/static/chunks/c498d0f8e7ead48a.js
+++ b/docs/_next/static/chunks/2abf3874637c5516.js
@@ -1 +1 @@
-(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78631,(e,t,n)=>{!function(t,n){if("function"==typeof define&&define.amd){let t;void 0!==(t=n())&&e.v(t)}else n()}(e.e,function(){"use strict";function n(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){s(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function o(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:e.g.global===e.g?e.g:void 0,r=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=i.saveAs||("object"!=typeof window||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!r?function(e,t,r){var s=i.URL||i.webkitURL,c=document.createElement("a");c.download=t=t||e.name||"download",c.rel="noopener","string"==typeof e?(c.href=e,c.origin===location.origin?a(c):o(c.href)?n(e,t,r):a(c,c.target="_blank")):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){a(c)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"!=typeof e){var r;navigator.msSaveOrOpenBlob((void 0===(r=i)?r={autoBom:!1}:"object"!=typeof r&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e),t)}else if(o(e))n(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout(function(){a(s)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return n(e,t,o);var s="application/octet-stream"===e.type,c=/constructor/i.test(i.HTMLElement)||i.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||s&&c||r)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var e=u.result;e=l?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},u.readAsDataURL(e)}else{var f=i.URL||i.webkitURL,d=f.createObjectURL(e);a?a.location=d:location.href=d,a=null,setTimeout(function(){f.revokeObjectURL(d)},4e4)}});i.saveAs=s.saveAs=s,t.exports=s})},69642,e=>{"use strict";e.s(["collectFiles",()=>r,"createZipFile",()=>o,"savePngFile",()=>i,"saveZipFile",()=>a]);var t=e.i(71315),n=e.i(78631);function o(e){let n=new t.default;for(let t of e)n.file("textures/skins/".concat(t.name),t.data);return n}async function a(e,t){let o=await e.generateAsync({type:"blob"});(0,n.saveAs)(o,t)}function i(e,t){(0,n.saveAs)(e,t)}async function r(e){let{skipNotFound:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(await Promise.all(e.map(async e=>{let n="".concat("https://exogen.github.io/t2-skins/skins","/").concat(e),o=await fetch(n);if(!o.ok){if(t&&404===o.status)return null;throw Error("Response failed: ".concat(o.status," ").concat(o.statusText))}return{name:e,data:await o.arrayBuffer()}}))).filter(e=>null!=e)}}]);
\ No newline at end of file
+(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,78631,(e,t,n)=>{!function(t,n){if("function"==typeof define&&define.amd){let t;void 0!==(t=n())&&e.v(t)}else n()}(e.e,function(){"use strict";function n(e,t,n){var o=new XMLHttpRequest;o.open("GET",e),o.responseType="blob",o.onload=function(){s(o.response,t,n)},o.onerror=function(){console.error("could not download file")},o.send()}function o(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(n){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var i="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:e.g.global===e.g?e.g:void 0,r=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),s=i.saveAs||("object"!=typeof window||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!r?function(e,t,r){var s=i.URL||i.webkitURL,c=document.createElement("a");c.download=t=t||e.name||"download",c.rel="noopener","string"==typeof e?(c.href=e,c.origin===location.origin?a(c):o(c.href)?n(e,t,r):a(c,c.target="_blank")):(c.href=s.createObjectURL(e),setTimeout(function(){s.revokeObjectURL(c.href)},4e4),setTimeout(function(){a(c)},0))}:"msSaveOrOpenBlob"in navigator?function(e,t,i){if(t=t||e.name||"download","string"!=typeof e){var r;navigator.msSaveOrOpenBlob((void 0===(r=i)?r={autoBom:!1}:"object"!=typeof r&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\uFEFF",e],{type:e.type}):e),t)}else if(o(e))n(e,t,i);else{var s=document.createElement("a");s.href=e,s.target="_blank",setTimeout(function(){a(s)})}}:function(e,t,o,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return n(e,t,o);var s="application/octet-stream"===e.type,c=/constructor/i.test(i.HTMLElement)||i.safari,l=/CriOS\/[\d]+/.test(navigator.userAgent);if((l||s&&c||r)&&"undefined"!=typeof FileReader){var u=new FileReader;u.onloadend=function(){var e=u.result;e=l?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},u.readAsDataURL(e)}else{var f=i.URL||i.webkitURL,d=f.createObjectURL(e);a?a.location=d:location.href=d,a=null,setTimeout(function(){f.revokeObjectURL(d)},4e4)}});i.saveAs=s.saveAs=s,t.exports=s})},69642,e=>{"use strict";e.s(["collectFiles",()=>r,"createZipFile",()=>o,"savePngFile",()=>i,"saveZipFile",()=>a]);var t=e.i(71315),n=e.i(78631);function o(e){let n=new t.default;for(let t of e)n.file("textures/skins/".concat(t.name),t.data);return n}async function a(e,t){let o=await e.generateAsync({type:"blob"});(0,n.saveAs)(o,t)}function i(e,t){(0,n.saveAs)(e,t)}async function r(e){let{skipNotFound:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(await Promise.all(e.map(async e=>{let n="".concat("https://exogen.github.io/t2-skins/skins","/").concat(e),o=await fetch(n);if(!o.ok){if(t&&404===o.status)return null;throw Error("Response failed: ".concat(o.status," ").concat(o.statusText))}let a=await o.arrayBuffer();return{name:e.replace(/@1x\.png$/,".png"),data:a}}))).filter(e=>null!=e)}}]);
\ No newline at end of file
diff --git a/docs/_next/static/chunks/2d0a1519f2fc6d9e.js b/docs/_next/static/chunks/2d0a1519f2fc6d9e.js
deleted file mode 100644
index e59e5c5..0000000
--- a/docs/_next/static/chunks/2d0a1519f2fc6d9e.js
+++ /dev/null
@@ -1 +0,0 @@
-(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,29402,(e,t,r)=>{var n,o,a="__lodash_hash_undefined__",l=1/0,i="[object Arguments]",u="[object Array]",c="[object Boolean]",s="[object Date]",f="[object Error]",d="[object Function]",p="[object Map]",h="[object Number]",_="[object Object]",v="[object Promise]",y="[object RegExp]",g="[object Set]",m="[object String]",b="[object Symbol]",j="[object WeakMap]",w="[object ArrayBuffer]",x="[object DataView]",O=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,k=/^\w*$/,P=/^\./,S=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,T=/\\(\\)?/g,C=/^\[object .+?Constructor\]$/,E=/^(?:0|[1-9]\d*)$/,A={};A["[object Float32Array]"]=A["[object Float64Array]"]=A["[object Int8Array]"]=A["[object Int16Array]"]=A["[object Int32Array]"]=A["[object Uint8Array]"]=A["[object Uint8ClampedArray]"]=A["[object Uint16Array]"]=A["[object Uint32Array]"]=!0,A[i]=A[u]=A[w]=A[c]=A[x]=A[s]=A[f]=A[d]=A[p]=A[h]=A[_]=A[y]=A[g]=A[m]=A[j]=!1;var L=e.g&&e.g.Object===Object&&e.g,N="object"==typeof self&&self&&self.Object===Object&&self,M=L||N||Function("return this")(),z=r&&!r.nodeType&&r,F=z&&t&&!t.nodeType&&t,G=F&&F.exports===z&&L.process,I=function(){try{return G&&G.binding("util")}catch(e){}}(),D=I&&I.isTypedArray;function R(e,t){for(var r=-1,n=e?e.length:0,o=Array(n);++r-1},eb.prototype.set=function(e,t){var r=this.__data__,n=eO(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},ej.prototype.clear=function(){this.__data__={hash:new em,map:new(el||eb),string:new em}},ej.prototype.delete=function(e){return eL(this,e).delete(e)},ej.prototype.get=function(e){return eL(this,e).get(e)},ej.prototype.has=function(e){return eL(this,e).has(e)},ej.prototype.set=function(e,t){return eL(this,e).set(e,t),this},ew.prototype.add=ew.prototype.push=function(e){return this.__data__.set(e,a),this},ew.prototype.has=function(e){return this.__data__.has(e)},ex.prototype.clear=function(){this.__data__=new eb},ex.prototype.delete=function(e){return this.__data__.delete(e)},ex.prototype.get=function(e){return this.__data__.get(e)},ex.prototype.has=function(e){return this.__data__.has(e)},ex.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eb){var n=r.__data__;if(!el||n.length<199)return n.push([e,t]),this;r=this.__data__=new ej(n)}return r.set(e,t),this};var ek=function(e,t){return function(r,n){if(null==r)return r;if(!e$(r))return e(r,n);for(var o=r.length,a=-1,l=Object(r);(t?a--:++ai))return!1;var c=a.get(e);if(c&&a.get(t))return c==t;var s=-1,f=!0,d=1&o?new ew:void 0;for(a.set(e,t),a.set(t,e);++s-1&&e%1==0&&e-1&&e%1==0&&e<=0x1fffffffffffff}function eW(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eQ(e){return!!e&&"object"==typeof e}function eq(e){return"symbol"==typeof e||eQ(e)&&X.call(e)==b}var eJ=D?B(D):function(e){return eQ(e)&&eK(e.length)&&!!A[X.call(e)]};function eX(e){return e$(e)?function(e,t){var r=eV(e)||eH(e)?function(e,t){for(var r=-1,n=Array(e);++rt||a&&l&&u&&!i&&!c||n&&l&&u||!r&&u||!o)return 1;if(!n&&!a&&!c&&e=i)return u;return u*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});u--;)i[u]=i[u].value;return i}(e,t,r))}},97052,e=>{e.v({Back:"gallery-module__zlwOTG__Back",Detail:"gallery-module__zlwOTG__Detail",DownloadButton:"gallery-module__zlwOTG__DownloadButton",DownloadSection:"gallery-module__zlwOTG__DownloadSection",DownloadSkin:"gallery-module__zlwOTG__DownloadSkin",DownloadSpinner:"gallery-module__zlwOTG__DownloadSpinner",Gallery:"gallery-module__zlwOTG__Gallery",GalleryPage:"gallery-module__zlwOTG__GalleryPage",HeaderEnd:"gallery-module__zlwOTG__HeaderEnd",IconLink:"gallery-module__zlwOTG__IconLink",Label:"gallery-module__zlwOTG__Label",LoadInEditor:"gallery-module__zlwOTG__LoadInEditor",Name:"gallery-module__zlwOTG__Name",PackVersion:"gallery-module__zlwOTG__PackVersion",Preview:"gallery-module__zlwOTG__Preview",Skin:"gallery-module__zlwOTG__Skin",Spinner:"gallery-module__zlwOTG__Spinner",Tools:"gallery-module__zlwOTG__Tools",spin:"gallery-module__zlwOTG__spin"})},36159,(e,t,r)=>{"use strict";function n(){return null}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}}),("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),t.exports=r.default)},98183,(e,t,r)=>{"use strict";function n(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function o(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,o(e));else t.set(r,o(n));return t}function l(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{formatUrl:function(){return a},formatWithValidation:function(){return i},urlObjectKeys:function(){return l}});let n=e.r(90809)._(e.r(98183)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,a=e.protocol||"",l=e.pathname||"",i=e.hash||"",u=e.query||"",c=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?c=t+e.host:r&&(c=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(c+=":"+e.port)),u&&"object"==typeof u&&(u=String(n.urlQueryToSearchParams(u)));let s=e.search||u&&"?"+u||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==c?(c="//"+(c||""),l&&"/"!==l[0]&&(l="/"+l)):c||(c=""),i&&"#"!==i[0]&&(i="#"+i),s&&"?"!==s[0]&&(s="?"+s),""+a+c+(l=l.replace(/[?#]/g,encodeURIComponent))+(s=s.replace("#","%23"))+i}let l=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function i(e){return a(e)}},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=e.r(71645);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=a(e,n)),t&&(o.current=a(t,n))},[e,t])}function a(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("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),t.exports=r.default)},18967,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{DecodeError:function(){return _},MiddlewareNotFoundError:function(){return m},MissingStaticPage:function(){return g},NormalizeError:function(){return v},PageNotFoundError:function(){return y},SP:function(){return p},ST:function(){return h},WEB_VITALS:function(){return n},execOnce:function(){return o},getDisplayName:function(){return c},getLocationOrigin:function(){return i},getURL:function(){return u},isAbsoluteUrl:function(){return l},isResSent:function(){return s},loadGetInitialProps:function(){return d},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return b}});let n=["CLS","FCP","FID","INP","LCP","TTFB"];function o(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;aa.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function u(){let{href:e}=window.location,t=i();return e.substring(t.length)}function c(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function s(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function d(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await d(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&s(r))return n;if(!n)throw Object.defineProperty(Error('"'+c(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,h=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class _ extends Error{}class v extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class m extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function b(e){return JSON.stringify({message:e.message,stack:e.stack})}},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=e.r(18967),o=e.r(52817);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},84508,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"errorOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},22016,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(r,{default:function(){return v},useLinkStatus:function(){return g}});let n=e.r(90809),o=e.r(43476),a=n._(e.r(71645)),l=e.r(95057),i=e.r(8372),u=e.r(18581),c=e.r(18967),s=e.r(5550);e.r(33525);let f=e.r(91949),d=e.r(73668),p=e.r(99781);e.r(84508);let h=e.r(65165);function _(e){return"string"==typeof e?e:(0,l.formatUrl)(e)}function v(e){var t;let r,n,l,[v,g]=(0,a.useOptimistic)(f.IDLE_LINK_STATUS),m=(0,a.useRef)(null),{href:b,as:j,children:w,prefetch:x=null,passHref:O,replace:k,shallow:P,scroll:S,onClick:T,onMouseEnter:C,onTouchStart:E,legacyBehavior:A=!1,onNavigate:L,ref:N,unstable_dynamicOnHover:M,...z}=e;r=w,A&&("string"==typeof r||"number"==typeof r)&&(r=(0,o.jsx)("a",{children:r}));let F=a.default.useContext(i.AppRouterContext),G=!1!==x,I=!1!==x?null===(t=x)||"auto"===t?h.FetchStrategy.PPR:h.FetchStrategy.Full:h.FetchStrategy.PPR,{href:D,as:R}=a.default.useMemo(()=>{let e=_(b);return{href:e,as:j?_(j):e}},[b,j]);A&&(n=a.default.Children.only(r));let B=A?n&&"object"==typeof n&&n.ref:N,U=a.default.useCallback(e=>(null!==F&&(m.current=(0,f.mountLinkInstance)(e,D,F,I,G,g)),()=>{m.current&&((0,f.unmountLinkForCurrentNavigation)(m.current),m.current=null),(0,f.unmountPrefetchableInstance)(e)}),[G,D,F,I,g]),H={ref:(0,u.useMergedRef)(U,B),onClick(e){A||"function"!=typeof T||T(e),A&&n.props&&"function"==typeof n.props.onClick&&n.props.onClick(e),F&&(e.defaultPrevented||function(e,t,r,n,o,l,i){let{nodeName:u}=e.currentTarget;if(!("A"===u.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}if(e.preventDefault(),i){let e=!1;if(i({preventDefault:()=>{e=!0}}),e)return}a.default.startTransition(()=>{(0,p.dispatchNavigateAction)(r||t,o?"replace":"push",null==l||l,n.current)})}}(e,D,R,m,k,S,L))},onMouseEnter(e){A||"function"!=typeof C||C(e),A&&n.props&&"function"==typeof n.props.onMouseEnter&&n.props.onMouseEnter(e),F&&G&&(0,f.onNavigationIntent)(e.currentTarget,!0===M)},onTouchStart:function(e){A||"function"!=typeof E||E(e),A&&n.props&&"function"==typeof n.props.onTouchStart&&n.props.onTouchStart(e),F&&G&&(0,f.onNavigationIntent)(e.currentTarget,!0===M)}};return(0,c.isAbsoluteUrl)(R)?H.href=R:A&&!O&&("a"!==n.type||"href"in n.props)||(H.href=(0,s.addBasePath)(R)),l=A?a.default.cloneElement(n,H):(0,o.jsx)("a",{...z,...H,children:r}),(0,o.jsx)(y.Provider,{value:v,children:l})}let y=(0,a.createContext)(f.IDLE_LINK_STATUS),g=()=>(0,a.useContext)(y);("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),t.exports=r.default)},25500,e=>{"use strict";e.s(["default",()=>b],25500);var t=e.i(43476),r=e.i(71645),n=e.i(40141);function o(e){return(0,n.GenIcon)({tag:"svg",attr:{viewBox:"0 0 24 24",fill:"none"},child:[{tag:"path",attr:{opacity:"0.2",fillRule:"evenodd",clipRule:"evenodd",d:"M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19ZM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z",fill:"currentColor"},child:[]},{tag:"path",attr:{d:"M12 22C17.5228 22 22 17.5228 22 12H19C19 15.866 15.866 19 12 19V22Z",fill:"currentColor"},child:[]},{tag:"path",attr:{d:"M2 12C2 6.47715 6.47715 2 12 2V5C8.13401 5 5 8.13401 5 12H2Z",fill:"currentColor"},child:[]}]})(e)}var a=e.i(90106),l=e.i(11152),i=e.i(18566),u=e.i(29402),c=e.i(15768),s=e.i(97052),f=e.i(36159),d=e.i(22016),p=e.i(69642),h=e.i(53653),_=e.i(20592);let v=[];function y(e){return _.default.materials[e].map(e=>{var t;if(e.hidden||!1===e.selectable)return null;let r=null!=(t=e.file)?t:e.name;if(r)if("number"==typeof e.frameCount&&e.frameCount>1)return Array(e.frameCount).fill(r).map((e,t)=>{if(!(t>0))return e;{let r=/^(.+[^\d])(\d{2,})$/.exec(e);if(r){let e=r[1],n=r[2];return"".concat(e).concat(t.toString().padStart(n.length,"0"))}throw Error("frameCount > 0, but could not parse index")}});else return r}).flat().filter(e=>null!=e).map(e=>"".concat(e,".png"))}let g={lmale:0,mmale:1,lfemale:2,mfemale:3,hmale:4,lbioderm:5,mbioderm:6,hbioderm:7,energy:8,disc:9,chaingun:10,grenade_launcher:11,sniper:12,elf:13,shocklance:14,plasmathrower:15,missile:16,mortar:17,repair:18,targeting:19,vehicle_grav_scout:20,vehicle_grav_tank:21,turret_assaulttank_mortar:22,vehicle_land_mpbbase:23,vehicle_air_scout:24,vehicle_air_bomber:25,vehicle_air_hapc:26};function m(){var e,n,_;let m=(0,i.useRouter)(),b=(0,i.usePathname)(),j=(0,i.useSearchParams)(),[w,x]=(0,c.default)(),[O,k]=(0,r.useState)("lmale"),[P,S]=(0,r.useState)(!1),T="hfemale"===O?"hmale":O,C=null!=(_=null==(e=w.customSkins)?void 0:e[T])?_:v,E="new"===O,A=null==w||null==(n=w.packs)?void 0:n[O],L=null!=A;(0,r.useEffect)(()=>{if(A&&P){let e=!1;return(async()=>{let t=await (0,p.collectFiles)(A.files);if(!e){let r=(0,p.createZipFile)(t);await new Promise(e=>setTimeout(e,500)),e||await (0,p.saveZipFile)(r,"zSkinPack-".concat(O,"-v").concat(A.version,".vl2")),e||S(!1)}})(),()=>{e=!0,S(!1)}}},[P,A,O]);let N=(0,r.useMemo)(()=>{var e;return(0,u.default)(Object.keys(null!=(e=null==w?void 0:w.packs)?e:{}),e=>e.toLowerCase(),["asc"])},[w]),M=(0,r.useMemo)(()=>{var e,t;let r=E?null==w?void 0:w.newSkins:L?null==w||null==(t=w.packs)||null==(e=t[O])?void 0:e.skins:null;if(!r)return[];let n=[];return Object.entries(r).forEach(e=>{let[t,r]=e;n.push(...r.map(e=>({name:e,model:t})))}),(0,u.default)(n,[e=>e.name.toLowerCase(),e=>g[e.model]],["asc","asc"])},[E,L,O,w]),z=E||L?M:C,F=j.get("filter")||"lmale";return(0,r.useEffect)(()=>{S(!1),k(F)},[F]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(f.default,{children:(0,t.jsx)("title",{children:"Tribes 2 Skin Gallery"})}),(0,t.jsxs)("main",{className:s.default.GalleryPage,children:[(0,t.jsxs)("div",{className:s.default.Tools,children:[(0,t.jsxs)(d.default,{className:s.default.Back,href:"../",children:[(0,t.jsx)(l.FaChevronLeft,{size:12,className:s.default.Icon})," ",(0,t.jsx)("span",{className:s.default.Label,children:"Back to Editor"})]}),(0,t.jsxs)("select",{tabIndex:0,id:"ModelSelect","aria-label":"Player model",onChange:e=>{m.push("".concat(b,"?filter=").concat(e.target.value))},value:O,children:[(0,t.jsx)("option",{value:"new",children:"All new skins β¨"}),(0,t.jsx)("optgroup",{label:"Packs",children:N.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsxs)("optgroup",{label:"Players","data-model-type":"player",children:[(0,t.jsx)("option",{value:"lmale",children:"Human Male β’ Light"}),(0,t.jsx)("option",{value:"mmale",children:"Human Male β’ Medium"}),(0,t.jsx)("option",{value:"hmale",children:"Human Male β’ Heavy"}),(0,t.jsx)("option",{value:"lfemale",children:"Human Female β’ Light"}),(0,t.jsx)("option",{value:"mfemale",children:"Human Female β’ Medium"}),(0,t.jsx)("option",{value:"hfemale",children:"Human Female β’ Heavy"}),(0,t.jsx)("option",{value:"lbioderm",children:"Bioderm β’ Light"}),(0,t.jsx)("option",{value:"mbioderm",children:"Bioderm β’ Medium"}),(0,t.jsx)("option",{value:"hbioderm",children:"Bioderm β’ Heavy"})]}),(0,t.jsxs)("optgroup",{label:"Weapons","data-model-type":"weapon",children:[(0,t.jsx)("option",{value:"disc",children:"Disc Launcher"}),(0,t.jsx)("option",{value:"chaingun",children:"Chaingun"}),(0,t.jsx)("option",{value:"grenade_launcher",children:"Grenade Launcher"}),(0,t.jsx)("option",{value:"sniper",children:"Laser Rifle"}),(0,t.jsx)("option",{value:"plasmathrower",children:"Plasma Cannon"}),(0,t.jsx)("option",{value:"energy",children:"Blaster"}),(0,t.jsx)("option",{value:"shocklance",children:"Shocklance"}),(0,t.jsx)("option",{value:"elf",children:"ELF Projector"}),(0,t.jsx)("option",{value:"missile",children:"Missile Launcher"}),(0,t.jsx)("option",{value:"mortar",children:"Mortar"}),(0,t.jsx)("option",{value:"repair",children:"Repair Pack"}),(0,t.jsx)("option",{value:"targeting",children:"Targeting Laser"})]}),(0,t.jsxs)("optgroup",{label:"Vehicles","data-model-type":"vehicle",children:[(0,t.jsx)("option",{value:"vehicle_grav_scout",children:"Wildcat Grav Cycle"}),(0,t.jsx)("option",{value:"vehicle_grav_tank",children:"Beowulf Assault Tank"}),(0,t.jsx)("option",{value:"vehicle_land_mpbbase",children:"Jericho Mobile Point Base"}),(0,t.jsx)("option",{value:"vehicle_air_scout",children:"Shrike Scout Fighter"}),(0,t.jsx)("option",{value:"vehicle_air_bomber",children:"Thundersword Bomber"}),(0,t.jsx)("option",{value:"vehicle_air_hapc",children:"HAVOC Gunship Transport"})]})]}),(0,t.jsxs)("div",{className:s.default.HeaderEnd,children:[L?(0,t.jsxs)("div",{className:s.default.DownloadSection,children:[(0,t.jsx)("button",{type:"button",className:s.default.DownloadButton,onClick:async()=>{S(!0)},children:"Download"})," ",P?(0,t.jsx)(o,{className:s.default.DownloadSpinner}):(0,t.jsxs)("span",{className:s.default.PackVersion,children:["v",A.version," β’ ",A.files.length.toLocaleString()," ",1===A.files.length?"file":"files"]})]}):null,(0,t.jsx)("a",{href:"https://github.com/exogen/t2-model-skinner",className:s.default.IconLink,children:(0,t.jsx)(l.FaGithub,{size:32})})]})]}),x?(0,t.jsx)("div",{className:s.default.Gallery,children:z.map(e=>{let r,n;"string"==typeof e?(r=e,n=T):(r=e.name,n=e.model);let o="".concat("https://exogen.github.io/t2-skins","/gallery/").concat(encodeURIComponent(r),".").concat(n,".webp");return(0,t.jsxs)("div",{className:s.default.Skin,children:[(0,t.jsx)("img",{className:s.default.Preview,loading:"lazy",src:o,width:680,height:800,alt:r}),(0,t.jsxs)("div",{className:s.default.Detail,children:[(0,t.jsx)(d.default,{className:s.default.LoadInEditor,href:"/?m=".concat(n,"&s=").concat(encodeURIComponent(r)),children:(0,t.jsx)(a.BsBadge3dFill,{title:"Load in Editor","aria-label":"Load in Editor"})}),(0,t.jsx)("span",{className:s.default.Name,children:r}),(0,t.jsx)("button",{type:"button",className:s.default.DownloadSkin,title:"Download ".concat(r," skin"),"aria-label":"Download ".concat(r," skin"),onClick:async()=>{let e=(0,h.modelToModelType)(n),t=n.replace(/(?:^([a-z])|_([a-z]))/g,(e,t,r)=>(t||r).toUpperCase()),o="",a=[];switch(e){case"player":o="zPlayerSkin-".concat(r,".vl2"),a=h.modelTypes.player.filter(e=>w.customSkins[e].includes(r)).map(e=>"".concat(r,".").concat(e,".png"));break;case"weapon":o="zWeapon".concat(t,"-").concat(r,".vl2"),a=y(n).map(e=>"".concat(r,"/").concat(e));break;case"vehicle":o="z".concat(t,"-").concat(r,".vl2"),a=y(n).map(e=>"".concat(r,"/").concat(e))}if(a.length){let e=await (0,p.collectFiles)(a,{skipNotFound:!0}),t=(0,p.createZipFile)(e.map(e=>{let{name:t,data:r}=e;return{name:t.split("/").slice(-1)[0],data:r}}));await (0,p.saveZipFile)(t,o)}},children:(0,t.jsx)(l.FaDownload,{})})]})]},"".concat(r,":").concat(n))})}):(0,t.jsx)(o,{className:s.default.Spinner})]})]})}function b(){return(0,t.jsx)(r.Suspense,{children:(0,t.jsx)(m,{})})}}]);
\ No newline at end of file
diff --git a/docs/_next/static/chunks/bd9a6468f03a9b31.js b/docs/_next/static/chunks/502774dbda501837.js
similarity index 99%
rename from docs/_next/static/chunks/bd9a6468f03a9b31.js
rename to docs/_next/static/chunks/502774dbda501837.js
index c4a52d3..efec04a 100644
--- a/docs/_next/static/chunks/bd9a6468f03a9b31.js
+++ b/docs/_next/static/chunks/502774dbda501837.js
@@ -1 +1 @@
-(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,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"]}}'))},67034,(e,t,r)=>{!function(){var e={675:function(e,t){"use strict";t.byteLength=function(e){var t=f(e),r=t[0],i=t[1];return(r+i)*3/4-i},t.toByteArray=function(e){var t,r,n=f(e),o=n[0],l=n[1],s=new a((o+l)*3/4-l),h=0,u=l>0?o-4:o;for(r=0;r>16&255,s[h++]=t>>8&255,s[h++]=255&t;return 2===l&&(t=i[e.charCodeAt(r)]<<2|i[e.charCodeAt(r+1)]>>4,s[h++]=255&t),1===l&&(t=i[e.charCodeAt(r)]<<10|i[e.charCodeAt(r+1)]<<4|i[e.charCodeAt(r+2)]>>2,s[h++]=t>>8&255,s[h++]=255&t),s},t.fromByteArray=function(e){for(var t,i=e.length,a=i%3,n=[],o=0,l=i-a;o>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);return n.join("")}(e,o,o+16383>l?l:o+16383));return 1===a?n.push(r[(t=e[i-1])>>2]+r[t<<4&63]+"=="):2===a&&n.push(r[(t=(e[i-2]<<8)+e[i-1])>>10]+r[t>>4&63]+r[t<<2&63]+"="),n.join("")};for(var r=[],i=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,l=n.length;o0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var i=r===t?0:4-r%4;return[r,i]}i[45]=62,i[95]=63},72:function(e,t,r){"use strict";var i=r(675),a=r(783),n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function o(e){if(e>0x7fffffff)throw RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,r){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return h(e)}return f(e,t,r)}function f(e,t,r){if("string"==typeof e){var i=e,a=t;if(("string"!=typeof a||""===a)&&(a="utf8"),!l.isEncoding(a))throw TypeError("Unknown encoding: "+a);var n=0|p(i,a),f=o(n),s=f.write(i,a);return s!==n&&(f=f.slice(0,s)),f}if(ArrayBuffer.isView(e))return u(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(T(e,ArrayBuffer)||e&&T(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(T(e,SharedArrayBuffer)||e&&T(e.buffer,SharedArrayBuffer)))return function(e,t,r){var i;if(t<0||e.byteLength=0x7fffffff)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||T(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return B(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return A(e).length;default:if(a)return i?-1:B(e).length;t=(""+t).toLowerCase(),a=!0}}function d(e,t,r){var a,n,o,l=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0||(r>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){var i=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>i)&&(r=i);for(var a="",n=t;n0x7fffffff?r=0x7fffffff:r<-0x80000000&&(r=-0x80000000),(n=r*=1)!=n&&(r=a?0:e.length-1),r<0&&(r=e.length+r),r>=e.length)if(a)return -1;else r=e.length-1;else if(r<0)if(!a)return -1;else r=0;if("string"==typeof t&&(t=l.from(t,i)),l.isBuffer(t))return 0===t.length?-1:b(e,t,r,i,a);if("number"==typeof t){if(t&=255,"function"==typeof Uint8Array.prototype.indexOf)if(a)return Uint8Array.prototype.indexOf.call(e,t,r);else return Uint8Array.prototype.lastIndexOf.call(e,t,r);return b(e,[t],r,i,a)}throw TypeError("val must be string, number or Buffer")}function b(e,t,r,i,a){var n,o=1,l=e.length,f=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return -1;o=2,l/=2,f/=2,r/=2}function s(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var h=-1;for(n=r;nl&&(r=l-f),n=r;n>=0;n--){for(var u=!0,c=0;cr&&(e+=" ... "),""},n&&(l.prototype[n]=l.prototype.inspect),l.prototype.compare=function(e,t,r,i,a){if(T(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===i&&(i=0),void 0===a&&(a=this.length),t<0||r>e.length||i<0||a>this.length)throw RangeError("out of range index");if(i>=a&&t>=r)return 0;if(i>=a)return -1;if(t>=r)return 1;if(t>>>=0,r>>>=0,i>>>=0,a>>>=0,this===e)return 0;for(var n=a-i,o=r-t,f=Math.min(n,o),s=this.slice(i,a),h=e.slice(t,r),u=0;u239?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;g