quake2ts 0.0.269 → 0.0.270
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/cgame/dist/index.cjs +13 -56
- package/packages/cgame/dist/index.cjs.map +1 -1
- package/packages/cgame/dist/index.d.cts +2 -1
- package/packages/cgame/dist/index.d.ts +2 -1
- package/packages/cgame/dist/index.js +14 -57
- package/packages/cgame/dist/index.js.map +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +6 -1
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +6 -1
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/index.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var Sa=Object.defineProperty;var e0=Object.getOwnPropertyDescriptor;var t0=Object.getOwnPropertyNames;var n0=Object.prototype.hasOwnProperty;var Aa=(e,t)=>{for(var n in t)Sa(e,n,{get:t[n],enumerable:!0})},r0=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of t0(t))!n0.call(e,i)&&i!==n&&Sa(e,i,{get:()=>t[i],enumerable:!(r=e0(t,i))||r.enumerable});return e};var i0=e=>r0(Sa({},"__esModule",{value:!0}),e);var NR={};Aa(NR,{ClientConfigStrings:()=>Cn,ClientPrediction:()=>wi,InputAction:()=>va,InputBindings:()=>Yt,InputCommandBuffer:()=>ya,InputController:()=>Fn,ViewEffects:()=>yi,createClient:()=>LR,createDefaultBindings:()=>Jf,interpolatePredictionState:()=>mn,normalizeCommand:()=>Cr,normalizeInputCode:()=>Pc});var re=1e-6,Fe=typeof Float32Array<"u"?Float32Array:Array,xa=Math.random;function Dr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var IR=Math.PI/180,CR=180/Math.PI;var ie={};Aa(ie,{add:()=>V0,adjoint:()=>m0,clone:()=>s0,copy:()=>o0,create:()=>a0,decompose:()=>R0,determinant:()=>h0,equals:()=>X0,exactEquals:()=>$0,frob:()=>H0,fromQuat:()=>N0,fromQuat2:()=>b0,fromRotation:()=>A0,fromRotationTranslation:()=>Gc,fromRotationTranslationScale:()=>z0,fromRotationTranslationScaleOrigin:()=>L0,fromScaling:()=>S0,fromTranslation:()=>w0,fromValues:()=>c0,fromXRotation:()=>x0,fromYRotation:()=>E0,fromZRotation:()=>k0,frustum:()=>O0,getRotation:()=>M0,getScaling:()=>Hc,getTranslation:()=>T0,identity:()=>Uc,invert:()=>d0,lookAt:()=>U0,mul:()=>Y0,multiply:()=>Bc,multiplyScalar:()=>W0,multiplyScalarAndAdd:()=>K0,ortho:()=>F0,orthoNO:()=>Wc,orthoZO:()=>D0,perspective:()=>I0,perspectiveFromFieldOfView:()=>P0,perspectiveNO:()=>Vc,perspectiveZO:()=>C0,rotate:()=>g0,rotateX:()=>p0,rotateY:()=>v0,rotateZ:()=>y0,scale:()=>_0,set:()=>l0,str:()=>G0,sub:()=>Z0,subtract:()=>Kc,targetTo:()=>B0,translate:()=>f0,transpose:()=>u0});function a0(){var e=new Fe(16);return Fe!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function s0(e){var t=new Fe(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function o0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function c0(e,t,n,r,i,a,s,o,l,c,u,h,m,_,g,S){var y=new Fe(16);return y[0]=e,y[1]=t,y[2]=n,y[3]=r,y[4]=i,y[5]=a,y[6]=s,y[7]=o,y[8]=l,y[9]=c,y[10]=u,y[11]=h,y[12]=m,y[13]=_,y[14]=g,y[15]=S,y}function l0(e,t,n,r,i,a,s,o,l,c,u,h,m,_,g,S,y){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=h,e[11]=m,e[12]=_,e[13]=g,e[14]=S,e[15]=y,e}function Uc(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function u0(e,t){if(e===t){var n=t[1],r=t[2],i=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[11]=t[14],e[12]=i,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function d0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],_=t[11],g=t[12],S=t[13],y=t[14],w=t[15],M=n*o-r*s,x=n*l-i*s,p=n*c-a*s,E=r*l-i*o,b=r*c-a*o,T=i*c-a*l,z=u*S-h*g,N=u*y-m*g,v=u*w-_*g,k=h*y-m*S,O=h*w-_*S,j=m*w-_*y,V=M*j-x*O+p*k+E*v-b*N+T*z;return V?(V=1/V,e[0]=(o*j-l*O+c*k)*V,e[1]=(i*O-r*j-a*k)*V,e[2]=(S*T-y*b+w*E)*V,e[3]=(m*b-h*T-_*E)*V,e[4]=(l*v-s*j-c*N)*V,e[5]=(n*j-i*v+a*N)*V,e[6]=(y*p-g*T-w*x)*V,e[7]=(u*T-m*p+_*x)*V,e[8]=(s*O-o*v+c*z)*V,e[9]=(r*v-n*O-a*z)*V,e[10]=(g*b-S*p+w*M)*V,e[11]=(h*p-u*b-_*M)*V,e[12]=(o*N-s*k-l*z)*V,e[13]=(n*k-r*N+i*z)*V,e[14]=(S*x-g*E-y*M)*V,e[15]=(u*E-h*x+m*M)*V,e):null}function m0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],_=t[11],g=t[12],S=t[13],y=t[14],w=t[15],M=n*o-r*s,x=n*l-i*s,p=n*c-a*s,E=r*l-i*o,b=r*c-a*o,T=i*c-a*l,z=u*S-h*g,N=u*y-m*g,v=u*w-_*g,k=h*y-m*S,O=h*w-_*S,j=m*w-_*y;return e[0]=o*j-l*O+c*k,e[1]=i*O-r*j-a*k,e[2]=S*T-y*b+w*E,e[3]=m*b-h*T-_*E,e[4]=l*v-s*j-c*N,e[5]=n*j-i*v+a*N,e[6]=y*p-g*T-w*x,e[7]=u*T-m*p+_*x,e[8]=s*O-o*v+c*z,e[9]=r*v-n*O-a*z,e[10]=g*b-S*p+w*M,e[11]=h*p-u*b-_*M,e[12]=o*N-s*k-l*z,e[13]=n*k-r*N+i*z,e[14]=S*x-g*E-y*M,e[15]=u*E-h*x+m*M,e}function h0(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],h=e[10],m=e[11],_=e[12],g=e[13],S=e[14],y=e[15],w=t*s-n*a,M=t*o-r*a,x=n*o-r*s,p=c*g-u*_,E=c*S-h*_,b=u*S-h*g,T=t*b-n*E+r*p,z=a*b-s*E+o*p,N=c*x-u*M+h*w,v=_*x-g*M+S*w;return l*T-i*z+y*N-m*v}function Bc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=t[8],m=t[9],_=t[10],g=t[11],S=t[12],y=t[13],w=t[14],M=t[15],x=n[0],p=n[1],E=n[2],b=n[3];return e[0]=x*r+p*o+E*h+b*S,e[1]=x*i+p*l+E*m+b*y,e[2]=x*a+p*c+E*_+b*w,e[3]=x*s+p*u+E*g+b*M,x=n[4],p=n[5],E=n[6],b=n[7],e[4]=x*r+p*o+E*h+b*S,e[5]=x*i+p*l+E*m+b*y,e[6]=x*a+p*c+E*_+b*w,e[7]=x*s+p*u+E*g+b*M,x=n[8],p=n[9],E=n[10],b=n[11],e[8]=x*r+p*o+E*h+b*S,e[9]=x*i+p*l+E*m+b*y,e[10]=x*a+p*c+E*_+b*w,e[11]=x*s+p*u+E*g+b*M,x=n[12],p=n[13],E=n[14],b=n[15],e[12]=x*r+p*o+E*h+b*S,e[13]=x*i+p*l+E*m+b*y,e[14]=x*a+p*c+E*_+b*w,e[15]=x*s+p*u+E*g+b*M,e}function f0(e,t,n){var r=n[0],i=n[1],a=n[2],s,o,l,c,u,h,m,_,g,S,y,w;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],h=t[5],m=t[6],_=t[7],g=t[8],S=t[9],y=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=h,e[6]=m,e[7]=_,e[8]=g,e[9]=S,e[10]=y,e[11]=w,e[12]=s*r+u*i+g*a+t[12],e[13]=o*r+h*i+S*a+t[13],e[14]=l*r+m*i+y*a+t[14],e[15]=c*r+_*i+w*a+t[15]),e}function _0(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function g0(e,t,n,r){var i=r[0],a=r[1],s=r[2],o=Math.sqrt(i*i+a*a+s*s),l,c,u,h,m,_,g,S,y,w,M,x,p,E,b,T,z,N,v,k,O,j,V,q;return o<re?null:(o=1/o,i*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,h=t[0],m=t[1],_=t[2],g=t[3],S=t[4],y=t[5],w=t[6],M=t[7],x=t[8],p=t[9],E=t[10],b=t[11],T=i*i*u+c,z=a*i*u+s*l,N=s*i*u-a*l,v=i*a*u-s*l,k=a*a*u+c,O=s*a*u+i*l,j=i*s*u+a*l,V=a*s*u-i*l,q=s*s*u+c,e[0]=h*T+S*z+x*N,e[1]=m*T+y*z+p*N,e[2]=_*T+w*z+E*N,e[3]=g*T+M*z+b*N,e[4]=h*v+S*k+x*O,e[5]=m*v+y*k+p*O,e[6]=_*v+w*k+E*O,e[7]=g*v+M*k+b*O,e[8]=h*j+S*V+x*q,e[9]=m*j+y*V+p*q,e[10]=_*j+w*V+E*q,e[11]=g*j+M*V+b*q,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function p0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+c*r,e[5]=s*i+u*r,e[6]=o*i+h*r,e[7]=l*i+m*r,e[8]=c*i-a*r,e[9]=u*i-s*r,e[10]=h*i-o*r,e[11]=m*i-l*r,e}function v0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-c*r,e[1]=s*i-u*r,e[2]=o*i-h*r,e[3]=l*i-m*r,e[8]=a*r+c*i,e[9]=s*r+u*i,e[10]=o*r+h*i,e[11]=l*r+m*i,e}function y0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],h=t[6],m=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+c*r,e[1]=s*i+u*r,e[2]=o*i+h*r,e[3]=l*i+m*r,e[4]=c*i-a*r,e[5]=u*i-s*r,e[6]=h*i-o*r,e[7]=m*i-l*r,e}function w0(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function S0(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function A0(e,t,n){var r=n[0],i=n[1],a=n[2],s=Math.sqrt(r*r+i*i+a*a),o,l,c;return s<re?null:(s=1/s,r*=s,i*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=r*r*c+l,e[1]=i*r*c+a*o,e[2]=a*r*c-i*o,e[3]=0,e[4]=r*i*c-a*o,e[5]=i*i*c+l,e[6]=a*i*c+r*o,e[7]=0,e[8]=r*a*c+i*o,e[9]=i*a*c-r*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function x0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function E0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function k0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Gc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=r+r,l=i+i,c=a+a,u=r*o,h=r*l,m=r*c,_=i*l,g=i*c,S=a*c,y=s*o,w=s*l,M=s*c;return e[0]=1-(_+S),e[1]=h+M,e[2]=m-w,e[3]=0,e[4]=h-M,e[5]=1-(u+S),e[6]=g+y,e[7]=0,e[8]=m+w,e[9]=g-y,e[10]=1-(u+_),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function b0(e,t){var n=new Fe(3),r=-t[0],i=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=r*r+i*i+a*a+s*s;return h>0?(n[0]=(o*s+u*r+l*a-c*i)*2/h,n[1]=(l*s+u*i+c*r-o*a)*2/h,n[2]=(c*s+u*a+o*i-l*r)*2/h):(n[0]=(o*s+u*r+l*a-c*i)*2,n[1]=(l*s+u*i+c*r-o*a)*2,n[2]=(c*s+u*a+o*i-l*r)*2),Gc(e,t,n),e}function T0(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Hc(e,t){var n=t[0],r=t[1],i=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+r*r+i*i),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function M0(e,t){var n=new Fe(3);Hc(n,t);var r=1/n[0],i=1/n[1],a=1/n[2],s=t[0]*r,o=t[1]*i,l=t[2]*a,c=t[4]*r,u=t[5]*i,h=t[6]*a,m=t[8]*r,_=t[9]*i,g=t[10]*a,S=s+u+g,y=0;return S>0?(y=Math.sqrt(S+1)*2,e[3]=.25*y,e[0]=(h-_)/y,e[1]=(m-l)/y,e[2]=(o-c)/y):s>u&&s>g?(y=Math.sqrt(1+s-u-g)*2,e[3]=(h-_)/y,e[0]=.25*y,e[1]=(o+c)/y,e[2]=(m+l)/y):u>g?(y=Math.sqrt(1+u-s-g)*2,e[3]=(m-l)/y,e[0]=(o+c)/y,e[1]=.25*y,e[2]=(h+_)/y):(y=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/y,e[0]=(m+l)/y,e[1]=(h+_)/y,e[2]=.25*y),e}function R0(e,t,n,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];var i=r[0],a=r[1],s=r[2],o=r[4],l=r[5],c=r[6],u=r[8],h=r[9],m=r[10];n[0]=Math.sqrt(i*i+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+h*h+m*m);var _=1/n[0],g=1/n[1],S=1/n[2],y=i*_,w=a*g,M=s*S,x=o*_,p=l*g,E=c*S,b=u*_,T=h*g,z=m*S,N=y+p+z,v=0;return N>0?(v=Math.sqrt(N+1)*2,e[3]=.25*v,e[0]=(E-T)/v,e[1]=(b-M)/v,e[2]=(w-x)/v):y>p&&y>z?(v=Math.sqrt(1+y-p-z)*2,e[3]=(E-T)/v,e[0]=.25*v,e[1]=(w+x)/v,e[2]=(b+M)/v):p>z?(v=Math.sqrt(1+p-y-z)*2,e[3]=(b-M)/v,e[0]=(w+x)/v,e[1]=.25*v,e[2]=(E+T)/v):(v=Math.sqrt(1+z-y-p)*2,e[3]=(w-x)/v,e[0]=(b+M)/v,e[1]=(E+T)/v,e[2]=.25*v),e}function z0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=t[3],l=i+i,c=a+a,u=s+s,h=i*l,m=i*c,_=i*u,g=a*c,S=a*u,y=s*u,w=o*l,M=o*c,x=o*u,p=r[0],E=r[1],b=r[2];return e[0]=(1-(g+y))*p,e[1]=(m+x)*p,e[2]=(_-M)*p,e[3]=0,e[4]=(m-x)*E,e[5]=(1-(h+y))*E,e[6]=(S+w)*E,e[7]=0,e[8]=(_+M)*b,e[9]=(S-w)*b,e[10]=(1-(h+g))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function L0(e,t,n,r,i){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,h=o+o,m=a*c,_=a*u,g=a*h,S=s*u,y=s*h,w=o*h,M=l*c,x=l*u,p=l*h,E=r[0],b=r[1],T=r[2],z=i[0],N=i[1],v=i[2],k=(1-(S+w))*E,O=(_+p)*E,j=(g-x)*E,V=(_-p)*b,q=(1-(m+w))*b,we=(y+M)*b,Me=(g+x)*T,ft=(y-M)*T,Fr=(1-(m+S))*T;return e[0]=k,e[1]=O,e[2]=j,e[3]=0,e[4]=V,e[5]=q,e[6]=we,e[7]=0,e[8]=Me,e[9]=ft,e[10]=Fr,e[11]=0,e[12]=n[0]+z-(k*z+V*N+Me*v),e[13]=n[1]+N-(O*z+q*N+ft*v),e[14]=n[2]+v-(j*z+we*N+Fr*v),e[15]=1,e}function N0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=n+n,o=r+r,l=i+i,c=n*s,u=r*s,h=r*o,m=i*s,_=i*o,g=i*l,S=a*s,y=a*o,w=a*l;return e[0]=1-h-g,e[1]=u+w,e[2]=m-y,e[3]=0,e[4]=u-w,e[5]=1-c-g,e[6]=_+S,e[7]=0,e[8]=m+y,e[9]=_-S,e[10]=1-c-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function O0(e,t,n,r,i,a,s){var o=1/(n-t),l=1/(i-r),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(i+r)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function Vc(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=(i+r)*s,e[14]=2*i*r*s}else e[10]=-1,e[14]=-2*r;return e}var I0=Vc;function C0(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=i*s,e[14]=i*r*s}else e[10]=-1,e[14]=-r;return e}function P0(e,t,n,r){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(i-a)*c*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function Wc(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=(s+a)*c,e[15]=1,e}var F0=Wc;function D0(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=a*c,e[15]=1,e}function U0(e,t,n,r){var i,a,s,o,l,c,u,h,m,_,g=t[0],S=t[1],y=t[2],w=r[0],M=r[1],x=r[2],p=n[0],E=n[1],b=n[2];return Math.abs(g-p)<re&&Math.abs(S-E)<re&&Math.abs(y-b)<re?Uc(e):(u=g-p,h=S-E,m=y-b,_=1/Math.sqrt(u*u+h*h+m*m),u*=_,h*=_,m*=_,i=M*m-x*h,a=x*u-w*m,s=w*h-M*u,_=Math.sqrt(i*i+a*a+s*s),_?(_=1/_,i*=_,a*=_,s*=_):(i=0,a=0,s=0),o=h*s-m*a,l=m*i-u*s,c=u*a-h*i,_=Math.sqrt(o*o+l*l+c*c),_?(_=1/_,o*=_,l*=_,c*=_):(o=0,l=0,c=0),e[0]=i,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=h,e[7]=0,e[8]=s,e[9]=c,e[10]=m,e[11]=0,e[12]=-(i*g+a*S+s*y),e[13]=-(o*g+l*S+c*y),e[14]=-(u*g+h*S+m*y),e[15]=1,e)}function B0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=r[0],l=r[1],c=r[2],u=i-n[0],h=a-n[1],m=s-n[2],_=u*u+h*h+m*m;_>0&&(_=1/Math.sqrt(_),u*=_,h*=_,m*=_);var g=l*m-c*h,S=c*u-o*m,y=o*h-l*u;return _=g*g+S*S+y*y,_>0&&(_=1/Math.sqrt(_),g*=_,S*=_,y*=_),e[0]=g,e[1]=S,e[2]=y,e[3]=0,e[4]=h*y-m*S,e[5]=m*g-u*y,e[6]=u*S-h*g,e[7]=0,e[8]=u,e[9]=h,e[10]=m,e[11]=0,e[12]=i,e[13]=a,e[14]=s,e[15]=1,e}function G0(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function H0(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function V0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Kc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function W0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function K0(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function $0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function X0(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],h=e[9],m=e[10],_=e[11],g=e[12],S=e[13],y=e[14],w=e[15],M=t[0],x=t[1],p=t[2],E=t[3],b=t[4],T=t[5],z=t[6],N=t[7],v=t[8],k=t[9],O=t[10],j=t[11],V=t[12],q=t[13],we=t[14],Me=t[15];return Math.abs(n-M)<=re*Math.max(1,Math.abs(n),Math.abs(M))&&Math.abs(r-x)<=re*Math.max(1,Math.abs(r),Math.abs(x))&&Math.abs(i-p)<=re*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(a-E)<=re*Math.max(1,Math.abs(a),Math.abs(E))&&Math.abs(s-b)<=re*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-T)<=re*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(l-z)<=re*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(c-N)<=re*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(u-v)<=re*Math.max(1,Math.abs(u),Math.abs(v))&&Math.abs(h-k)<=re*Math.max(1,Math.abs(h),Math.abs(k))&&Math.abs(m-O)<=re*Math.max(1,Math.abs(m),Math.abs(O))&&Math.abs(_-j)<=re*Math.max(1,Math.abs(_),Math.abs(j))&&Math.abs(g-V)<=re*Math.max(1,Math.abs(g),Math.abs(V))&&Math.abs(S-q)<=re*Math.max(1,Math.abs(S),Math.abs(q))&&Math.abs(y-we)<=re*Math.max(1,Math.abs(y),Math.abs(we))&&Math.abs(w-Me)<=re*Math.max(1,Math.abs(w),Math.abs(Me))}var Y0=Bc,Z0=Kc;var oe={};Aa(oe,{add:()=>e1,angle:()=>x1,bezier:()=>_1,ceil:()=>t1,clone:()=>j0,copy:()=>J0,create:()=>$c,cross:()=>d1,dist:()=>L1,distance:()=>qc,div:()=>z1,divide:()=>jc,dot:()=>Ea,equals:()=>T1,exactEquals:()=>b1,floor:()=>n1,forEach:()=>C1,fromValues:()=>q0,hermite:()=>f1,inverse:()=>l1,len:()=>O1,length:()=>Xc,lerp:()=>m1,max:()=>i1,min:()=>r1,mul:()=>R1,multiply:()=>Zc,negate:()=>c1,normalize:()=>u1,random:()=>g1,rotateX:()=>w1,rotateY:()=>S1,rotateZ:()=>A1,round:()=>a1,scale:()=>s1,scaleAndAdd:()=>o1,set:()=>Q0,slerp:()=>h1,sqrDist:()=>N1,sqrLen:()=>I1,squaredDistance:()=>Jc,squaredLength:()=>Qc,str:()=>k1,sub:()=>M1,subtract:()=>Yc,transformMat3:()=>v1,transformMat4:()=>p1,transformQuat:()=>y1,zero:()=>E1});function $c(){var e=new Fe(3);return Fe!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function j0(e){var t=new Fe(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Xc(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function q0(e,t,n){var r=new Fe(3);return r[0]=e,r[1]=t,r[2]=n,r}function J0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Q0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function e1(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Yc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Zc(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function jc(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function t1(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function n1(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function r1(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function i1(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function a1(e,t){return e[0]=Dr(t[0]),e[1]=Dr(t[1]),e[2]=Dr(t[2]),e}function s1(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function o1(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function qc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function Jc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Qc(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function c1(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function l1(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function u1(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Ea(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function d1(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function m1(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function h1(e,t,n,r){var i=Math.acos(Math.min(Math.max(Ea(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function f1(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function _1(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function g1(e,t){t=t===void 0?1:t;var n=xa()*2*Math.PI,r=xa()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function p1(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function v1(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function y1(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function w1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function S1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function A1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function x1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&Ea(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function E1(e){return e[0]=0,e[1]=0,e[2]=0,e}function k1(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function b1(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function T1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=re*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=re*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=re*Math.max(1,Math.abs(i),Math.abs(o))}var M1=Yc,R1=Zc,z1=jc,L1=qc,N1=Jc,O1=Xc,I1=Qc,C1=(function(){var e=$c();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var P1=Object.defineProperty,Hl=(e,t)=>{for(var n in t)P1(e,n,{get:t[n],enumerable:!0})};var FR=Math.PI/180;var F1=Math.PI/180,DR=180/Math.PI,Dn=F1,D1=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Je=1,wt=2;var Ja=8,Qa=16,U1=32;var B1=16384;var ti=65536,Vl=1<<17,G1=1<<18,H1=1<<19,V1=1<<20,W1=1<<21,K1=1<<22,$1=1<<23,UR=1<<24,ni=1<<25,X1=1<<26,BR=1<<27,GR=1<<28,HR=1<<29,ri=1<<30,VR=1<<31;var WR=1<<25,KR=1<<28,$R=1<<29,XR=1<<30,YR=1<<31,ZR=Je|wt,jR=Je|ti|wt|ni|ri,qR=Je|ti|wt,JR=Je|Vl|wt|ni|ri,QR=U1|Ja|Qa,e4=Je|Qa|Ja,Y1=Je|ni|ri|wt|X1,t4=G1|H1|V1|W1|K1|$1,n4=Je|Ja|Qa|ni|ri,r4=Je|ti|wt,i4=Je|wt,a4=Je|ti|wt|Vl,s4=Y1|B1,o4=Number.MAX_SAFE_INTEGER-1;var Wl=256,Z1=256,j1=8192,q1=2048,J1=512,Q1=256,e_=Wl*2,t_=256,ka=32;var Kl=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+j1]="Sounds",e[e.Images=e.Sounds+q1]="Images",e[e.Lights=e.Images+J1]="Lights",e[e.ShadowLights=e.Lights+Z1]="ShadowLights",e[e.Items=e.ShadowLights+t_]="Items",e[e.PlayerSkins=e.Items+Q1]="PlayerSkins",e[e.General=e.PlayerSkins+Wl]="General",e[e.WheelWeapons=e.General+e_]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ka]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ka]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ka]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Kl||{}),c4=Kl.MaxConfigStrings;var n_={};Hl(n_,{addReplayFrame:()=>s_,createReplaySession:()=>a_,deserializeReplay:()=>i_,serializeReplay:()=>r_});function r_(e){return JSON.stringify(e,null,2)}function i_(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function a_(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function s_(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var X=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(X||{}),C=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(C||{}),o_=12,c_=9,l4=Math.ceil(o_*c_/16),l_=23,u_=2,u4=Math.ceil(l_*u_/16),d_={};Hl(d_,{U_ANGLE1:()=>v_,U_ANGLE2:()=>y_,U_ANGLE3:()=>w_,U_EFFECTS:()=>x_,U_EVENT:()=>b_,U_FRAME:()=>S_,U_MODEL:()=>h_,U_MODEL2:()=>M_,U_MODEL3:()=>R_,U_MODEL4:()=>z_,U_MOREBITS:()=>T_,U_NUMBER:()=>m_,U_ORIGIN1:()=>__,U_ORIGIN2:()=>g_,U_ORIGIN3:()=>p_,U_REMOVE:()=>L_,U_RENDERFX:()=>E_,U_SKIN:()=>A_,U_SOLID:()=>k_,U_SOUND:()=>f_});var m_=1,h_=2,f_=4,__=8,g_=16,p_=32,v_=64,y_=128,w_=256,S_=512,A_=1024,x_=2048,E_=4096,k_=8192,b_=16384,T_=32768,M_=1,R_=2,z_=4,L_=32768,Ga=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=D1[t];e.x=n[0],e.y=n[1],e.z=n[2]}},$l=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))($l||{}),d4=Object.keys($l).length/2;function N_(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let r=0;r<8;r+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var m4=N_();var h4=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var O_=19,f4=8+O_*8;var Ha=4,ba=7*Ha,_4=[{index:0,size:3,type:5126,stride:ba,offset:0},{index:1,size:2,type:5126,stride:ba,offset:3*Ha},{index:2,size:2,type:5126,stride:ba,offset:5*Ha}];var Xl=32;var g4=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var wa=Object.defineProperty;var Zf=Object.getOwnPropertyDescriptor;var jf=Object.getOwnPropertyNames;var qf=Object.prototype.hasOwnProperty;var Sa=(e,t)=>{for(var n in t)wa(e,n,{get:t[n],enumerable:!0})},Jf=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of jf(t))!qf.call(e,i)&&i!==n&&wa(e,i,{get:()=>t[i],enumerable:!(r=Zf(t,i))||r.enumerable});return e};var Qf=e=>Jf(wa({},"__esModule",{value:!0}),e);var LR={};Sa(LR,{ClientConfigStrings:()=>Nn,ClientPrediction:()=>yi,InputAction:()=>pa,InputBindings:()=>Xt,InputCommandBuffer:()=>va,InputController:()=>In,ViewEffects:()=>vi,createClient:()=>zR,createDefaultBindings:()=>$f,interpolatePredictionState:()=>ln,normalizeCommand:()=>Ir,normalizeInputCode:()=>Oc});var ne=1e-6,Fe=typeof Float32Array<"u"?Float32Array:Array,Aa=Math.random;function Pr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var OR=Math.PI/180,IR=180/Math.PI;var re={};Sa(re,{add:()=>D0,adjoint:()=>o0,clone:()=>t0,copy:()=>n0,create:()=>e0,decompose:()=>E0,determinant:()=>c0,equals:()=>H0,exactEquals:()=>G0,frob:()=>F0,fromQuat:()=>T0,fromQuat2:()=>S0,fromRotation:()=>p0,fromRotationTranslation:()=>Dc,fromRotationTranslationScale:()=>k0,fromRotationTranslationScaleOrigin:()=>b0,fromScaling:()=>g0,fromTranslation:()=>_0,fromValues:()=>r0,fromXRotation:()=>v0,fromYRotation:()=>y0,fromZRotation:()=>w0,frustum:()=>M0,getRotation:()=>x0,getScaling:()=>Uc,getTranslation:()=>A0,identity:()=>Pc,invert:()=>s0,lookAt:()=>I0,mul:()=>V0,multiply:()=>Fc,multiplyScalar:()=>U0,multiplyScalarAndAdd:()=>B0,ortho:()=>N0,orthoNO:()=>Gc,orthoZO:()=>O0,perspective:()=>R0,perspectiveFromFieldOfView:()=>L0,perspectiveNO:()=>Bc,perspectiveZO:()=>z0,rotate:()=>d0,rotateX:()=>m0,rotateY:()=>h0,rotateZ:()=>f0,scale:()=>u0,set:()=>i0,str:()=>P0,sub:()=>W0,subtract:()=>Hc,targetTo:()=>C0,translate:()=>l0,transpose:()=>a0});function e0(){var e=new Fe(16);return Fe!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function t0(e){var t=new Fe(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function n0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function r0(e,t,n,r,i,a,s,o,l,c,u,h,m,_,g,A){var p=new Fe(16);return p[0]=e,p[1]=t,p[2]=n,p[3]=r,p[4]=i,p[5]=a,p[6]=s,p[7]=o,p[8]=l,p[9]=c,p[10]=u,p[11]=h,p[12]=m,p[13]=_,p[14]=g,p[15]=A,p}function i0(e,t,n,r,i,a,s,o,l,c,u,h,m,_,g,A,p){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=h,e[11]=m,e[12]=_,e[13]=g,e[14]=A,e[15]=p,e}function Pc(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function a0(e,t){if(e===t){var n=t[1],r=t[2],i=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[11]=t[14],e[12]=i,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function s0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],_=t[11],g=t[12],A=t[13],p=t[14],S=t[15],b=n*o-r*s,E=n*l-i*s,v=n*c-a*s,w=r*l-i*o,T=r*c-a*o,k=i*c-a*l,z=u*A-h*g,N=u*p-m*g,R=u*S-_*g,y=h*p-m*A,L=h*S-_*A,C=m*S-_*p,W=b*C-E*L+v*y+w*R-T*N+k*z;return W?(W=1/W,e[0]=(o*C-l*L+c*y)*W,e[1]=(i*L-r*C-a*y)*W,e[2]=(A*k-p*T+S*w)*W,e[3]=(m*T-h*k-_*w)*W,e[4]=(l*R-s*C-c*N)*W,e[5]=(n*C-i*R+a*N)*W,e[6]=(p*v-g*k-S*E)*W,e[7]=(u*k-m*v+_*E)*W,e[8]=(s*L-o*R+c*z)*W,e[9]=(r*R-n*L-a*z)*W,e[10]=(g*T-A*v+S*b)*W,e[11]=(h*v-u*T-_*b)*W,e[12]=(o*N-s*y-l*z)*W,e[13]=(n*y-r*N+i*z)*W,e[14]=(A*E-g*w-p*b)*W,e[15]=(u*w-h*E+m*b)*W,e):null}function o0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],h=t[9],m=t[10],_=t[11],g=t[12],A=t[13],p=t[14],S=t[15],b=n*o-r*s,E=n*l-i*s,v=n*c-a*s,w=r*l-i*o,T=r*c-a*o,k=i*c-a*l,z=u*A-h*g,N=u*p-m*g,R=u*S-_*g,y=h*p-m*A,L=h*S-_*A,C=m*S-_*p;return e[0]=o*C-l*L+c*y,e[1]=i*L-r*C-a*y,e[2]=A*k-p*T+S*w,e[3]=m*T-h*k-_*w,e[4]=l*R-s*C-c*N,e[5]=n*C-i*R+a*N,e[6]=p*v-g*k-S*E,e[7]=u*k-m*v+_*E,e[8]=s*L-o*R+c*z,e[9]=r*R-n*L-a*z,e[10]=g*T-A*v+S*b,e[11]=h*v-u*T-_*b,e[12]=o*N-s*y-l*z,e[13]=n*y-r*N+i*z,e[14]=A*E-g*w-p*b,e[15]=u*w-h*E+m*b,e}function c0(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],h=e[10],m=e[11],_=e[12],g=e[13],A=e[14],p=e[15],S=t*s-n*a,b=t*o-r*a,E=n*o-r*s,v=c*g-u*_,w=c*A-h*_,T=u*A-h*g,k=t*T-n*w+r*v,z=a*T-s*w+o*v,N=c*E-u*b+h*S,R=_*E-g*b+A*S;return l*k-i*z+p*N-m*R}function Fc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=t[8],m=t[9],_=t[10],g=t[11],A=t[12],p=t[13],S=t[14],b=t[15],E=n[0],v=n[1],w=n[2],T=n[3];return e[0]=E*r+v*o+w*h+T*A,e[1]=E*i+v*l+w*m+T*p,e[2]=E*a+v*c+w*_+T*S,e[3]=E*s+v*u+w*g+T*b,E=n[4],v=n[5],w=n[6],T=n[7],e[4]=E*r+v*o+w*h+T*A,e[5]=E*i+v*l+w*m+T*p,e[6]=E*a+v*c+w*_+T*S,e[7]=E*s+v*u+w*g+T*b,E=n[8],v=n[9],w=n[10],T=n[11],e[8]=E*r+v*o+w*h+T*A,e[9]=E*i+v*l+w*m+T*p,e[10]=E*a+v*c+w*_+T*S,e[11]=E*s+v*u+w*g+T*b,E=n[12],v=n[13],w=n[14],T=n[15],e[12]=E*r+v*o+w*h+T*A,e[13]=E*i+v*l+w*m+T*p,e[14]=E*a+v*c+w*_+T*S,e[15]=E*s+v*u+w*g+T*b,e}function l0(e,t,n){var r=n[0],i=n[1],a=n[2],s,o,l,c,u,h,m,_,g,A,p,S;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],h=t[5],m=t[6],_=t[7],g=t[8],A=t[9],p=t[10],S=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=h,e[6]=m,e[7]=_,e[8]=g,e[9]=A,e[10]=p,e[11]=S,e[12]=s*r+u*i+g*a+t[12],e[13]=o*r+h*i+A*a+t[13],e[14]=l*r+m*i+p*a+t[14],e[15]=c*r+_*i+S*a+t[15]),e}function u0(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function d0(e,t,n,r){var i=r[0],a=r[1],s=r[2],o=Math.sqrt(i*i+a*a+s*s),l,c,u,h,m,_,g,A,p,S,b,E,v,w,T,k,z,N,R,y,L,C,W,le;return o<ne?null:(o=1/o,i*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,h=t[0],m=t[1],_=t[2],g=t[3],A=t[4],p=t[5],S=t[6],b=t[7],E=t[8],v=t[9],w=t[10],T=t[11],k=i*i*u+c,z=a*i*u+s*l,N=s*i*u-a*l,R=i*a*u-s*l,y=a*a*u+c,L=s*a*u+i*l,C=i*s*u+a*l,W=a*s*u-i*l,le=s*s*u+c,e[0]=h*k+A*z+E*N,e[1]=m*k+p*z+v*N,e[2]=_*k+S*z+w*N,e[3]=g*k+b*z+T*N,e[4]=h*R+A*y+E*L,e[5]=m*R+p*y+v*L,e[6]=_*R+S*y+w*L,e[7]=g*R+b*y+T*L,e[8]=h*C+A*W+E*le,e[9]=m*C+p*W+v*le,e[10]=_*C+S*W+w*le,e[11]=g*C+b*W+T*le,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function m0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+c*r,e[5]=s*i+u*r,e[6]=o*i+h*r,e[7]=l*i+m*r,e[8]=c*i-a*r,e[9]=u*i-s*r,e[10]=h*i-o*r,e[11]=m*i-l*r,e}function h0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],h=t[10],m=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-c*r,e[1]=s*i-u*r,e[2]=o*i-h*r,e[3]=l*i-m*r,e[8]=a*r+c*i,e[9]=s*r+u*i,e[10]=o*r+h*i,e[11]=l*r+m*i,e}function f0(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],h=t[6],m=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+c*r,e[1]=s*i+u*r,e[2]=o*i+h*r,e[3]=l*i+m*r,e[4]=c*i-a*r,e[5]=u*i-s*r,e[6]=h*i-o*r,e[7]=m*i-l*r,e}function _0(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function g0(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function p0(e,t,n){var r=n[0],i=n[1],a=n[2],s=Math.sqrt(r*r+i*i+a*a),o,l,c;return s<ne?null:(s=1/s,r*=s,i*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=r*r*c+l,e[1]=i*r*c+a*o,e[2]=a*r*c-i*o,e[3]=0,e[4]=r*i*c-a*o,e[5]=i*i*c+l,e[6]=a*i*c+r*o,e[7]=0,e[8]=r*a*c+i*o,e[9]=i*a*c-r*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function v0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function y0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function w0(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Dc(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=r+r,l=i+i,c=a+a,u=r*o,h=r*l,m=r*c,_=i*l,g=i*c,A=a*c,p=s*o,S=s*l,b=s*c;return e[0]=1-(_+A),e[1]=h+b,e[2]=m-S,e[3]=0,e[4]=h-b,e[5]=1-(u+A),e[6]=g+p,e[7]=0,e[8]=m+S,e[9]=g-p,e[10]=1-(u+_),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function S0(e,t){var n=new Fe(3),r=-t[0],i=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],h=r*r+i*i+a*a+s*s;return h>0?(n[0]=(o*s+u*r+l*a-c*i)*2/h,n[1]=(l*s+u*i+c*r-o*a)*2/h,n[2]=(c*s+u*a+o*i-l*r)*2/h):(n[0]=(o*s+u*r+l*a-c*i)*2,n[1]=(l*s+u*i+c*r-o*a)*2,n[2]=(c*s+u*a+o*i-l*r)*2),Dc(e,t,n),e}function A0(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Uc(e,t){var n=t[0],r=t[1],i=t[2],a=t[4],s=t[5],o=t[6],l=t[8],c=t[9],u=t[10];return e[0]=Math.sqrt(n*n+r*r+i*i),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function x0(e,t){var n=new Fe(3);Uc(n,t);var r=1/n[0],i=1/n[1],a=1/n[2],s=t[0]*r,o=t[1]*i,l=t[2]*a,c=t[4]*r,u=t[5]*i,h=t[6]*a,m=t[8]*r,_=t[9]*i,g=t[10]*a,A=s+u+g,p=0;return A>0?(p=Math.sqrt(A+1)*2,e[3]=.25*p,e[0]=(h-_)/p,e[1]=(m-l)/p,e[2]=(o-c)/p):s>u&&s>g?(p=Math.sqrt(1+s-u-g)*2,e[3]=(h-_)/p,e[0]=.25*p,e[1]=(o+c)/p,e[2]=(m+l)/p):u>g?(p=Math.sqrt(1+u-s-g)*2,e[3]=(m-l)/p,e[0]=(o+c)/p,e[1]=.25*p,e[2]=(h+_)/p):(p=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/p,e[0]=(m+l)/p,e[1]=(h+_)/p,e[2]=.25*p),e}function E0(e,t,n,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];var i=r[0],a=r[1],s=r[2],o=r[4],l=r[5],c=r[6],u=r[8],h=r[9],m=r[10];n[0]=Math.sqrt(i*i+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+h*h+m*m);var _=1/n[0],g=1/n[1],A=1/n[2],p=i*_,S=a*g,b=s*A,E=o*_,v=l*g,w=c*A,T=u*_,k=h*g,z=m*A,N=p+v+z,R=0;return N>0?(R=Math.sqrt(N+1)*2,e[3]=.25*R,e[0]=(w-k)/R,e[1]=(T-b)/R,e[2]=(S-E)/R):p>v&&p>z?(R=Math.sqrt(1+p-v-z)*2,e[3]=(w-k)/R,e[0]=.25*R,e[1]=(S+E)/R,e[2]=(T+b)/R):v>z?(R=Math.sqrt(1+v-p-z)*2,e[3]=(T-b)/R,e[0]=(S+E)/R,e[1]=.25*R,e[2]=(w+k)/R):(R=Math.sqrt(1+z-p-v)*2,e[3]=(S-E)/R,e[0]=(T+b)/R,e[1]=(w+k)/R,e[2]=.25*R),e}function k0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=t[3],l=i+i,c=a+a,u=s+s,h=i*l,m=i*c,_=i*u,g=a*c,A=a*u,p=s*u,S=o*l,b=o*c,E=o*u,v=r[0],w=r[1],T=r[2];return e[0]=(1-(g+p))*v,e[1]=(m+E)*v,e[2]=(_-b)*v,e[3]=0,e[4]=(m-E)*w,e[5]=(1-(h+p))*w,e[6]=(A+S)*w,e[7]=0,e[8]=(_+b)*T,e[9]=(A-S)*T,e[10]=(1-(h+g))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function b0(e,t,n,r,i){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,h=o+o,m=a*c,_=a*u,g=a*h,A=s*u,p=s*h,S=o*h,b=l*c,E=l*u,v=l*h,w=r[0],T=r[1],k=r[2],z=i[0],N=i[1],R=i[2],y=(1-(A+S))*w,L=(_+v)*w,C=(g-E)*w,W=(_-v)*T,le=(1-(m+S))*T,he=(p+b)*T,Se=(g+E)*k,Ge=(p-b)*k,ft=(1-(m+A))*k;return e[0]=y,e[1]=L,e[2]=C,e[3]=0,e[4]=W,e[5]=le,e[6]=he,e[7]=0,e[8]=Se,e[9]=Ge,e[10]=ft,e[11]=0,e[12]=n[0]+z-(y*z+W*N+Se*R),e[13]=n[1]+N-(L*z+le*N+Ge*R),e[14]=n[2]+R-(C*z+he*N+ft*R),e[15]=1,e}function T0(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=n+n,o=r+r,l=i+i,c=n*s,u=r*s,h=r*o,m=i*s,_=i*o,g=i*l,A=a*s,p=a*o,S=a*l;return e[0]=1-h-g,e[1]=u+S,e[2]=m-p,e[3]=0,e[4]=u-S,e[5]=1-c-g,e[6]=_+A,e[7]=0,e[8]=m+p,e[9]=_-A,e[10]=1-c-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function M0(e,t,n,r,i,a,s){var o=1/(n-t),l=1/(i-r),c=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(i+r)*l,e[10]=(s+a)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*c,e[15]=0,e}function Bc(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=(i+r)*s,e[14]=2*i*r*s}else e[10]=-1,e[14]=-2*r;return e}var R0=Bc;function z0(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=i*s,e[14]=i*r*s}else e[10]=-1,e[14]=-r;return e}function L0(e,t,n,r){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),l=2/(s+o),c=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-((s-o)*l*.5),e[9]=(i-a)*c*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function Gc(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=(s+a)*c,e[15]=1,e}var N0=Gc;function O0(e,t,n,r,i,a,s){var o=1/(t-n),l=1/(r-i),c=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=c,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*l,e[14]=a*c,e[15]=1,e}function I0(e,t,n,r){var i,a,s,o,l,c,u,h,m,_,g=t[0],A=t[1],p=t[2],S=r[0],b=r[1],E=r[2],v=n[0],w=n[1],T=n[2];return Math.abs(g-v)<ne&&Math.abs(A-w)<ne&&Math.abs(p-T)<ne?Pc(e):(u=g-v,h=A-w,m=p-T,_=1/Math.sqrt(u*u+h*h+m*m),u*=_,h*=_,m*=_,i=b*m-E*h,a=E*u-S*m,s=S*h-b*u,_=Math.sqrt(i*i+a*a+s*s),_?(_=1/_,i*=_,a*=_,s*=_):(i=0,a=0,s=0),o=h*s-m*a,l=m*i-u*s,c=u*a-h*i,_=Math.sqrt(o*o+l*l+c*c),_?(_=1/_,o*=_,l*=_,c*=_):(o=0,l=0,c=0),e[0]=i,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=h,e[7]=0,e[8]=s,e[9]=c,e[10]=m,e[11]=0,e[12]=-(i*g+a*A+s*p),e[13]=-(o*g+l*A+c*p),e[14]=-(u*g+h*A+m*p),e[15]=1,e)}function C0(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=r[0],l=r[1],c=r[2],u=i-n[0],h=a-n[1],m=s-n[2],_=u*u+h*h+m*m;_>0&&(_=1/Math.sqrt(_),u*=_,h*=_,m*=_);var g=l*m-c*h,A=c*u-o*m,p=o*h-l*u;return _=g*g+A*A+p*p,_>0&&(_=1/Math.sqrt(_),g*=_,A*=_,p*=_),e[0]=g,e[1]=A,e[2]=p,e[3]=0,e[4]=h*p-m*A,e[5]=m*g-u*p,e[6]=u*A-h*g,e[7]=0,e[8]=u,e[9]=h,e[10]=m,e[11]=0,e[12]=i,e[13]=a,e[14]=s,e[15]=1,e}function P0(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function F0(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function D0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Hc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function U0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function B0(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function G0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function H0(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],h=e[9],m=e[10],_=e[11],g=e[12],A=e[13],p=e[14],S=e[15],b=t[0],E=t[1],v=t[2],w=t[3],T=t[4],k=t[5],z=t[6],N=t[7],R=t[8],y=t[9],L=t[10],C=t[11],W=t[12],le=t[13],he=t[14],Se=t[15];return Math.abs(n-b)<=ne*Math.max(1,Math.abs(n),Math.abs(b))&&Math.abs(r-E)<=ne*Math.max(1,Math.abs(r),Math.abs(E))&&Math.abs(i-v)<=ne*Math.max(1,Math.abs(i),Math.abs(v))&&Math.abs(a-w)<=ne*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(s-T)<=ne*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-k)<=ne*Math.max(1,Math.abs(o),Math.abs(k))&&Math.abs(l-z)<=ne*Math.max(1,Math.abs(l),Math.abs(z))&&Math.abs(c-N)<=ne*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(u-R)<=ne*Math.max(1,Math.abs(u),Math.abs(R))&&Math.abs(h-y)<=ne*Math.max(1,Math.abs(h),Math.abs(y))&&Math.abs(m-L)<=ne*Math.max(1,Math.abs(m),Math.abs(L))&&Math.abs(_-C)<=ne*Math.max(1,Math.abs(_),Math.abs(C))&&Math.abs(g-W)<=ne*Math.max(1,Math.abs(g),Math.abs(W))&&Math.abs(A-le)<=ne*Math.max(1,Math.abs(A),Math.abs(le))&&Math.abs(p-he)<=ne*Math.max(1,Math.abs(p),Math.abs(he))&&Math.abs(S-Se)<=ne*Math.max(1,Math.abs(S),Math.abs(Se))}var V0=Fc,W0=Hc;var se={};Sa(se,{add:()=>Z0,angle:()=>v1,bezier:()=>u1,ceil:()=>j0,clone:()=>K0,copy:()=>X0,create:()=>Vc,cross:()=>s1,dist:()=>b1,distance:()=>Yc,div:()=>k1,divide:()=>Xc,dot:()=>xa,equals:()=>A1,exactEquals:()=>S1,floor:()=>q0,forEach:()=>z1,fromValues:()=>$0,hermite:()=>l1,inverse:()=>i1,len:()=>M1,length:()=>Wc,lerp:()=>o1,max:()=>Q0,min:()=>J0,mul:()=>E1,multiply:()=>$c,negate:()=>r1,normalize:()=>a1,random:()=>d1,rotateX:()=>_1,rotateY:()=>g1,rotateZ:()=>p1,round:()=>e1,scale:()=>t1,scaleAndAdd:()=>n1,set:()=>Y0,slerp:()=>c1,sqrDist:()=>T1,sqrLen:()=>R1,squaredDistance:()=>Zc,squaredLength:()=>jc,str:()=>w1,sub:()=>x1,subtract:()=>Kc,transformMat3:()=>h1,transformMat4:()=>m1,transformQuat:()=>f1,zero:()=>y1});function Vc(){var e=new Fe(3);return Fe!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function K0(e){var t=new Fe(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Wc(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function $0(e,t,n){var r=new Fe(3);return r[0]=e,r[1]=t,r[2]=n,r}function X0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Y0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function Z0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Kc(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function $c(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Xc(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function j0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function q0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function J0(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function Q0(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function e1(e,t){return e[0]=Pr(t[0]),e[1]=Pr(t[1]),e[2]=Pr(t[2]),e}function t1(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function n1(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function Yc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function Zc(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function jc(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function r1(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function i1(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function a1(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function xa(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function s1(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function o1(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function c1(e,t,n,r){var i=Math.acos(Math.min(Math.max(xa(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function l1(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function u1(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function d1(e,t){t=t===void 0?1:t;var n=Aa()*2*Math.PI,r=Aa()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function m1(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function h1(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function f1(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function _1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function g1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function p1(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function v1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&xa(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function y1(e){return e[0]=0,e[1]=0,e[2]=0,e}function w1(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function S1(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function A1(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=ne*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=ne*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=ne*Math.max(1,Math.abs(i),Math.abs(o))}var x1=Kc,E1=$c,k1=Xc,b1=Yc,T1=Zc,M1=Wc,R1=jc,z1=(function(){var e=Vc();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var L1=Object.defineProperty,Ul=(e,t)=>{for(var n in t)L1(e,n,{get:t[n],enumerable:!0})};var PR=Math.PI/180;var N1=Math.PI/180,FR=180/Math.PI,Cn=N1,O1=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Je=1,wt=2;var qa=8,Ja=16,I1=32;var C1=16384;var Qr=65536,Bl=1<<17,P1=1<<18,F1=1<<19,D1=1<<20,U1=1<<21,B1=1<<22,G1=1<<23,DR=1<<24,ei=1<<25,H1=1<<26,UR=1<<27,BR=1<<28,GR=1<<29,ti=1<<30,HR=1<<31;var VR=1<<25,WR=1<<28,KR=1<<29,$R=1<<30,XR=1<<31,YR=Je|wt,ZR=Je|Qr|wt|ei|ti,jR=Je|Qr|wt,qR=Je|Bl|wt|ei|ti,JR=I1|qa|Ja,QR=Je|Ja|qa,V1=Je|ei|ti|wt|H1,e4=P1|F1|D1|U1|B1|G1,t4=Je|qa|Ja|ei|ti,n4=Je|Qr|wt,r4=Je|wt,i4=Je|Qr|wt|Bl,a4=V1|C1,s4=Number.MAX_SAFE_INTEGER-1;var Gl=256,W1=256,K1=8192,$1=2048,X1=512,Y1=256,Z1=Gl*2,j1=256,Ea=32;var Hl=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+K1]="Sounds",e[e.Images=e.Sounds+$1]="Images",e[e.Lights=e.Images+X1]="Lights",e[e.ShadowLights=e.Lights+W1]="ShadowLights",e[e.Items=e.ShadowLights+j1]="Items",e[e.PlayerSkins=e.Items+Y1]="PlayerSkins",e[e.General=e.PlayerSkins+Gl]="General",e[e.WheelWeapons=e.General+Z1]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ea]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ea]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ea]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Hl||{}),o4=Hl.MaxConfigStrings;var q1={};Ul(q1,{addReplayFrame:()=>t_,createReplaySession:()=>e_,deserializeReplay:()=>Q1,serializeReplay:()=>J1});function J1(e){return JSON.stringify(e,null,2)}function Q1(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function e_(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function t_(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var Y=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(Y||{}),P=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(P||{}),n_=12,r_=9,c4=Math.ceil(n_*r_/16),i_=23,a_=2,l4=Math.ceil(i_*a_/16),s_={};Ul(s_,{U_ANGLE1:()=>h_,U_ANGLE2:()=>f_,U_ANGLE3:()=>__,U_EFFECTS:()=>v_,U_EVENT:()=>S_,U_FRAME:()=>g_,U_MODEL:()=>c_,U_MODEL2:()=>x_,U_MODEL3:()=>E_,U_MODEL4:()=>k_,U_MOREBITS:()=>A_,U_NUMBER:()=>o_,U_ORIGIN1:()=>u_,U_ORIGIN2:()=>d_,U_ORIGIN3:()=>m_,U_REMOVE:()=>b_,U_RENDERFX:()=>y_,U_SKIN:()=>p_,U_SOLID:()=>w_,U_SOUND:()=>l_});var o_=1,c_=2,l_=4,u_=8,d_=16,m_=32,h_=64,f_=128,__=256,g_=512,p_=1024,v_=2048,y_=4096,w_=8192,S_=16384,A_=32768,x_=1,E_=2,k_=4,b_=32768,Ba=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=O1[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Vl=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(Vl||{}),u4=Object.keys(Vl).length/2;function T_(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let r=0;r<8;r+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var d4=T_();var m4=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var M_=19,h4=8+M_*8;var Ga=4,ka=7*Ga,f4=[{index:0,size:3,type:5126,stride:ka,offset:0},{index:1,size:2,type:5126,stride:ka,offset:3*Ga},{index:2,size:2,type:5126,stride:ka,offset:5*Ga}];var Wl=32;var _4=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
|
|
4
4
|
struct DLight {
|
|
@@ -7,7 +7,7 @@ struct DLight {
|
|
|
7
7
|
float intensity;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const int MAX_DLIGHTS = ${
|
|
10
|
+
const int MAX_DLIGHTS = ${Wl};
|
|
11
11
|
|
|
12
12
|
in vec2 v_texCoord;
|
|
13
13
|
in vec2 v_lightmapCoord;
|
|
@@ -114,7 +114,7 @@ void main() {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
o_color = finalColor;
|
|
117
|
-
}`;var
|
|
117
|
+
}`;var g4=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var p4=`#version 300 es
|
|
118
118
|
precision highp float;
|
|
119
119
|
|
|
120
120
|
layout(location = 0) in vec3 a_position;
|
|
@@ -127,7 +127,7 @@ struct DLight {
|
|
|
127
127
|
float intensity;
|
|
128
128
|
};
|
|
129
129
|
|
|
130
|
-
const int MAX_DLIGHTS = ${
|
|
130
|
+
const int MAX_DLIGHTS = ${Wl};
|
|
131
131
|
|
|
132
132
|
uniform mat4 u_modelViewProjection;
|
|
133
133
|
uniform mat4 u_modelMatrix;
|
|
@@ -166,15 +166,15 @@ void main() {
|
|
|
166
166
|
v_texCoord = a_texCoord;
|
|
167
167
|
v_position = worldPos.xyz;
|
|
168
168
|
gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
|
|
169
|
-
}`;var Yl=class{constructor(){this._position=oe.create(),this._angles=oe.create(),this._bobAngles=oe.create(),this._bobOffset=oe.create(),this._kickAngles=oe.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=ie.create(),this._projectionMatrix=ie.create(),this._viewProjectionMatrix=ie.create(),this._dirty=!0}get position(){return this._position}set position(e){oe.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){oe.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){oe.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){oe.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){oe.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=ie.create();return ie.perspective(t,e*Dn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;ie.perspective(this._projectionMatrix,this._fov*Dn,this._aspect,this._near,this._far);let e=ie.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],r=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,i=t*Dn,a=n*Dn,s=r*Dn,o=ie.create();ie.identity(o),ie.rotateZ(o,o,-a),ie.rotateY(o,o,-i),ie.rotateX(o,o,-s);let l=ie.create();ie.multiply(l,e,o);let c=oe.add(oe.create(),this._position,this._bobOffset),u=oe.negate(oe.create(),c),h=oe.create();oe.transformMat4(h,u,o);let m=oe.fromValues(h[1]||0,h[2]||0,h[0]||0);ie.copy(this._viewMatrix,l),this._viewMatrix[12]=m[0],this._viewMatrix[13]=m[1],this._viewMatrix[14]=m[2],ie.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var I_=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new Ga(t)}}reset(){this.offset=0}getOffset(){return this.offset}},C_=4,el=0,tl=1,P_=2;function nn(e){let t=e.length;for(;--t>=0;)e[t]=0}var F_=0,Zl=1,D_=2,U_=3,B_=258,es=29,Qn=256,Kn=Qn+1+es,Qt=30,ts=19,jl=2*Kn+1,Ot=15,Ta=16,G_=7,ns=256,ql=16,Jl=17,Ql=18,Va=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Wr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),H_=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),eu=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),V_=512,st=new Array((Kn+2)*2);nn(st);var Hn=new Array(Qt*2);nn(Hn);var $n=new Array(V_);nn($n);var Xn=new Array(B_-U_+1);nn(Xn);var rs=new Array(es);nn(rs);var Kr=new Array(Qt);nn(Kr);function Ma(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}var tu,nu,ru;function Ra(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var iu=e=>e<256?$n[e]:$n[256+(e>>>7)],Yn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Re=(e,t,n)=>{e.bi_valid>Ta-n?(e.bi_buf|=t<<e.bi_valid&65535,Yn(e,e.bi_buf),e.bi_buf=t>>Ta-e.bi_valid,e.bi_valid+=n-Ta):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},Ze=(e,t,n)=>{Re(e,n[t*2],n[t*2+1])},au=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},W_=e=>{e.bi_valid===16?(Yn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},K_=(e,t)=>{let n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,h,m,_,g,S=0;for(m=0;m<=Ot;m++)e.bl_count[m]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<jl;c++)u=e.heap[c],m=n[n[u*2+1]*2+1]+1,m>l&&(m=l,S++),n[u*2+1]=m,!(u>r)&&(e.bl_count[m]++,_=0,u>=o&&(_=s[u-o]),g=n[u*2],e.opt_len+=g*(m+_),a&&(e.static_len+=g*(i[u*2+1]+_)));if(S!==0){do{for(m=l-1;e.bl_count[m]===0;)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[l]--,S-=2}while(S>0);for(m=l;m!==0;m--)for(u=e.bl_count[m];u!==0;)h=e.heap[--c],!(h>r)&&(n[h*2+1]!==m&&(e.opt_len+=(m-n[h*2+1])*n[h*2],n[h*2+1]=m),u--)}},su=(e,t,n)=>{let r=new Array(Ot+1),i=0,a,s;for(a=1;a<=Ot;a++)i=i+n[a-1]<<1,r[a]=i;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=au(r[o]++,o))}},$_=()=>{let e,t,n,r,i,a=new Array(Ot+1);for(n=0,r=0;r<es-1;r++)for(rs[r]=n,e=0;e<1<<Va[r];e++)Xn[n++]=r;for(Xn[n-1]=r,i=0,r=0;r<16;r++)for(Kr[r]=i,e=0;e<1<<Wr[r];e++)$n[i++]=r;for(i>>=7;r<Qt;r++)for(Kr[r]=i<<7,e=0;e<1<<Wr[r]-7;e++)$n[256+i++]=r;for(t=0;t<=Ot;t++)a[t]=0;for(e=0;e<=143;)st[e*2+1]=8,e++,a[8]++;for(;e<=255;)st[e*2+1]=9,e++,a[9]++;for(;e<=279;)st[e*2+1]=7,e++,a[7]++;for(;e<=287;)st[e*2+1]=8,e++,a[8]++;for(su(st,Kn+1,a),e=0;e<Qt;e++)Hn[e*2+1]=5,Hn[e*2]=au(e,5);tu=new Ma(st,Va,Qn+1,Kn,Ot),nu=new Ma(Hn,Wr,0,Qt,Ot),ru=new Ma(new Array(0),H_,0,ts,G_)},ou=e=>{let t;for(t=0;t<Kn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Qt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<ts;t++)e.bl_tree[t*2]=0;e.dyn_ltree[ns*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},cu=e=>{e.bi_valid>8?Yn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},nl=(e,t,n,r)=>{let i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]},za=(e,t,n)=>{let r=e.heap[n],i=n<<1;for(;i<=e.heap_len&&(i<e.heap_len&&nl(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!nl(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r},rl=(e,t,n)=>{let r,i,a=0,s,o;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+a++]&255,r+=(e.pending_buf[e.sym_buf+a++]&255)<<8,i=e.pending_buf[e.sym_buf+a++],r===0?Ze(e,i,t):(s=Xn[i],Ze(e,s+Qn+1,t),o=Va[s],o!==0&&(i-=rs[s],Re(e,i,o)),r--,s=iu(r),Ze(e,s,n),o=Wr[s],o!==0&&(r-=Kr[s],Re(e,r,o)));while(a<e.sym_next);Ze(e,ns,t)},Wa=(e,t)=>{let n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=jl,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,i&&(e.static_len-=r[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)za(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],za(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,za(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],K_(e,t),su(n,l,e.bl_count)},il=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[ql*2]++):o<=10?e.bl_tree[Jl*2]++:e.bl_tree[Ql*2]++,o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},al=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),r=0;r<=n;r++)if(a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)){if(o<c)do Ze(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==i&&(Ze(e,a,e.bl_tree),o--),Ze(e,ql,e.bl_tree),Re(e,o-3,2)):o<=10?(Ze(e,Jl,e.bl_tree),Re(e,o-3,3)):(Ze(e,Ql,e.bl_tree),Re(e,o-11,7));o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},X_=e=>{let t;for(il(e,e.dyn_ltree,e.l_desc.max_code),il(e,e.dyn_dtree,e.d_desc.max_code),Wa(e,e.bl_desc),t=ts-1;t>=3&&e.bl_tree[eu[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Y_=(e,t,n,r)=>{let i;for(Re(e,t-257,5),Re(e,n-1,5),Re(e,r-4,4),i=0;i<r;i++)Re(e,e.bl_tree[eu[i]*2+1],3);al(e,e.dyn_ltree,t-1),al(e,e.dyn_dtree,n-1)},Z_=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return el;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return tl;for(n=32;n<Qn;n++)if(e.dyn_ltree[n*2]!==0)return tl;return el},sl=!1,j_=e=>{sl||($_(),sl=!0),e.l_desc=new Ra(e.dyn_ltree,tu),e.d_desc=new Ra(e.dyn_dtree,nu),e.bl_desc=new Ra(e.bl_tree,ru),e.bi_buf=0,e.bi_valid=0,ou(e)},lu=(e,t,n,r)=>{Re(e,(F_<<1)+(r?1:0),3),cu(e),Yn(e,n),Yn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},q_=e=>{Re(e,Zl<<1,3),Ze(e,ns,st),W_(e)},J_=(e,t,n,r)=>{let i,a,s=0;e.level>0?(e.strm.data_type===P_&&(e.strm.data_type=Z_(e)),Wa(e,e.l_desc),Wa(e,e.d_desc),s=X_(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=n+5,n+4<=i&&t!==-1?lu(e,t,n,r):e.strategy===C_||a===i?(Re(e,(Zl<<1)+(r?1:0),3),rl(e,st,Hn)):(Re(e,(D_<<1)+(r?1:0),3),Y_(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),rl(e,e.dyn_ltree,e.dyn_dtree)),ou(e),r&&cu(e)},Q_=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Xn[n]+Qn+1)*2]++,e.dyn_dtree[iu(t)*2]++),e.sym_next===e.sym_end),eg=j_,tg=lu,ng=J_,rg=Q_,ig=q_,ag={_tr_init:eg,_tr_stored_block:tg,_tr_flush_block:ng,_tr_tally:rg,_tr_align:ig},sg=(e,t,n,r)=>{let i=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,a=a+i|0;while(--s);i%=65521,a%=65521}return i|a<<16|0},Zn=sg,og=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},cg=new Uint32Array(og()),lg=(e,t,n,r)=>{let i=cg,a=r+n;e^=-1;for(let s=r;s<a;s++)e=e>>>8^i[(e^t[s])&255];return e^-1},Se=lg,Pt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:ug,_tr_stored_block:Ka,_tr_flush_block:dg,_tr_tally:pt,_tr_align:mg}=ag,{Z_NO_FLUSH:vt,Z_PARTIAL_FLUSH:hg,Z_FULL_FLUSH:fg,Z_FINISH:De,Z_BLOCK:ol,Z_OK:Ee,Z_STREAM_END:cl,Z_STREAM_ERROR:je,Z_DATA_ERROR:_g,Z_BUF_ERROR:La,Z_DEFAULT_COMPRESSION:gg,Z_FILTERED:pg,Z_HUFFMAN_ONLY:Ur,Z_RLE:vg,Z_FIXED:yg,Z_DEFAULT_STRATEGY:wg,Z_UNKNOWN:Sg,Z_DEFLATED:ii}=Ut,Ag=9,xg=15,Eg=8,kg=29,bg=256,$a=bg+1+kg,Tg=30,Mg=19,Rg=2*$a+1,zg=15,Y=3,gt=258,qe=gt+Y+1,Lg=32,en=42,is=57,Xa=69,Ya=73,Za=91,ja=103,It=113,Bn=666,Te=1,rn=2,Ft=3,an=4,Ng=3,Ct=(e,t)=>(e.msg=Pt[t],t),ll=e=>e*2-(e>4?9:0),_t=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Og=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)},Ig=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,yt=Ig,Ne=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Oe=(e,t)=>{dg(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ne(e.strm)},J=(e,t)=>{e.pending_buf[e.pending++]=t},Un=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},qa=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=Zn(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Se(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},uu=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-qe?e.strstart-(e.w_size-qe):0,c=e.window,u=e.w_mask,h=e.prev,m=e.strstart+gt,_=c[r+s-1],g=c[r+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(i=t,!(c[i+s]!==g||c[i+s-1]!==_||c[i]!==c[r]||c[++i]!==c[r+1])){r+=2,i++;do;while(c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&r<m);if(a=gt-(m-r),r=m-gt,a>s){if(e.match_start=t,s=a,a>=o)break;_=c[r+s-1],g=c[r+s]}}while((t=h[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},tn=e=>{let t=e.w_size,n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-qe)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Og(e),r+=t),e.strm.avail_in===0)break;if(n=qa(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=Y)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=yt(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=yt(e,e.ins_h,e.window[i+Y-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<Y)););}while(e.lookahead<qe&&e.strm.avail_in!==0)},du=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,a,s=0,o=e.strm.avail_in;do{if(r=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,i=e.strstart-e.block_start,r>i+e.strm.avail_in&&(r=i+e.strm.avail_in),r>a&&(r=a),r<n&&(r===0&&t!==De||t===vt||r!==i+e.strm.avail_in)))break;s=t===De&&r===i+e.strm.avail_in?1:0,Ka(e,0,0,s),e.pending_buf[e.pending-4]=r,e.pending_buf[e.pending-3]=r>>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Ne(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(qa(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?an:t!==vt&&t!==De&&e.strm.avail_in===0&&e.strstart===e.block_start?rn:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(qa(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=n||(i||t===De)&&t!==vt&&e.strm.avail_in===0&&i<=a)&&(r=i>a?a:i,s=t===De&&e.strm.avail_in===0&&r===i?1:0,Ka(e,e.block_start,r,s),e.block_start+=r,Ne(e.strm)),s?Ft:Te)},Na=(e,t)=>{let n,r;for(;;){if(e.lookahead<qe){if(tn(e),e.lookahead<qe&&t===vt)return Te;if(e.lookahead===0)break}if(n=0,e.lookahead>=Y&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Y-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-qe&&(e.match_length=uu(e,n)),e.match_length>=Y)if(r=pt(e,e.strstart-e.match_start,e.match_length-Y),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=Y){e.match_length--;do e.strstart++,e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Y-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=yt(e,e.ins_h,e.window[e.strstart+1]);else r=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Oe(e,!1),e.strm.avail_out===0))return Te}return e.insert=e.strstart<Y-1?e.strstart:Y-1,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:an):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Te:rn},jt=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<qe){if(tn(e),e.lookahead<qe&&t===vt)return Te;if(e.lookahead===0)break}if(n=0,e.lookahead>=Y&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Y-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=Y-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-qe&&(e.match_length=uu(e,n),e.match_length<=5&&(e.strategy===pg||e.match_length===Y&&e.strstart-e.match_start>4096)&&(e.match_length=Y-1)),e.prev_length>=Y&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-Y,r=pt(e,e.strstart-1-e.prev_match,e.prev_length-Y),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Y-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=Y-1,e.strstart++,r&&(Oe(e,!1),e.strm.avail_out===0))return Te}else if(e.match_available){if(r=pt(e,0,e.window[e.strstart-1]),r&&Oe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Te}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=pt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<Y-1?e.strstart:Y-1,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:an):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Te:rn},Cg=(e,t)=>{let n,r,i,a,s=e.window;for(;;){if(e.lookahead<=gt){if(tn(e),e.lookahead<=gt&&t===vt)return Te;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=Y&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){a=e.strstart+gt;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&i<a);e.match_length=gt-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=Y?(n=pt(e,1,e.match_length-Y),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Oe(e,!1),e.strm.avail_out===0))return Te}return e.insert=0,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:an):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Te:rn},Pg=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(tn(e),e.lookahead===0)){if(t===vt)return Te;break}if(e.match_length=0,n=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Oe(e,!1),e.strm.avail_out===0))return Te}return e.insert=0,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:an):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Te:rn};function Ye(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}var Gn=[new Ye(0,0,0,0,du),new Ye(4,4,8,4,Na),new Ye(4,5,16,8,Na),new Ye(4,6,32,32,Na),new Ye(4,4,16,16,jt),new Ye(8,16,32,32,jt),new Ye(8,16,128,128,jt),new Ye(8,32,128,256,jt),new Ye(32,128,258,1024,jt),new Ye(32,258,258,4096,jt)],Fg=e=>{e.window_size=2*e.w_size,_t(e.head),e.max_lazy_match=Gn[e.level].max_lazy,e.good_match=Gn[e.level].good_length,e.nice_match=Gn[e.level].nice_length,e.max_chain_length=Gn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=Y-1,e.match_available=0,e.ins_h=0};function Dg(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ii,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Rg*2),this.dyn_dtree=new Uint16Array((2*Tg+1)*2),this.bl_tree=new Uint16Array((2*Mg+1)*2),_t(this.dyn_ltree),_t(this.dyn_dtree),_t(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(zg+1),this.heap=new Uint16Array(2*$a+1),_t(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*$a+1),_t(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var er=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==en&&t.status!==is&&t.status!==Xa&&t.status!==Ya&&t.status!==Za&&t.status!==ja&&t.status!==It&&t.status!==Bn?1:0},mu=e=>{if(er(e))return Ct(e,je);e.total_in=e.total_out=0,e.data_type=Sg;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?is:t.wrap?en:It,e.adler=t.wrap===2?0:1,t.last_flush=-2,ug(t),Ee},hu=e=>{let t=mu(e);return t===Ee&&Fg(e.state),t},Ug=(e,t)=>er(e)||e.state.wrap!==2?je:(e.state.gzhead=t,Ee),fu=(e,t,n,r,i,a)=>{if(!e)return je;let s=1;if(t===gg&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>Ag||n!==ii||r<8||r>15||t<0||t>9||a<0||a>yg||r===8&&s!==1)return Ct(e,je);r===8&&(r=9);let o=new Dg;return e.state=o,o.strm=e,o.status=en,o.wrap=s,o.gzhead=null,o.w_bits=r,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+Y-1)/Y),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,hu(e)},Bg=(e,t)=>fu(e,t,ii,xg,Eg,wg),Gg=(e,t)=>{if(er(e)||t>ol||t<0)return e?Ct(e,je):je;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Bn&&t!==De)return Ct(e,e.avail_out===0?La:je);let r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ne(e),e.avail_out===0)return n.last_flush=-1,Ee}else if(e.avail_in===0&&ll(t)<=ll(r)&&t!==De)return Ct(e,La);if(n.status===Bn&&e.avail_in!==0)return Ct(e,La);if(n.status===en&&n.wrap===0&&(n.status=It),n.status===en){let i=ii+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Ur||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,i|=a<<6,n.strstart!==0&&(i|=Lg),i+=31-i%31,Un(n,i),n.strstart!==0&&(Un(n,e.adler>>>16),Un(n,e.adler&65535)),e.adler=1,n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,Ee}if(n.status===is){if(e.adler=0,J(n,31),J(n,139),J(n,8),n.gzhead)J(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),J(n,n.gzhead.time&255),J(n,n.gzhead.time>>8&255),J(n,n.gzhead.time>>16&255),J(n,n.gzhead.time>>24&255),J(n,n.level===9?2:n.strategy>=Ur||n.level<2?4:0),J(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(J(n,n.gzhead.extra.length&255),J(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Se(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Xa;else if(J(n,0),J(n,0),J(n,0),J(n,0),J(n,0),J(n,n.level===9?2:n.strategy>=Ur||n.level<2?4:0),J(n,Ng),n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,Ee}if(n.status===Xa){if(n.gzhead.extra){let i=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=o,Ne(e),n.pending!==0)return n.last_flush=-1,Ee;i=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Ya}if(n.status===Ya){if(n.gzhead.name){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i)),Ne(e),n.pending!==0)return n.last_flush=-1,Ee;i=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,J(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Za}if(n.status===Za){if(n.gzhead.comment){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i)),Ne(e),n.pending!==0)return n.last_flush=-1,Ee;i=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,J(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=Se(e.adler,n.pending_buf,n.pending-i,i))}n.status=ja}if(n.status===ja){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ne(e),n.pending!==0))return n.last_flush=-1,Ee;J(n,e.adler&255),J(n,e.adler>>8&255),e.adler=0}if(n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,Ee}if(e.avail_in!==0||n.lookahead!==0||t!==vt&&n.status!==Bn){let i=n.level===0?du(n,t):n.strategy===Ur?Pg(n,t):n.strategy===vg?Cg(n,t):Gn[n.level].func(n,t);if((i===Ft||i===an)&&(n.status=Bn),i===Te||i===Ft)return e.avail_out===0&&(n.last_flush=-1),Ee;if(i===rn&&(t===hg?mg(n):t!==ol&&(Ka(n,0,0,!1),t===fg&&(_t(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ne(e),e.avail_out===0))return n.last_flush=-1,Ee}return t!==De?Ee:n.wrap<=0?cl:(n.wrap===2?(J(n,e.adler&255),J(n,e.adler>>8&255),J(n,e.adler>>16&255),J(n,e.adler>>24&255),J(n,e.total_in&255),J(n,e.total_in>>8&255),J(n,e.total_in>>16&255),J(n,e.total_in>>24&255)):(Un(n,e.adler>>>16),Un(n,e.adler&65535)),Ne(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ee:cl)},Hg=e=>{if(er(e))return je;let t=e.state.status;return e.state=null,t===It?Ct(e,_g):Ee},Vg=(e,t)=>{let n=t.length;if(er(e))return je;let r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==en||r.lookahead)return je;if(i===1&&(e.adler=Zn(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(_t(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,tn(r);r.lookahead>=Y;){let l=r.strstart,c=r.lookahead-(Y-1);do r.ins_h=yt(r,r.ins_h,r.window[l+Y-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--c);r.strstart=l,r.lookahead=Y-1,tn(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=Y-1,r.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,r.wrap=i,Ee},Wg=Bg,Kg=fu,$g=hu,Xg=mu,Yg=Ug,Zg=Gg,jg=Hg,qg=Vg,Jg="pako deflate (from Nodeca project)",Vn={deflateInit:Wg,deflateInit2:Kg,deflateReset:$g,deflateResetKeep:Xg,deflateSetHeader:Yg,deflate:Zg,deflateEnd:jg,deflateSetDictionary:qg,deflateInfo:Jg},Qg=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ep=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let r in n)Qg(n,r)&&(e[r]=n[r])}}return e},tp=e=>{let t=0;for(let r=0,i=e.length;r<i;r++)t+=e[r].length;let n=new Uint8Array(t);for(let r=0,i=0,a=e.length;r<a;r++){let s=e[r];n.set(s,i),i+=s.length}return n},ai={assign:ep,flattenChunks:tp},_u=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{_u=!1}var jn=new Uint8Array(256);for(let e=0;e<256;e++)jn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;jn[254]=jn[254]=1;var np=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,a,s=e.length,o=0;for(i=0;i<s;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,i=0;a<o;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},rp=(e,t)=>{if(t<65534&&e.subarray&&_u)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n},ip=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i,a=new Array(n*2);for(i=0,r=0;r<n;){let s=e[r++];if(s<128){a[i++]=s;continue}let o=jn[s];if(o>4){a[i++]=65533,r+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&r<n;)s=s<<6|e[r++]&63,o--;if(o>1){a[i++]=65533;continue}s<65536?a[i++]=s:(s-=65536,a[i++]=55296|s>>10&1023,a[i++]=56320|s&1023)}return rp(a,i)},ap=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+jn[e[n]]>t?n:t},qn={string2buf:np,buf2string:ip,utf8border:ap};function sp(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var gu=sp,pu=Object.prototype.toString,{Z_NO_FLUSH:op,Z_SYNC_FLUSH:cp,Z_FULL_FLUSH:lp,Z_FINISH:up,Z_OK:$r,Z_STREAM_END:dp,Z_DEFAULT_COMPRESSION:mp,Z_DEFAULT_STRATEGY:hp,Z_DEFLATED:fp}=Ut;function tr(e){this.options=ai.assign({level:mp,method:fp,chunkSize:16384,windowBits:15,memLevel:8,strategy:hp},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new gu,this.strm.avail_out=0;let n=Vn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==$r)throw new Error(Pt[n]);if(t.header&&Vn.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=qn.string2buf(t.dictionary):pu.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Vn.deflateSetDictionary(this.strm,r),n!==$r)throw new Error(Pt[n]);this._dict_set=!0}}tr.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?up:op,typeof e=="string"?n.input=qn.string2buf(e):pu.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(a===cp||a===lp)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Vn.deflate(n,a),i===dp)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Vn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===$r;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};tr.prototype.onData=function(e){this.chunks.push(e)};tr.prototype.onEnd=function(e){e===$r&&(this.result=ai.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function as(e,t){let n=new tr(t);if(n.push(e,!0),n.err)throw n.msg||Pt[n.err];return n.result}function _p(e,t){return t=t||{},t.raw=!0,as(e,t)}function gp(e,t){return t=t||{},t.gzip=!0,as(e,t)}var pp=tr,vp=as,yp=_p,wp=gp,Sp=Ut,Ap={Deflate:pp,deflate:vp,deflateRaw:yp,gzip:wp,constants:Sp},Br=16209,xp=16191,Ep=function(t,n){let r,i,a,s,o,l,c,u,h,m,_,g,S,y,w,M,x,p,E,b,T,z,N,v,k=t.state;r=t.next_in,N=t.input,i=r+(t.avail_in-5),a=t.next_out,v=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=k.dmax,c=k.wsize,u=k.whave,h=k.wnext,m=k.window,_=k.hold,g=k.bits,S=k.lencode,y=k.distcode,w=(1<<k.lenbits)-1,M=(1<<k.distbits)-1;e:do{g<15&&(_+=N[r++]<<g,g+=8,_+=N[r++]<<g,g+=8),x=S[_&w];t:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p===0)v[a++]=x&65535;else if(p&16){E=x&65535,p&=15,p&&(g<p&&(_+=N[r++]<<g,g+=8),E+=_&(1<<p)-1,_>>>=p,g-=p),g<15&&(_+=N[r++]<<g,g+=8,_+=N[r++]<<g,g+=8),x=y[_&M];n:for(;;){if(p=x>>>24,_>>>=p,g-=p,p=x>>>16&255,p&16){if(b=x&65535,p&=15,g<p&&(_+=N[r++]<<g,g+=8,g<p&&(_+=N[r++]<<g,g+=8)),b+=_&(1<<p)-1,b>l){t.msg="invalid distance too far back",k.mode=Br;break e}if(_>>>=p,g-=p,p=a-s,b>p){if(p=b-p,p>u&&k.sane){t.msg="invalid distance too far back",k.mode=Br;break e}if(T=0,z=m,h===0){if(T+=c-p,p<E){E-=p;do v[a++]=m[T++];while(--p);T=a-b,z=v}}else if(h<p){if(T+=c+h-p,p-=h,p<E){E-=p;do v[a++]=m[T++];while(--p);if(T=0,h<E){p=h,E-=p;do v[a++]=m[T++];while(--p);T=a-b,z=v}}}else if(T+=h-p,p<E){E-=p;do v[a++]=m[T++];while(--p);T=a-b,z=v}for(;E>2;)v[a++]=z[T++],v[a++]=z[T++],v[a++]=z[T++],E-=3;E&&(v[a++]=z[T++],E>1&&(v[a++]=z[T++]))}else{T=a-b;do v[a++]=v[T++],v[a++]=v[T++],v[a++]=v[T++],E-=3;while(E>2);E&&(v[a++]=v[T++],E>1&&(v[a++]=v[T++]))}}else if((p&64)===0){x=y[(x&65535)+(_&(1<<p)-1)];continue n}else{t.msg="invalid distance code",k.mode=Br;break e}break}}else if((p&64)===0){x=S[(x&65535)+(_&(1<<p)-1)];continue t}else if(p&32){k.mode=xp;break e}else{t.msg="invalid literal/length code",k.mode=Br;break e}break}}while(r<i&&a<o);E=g>>3,r-=E,g-=E<<3,_&=(1<<g)-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?5+(i-r):5-(r-i),t.avail_out=a<o?257+(o-a):257-(a-o),k.hold=_,k.bits=g},qt=15,ul=852,dl=592,ml=0,Oa=1,hl=2,kp=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),bp=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Tp=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Mp=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Rp=(e,t,n,r,i,a,s,o)=>{let l=o.bits,c=0,u=0,h=0,m=0,_=0,g=0,S=0,y=0,w=0,M=0,x,p,E,b,T,z=null,N,v=new Uint16Array(qt+1),k=new Uint16Array(qt+1),O=null,j,V,q;for(c=0;c<=qt;c++)v[c]=0;for(u=0;u<r;u++)v[t[n+u]]++;for(_=l,m=qt;m>=1&&v[m]===0;m--);if(_>m&&(_=m),m===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<m&&v[h]===0;h++);for(_<h&&(_=h),y=1,c=1;c<=qt;c++)if(y<<=1,y-=v[c],y<0)return-1;if(y>0&&(e===ml||m!==1))return-1;for(k[1]=0,c=1;c<qt;c++)k[c+1]=k[c]+v[c];for(u=0;u<r;u++)t[n+u]!==0&&(s[k[t[n+u]]++]=u);if(e===ml?(z=O=s,N=20):e===Oa?(z=kp,O=bp,N=257):(z=Tp,O=Mp,N=0),M=0,u=0,c=h,T=a,g=_,S=0,E=-1,w=1<<_,b=w-1,e===Oa&&w>ul||e===hl&&w>dl)return 1;for(;;){j=c-S,s[u]+1<N?(V=0,q=s[u]):s[u]>=N?(V=O[s[u]-N],q=z[s[u]-N]):(V=96,q=0),x=1<<c-S,p=1<<g,h=p;do p-=x,i[T+(M>>S)+p]=j<<24|V<<16|q|0;while(p!==0);for(x=1<<c-1;M&x;)x>>=1;if(x!==0?(M&=x-1,M+=x):M=0,u++,--v[c]===0){if(c===m)break;c=t[n+s[u]]}if(c>_&&(M&b)!==E){for(S===0&&(S=_),T+=h,g=c-S,y=1<<g;g+S<m&&(y-=v[g+S],!(y<=0));)g++,y<<=1;if(w+=1<<g,e===Oa&&w>ul||e===hl&&w>dl)return 1;E=M&b,i[E]=_<<24|g<<16|T-a|0}}return M!==0&&(i[T+M]=c-S<<24|64<<16|0),o.bits=_,0},Wn=Rp,zp=0,vu=1,yu=2,{Z_FINISH:fl,Z_BLOCK:Lp,Z_TREES:Gr,Z_OK:Dt,Z_STREAM_END:Np,Z_NEED_DICT:Op,Z_STREAM_ERROR:Ue,Z_DATA_ERROR:wu,Z_MEM_ERROR:Su,Z_BUF_ERROR:Ip,Z_DEFLATED:_l}=Ut,si=16180,gl=16181,pl=16182,vl=16183,yl=16184,wl=16185,Sl=16186,Al=16187,xl=16188,El=16189,Xr=16190,at=16191,Ia=16192,kl=16193,Ca=16194,bl=16195,Tl=16196,Ml=16197,Rl=16198,Hr=16199,Vr=16200,zl=16201,Ll=16202,Nl=16203,Ol=16204,Il=16205,Pa=16206,Cl=16207,Pl=16208,ce=16209,Au=16210,xu=16211,Cp=852,Pp=592,Fp=15,Dp=Fp,Fl=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Up(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var Bt=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<si||t.mode>xu?1:0},Eu=e=>{if(Bt(e))return Ue;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=si,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(Cp),t.distcode=t.distdyn=new Int32Array(Pp),t.sane=1,t.back=-1,Dt},ku=e=>{if(Bt(e))return Ue;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Eu(e)},bu=(e,t)=>{let n;if(Bt(e))return Ue;let r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Ue:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,ku(e))},Tu=(e,t)=>{if(!e)return Ue;let n=new Up;e.state=n,n.strm=e,n.window=null,n.mode=si;let r=bu(e,t);return r!==Dt&&(e.state=null),r},Bp=e=>Tu(e,Dp),Dl=!0,Fa,Da,Gp=e=>{if(Dl){Fa=new Int32Array(512),Da=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Wn(vu,e.lens,0,288,Fa,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Wn(yu,e.lens,0,32,Da,0,e.work,{bits:5}),Dl=!1}e.lencode=Fa,e.lenbits=9,e.distcode=Da,e.distbits=5},Mu=(e,t,n,r)=>{let i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),r>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(t.subarray(n-r,n-r+i),a.wnext),r-=i,r?(a.window.set(t.subarray(n-r,n),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},Hp=(e,t)=>{let n,r,i,a,s,o,l,c,u,h,m,_,g,S,y=0,w,M,x,p,E,b,T,z,N=new Uint8Array(4),v,k,O=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Bt(e)||!e.output||!e.input&&e.avail_in!==0)return Ue;n=e.state,n.mode===at&&(n.mode=Ia),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,h=o,m=l,z=Dt;e:for(;;)switch(n.mode){case si:if(n.wrap===0){n.mode=Ia;break}for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,N[0]=c&255,N[1]=c>>>8&255,n.check=Se(n.check,N,2,0),c=0,u=0,n.mode=gl;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ce;break}if((c&15)!==_l){e.msg="unknown compression method",n.mode=ce;break}if(c>>>=4,u-=4,T=(c&15)+8,n.wbits===0&&(n.wbits=T),T>15||T>n.wbits){e.msg="invalid window size",n.mode=ce;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?El:at,c=0,u=0;break;case gl:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==_l){e.msg="unknown compression method",n.mode=ce;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ce;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Se(n.check,N,2,0)),c=0,u=0,n.mode=pl;case pl:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,N[2]=c>>>16&255,N[3]=c>>>24&255,n.check=Se(n.check,N,4,0)),c=0,u=0,n.mode=vl;case vl:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Se(n.check,N,2,0)),c=0,u=0,n.mode=yl;case yl:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Se(n.check,N,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=wl;case wl:if(n.flags&1024&&(_=n.length,_>o&&(_=o),_&&(n.head&&(T=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(a,a+_),T)),n.flags&512&&n.wrap&4&&(n.check=Se(n.check,r,_,a)),o-=_,a+=_,n.length-=_),n.length))break e;n.length=0,n.mode=Sl;case Sl:if(n.flags&2048){if(o===0)break e;_=0;do T=r[a+_++],n.head&&T&&n.length<65536&&(n.head.name+=String.fromCharCode(T));while(T&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=Se(n.check,r,_,a)),o-=_,a+=_,T)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Al;case Al:if(n.flags&4096){if(o===0)break e;_=0;do T=r[a+_++],n.head&&T&&n.length<65536&&(n.head.comment+=String.fromCharCode(T));while(T&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=Se(n.check,r,_,a)),o-=_,a+=_,T)break e}else n.head&&(n.head.comment=null);n.mode=xl;case xl:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ce;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=at;break;case El:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}e.adler=n.check=Fl(c),c=0,u=0,n.mode=Xr;case Xr:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Op;e.adler=n.check=1,n.mode=at;case at:if(t===Lp||t===Gr)break e;case Ia:if(n.last){c>>>=u&7,u-=u&7,n.mode=Pa;break}for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=kl;break;case 1:if(Gp(n),n.mode=Hr,t===Gr){c>>>=2,u-=2;break e}break;case 2:n.mode=Tl;break;case 3:e.msg="invalid block type",n.mode=ce}c>>>=2,u-=2;break;case kl:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ce;break}if(n.length=c&65535,c=0,u=0,n.mode=Ca,t===Gr)break e;case Ca:n.mode=bl;case bl:if(_=n.length,_){if(_>o&&(_=o),_>l&&(_=l),_===0)break e;i.set(r.subarray(a,a+_),s),o-=_,a+=_,l-=_,s+=_,n.length-=_;break}n.mode=at;break;case Tl:for(;u<14;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=ce;break}n.have=0,n.mode=Ml;case Ml:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.lens[O[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[O[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,v={bits:n.lenbits},z=Wn(zp,n.lens,0,19,n.lencode,0,n.work,v),n.lenbits=v.bits,z){e.msg="invalid code lengths set",n.mode=ce;break}n.have=0,n.mode=Rl;case Rl:for(;n.have<n.nlen+n.ndist;){for(;y=n.lencode[c&(1<<n.lenbits)-1],w=y>>>24,M=y>>>16&255,x=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(x<16)c>>>=w,u-=w,n.lens[n.have++]=x;else{if(x===16){for(k=w+2;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(c>>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ce;break}T=n.lens[n.have-1],_=3+(c&3),c>>>=2,u-=2}else if(x===17){for(k=w+3;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=w,u-=w,T=0,_=3+(c&7),c>>>=3,u-=3}else{for(k=w+7;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=w,u-=w,T=0,_=11+(c&127),c>>>=7,u-=7}if(n.have+_>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ce;break}for(;_--;)n.lens[n.have++]=T}}if(n.mode===ce)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ce;break}if(n.lenbits=9,v={bits:n.lenbits},z=Wn(vu,n.lens,0,n.nlen,n.lencode,0,n.work,v),n.lenbits=v.bits,z){e.msg="invalid literal/lengths set",n.mode=ce;break}if(n.distbits=6,n.distcode=n.distdyn,v={bits:n.distbits},z=Wn(yu,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,v),n.distbits=v.bits,z){e.msg="invalid distances set",n.mode=ce;break}if(n.mode=Hr,t===Gr)break e;case Hr:n.mode=Vr;case Vr:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Ep(e,m),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===at&&(n.back=-1);break}for(n.back=0;y=n.lencode[c&(1<<n.lenbits)-1],w=y>>>24,M=y>>>16&255,x=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(M&&(M&240)===0){for(p=w,E=M,b=x;y=n.lencode[b+((c&(1<<p+E)-1)>>p)],w=y>>>24,M=y>>>16&255,x=y&65535,!(p+w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=p,u-=p,n.back+=p}if(c>>>=w,u-=w,n.back+=w,n.length=x,M===0){n.mode=Il;break}if(M&32){n.back=-1,n.mode=at;break}if(M&64){e.msg="invalid literal/length code",n.mode=ce;break}n.extra=M&15,n.mode=zl;case zl:if(n.extra){for(k=n.extra;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ll;case Ll:for(;y=n.distcode[c&(1<<n.distbits)-1],w=y>>>24,M=y>>>16&255,x=y&65535,!(w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((M&240)===0){for(p=w,E=M,b=x;y=n.distcode[b+((c&(1<<p+E)-1)>>p)],w=y>>>24,M=y>>>16&255,x=y&65535,!(p+w<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=p,u-=p,n.back+=p}if(c>>>=w,u-=w,n.back+=w,M&64){e.msg="invalid distance code",n.mode=ce;break}n.offset=x,n.extra=M&15,n.mode=Nl;case Nl:if(n.extra){for(k=n.extra;u<k;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=ce;break}n.mode=Ol;case Ol:if(l===0)break e;if(_=m-l,n.offset>_){if(_=n.offset-_,_>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ce;break}_>n.wnext?(_-=n.wnext,g=n.wsize-_):g=n.wnext-_,_>n.length&&(_=n.length),S=n.window}else S=i,g=s-n.offset,_=n.length;_>l&&(_=l),l-=_,n.length-=_;do i[s++]=S[g++];while(--_);n.length===0&&(n.mode=Vr);break;case Il:if(l===0)break e;i[s++]=n.length,l--,n.mode=Vr;break;case Pa:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=r[a++]<<u,u+=8}if(m-=l,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?Se(n.check,i,m,s-m):Zn(n.check,i,m,s-m)),m=l,n.wrap&4&&(n.flags?c:Fl(c))!==n.check){e.msg="incorrect data check",n.mode=ce;break}c=0,u=0}n.mode=Cl;case Cl:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ce;break}c=0,u=0}n.mode=Pl;case Pl:z=Np;break e;case ce:z=wu;break e;case Au:return Su;case xu:default:return Ue}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||m!==e.avail_out&&n.mode<ce&&(n.mode<Pa||t!==fl))&&Mu(e,e.output,e.next_out,m-e.avail_out),h-=e.avail_in,m-=e.avail_out,e.total_in+=h,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?Se(n.check,i,m,e.next_out-m):Zn(n.check,i,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===at?128:0)+(n.mode===Hr||n.mode===Ca?256:0),(h===0&&m===0||t===fl)&&z===Dt&&(z=Ip),z},Vp=e=>{if(Bt(e))return Ue;let t=e.state;return t.window&&(t.window=null),e.state=null,Dt},Wp=(e,t)=>{if(Bt(e))return Ue;let n=e.state;return(n.wrap&2)===0?Ue:(n.head=t,t.done=!1,Dt)},Kp=(e,t)=>{let n=t.length,r,i,a;return Bt(e)||(r=e.state,r.wrap!==0&&r.mode!==Xr)?Ue:r.mode===Xr&&(i=1,i=Zn(i,t,n,0),i!==r.check)?wu:(a=Mu(e,t,n,n),a?(r.mode=Au,Su):(r.havedict=1,Dt))},$p=ku,Xp=bu,Yp=Eu,Zp=Bp,jp=Tu,qp=Hp,Jp=Vp,Qp=Wp,ev=Kp,tv="pako inflate (from Nodeca project)",ot={inflateReset:$p,inflateReset2:Xp,inflateResetKeep:Yp,inflateInit:Zp,inflateInit2:jp,inflate:qp,inflateEnd:Jp,inflateGetHeader:Qp,inflateSetDictionary:ev,inflateInfo:tv};function nv(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var rv=nv,Ru=Object.prototype.toString,{Z_NO_FLUSH:iv,Z_FINISH:av,Z_OK:Jn,Z_STREAM_END:Ua,Z_NEED_DICT:Ba,Z_STREAM_ERROR:sv,Z_DATA_ERROR:Ul,Z_MEM_ERROR:ov}=Ut;function nr(e){this.options=ai.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new gu,this.strm.avail_out=0;let n=ot.inflateInit2(this.strm,t.windowBits);if(n!==Jn)throw new Error(Pt[n]);if(this.header=new rv,ot.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=qn.string2buf(t.dictionary):Ru.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ot.inflateSetDictionary(this.strm,t.dictionary),n!==Jn)))throw new Error(Pt[n])}nr.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?av:iv,Ru.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),a=ot.inflate(n,s),a===Ba&&i&&(a=ot.inflateSetDictionary(n,i),a===Jn?a=ot.inflate(n,s):a===Ul&&(a=Ba));n.avail_in>0&&a===Ua&&n.state.wrap>0&&e[n.next_in]!==0;)ot.inflateReset(n),a=ot.inflate(n,s);switch(a){case sv:case Ul:case Ba:case ov:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Ua))if(this.options.to==="string"){let l=qn.utf8border(n.output,n.next_out),c=n.next_out-l,u=qn.buf2string(n.output,l);n.next_out=c,n.avail_out=r-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Jn&&o===0)){if(a===Ua)return a=ot.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};nr.prototype.onData=function(e){this.chunks.push(e)};nr.prototype.onEnd=function(e){e===Jn&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ai.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function ss(e,t){let n=new nr(t);if(n.push(e),n.err)throw n.msg||Pt[n.err];return n.result}function cv(e,t){return t=t||{},t.raw=!0,ss(e,t)}var lv=nr,uv=ss,dv=cv,mv=ss,hv=Ut,fv={Inflate:lv,inflate:uv,inflateRaw:dv,ungzip:mv,constants:hv},{Deflate:_v,deflate:gv,deflateRaw:pv,gzip:vv}=Ap,{Inflate:yv,inflate:wv,inflateRaw:Sv,ungzip:Av}=fv,xv=_v,Ev=gv,kv=pv,bv=vv,Tv=yv,Mv=wv,Rv=Sv,zv=Av,Lv=Ut,Bl={Deflate:xv,deflate:Ev,deflateRaw:kv,gzip:bv,Inflate:Tv,inflate:Mv,inflateRaw:Rv,ungzip:zv,constants:Lv},Yr=2023,os=1,cs=2,ls=4,us=8,ds=16,ms=32,zu=64,Nv=128,Ov=256,hs=512,fs=1024,_s=2048,Zr=4096,gs=8192,jr=16384,Iv=32768,qr=65536,ps=1<<17,Jr=1<<18,Qr=1<<19,vs=1<<20,ys=1<<21,ws=1<<22,Cv=1<<23,Ss=1<<24,ei=1<<25,As=1<<26,xs=1<<27,Es=1<<28,ks=1<<29,bs=1<<30,Pv=-2147483648,Ts=1,Ms=2,Rs=4,Fv=1,Dv=2,Uv=128,Jt=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Gl=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),zs=class Lu{constructor(t,n){this.protocolVersion=0,this.isDemo=Fv,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?X.serverdata:this.protocolVersion===Yr?t:this.protocolVersion===34||this.protocolVersion===25?t<=X.frame?t:X.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case X.bad:return;case X.nop:break;case X.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case X.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case X.print:this.parsePrint();break;case X.serverdata:this.parseServerData();break;case X.configstring:this.parseConfigString();break;case X.spawnbaseline:this.parseSpawnBaseline();break;case X.centerprint:this.parseCenterPrint();break;case X.download:this.parseDownload();break;case X.frame:this.parseFrame();break;case X.packetentities:this.parsePacketEntities(!1);break;case X.deltapacketentities:this.parsePacketEntities(!0);break;case X.playerinfo:this.parsePlayerState();break;case X.stufftext:this.parseStuffText();break;case X.layout:this.parseLayout();break;case X.inventory:this.parseInventory();break;case X.sound:this.parseSound();break;case X.muzzleflash:this.parseMuzzleFlash();break;case X.muzzleflash2:this.parseMuzzleFlash2();break;case X.temp_entity:this.parseTempEntity();break;case X.splitclient:this.parseSplitClient();break;case X.configblast:this.parseConfigBlast();break;case X.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case X.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case X.damage:this.parseDamage();break;case X.locprint:this.parseLocPrint();break;case X.fog:this.parseFog();break;case X.waitingforplayers:this.parseWaitingForPlayers();break;case X.bot_chat:this.parseBotChat();break;case X.poi:this.parsePoi();break;case X.help_path:this.parseHelpPath();break;case X.muzzleflash3:this.parseMuzzleFlash3();break;case X.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(r){console.warn(`Error parsing command ${t}: ${r.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===Yr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let r=this.stream.readByte(),i=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,i,a,s,r,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${r}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,r=this.stream.readString(),i=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,r,i,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${r}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Bl.inflate(r);i.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Ga(i.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(i){console.error("svc_configblast: Failed to decompress data",i)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Bl.inflate(r);i.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Ga(i.buffer),s=new Lu(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(i){console.error("svc_spawnbaselineblast: Failed to decompress data",i)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),r=this.stream.readByte(),i=[];for(let a=0;a<r;a++)i.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,i)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),r=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(r)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),r={x:0,y:0,z:0};this.stream.readPos(r);let i=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,r)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let r={x:0,y:0,z:0};this.stream.readDir(r),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),r;t>0&&(r=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,r)}parseInventory(){let n=new Array(256);for(let r=0;r<256;r++)n[r]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),r,i,a,s,o;if(t&1&&(r=this.stream.readByte()),t&2&&(i=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,r,i,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let r=this.stream.readByte();t|=r<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let r=0;r<t;r++){let i=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=i&31,o=(i&32)!==0,l=(i&64)!==0,c=(i&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},r={x:0,y:0,z:0},i={x:0,y:0,z:0},a,s,o,l,c;switch(t){case C.EXPLOSION1:case C.EXPLOSION2:case C.ROCKET_EXPLOSION:case C.GRENADE_EXPLOSION:case C.ROCKET_EXPLOSION_WATER:case C.GRENADE_EXPLOSION_WATER:case C.BFG_EXPLOSION:case C.BFG_BIGEXPLOSION:case C.BOSSTPORT:case C.PLASMA_EXPLOSION:case C.PLAIN_EXPLOSION:case C.CHAINFIST_SMOKE:case C.TRACKER_EXPLOSION:case C.TELEPORT_EFFECT:case C.DBALL_GOAL:case C.NUKEBLAST:case C.WIDOWSPLASH:case C.EXPLOSION1_BIG:case C.EXPLOSION1_NP:this.stream.readPos(n);break;case C.GUNSHOT:case C.BLOOD:case C.BLASTER:case C.SHOTGUN:case C.SPARKS:case C.BULLET_SPARKS:case C.SCREEN_SPARKS:case C.SHIELD_SPARKS:case C.BLASTER2:case C.FLECHETTE:case C.MOREBLOOD:case C.ELECTRIC_SPARKS:case C.HEATBEAM_SPARKS:case C.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(i);break;case C.SPLASH:case C.LASER_SPARKS:case C.WELDING_SPARKS:case C.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte();break;case C.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(r)):(this.stream.readPos(n),this.stream.readDir(i));break;case C.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(i)):(this.stream.readPos(n),this.stream.readPos(r));break;case C.RAILTRAIL:case C.BUBBLETRAIL:case C.BFG_LASER:case C.DEBUGTRAIL:case C.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(r);break;case C.PARASITE_ATTACK:case C.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case C.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;case C.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case C.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case C.FORCEWALL:this.stream.readPos(n),this.stream.readPos(r),s=this.stream.readByte();break;case C.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case C.WIDOWBEAMOUT:this.stream.readShort();case C.HEATBEAM:case C.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;default:break}this.handler&&this.handler.onTempEntity(t,n,r,i,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Jt();this.parseDelta(Jt(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),r=this.stream.readByte(),i=this.stream.readByte(),a=this.stream.readData(i),s=this.stream.readByte();if(s=this.translateCommand(s),s!==X.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===Uv){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===Dv&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:r,areaBytes:i,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=Gl(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let r=this.stream.readLong();for(let i=0;i<32;i++)r&1<<i&&(t.stats[i]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:Gl(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let r=Jt();this.parseDelta(Jt(),r,n.number,n.bits,n.bitsHigh),t.push(r)}return t}parseEntityBits(){let t=this.stream.readByte();t&Nv&&(t|=this.stream.readByte()<<8),t&Iv&&(t|=this.stream.readByte()<<16),t&Cv&&(t|=this.stream.readByte()<<24);let n=0;t&Pv&&(n=this.stream.readByte());let r;return t&Ov?r=this.stream.readShort():r=this.stream.readByte(),{number:r,bits:t,bitsHigh:n}}parseDelta(t,n,r,i,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=r,n.bits=i,n.bitsHigh=a,i&_s&&(n.modelindex=this.stream.readByte()),i&vs&&(n.modelindex2=this.stream.readByte()),i&ys&&(n.modelindex3=this.stream.readByte()),i&ws&&(n.modelindex4=this.stream.readByte()),i&ds&&(n.frame=this.stream.readByte()),i&ps&&(n.frame=this.stream.readShort()),i&qr&&i&ei?n.skinnum=this.stream.readLong():i&qr?n.skinnum=this.stream.readByte():i&ei&&(n.skinnum=this.stream.readShort()),i&jr&&i&Qr?n.effects=this.stream.readLong():i&jr?n.effects=this.stream.readByte():i&Qr&&(n.effects=this.stream.readShort()),i&Zr&&i&Jr?n.renderfx=this.stream.readLong():i&Zr?n.renderfx=this.stream.readByte():i&Jr&&(n.renderfx=this.stream.readShort()),i&os&&(n.origin.x=this.stream.readCoord()),i&cs&&(n.origin.y=this.stream.readCoord()),i&hs&&(n.origin.z=this.stream.readCoord()),i&fs&&(n.angles.x=this.stream.readAngle()),i&ls&&(n.angles.y=this.stream.readAngle()),i&us&&(n.angles.z=this.stream.readAngle()),i&Ss&&this.stream.readPos(n.old_origin),i&As&&(n.sound=this.stream.readByte()),i&ms?n.event=this.stream.readByte():n.event=0,i&xs&&(n.solid=this.stream.readShort()),i&gs&&(n.alpha=this.stream.readByte()/255),i&Es&&(n.scale=this.stream.readFloat()),i&ks&&(n.instanceBits=this.stream.readLong()),i&bs&&(n.loopVolume=this.stream.readByte()/255),a&Ts&&(n.loopAttenuation=this.stream.readByte()/255),a&Ms&&(n.owner=this.stream.readShort()),a&Rs&&(n.oldFrame=this.stream.readShort())}},Ls=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(Ls||{}),Nu=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new I_(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}let n=new zs(t.data,this.handler);n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var Bv=Object.defineProperty,Ou=(e,t)=>{for(var n in t)Bv(e,n,{get:t[n],enumerable:!0})},St={x:0,y:0,z:0};var k4=Math.PI/180;function sn(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function ln(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function un(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Gv(e){return un(e,e)}function ci(e){return Math.sqrt(Gv(e))}function Iu(e){let t=ci(e);return t===0?e:ln(e,1/t)}var Cu=0,Pu=1,Fu=2,Hv=Math.PI/180,b4=180/Math.PI;function Ns(e,t){switch(t){case Cu:return e.x;case Pu:return e.y;case Fu:default:return e.z}}function Os(e){return e*Hv}function cn(e){let t=e%360;return t<0?360+t:t}function li(e){let t=Os(Ns(e,Pu)),n=Os(Ns(e,Cu)),r=Os(Ns(e,Fu)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}var on=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Qe=1,At=2;var Ps=8,Fs=16,Vv=32;var Wv=16384;var ui=65536,Du=1<<17,Kv=1<<18,$v=1<<19,Xv=1<<20,Yv=1<<21,Zv=1<<22,jv=1<<23,T4=1<<24,di=1<<25,qv=1<<26,M4=1<<27,R4=1<<28,z4=1<<29,mi=1<<30,L4=1<<31;var N4=1<<25,O4=1<<28,I4=1<<29,C4=1<<30,P4=1<<31;var F4=Qe|At,D4=Qe|ui|At|di|mi,U4=Qe|ui|At,B4=Qe|Du|At|di|mi,G4=Vv|Ps|Fs,H4=Qe|Fs|Ps,Jv=Qe|di|mi|At|qv,V4=Kv|$v|Xv|Yv|Zv|jv,W4=Qe|Ps|Fs|di|mi,K4=Qe|ui|At,$4=Qe|At,X4=Qe|ui|At|Du,Y4=Jv|Wv;var Z4=Number.MAX_SAFE_INTEGER-1;var ir=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(ir||{});var Uu=256;var Qv=256,ar=8192,sr=2048,or=512,ey=256,ty=Uu*2,ny=256,Is=32;var me=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+ar]="Sounds",e[e.Images=e.Sounds+sr]="Images",e[e.Lights=e.Images+or]="Lights",e[e.ShadowLights=e.Lights+Qv]="ShadowLights",e[e.Items=e.ShadowLights+ny]="Items",e[e.PlayerSkins=e.Items+ey]="PlayerSkins",e[e.General=e.PlayerSkins+Uu]="General",e[e.WheelWeapons=e.General+ty]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Is]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Is]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Is]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(me||{}),j4=me.MaxConfigStrings;var ry={};Ou(ry,{addReplayFrame:()=>oy,createReplaySession:()=>sy,deserializeReplay:()=>ay,serializeReplay:()=>iy});function iy(e){return JSON.stringify(e,null,2)}function ay(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function sy(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function oy(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var Gt=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Gt||{});var Be=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Be||{});function ct(e,t){return(e&t)!==0}var hi=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(hi||{}),et=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(et||{});function Ds(e){let{velocity:t,frametime:n,onGround:r,groundIsSlick:i,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=ci(t);if(u<1)return{x:0,y:0,z:t.z};let h=0;if(r&&!i||a){let g=u<l?l:u;h+=g*o*n}s>0&&!a&&(h+=u*c*s*n);let m=u-h;if(m<0&&(m=0),m===u)return t;let _=m/u;return ln(t,_)}function fi(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=un(t,n),o=r-s;if(o<=0)return t;let l=i*a*r;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function Bu(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=Math.min(r,30),o=un(t,n),l=s-o;if(l<=0)return t;let c=i*r*a;return c>l&&(c=l),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function Us(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0},s=ci(a);if(s>i){let o=i/s;a=ln(a,o),s=i}return{wishdir:s===0?a:Iu(a),wishspeed:s}}function Bs(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:t.z*r.forwardmove+n.z*r.sidemove};r.upmove>10?a=sn(a,{x:0,y:0,z:r.upmove}):r.upmove<-10?a=sn(a,{x:0,y:0,z:r.upmove}):Math.abs(r.forwardmove)<10&&Math.abs(r.sidemove)<10?a=sn(a,{x:0,y:0,z:-60}):a=sn(a,{x:0,y:0,z:10});let s=ci(a);if(s>i){let o=i/s;a=ln(a,o),s=i}return s*=.5,{wishdir:s===0?a:Iu(a),wishspeed:s}}function cy(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function ly(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Gs(e){let{pmFlags:t,cmdAngles:n,deltaAngles:r}=e,i;(t&32)!==0?i={x:0,y:n.y+r.y,z:0}:(i=cy(n,r),i={...i,x:ly(i.x)});let a=li(i);return{viewangles:i,...a}}var Gu=200,Hu=200,Vu=200,Wu=140,Ku=150,$u=3;function uy(e){let t=cn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Xu(e,t){return{x:uy(e.x+t.x),y:cn(e.y+t.y),z:cn(e.z+t.z)}}function Yu(e,t){let n=t.sensitivityX??t.sensitivity,r=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*r,y:e.deltaX*n,z:0}}var Ht=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(Ht||{});var Zu=64;var ju=0,qu=1,Ju=2,Qu=3,ed=4,td=5,nd=6,rd=7,id=8;var ad=11,sd=12,od=13;function dy(e,t,n){let r=Math.floor(n/2),i=n%2!==0,a=t+r,s=e[a]||0;if(i){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function my(e,t,n,r){let i=r*n,a=Math.floor(i/8),s=i%8,o=(1<<r)-1<<s;return(dy(e,t,a)&o)>>>s}var Hs=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(Hs||{}),He=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(He||{}),hy=12,fy=9,q4=Math.ceil(hy*fy/16),cd=23,ld=2,J4=Math.ceil(cd*ld/16),_y={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function ud(e,t){let n;return typeof t=="number"?n=t:n=_y[t],n===void 0||n<0||n>=cd?0:my(e,41,n,ld)}function dd(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var gy={};Ou(gy,{U_ANGLE1:()=>xy,U_ANGLE2:()=>Ey,U_ANGLE3:()=>ky,U_EFFECTS:()=>My,U_EVENT:()=>Ly,U_FRAME:()=>by,U_MODEL:()=>vy,U_MODEL2:()=>Oy,U_MODEL3:()=>Iy,U_MODEL4:()=>Cy,U_MOREBITS:()=>Ny,U_NUMBER:()=>py,U_ORIGIN1:()=>wy,U_ORIGIN2:()=>Sy,U_ORIGIN3:()=>Ay,U_REMOVE:()=>Py,U_RENDERFX:()=>Ry,U_SKIN:()=>Ty,U_SOLID:()=>zy,U_SOUND:()=>yy});var py=1,vy=2,yy=4,wy=8,Sy=16,Ay=32,xy=64,Ey=128,ky=256,by=512,Ty=1024,My=2048,Ry=4096,zy=8192,Ly=16384,Ny=32768,Oy=1,Iy=2,Cy=4,Py=32768,rr=.025,Cs=33554432,oi={None:0,Feet:1,Waist:2,Under:3},Fy=(e,t)=>{let n={...e.origin};n.z-=.25;let r=t(e.origin,n);return{...e,onGround:r.fraction<1}},Dy=(e,t)=>{let n={...e.origin},{mins:r,maxs:i}=e;if(n.z=e.origin.z+r.z+1,!(t(n)&Cs))return{...e,waterLevel:oi.None};let s=oi.Feet,o=e.origin.z+(r.z+i.z)*.5;if(n.z=o,t(n)&Cs){s=oi.Waist;let c=e.origin.z+22;n.z=c,t(n)&Cs&&(s=oi.Under)}return{...e,waterLevel:s}},md=(e,t,n,r)=>{let i={...e};i=Fy(i,n),i=Dy(i,r);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=i,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:h,right:m}=li(u),_=Ds({velocity:s,frametime:rr,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?Bs({forward:h,right:m,cmd:t,maxSpeed:320}):Us({forward:h,right:m,cmd:t,maxSpeed:320}),S=fi({velocity:_,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:rr}),y=n(a,{x:a.x+S.x*rr,y:a.y+S.y*rr,z:a.z+S.z*rr});return{...i,origin:y.endpos,velocity:S}},hd=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=on[t];e.x=n[0],e.y=n[1],e.z=n[2]}},fd=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let r=0;r<on.length;r++){let i=on[r],a=e.x*i[0]+e.y*i[1]+e.z*i[2];a>t&&(t=a,n=r)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},cr=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let r=0,i=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*on[s][0]+t*on[s][1]+n*on[s][2];o>i&&(i=o,r=s)}}this.writeByte(r)}};var _d=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(_d||{}),Q4=Object.keys(_d).length/2;var Uy=Object.defineProperty,By=(e,t)=>{for(var n in t)Uy(e,n,{get:t[n],enumerable:!0})},gi=null,_i=[1,1,1,1],gd=["ch1","ch2","ch3"],Vs=[null,null,null],Gy=e=>{for(let t=0;t<gd.length;t++){let n=gd[t];try{Vs[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Vs[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
-
`)}}}
|
|
171
|
-
`)}},
|
|
172
|
-
`)}},
|
|
173
|
-
`)}
|
|
174
|
-
`),u=n.height/2-c.length*10;for(let h of c)ge.SCR_DrawCenterString(u,h),u+=16}js.drawCenterPrint(ge,o,l),js.drawNotifications(ge,o),Ed.drawSubtitles(ge,o),Hy(ge,n.width,n.height)}function vi(){return js}function aw(){return Ed}function sw(e,t,n){t>=me.Models&&t<me.Models+ar?e.RegisterModel(n):t>=me.Sounds&&t<me.Sounds+sr?e.RegisterSound(n):t>=me.Images&&t<me.Images+or&&e.Draw_RegisterPic(n)}var $s=1e-6,pi=typeof Float32Array<"u"?Float32Array:Array,wd=Math.random;function Xs(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var ow={};By(ow,{add:()=>mw,angle:()=>Cw,bezier:()=>Tw,ceil:()=>hw,clone:()=>cw,copy:()=>uw,create:()=>kd,cross:()=>xw,dist:()=>Vw,distance:()=>zd,div:()=>Hw,divide:()=>Rd,dot:()=>qs,equals:()=>Uw,exactEquals:()=>Dw,floor:()=>fw,forEach:()=>Xw,fromValues:()=>lw,hermite:()=>bw,inverse:()=>Sw,len:()=>Kw,length:()=>bd,lerp:()=>Ew,max:()=>gw,min:()=>_w,mul:()=>Gw,multiply:()=>Md,negate:()=>ww,normalize:()=>Aw,random:()=>Mw,rotateX:()=>Nw,rotateY:()=>Ow,rotateZ:()=>Iw,round:()=>pw,scale:()=>vw,scaleAndAdd:()=>yw,set:()=>dw,slerp:()=>kw,sqrDist:()=>Ww,sqrLen:()=>$w,squaredDistance:()=>Ld,squaredLength:()=>Nd,str:()=>Fw,sub:()=>Bw,subtract:()=>Td,transformMat3:()=>zw,transformMat4:()=>Rw,transformQuat:()=>Lw,zero:()=>Pw});function kd(){var e=new pi(3);return pi!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function cw(e){var t=new pi(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function bd(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function lw(e,t,n){var r=new pi(3);return r[0]=e,r[1]=t,r[2]=n,r}function uw(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function dw(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function mw(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Td(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Md(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Rd(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function hw(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function fw(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function _w(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function gw(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function pw(e,t){return e[0]=Xs(t[0]),e[1]=Xs(t[1]),e[2]=Xs(t[2]),e}function vw(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function yw(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function zd(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function Ld(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Nd(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function ww(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Sw(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Aw(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function qs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function xw(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function Ew(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function kw(e,t,n,r){var i=Math.acos(Math.min(Math.max(qs(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function bw(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function Tw(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function Mw(e,t){t=t===void 0?1:t;var n=wd()*2*Math.PI,r=wd()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function Rw(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function zw(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function Lw(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function Nw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Ow(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Iw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Cw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&qs(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Pw(e){return e[0]=0,e[1]=0,e[2]=0,e}function Fw(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Dw(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Uw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=$s*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=$s*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=$s*Math.max(1,Math.abs(i),Math.abs(o))}var Bw=Td,Gw=Md,Hw=Rd,Vw=zd,Ww=Ld,Kw=bd,$w=Nd,Xw=(function(){var e=kd();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var Yw={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Zw(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function jw(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function qw(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=jw(t,r,i),s=e+a,l=ct(n,Be.Ducked)&&r?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var yi=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Yw,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:r}=li(Gs({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??St}).viewangles),i=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=ct(e.pmFlags,Be.OnGround),s=qw(this.bobTime,i,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=un(e.velocity,n)*this.settings.runPitch,l=un(e.velocity,r),c=l<0?-1:1,h=Math.abs(l)*this.settings.runRoll;h>2&&(h=2),h*=c;let m=this.bobFracSin*this.settings.bobPitch*i,_=this.bobFracSin*this.settings.bobRoll*i;ct(e.pmFlags,Be.Ducked)&&a&&(m*=6,_*=6),o+=Math.min(m,this.settings.maxBobAngle),_=Math.min(_,this.settings.maxBobAngle),this.bobCycle&1&&(_=-_),h+=_;let g=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),S=0,y=0,w=0,M=0,x=0;if(this.kick&&this.kick.remainingMs>0){let T=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));S+=T*this.kick.pitch,y+=T*this.kick.roll,this.kick.origin&&(w+=T*this.kick.origin.x,M+=T*this.kick.origin.y,x+=T*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let p={x:o+S,y:0,z:h+y},E={x:w,y:M,z:g+x},b={angles:p,offset:Zw(E),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=b,b}},Jw={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Od=800,tt={x:0,y:0,z:0},Qw=250;function Vt(){return{origin:tt,velocity:tt,viewAngles:tt,onGround:!1,pmFlags:Be.OnGround,pmType:hi.Normal,waterLevel:Gt.None,gravity:Od,deltaAngles:tt,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:tt,kick_origin:tt,gunoffset:tt,gunangles:tt,gunindex:0,pm_time:0,pm_type:hi.Normal,pm_flags:Be.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Sd(e){return e?{...Vt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:tt,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Vt()}function ze(e,t,n){return e+(t-e)*n}function Ys(e,t,n){let r=cn(t-e);return r>180&&(r-=360),cn(e+r*n)}function mn(e,t,n){let r=Math.max(0,Math.min(n,1));return{...t,origin:{x:ze(e.origin.x,t.origin.x,r),y:ze(e.origin.y,t.origin.y,r),z:ze(e.origin.z,t.origin.z,r)},velocity:{x:ze(e.velocity.x,t.velocity.x,r),y:ze(e.velocity.y,t.velocity.y,r),z:ze(e.velocity.z,t.velocity.z,r)},viewAngles:{x:Ys(e.viewAngles.x,t.viewAngles.x,r),y:Ys(e.viewAngles.y,t.viewAngles.y,r),z:Ys(e.viewAngles.z,t.viewAngles.z,r)},damageAlpha:ze(e.damageAlpha,t.damageAlpha,r),blend:[ze(e.blend[0],t.blend[0],r),ze(e.blend[1],t.blend[1],r),ze(e.blend[2],t.blend[2],r),ze(e.blend[3],t.blend[3],r)],health:ze(e.health||0,t.health||0,r),armor:ze(e.armor||0,t.armor||0,r),ammo:ze(e.ammo||0,t.ammo||0,r)}}function eS(e,t,n,r){let i=Math.min(Math.max(t.msec,0),Qw)/1e3,a=ct(e.pmFlags,Be.OnGround),s=ct(e.pmFlags,Be.OnLadder),o=Ds({velocity:e.velocity,frametime:i,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:l,forward:c,right:u}=Gs({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??tt}),h=e.waterLevel>Gt.None?Bs({forward:c,right:u,cmd:t,maxSpeed:n.pmWaterSpeed}):Us({forward:c,right:u,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>Gt.None)o=fi({velocity:o,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:n.pmWaterAccelerate,frametime:i});else if(a||s){let g=ct(e.pmFlags,Be.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,S=h.wishspeed>g?{wishdir:h.wishdir,wishspeed:g}:h;o=fi({velocity:o,wishdir:S.wishdir,wishspeed:S.wishspeed,accel:n.pmAccelerate,frametime:i})}else o=Bu({velocity:o,wishdir:h.wishdir,wishspeed:h.wishspeed,accel:n.pmAirAccelerate,frametime:i}),o={...o,z:o.z-(e.gravity??Od)*i};let _=r(e.origin,sn(e.origin,ln(o,i))).endpos;return{...e,origin:_,velocity:o,viewAngles:l}}var wi=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:Vt()},this.commands=[],this.predicted=Vt(),this.settings={...Jw,...t},this.trace=e,this.predicted=this.baseFrame.state??Vt()}setAuthoritative(e){let t=Sd(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Sd(this.baseFrame.state);for(let t of this.commands)e=eS(e,t,this.settings,this.trace);return this.predicted=e,e}},pe=null;function tS(){if(!pe){console.error("CGame Init: cgame imports not set");return}pe.Com_Print(`===== CGame Initialization =====
|
|
175
|
-
`),
|
|
176
|
-
`)}function
|
|
177
|
-
`),pe=null}function rS(e,t,n,r,i,a,s){iw(e,t,n,r,i,a,s)}function iS(){rw()}function aS(e){return 0}function sS(e){return 0}function oS(e){return[]}function cS(e,t){return 0}function lS(e){return 0}function uS(e){return 0}function dS(e){let t=e;if(!t||!t.s||!t.cmd||!pe)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return pe.PM_Trace(a,s,o||c,l||c)},r=a=>{let s={x:0,y:0,z:0};return pe.PM_Trace(a,a,s,s).contents||0},i=md(t.s,t.cmd,n,r);t.s.origin=i.origin,t.s.velocity=i.velocity,t.s.onGround=i.onGround,t.s.waterLevel=i.waterLevel}function mS(e,t){pe&&sw(pe,e,t)}function hS(e,t,n){if(!pe)return;vi().setCenterPrint(e,pe.CL_ClientTime())}function fS(e,t,n){if(!pe)return;vi().addNotification(t,n,pe.CL_ClientTime())}function _S(e){vi().clearNotifications()}function gS(e){vi().clearCenterPrint()}function pS(e,t){if(!pe)return;aw().addSubtitle(e,pe.CL_ClientTime())}function vS(e){return{x:0,y:0,z:0}}function yS(e){return null}function Id(e){return pe=e,{Init:tS,Shutdown:nS,DrawHUD:rS,TouchPics:iS,LayoutFlags:aS,GetActiveWeaponWheelWeapon:sS,GetOwnedWeaponWheelWeapons:oS,GetWeaponWheelAmmoCount:cS,GetPowerupWheelCount:lS,GetHitMarkerDamage:uS,Pmove:dS,ParseConfigString:mS,ParseCenterPrint:hS,NotifyMessage:fS,ShowSubtitle:pS,ClearNotify:_S,ClearCenterprint:gS,GetMonsterFlashOffset:vS,GetExtension:yS}}function Cd(e,t){let n=new Map,r=new Set,i=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||r.has(a)||(r.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}r.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),r.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{i()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&i()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,h=n.get(u);h&&i()?.drawPic(a,s,h,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{i()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{i()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);i()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var hn=null,xt=0;var lr=!0,ur=["ch1","ch2","ch3"],fn=[null,null,null],Pd=async(e,t)=>{for(let n=0;n<ur.length;n++){let r=ur[n];try{let i=await t.loadTexture(`pics/${r}.pcx`);fn[n]=e.registerTexture(r,i)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");fn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}hn=fn[0]};var Fd=()=>{if(lr?(xt++,xt>=ur.length&&(lr=!1,xt=0)):(lr=!0,xt=0),lr){if(hn=fn[xt],!hn){let e=!1;for(let t=0;t<ur.length;t++){let n=(xt+t)%ur.length;if(fn[n]){xt=n,hn=fn[n],e=!0;break}}e||(hn=null)}}else hn=null;return lr?xt:-1};var wS=Object.defineProperty,jd=(e,t)=>{for(var n in t)wS(e,n,{get:t[n],enumerable:!0})},$={x:0,y:0,z:0};var mz=Math.PI/180;function io(e){return{x:e.x,y:e.y,z:e.z}}function K(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function P(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function H(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function qd(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function SS(e){return qd(e,e)}function xn(e){return Math.sqrt(SS(e))}function B(e){let t=xn(e);return t===0?e:H(e,1/t)}function AS(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function xS(e,t,n,r){let i=0;if(t.x<n.x){let a=t.x-n.x;i+=a*a}else if(e.x>r.x){let a=e.x-r.x;i+=a*a}if(t.y<n.y){let a=t.y-n.y;i+=a*a}else if(e.y>r.y){let a=e.y-r.y;i+=a*a}if(t.z<n.z){let a=t.z-n.z;i+=a*a}else if(e.z>r.z){let a=e.z-r.z;i+=a*a}return i}var wo=0,So=1,Jd=2,ES=Math.PI/180,kS=180/Math.PI;function mr(e,t){switch(t){case wo:return e.x;case So:return e.y;case Jd:default:return e.z}}function Si(e){return e*ES}function ao(e){return e*kS}function so(e){let t=e%360;return t<0?360+t:t}function te(e){let t=Si(mr(e,So)),n=Si(mr(e,wo)),r=Si(mr(e,Jd)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}function pr(e){let t=mr(e,wo),n=mr(e,So);if(t===0)return n===0?0:n>0?90:270;let r=ao(Math.atan2(n,t));return r<0?r+360:r}function En(e){let t=e.x,n=e.y,r=e.z;if(n===0&&t===0)return{x:r>0?-90:-270,y:0,z:0};let i;t?i=ao(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=ao(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var nt=624,bS=397,TS=2567483615,MS=2147483648,RS=2147483647,Js=4294967296,zS=class{constructor(e=5489){this.state=new Uint32Array(nt),this.index=nt,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<nt;t++){let n=this.state[t-1]^this.state[t-1]>>>30,r=Math.imul(n>>>0,1812433253)+t;this.state[t]=r>>>0}this.index=nt}nextUint32(){this.index>=nt&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<nt;e++){let t=this.state[e]&MS|this.state[(e+1)%nt]&RS,n=this.state[(e+bS)%nt]^t>>>1;(t&1)!==0&&(n^=TS),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==nt)throw new Error(`Expected ${nt} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Qd=class{constructor(e={}){this.mt=new zS(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/Js}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,r=Js-Js%n,i;do i=this.mt.nextUint32();while(i>=r);return e+i%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function zi(e){return new Qd(e)}var Le=1,Rt=2;var Ao=8,xo=16,LS=32;var NS=16384;var Li=65536,em=1<<17,OS=1<<18,IS=1<<19,CS=1<<20,PS=1<<21,FS=1<<22,DS=1<<23,hz=1<<24,Wt=1<<25,Ni=1<<26,fz=1<<27,_z=1<<28,gz=1<<29,kn=1<<30,pz=1<<31;var vz=1<<25,yz=1<<28,wz=1<<29,Sz=1<<30,Az=1<<31,US=Le|Rt,xz=Le|Li|Rt|Wt|kn,Ez=Le|Li|Rt,xi=Le|em|Rt|Wt|kn,BS=LS|Ao|xo,kz=Le|xo|Ao,bt=Le|Wt|kn|Rt|Ni,bz=OS|IS|CS|PS|FS|DS,Tz=Le|Ao|xo|Wt|kn,Mz=Le|Li|Rt,Rz=Le|Rt,zz=Le|Li|Rt|em,Lz=bt|NS,Nz=Number.MAX_SAFE_INTEGER-1;var tm=256,GS=256,HS=8192,VS=2048,WS=512,KS=256,$S=tm*2,XS=256,Qs=32,nm=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+HS]="Sounds",e[e.Images=e.Sounds+VS]="Images",e[e.Lights=e.Images+WS]="Lights",e[e.ShadowLights=e.Lights+GS]="ShadowLights",e[e.Items=e.ShadowLights+XS]="Items",e[e.PlayerSkins=e.Items+KS]="PlayerSkins",e[e.General=e.PlayerSkins+tm]="General",e[e.WheelWeapons=e.General+$S]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Qs]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Qs]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Qs]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(nm||{}),Oz=nm.MaxConfigStrings,YS={};jd(YS,{addReplayFrame:()=>JS,createReplaySession:()=>qS,deserializeReplay:()=>jS,serializeReplay:()=>ZS});function ZS(e){return JSON.stringify(e,null,2)}function jS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function qS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function JS(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var ke=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(ke||{}),be=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(be||{});var QS=12,eA=9,Iz=Math.ceil(QS*eA/16),tA=23,nA=2,Cz=Math.ceil(tA*nA/16);var rA={};jd(rA,{U_ANGLE1:()=>uA,U_ANGLE2:()=>dA,U_ANGLE3:()=>mA,U_EFFECTS:()=>_A,U_EVENT:()=>vA,U_FRAME:()=>hA,U_MODEL:()=>aA,U_MODEL2:()=>wA,U_MODEL3:()=>SA,U_MODEL4:()=>AA,U_MOREBITS:()=>yA,U_NUMBER:()=>iA,U_ORIGIN1:()=>oA,U_ORIGIN2:()=>cA,U_ORIGIN3:()=>lA,U_REMOVE:()=>xA,U_RENDERFX:()=>gA,U_SKIN:()=>fA,U_SOLID:()=>pA,U_SOUND:()=>sA});var iA=1,aA=2,sA=4,oA=8,cA=16,lA=32,uA=64,dA=128,mA=256,hA=512,fA=1024,_A=2048,gA=4096,pA=8192,vA=16384,yA=32768,wA=1,SA=2,AA=4,xA=32768;var W=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(W||{}),Pz=Object.keys(W).length/2,ae=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ae||{}),Fz={[ae.Shells]:{id:ae.Shells,ammoType:W.Shells,quantity:10,weaponAmmo:!1},[ae.Bullets]:{id:ae.Bullets,ammoType:W.Bullets,quantity:50,weaponAmmo:!1},[ae.Rockets]:{id:ae.Rockets,ammoType:W.Rockets,quantity:5,weaponAmmo:!1},[ae.Grenades]:{id:ae.Grenades,ammoType:W.Grenades,quantity:5,weaponAmmo:!0},[ae.Cells]:{id:ae.Cells,ammoType:W.Cells,quantity:50,weaponAmmo:!1},[ae.Slugs]:{id:ae.Slugs,ammoType:W.Slugs,quantity:10,weaponAmmo:!1},[ae.MagSlugs]:{id:ae.MagSlugs,ammoType:W.MagSlugs,quantity:10,weaponAmmo:!1},[ae.Flechettes]:{id:ae.Flechettes,ammoType:W.Flechettes,quantity:50,weaponAmmo:!1},[ae.Disruptor]:{id:ae.Disruptor,ammoType:W.Disruptor,quantity:15,weaponAmmo:!1},[ae.Tesla]:{id:ae.Tesla,ammoType:W.Tesla,quantity:5,weaponAmmo:!1},[ae.Trap]:{id:ae.Trap,ammoType:W.Trap,quantity:5,weaponAmmo:!1},[ae.Prox]:{id:ae.Prox,ammoType:W.Prox,quantity:5,weaponAmmo:!1}};function Tt(e,t){return(e&t)!==0}var bn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(bn||{}),EA={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function kA(e,t,n){if(e<=0||Tt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=EA[n.armorType],i=Tt(t,4)?r.energyProtection:r.normalProtection,a=Math.ceil(i*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function bA(e,t,n,r,i,a={}){if(i.health<=0||e<=0)return{saved:0,remainingCells:i.cellCount};if(Tt(t,258))return{saved:0,remainingCells:i.cellCount};if(!i.type||i.cellCount<=0)return{saved:0,remainingCells:i.cellCount};let{forward:s}=te(i.angles),o={x:n.x-i.origin.x,y:n.y-i.origin.y,z:n.z-i.origin.z},l=Math.hypot(o.x,o.y,o.z);if(i.type==="screen"&&l>0){let y={x:o.x/l,y:o.y/l,z:o.z/l};if(y.x*s.x+y.y*s.y+y.z*s.z<=.3)return{saved:0,remainingCells:i.cellCount}}let c=a.ctfMode??!1,u=i.type==="screen"||c?1:2,h=i.type==="screen"?e/3:2*e/3;h=Math.max(1,h);let m=i.cellCount*u;Tt(t,4)&&(m=Math.max(1,Math.floor(m/2))),m>h&&(m=Math.floor(h));let _=m/u;Tt(t,4)&&(_*=2),_=Math.max(1,Math.floor(_));let g=Math.max(u,_),S=Math.max(0,i.cellCount-g);return{saved:m,remainingCells:S}}var _e=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.HandGrenade="grenades",e.Grapple="grapple",e.IonRipper="ionripper",e.Phalanx="phalanx",e.Trap="trap",e.PlasmaBeam="plasmabeam",e.EtfRifle="etfrifle",e.ProxLauncher="proxlauncher",e.ChainFist="chainfist",e.Disruptor="disruptor",e))(_e||{}),le=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.Silencer="silencer",e.Rebreather="rebreather",e.EnviroSuit="enviro",e.DoubleDamage="double",e.QuadFire="quadfire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="pack",e.IRGoggles="goggles",e.SphereVengeance="vengeance",e.SphereHunter="hunter",e.SphereDefender="defender",e.Doppelganger="doppelganger",e.TagToken="tagtoken",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(le||{}),ve=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(ve||{});var TA={...$};var Dz=Object.freeze({aiflags:0,last_sighting:TA,trail_time:0,pausetime:0});var Eo=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],MA=20,RA=440,zA=940,eo=32,LA=1<<24,Ei=1;function Dd(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function zt(e,t){let n=Dd(e),r=Dd(t),i=xS(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function NA(e){return e<=MA?"melee":e<=RA?"near":e<=zA?"mid":"far"}function fr(e,t){let{forward:n}=te(e.angles),r=B(P(t.origin,e.origin)),i=qd(r,n);return(e.spawnflags&Ei)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function Tn(e,t,n,r){if((t.flags&LA)!==0)return!1;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=r?.throughGlass?1:3,o=n(i,null,null,a,e,s);return o.fraction===1||o.ent===t}function OA(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=pr(n)}function rm(e){e.angles.y=so(e.ideal_yaw)}function IA(e,t,n){e.enemy&&(e.goalentity=e.enemy,OA(e,e.enemy),rm(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function CA(e,t,n,r){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let i=e.monsterinfo.last_sighting;if(i.x=e.enemy.origin.x,i.y=e.enemy.origin.y,i.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){IA(e,t,n);return}let a=r?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function PA(e,t,n,r){let i=zt(e,t),a=NA(i);return a==="far"||t.light_level<=5||!Tn(e,t,r,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||fr(e,t):a==="mid"?fr(e,t):!0}function FA(e,t,n,r,i){if((e.spawnflags&Ei)!==0){if(!Tn(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=P(t.origin,e.origin);return xn(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=pr(a),rm(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function DA(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Ei)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Ei)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function UA(e){return(e.flags&eo)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&eo)!==0:!!(e.enemy&&(e.enemy.flags&eo)!==0)}function ko(e,t,n,r,i={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=DA(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(UA(a))return!1;if(s){if(!FA(e,a,t,i,r))return!1}else{if(!PA(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return CA(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function im(e,t){if(t===0)return{x:0,y:0,z:0};let n=Si(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Oi(e,t,n){let r=im(t,n),i=e.origin;return i.x+=r.x,i.y+=r.y,i.z+=r.z,!0}function Mn(e,t){let n=so(e.angles.y),r=e.ideal_yaw;if(n===r){e.angles.y=n;return}let i=e.yaw_speed*t*10,a=r-n;r>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>i?a=i:a<-i&&(a=-i),e.angles.y=so(n+a)}function f(e,t){Oi(e,e.angles.y,t)}function Ii(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=pr(n)}function R(e,t,n){ko(e,n.targetAwareness,n,n.trace)||Mn(e,t)}function L(e,t,n,r){if(!ko(e,r.targetAwareness,r,r.trace)&&(Ii(e,e.goalentity),Mn(e,n),t!==0&&Oi(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&zt(e,e.goalentity)<64&&e.goalentity.target)){let a=r.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function Q(e,t,n){t!==0&&Oi(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&Mn(e,n)}function ne(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}ko(e,r.targetAwareness,r,r.trace),(e.monsterinfo.aiflags&32768)===0&&Ii(e,e.enemy??e.goalentity),Mn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&am(e,e.angles.y,t,r)}function BA(e,t,n,r){t&&(e.monsterinfo.aiflags&32768)===0&&Ii(e,t),Mn(e,r),n!==0&&Oi(e,e.angles.y,n)}function se(e,t,n,r){(e.monsterinfo.aiflags&32768)===0&&Ii(e,e.enemy),Mn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&am(e,e.angles.y,t,r)}function GA(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},r=t.trace(e.origin,e.mins,e.maxs,n,e,xi);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&BS?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function HA(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},r={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},i={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?i={x:n.x,y:n.y,z:0}:i={x:r.x,y:n.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,xi).fraction<1)||(s===1?i={x:n.x,y:r.y,z:0}:i={x:r.x,y:r.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0)||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,xi).fraction<1))return!0;return!1}function am(e,t,n,r){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let i=im(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+i.x,y:e.origin.y+i.y,z:e.origin.z+i.z};if(r.trace(e.origin,e.mins,e.maxs,a,e,xi).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!HA(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&GA(e,r),!0)}var VA=Eo.filter(e=>e.save||e.type==="callback"),Uz=new Map(VA.map(e=>[e.name,e]));function WA(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let r=1;return n.quad_time&&n.quad_time>t&&(r*=4),n.double_time&&n.double_time>t&&(r*=2),r}function KA(e,t,n,r,i){if(Tt(i,8)||((e.flags??0)&4)!==0||r===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=B(n),c=H(o,(t===e?1600:500)*r/s);return e.velocity=K(e.velocity,c),c}function $A(e,t,n,r,i){let a=r,s=0,o=0,l,c;if(e.powerArmor){let u=bA(r,i,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=kA(a,i,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function Ud(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function ye(e,t,n,r,i,a,s,o,l,c,u,h){if(!e.takedamage)return null;let m=WA(n,u),_=s*m,g=o*m;if(!Tt(l,32)&&((e.flags??0)&1)!==0&&_>0)return{take:0,psave:0,asave:_,knocked:{x:0,y:0,z:0},killed:!1};let y=KA(e,n,r,g,l),[w,M,x,p,E]=$A(e,i,a,_,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&_>0&&(w=e.health+100,M=0,x=0),e.powerArmor&&p!==void 0&&(e.powerArmor.cellCount=p),e.regularArmor&&(e.regularArmor.armorCount=E??e.regularArmor.armorCount);let b=w;b>0&&(e.health-=b,h&&!Tt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&h(i,1,ke.temp_entity,be.BLOOD,i,a));let T=e.health<=0;return T?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,b,i,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:M,asave:x,knocked:y,killed:T,remainingCells:p,remainingArmor:E}}function bo(e,t,n,r,i,a,s,o,l,c={},u){let h=[],m=Ud(t),_=c.canDamage??(()=>!0);for(let g of e){if(g===i||!g.takedamage||!_(g,t))continue;let S=g.mins&&g.maxs?AS(m,K(g.origin,g.mins),K(g.origin,g.maxs)):Ud(g),y=P(m,S),w=xn(y);if(a>0&&w>a)continue;let M=r-.5*w;if(M<=0)continue;let x=g===n?M*.5:M,p=B(P(g.origin,m)),E=ye(g,t,n,p,S,p,x,x,s|1,o,l,u);h.push({target:g,result:E,appliedDamage:x})}return h}function XA(e,t,n,r,i,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:r.x*s,y:r.y*s,z:r.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,h,m)=>{if(u===c.owner)return;u&&u.takedamage&&ye(u,c,c.owner,c.velocity,c.origin,h?h.normal:$,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let _=e.findByRadius(c.origin,120);bo(_,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ke.temp_entity,be.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function sm(e,t,n,r,i,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);bo(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ke.temp_entity,be.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,h,m)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function om(e,t,n,r,i,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,h)=>{if(c!==l.owner){if(c&&c.takedamage)ye(c,l,l.owner,l.velocity,l.origin,u?u.normal:$,i,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let m=be.BLASTER;s===58&&(m=be.BLUEHYPERBLASTER),e.multicast(l.origin,1,ke.temp_entity,m,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function YA(e,t,n,r,i,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){ye(l,o,o.owner,o.velocity,o.origin,c?c.normal:$,i,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,ke.temp_entity,be.WELDING_SPARKS,o.origin,$,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,ke.temp_entity,be.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,ke.temp_entity,be.WELDING_SPARKS,o.origin,$,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function ZA(e,t,n,r,i,a){om(e,t,n,r,i,a,58)}function jA(e,t,n,r){let i={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=B(P(a,i)),o={x:i.x+s.x*2048,y:i.y+s.y*2048,z:i.z+s.z*2048},l=16,c=[],u=[],h={...i};try{for(let _=0;_<l;_++){let g=e.trace(h,null,null,o,t,Le|Wt|kn|Ni);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&ye(g.ent,t,t.owner,s,g.endpos,$,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),u.push(g.ent.solid),g.ent.solid=0,h={...g.endpos}}let m=e.trace(i,null,null,o,t,Le);e.multicast(t.origin,2,ke.temp_entity,be.BFG_LASER,i,m.endpos)}finally{for(let m=0;m<c.length;m++)c[m].solid=u[m]}}function qA(e,t){let n=t.deathmatch?5:10,r=t.findByRadius(e.origin,256);for(let i of r){if(i===e||i===e.owner||!i.takedamage||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let a={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5};t.trace(e.origin,null,null,a,null,US).fraction<1||jA(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function JA(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let r of n){if(!r.takedamage||r===e.owner||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let i={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5},a=P(e.origin,i),s=xn(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&ye(r,e,e.owner,e.velocity,i,$,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function QA(e,t,n,r,i,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=i,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,h)=>{if(c===l.owner)return;c&&c.takedamage&&ye(c,l,l.owner,l.velocity,l.origin,u?u.normal:$,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let m=e.findByRadius(l.origin,100);bo(m,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,ke.temp_entity,be.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=$,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(_,g)=>JA(_,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>qA(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}var Bz=1/40;function ex(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var tx=1;function nx(e,t){if(!e.client)return;let n=ex(e.client.weaponStates,"chaingun");!(e.client.buttons&tx)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var Gz={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:"blaster",ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:"shotgun",ammoType:W.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:"supershotgun",ammoType:W.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:"machinegun",ammoType:W.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:nx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:"chaingun",ammoType:W.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:"grenades",ammoType:W.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:"grenadelauncher",ammoType:W.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:"rocketlauncher",ammoType:W.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:"hyperblaster",ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:"railgun",ammoType:W.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:"bfg10k",ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:"ionripper",ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:"phalanx",ammoType:W.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:"plasmabeam",ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:"etfrifle",ammoType:W.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:"proxlauncher",ammoType:W.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};function rx(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let r=e.frame-n.firstframe,i=n.frames[r];i.ai&&i.ai(e,i.dist,t),i.think&&i.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function ix(e,t){rx(e,t),e.nextthink=t.timeSeconds+.1}var Ge=zi();function ax(e,t,n){let r=e.spawn();r.classname="gib",r.origin={x:t.x+(Ge.frandom()-.5)*20,y:t.y+(Ge.frandom()-.5)*20,z:t.z+(Ge.frandom()-.5)*20},r.velocity={x:(Ge.frandom()-.5)*300,y:(Ge.frandom()-.5)*300,z:200+Ge.frandom()*100},r.movetype=9,r.solid=0,r.clipmask=1,r.avelocity={x:Ge.crandom()*600,y:Ge.crandom()*600,z:Ge.crandom()*600};let i=["models/objects/gibs/bone/tris.md2","models/objects/gibs/meat/tris.md2","models/objects/gibs/sm_meat/tris.md2"],a=i[Math.floor(Ge.frandom()*i.length)];r.modelindex=e.modelIndex(a),r.mins={x:-2,y:-2,z:-2},r.maxs={x:2,y:2,z:2},r.think=s=>{e.free(s)},e.scheduleThink(r,e.timeSeconds+10+Ge.frandom()*10),e.finalizeSpawn(r)}function sx(e,t,n){let r=4+Math.floor(Ge.frandom()*4);for(let i=0;i<r;i++)ax(e,t,n)}var Ci=.1,hr=80;var cm=zi();function ox(){return cm.frandom()}function lm(e,t){return Math.floor(cm.frandom()*(t-e+1)+e)}function vn(e,t,n){R(e,Ci,n)}function Ve(e,t,n){L(e,t,Ci,n)}function _n(e,t,n){ne(e,t,Ci,n)}function de(e,t,n){se(e,t,Ci,n)}function G(e,t,n){f(e,t)}var _r={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function Xe(e,t){t.sound(e,2,_r.footstep,1,1,0)}function ki(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function cx(e,t){}var To,um,lx,dm,ux,dx,mx,hx,fx,mm,_x;function gx(e,t){ki(e,To)}function px(e,t){e.monsterinfo.aiflags&1||e.enemy||ox()>.15||(ki(e,um),t.sound(e,1,_r.idle,1,2,0))}var vx=[{ai:vn,dist:0,think:px},{ai:vn,dist:0},{ai:vn,dist:0},{ai:vn,dist:0},{ai:vn,dist:0}];To={firstframe:0,lastframe:4,frames:vx,endfunc:null};var yx=Array.from({length:20},()=>({ai:vn,dist:0}));um={firstframe:5,lastframe:24,frames:yx,endfunc:gx};var wx=[{ai:Ve,dist:9.1},{ai:Ve,dist:6.3},{ai:Ve,dist:4.9},{ai:Ve,dist:6.7,think:Xe},{ai:Ve,dist:6},{ai:Ve,dist:8.2},{ai:Ve,dist:7.2},{ai:Ve,dist:6.1},{ai:Ve,dist:4.9},{ai:Ve,dist:4.7,think:Xe},{ai:Ve,dist:4.7}];lx={firstframe:25,lastframe:35,frames:wx,endfunc:null};var Sx=[{ai:_n,dist:21},{ai:_n,dist:11,think:Xe},{ai:_n,dist:21},{ai:_n,dist:25,think:cx},{ai:_n,dist:18,think:Xe},{ai:_n,dist:19}];dm={firstframe:36,lastframe:41,frames:Sx,endfunc:null};function vr(e,t){e.monsterinfo.aiflags&1?ki(e,To):ki(e,dm)}function hm(e,t,n,r,i){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=te(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*hr,y:a.y+s.y*hr,z:a.z+s.z*hr},c=i.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(ye(c.ent,e,e,s,c.endpos,c.plane?.normal||$,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function Ax(e,t){hm(e,{x:hr,y:0,z:-24},lm(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function fm(e,t){t.sound(e,1,_r.punch,1,1,0)}var xx=[{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:fm},{ai:de,dist:0,think:Ax},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];ux={firstframe:67,lastframe:74,frames:xx,endfunc:vr};function Ex(e,t){hm(e,{x:hr,y:0,z:-4},lm(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var kx=[{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:Xe},{ai:de,dist:0},{ai:de,dist:0,think:fm},{ai:de,dist:0},{ai:de,dist:0,think:Ex},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];dx={firstframe:75,lastframe:86,frames:kx,endfunc:vr};function bx(e,t,n,r,i,a){let s=a.findByRadius(e.origin,r);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/r);if(c<=0)continue;let u=Math.max(1,n*c*c),h=i*c*c,m=B(P(o.origin,e.origin));ye(o,e,t,m,o.origin,m,u,h,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Mo(e,t){t.sound(e,1,_r.thud,1,1,0),t.sound(e,2,_r.explod,.75,1,0);let{forward:n,right:r}=te(e.angles),i={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*i.x+r.x*i.y,y:e.origin.y+n.y*i.x+r.y*i.y,z:e.origin.z+n.z*i.x+r.z*i.y+i.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,ke.temp_entity,be.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},bx(e,e,8,165,300,t)}function Tx(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Mo(e,i))}function Ro(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Mx(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=B({x:n.x,y:n.y,z:0}),s=En(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,h)=>{Tx(l,c,u,h,t),l.groundentity&&(l.frame=104,Mo(l,t),l.touch=void 0)},Ro(e,t)}function Rx(e,t){if(Ro(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Mo(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var zx=[{ai:de,dist:0},{ai:de,dist:0},{ai:G,dist:0,think:Mx},{ai:G,dist:0,think:Ro},{ai:G,dist:0,think:Rx},{ai:G,dist:0,think:Xe},{ai:G,dist:0},{ai:G,dist:0,think:Xe},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Xe}];mx={firstframe:87,lastframe:109,frames:zx,endfunc:vr};var Lx=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];hx={firstframe:149,lastframe:152,frames:Lx,endfunc:vr};var Nx=Array.from({length:20},(e,t)=>({ai:G,dist:0,think:t%5===4?Xe:void 0}));fx={firstframe:153,lastframe:172,frames:Nx,endfunc:vr};function _m(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=mm.lastframe,e.nextthink=-1,e.deadflag=2}var Ox=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Xe},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];mm={firstframe:173,lastframe:185,frames:Ox,endfunc:_m};var Ix=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Xe},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];_x={firstframe:186,lastframe:193,frames:Ix,endfunc:_m};function Bd(){return 2*Math.random()-1}function bi(e,t,n,r,i,a,s,o,l,c=0){let u=n;if(a>0||s>0){let _=En(n),{right:g,up:S}=te(_),y=Bd()*a,w=Bd()*s;u={x:n.x+g.x*y+S.x*w,y:n.y+g.y*y+S.y*w,z:n.z+g.z*y+S.z*w},u=B(u)}let h=K(t,H(u,8192)),m=l.trace(t,h,$,$,e,bt);!m.ent||m.fraction===1||ye(m.ent,e,e,u,m.endpos,m.plane?.normal||$,r,i,18,c,l.timeSeconds)}var Mt=bi;function Cx(e,t,n,r,i,a,s,o,l,c,u=2){for(let h=0;h<o;h++)Mt(e,t,n,r,i,a,s,l,c,u)}function mt(e,t,n,r,i,a,s,o,l=1){om(o,e,t,n,r,i,l)}function Px(e,t,n,r,i,a,s,o){ZA(o,e,t,n,r,i)}function Fx(e,t,n,r,i,a,s,o){YA(o,e,t,n,r,i)}function Dx(e,t,n,r,i,a,s){sm(s,e,t,n,r,i)}function yr(e,t,n,r,i,a,s){XA(s,e,t,n,r,120,i)}function gm(e,t,n,r,i,a,s,o,l){QA(l,e,t,n,r,i,s)}function pm(e,t,n,r,i,a,s){let o=K(t,H(n,8192)),l=s.trace(t,o,$,$,e,bt);s.multicast(t,2,ke.temp_entity,be.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&ye(l.ent,e,e,n,l.endpos,$,r,i,6,11,s.timeSeconds)}function wr(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=te(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=K(s,H(a,o)),c=i.trace(s,l,$,$,e,bt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=B(P(c.endpos,s));return ye(c.ent,e,e,u,c.endpos,c.plane?.normal||$,n,r,0,0,i.timeSeconds),!0}return!1}function Ux(e,t,n,r,i,a,s,o){yr(e,t,n,r,i,a,o)}function Gd(e,t){let n={...e.origin},r=K(n,H(e.movedir,2048)),i={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(i,r,$,$,e,Le|Wt|kn|Ni);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&ye(c.ent,e,e.owner,e.movedir,c.endpos,$,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,ke.temp_entity,be.LASER_SPARKS,10,c.endpos,c.plane?.normal||$,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,i={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function Bx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function oo(e,t,n,r,i){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=i.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?Bx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),Gd(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),Gd(a,i)}var zo=.1,Gx={x:0,y:30,z:-15},Hx={x:0,y:15,z:0},Vx={x:0,y:-15,z:0},Wx={x:0,y:-30,z:-15},Kx={x:30,y:20,z:0},$x={x:30,y:-20,z:0};function Xx(e,t,n){R(e,zo,n)}function Yx(e,t,n){L(e,t,zo,n)}function Pi(e,t,n){se(e,t,zo,n)}function Lo(e,t,n){f(e,t)}var No,vm,ym,Zx,wm,Sm,jx,qx,Jx,Am;function Qx(e){e.monsterinfo.current_move=No}function e2(e){e.monsterinfo.current_move=vm}function Sr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ym:e.monsterinfo.current_move=No}function xm(e){e.monsterinfo.current_move=wm}function t2(e){e.enemy&&fr(e,e.enemy)&&Math.random()<=.7?xm(e):e.monsterinfo.current_move=Sm}function co(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=H(n,t.x),o=H(r,t.y),l=H(i,t.z);return K(K(K(a,s),o),l)}function n2(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=co(e,Kx),r=B(P(e.enemy.origin,n));Mt(e,n,r,6,4,.1,.05,0,t,4);let i=co(e,$x),a=B(P(e.enemy.origin,i));Mt(e,i,a,6,4,.1,.05,0,t,4)}function r2(e,t){if(!e.enemy)return;let n=[Gx,Hx,Vx,Wx],r=n[Math.floor(Math.random()*n.length)],i=co(e,r),a=B(P(e.enemy.origin,i));yr(e,i,a,50,500,0,t)}function i2(e){e.monsterinfo.nextframe=Am.lastframe,e.nextthink=-1}var Em=Array.from({length:20},()=>({ai:Yx,dist:10}));vm={firstframe:0,lastframe:19,frames:Em,endfunc:e2};ym={firstframe:0,lastframe:19,frames:Em,endfunc:Sr};var a2=Array.from({length:21},()=>({ai:Xx,dist:0}));No={firstframe:29,lastframe:49,frames:a2,endfunc:Qx};var s2=Array.from({length:9},(e,t)=>({ai:Pi,dist:2,think:t===8?xm:null}));Zx={firstframe:50,lastframe:58,frames:s2,endfunc:null};var o2=Array.from({length:6},()=>({ai:Pi,dist:2,think:n2}));wm={firstframe:59,lastframe:64,frames:o2,endfunc:t2};var c2=Array.from({length:4},()=>({ai:Pi,dist:2}));Sm={firstframe:65,lastframe:68,frames:c2,endfunc:Sr};var l2=Array.from({length:21},(e,t)=>({ai:Pi,dist:2,think:t===12?r2:null}));jx={firstframe:69,lastframe:89,frames:l2,endfunc:Sr};var u2=Array.from({length:18},()=>({ai:Lo,dist:0}));qx={firstframe:90,lastframe:107,frames:u2,endfunc:Sr};var d2=Array.from({length:4},()=>({ai:Lo,dist:0}));Jx={firstframe:108,lastframe:111,frames:d2,endfunc:Sr};var m2=Array.from({length:49},()=>({ai:Lo,dist:0}));Am={firstframe:112,lastframe:160,frames:m2,endfunc:i2};var Fi=.1,Oo=80,Di=Math.random;function km(e,t,n){R(e,Fi,n)}function We(e,t,n){L(e,t,Fi,n)}function Ke(e,t,n){ne(e,t,Fi,n)}function I(e,t,n){se(e,t,Fi,n)}function D(e,t,n){f(e,t)}var Io,h2,f2,bm,Tm,_2,g2,p2,v2,y2,w2,S2,A2,x2;function Mm(e){e.monsterinfo.current_move=Io}function Lt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Io:e.monsterinfo.current_move=bm}function E2(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function k2(e,t){let n={x:Oo,y:e.maxs.x,z:8};wr(e,n,15+Math.floor(Di()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function b2(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function T2(e,t){let n={x:Oo,y:e.mins.x,z:8};wr(e,n,15+Math.floor(Di()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Rm(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function zm(e,t){wr(e,{x:Oo,y:0,z:8},10+Math.floor(Di()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function Lm(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Tm)}function Hd(e,t){if(!e.enemy)return;let n=te(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,$,$,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,ke.temp_entity,be.PARASITE_ATTACK,e,r,i);let s=P(r,i);ye(e.enemy,e,e,s,e.enemy.origin,$,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=te(e.angles).forward;e.enemy.velocity=H(o,-1200)}var Vd=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],Wd=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function M2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Vd.length)&&(s=0);let o=Vd[s],l=K(n.origin,H(i,o.x));l=K(l,H(r,o.y)),l=K(l,H(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function R2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s=n.frame-0;(s<0||s>=Wd.length)&&(s=0);let o=Wd[s],l=K(n.origin,H(i,o.x));l=K(l,H(r,o.y)),l=K(l,H(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function rt(e,t){oo(e,1,!1,M2,t),oo(e,1,!0,R2,t)}function z2(e){Di()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function L2(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function N2(e){}function O2(e){e.monsterinfo.aiflags&=-17}var I2=Array.from({length:30},()=>({ai:km,dist:0}));Io={firstframe:162,lastframe:191,frames:I2,endfunc:Mm};var C2=Array.from({length:30},()=>({ai:km,dist:0}));h2={firstframe:192,lastframe:221,frames:C2,endfunc:Mm};var P2=[{ai:We,dist:7},{ai:We,dist:2},{ai:We,dist:3},{ai:We,dist:3},{ai:We,dist:1},{ai:We,dist:0},{ai:We,dist:0},{ai:We,dist:9},{ai:We,dist:-4},{ai:We,dist:-1},{ai:We,dist:2}];f2={firstframe:0,lastframe:10,frames:P2,endfunc:null};var F2=[{ai:Ke,dist:9},{ai:Ke,dist:2},{ai:Ke,dist:3},{ai:Ke,dist:3},{ai:Ke,dist:1},{ai:Ke,dist:0},{ai:Ke,dist:0},{ai:Ke,dist:10},{ai:Ke,dist:-4},{ai:Ke,dist:-1},{ai:Ke,dist:2}];bm={firstframe:0,lastframe:10,frames:F2,endfunc:null};var D2=[{ai:I,dist:8},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:0},{ai:I,dist:-3,think:E2},{ai:I,dist:0},{ai:I,dist:-5},{ai:I,dist:-7,think:k2},{ai:I,dist:0},{ai:I,dist:6,think:b2},{ai:I,dist:1},{ai:I,dist:2,think:T2},{ai:I,dist:-3},{ai:I,dist:6},{ai:I,dist:-1},{ai:I,dist:-3},{ai:I,dist:2},{ai:I,dist:-11}];Tm={firstframe:53,lastframe:70,frames:D2,endfunc:Lt};var U2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:Rm},{ai:I,dist:0},{ai:I,dist:13,think:zm},{ai:I,dist:0},{ai:I,dist:2},{ai:I,dist:0},{ai:I,dist:-9,think:Lm},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];_2={firstframe:71,lastframe:87,frames:U2,endfunc:Lt};var B2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:Rm},{ai:I,dist:0,think:Hd},{ai:I,dist:13},{ai:I,dist:0,think:zm},{ai:I,dist:2},{ai:I,dist:0,think:Hd},{ai:I,dist:-9,think:Lm},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];g2={firstframe:71,lastframe:87,frames:B2,endfunc:Lt};var G2=[{ai:I,dist:9,think:rt},{ai:I,dist:2,think:rt},{ai:I,dist:3,think:rt},{ai:I,dist:3,think:rt},{ai:I,dist:1,think:rt},{ai:I,dist:0,think:rt},{ai:I,dist:0,think:rt},{ai:I,dist:10,think:rt},{ai:I,dist:-4,think:rt},{ai:I,dist:-1,think:rt},{ai:I,dist:2,think:z2}];p2={firstframe:0,lastframe:10,frames:G2,endfunc:Lt};var H2=[{ai:D,dist:-6},{ai:D,dist:-2},{ai:D,dist:-6},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:2},{ai:D,dist:0},{ai:D,dist:2},{ai:D,dist:1},{ai:D,dist:7},{ai:D,dist:0},{ai:D,dist:3},{ai:D,dist:-1}];v2={firstframe:88,lastframe:108,frames:H2,endfunc:Lt};var V2=[{ai:D,dist:-2},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:3},{ai:D,dist:1},{ai:D,dist:-2}];y2={firstframe:109,lastframe:116,frames:V2,endfunc:Lt};var W2=[{ai:D,dist:-2},{ai:D,dist:2},{ai:D,dist:1},{ai:D,dist:3},{ai:D,dist:0},{ai:D,dist:-4}];w2={firstframe:117,lastframe:122,frames:W2,endfunc:Lt};var K2=Array.from({length:18},()=>({ai:D,dist:0}));S2={firstframe:123,lastframe:140,frames:K2,endfunc:Nm};var $2=[{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:9},{ai:D,dist:0}];A2={firstframe:141,lastframe:145,frames:$2,endfunc:Nm};var X2=[{ai:D,dist:0},{ai:D,dist:-2,think:L2},{ai:D,dist:17,think:N2},{ai:D,dist:-3},{ai:D,dist:-1,think:O2},{ai:D,dist:-5},{ai:D,dist:-6},{ai:D,dist:-6}];x2={firstframe:146,lastframe:153,frames:X2,endfunc:Lt};function Nm(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var Ui=.1,Y2=80,Rn=Math.random;function Om(e,t,n){R(e,Ui,n)}function Z2(e,t,n){L(e,t,Ui,n)}function j2(e,t,n){ne(e,t,Ui,n)}function U(e,t,n){se(e,t,Ui,n)}function zn(e,t,n){f(e,t)}var Co,Im,Cm,q2,Po,lo,J2,Fo,Pm,Q2,eE,tE,nE,rE,iE,Fm;function Dm(e){e.monsterinfo.current_move=Co}function aE(e){e.monsterinfo.current_move=Im}function Kt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Co;return}e.monsterinfo.current_move=Cm}function sE(e){e.monsterinfo.aiflags&4||e.enemy||Rn()<=.3&&(e.monsterinfo.current_move=Fm)}function oE(e,t){Rn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function cE(e,t){let n={x:Y2,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),wr(e,n,10+Math.floor(Rn()*6),100,t)}function lE(e,t){let{forward:n,right:r}=te(e.angles),i={x:0,y:20,z:40},a=K(e.origin,H(n,i.x)),s=H(r,i.y),o=K(a,s),l={...o,z:o.z+i.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,h=$;if(u&&e.monsterinfo.blind_fire_target)h=e.monsterinfo.blind_fire_target;else if(e.enemy)h=e.enemy.origin;else return;let m=P(h,l);!u&&e.enemy&&(Rn()<.33||l.z<e.enemy.absmin.z?m={...m,z:m.z+e.enemy.viewheight}:m={...m,z:e.enemy.absmin.z+1-l.z});let _=B(m);e.skin>1?Ux(e,l,_,50,c,0,.075,t):yr(e,l,_,50,c,0,t)}function uE(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=En(n).y}}function dE(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function mE(e){e.monsterinfo.current_move=Po}function hE(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=lo;return}if(e.enemy&&e.enemy.health>0&&Rn()<=.6){e.monsterinfo.current_move=Po;return}e.monsterinfo.current_move=lo}function fE(e){if(e.enemy&&e.enemy.health>0&&Rn()<=.9){e.monsterinfo.current_move=Fo;return}e.monsterinfo.current_move=Pm}function _E(e){e.monsterinfo.current_move=Fo}var gE=Array.from({length:30},(e,t)=>({ai:Om,dist:0,think:t===8?(n,r)=>oE(n,r):null}));Fm={firstframe:201,lastframe:230,frames:gE,endfunc:Dm};var pE=Array.from({length:30},(e,t)=>({ai:Om,dist:0,think:t===29?sE:null}));Co={firstframe:101,lastframe:130,frames:pE,endfunc:Dm};var vE=Array.from({length:10},()=>({ai:Z2,dist:6}));Im={firstframe:171,lastframe:180,frames:vE,endfunc:aE};var yE=Array.from({length:10},()=>({ai:j2,dist:12}));Cm={firstframe:171,lastframe:180,frames:yE,endfunc:Kt};var wE=Array.from({length:5},()=>({ai:zn,dist:0}));Q2={firstframe:90,lastframe:94,frames:wE,endfunc:Kt};var SE=Array.from({length:5},()=>({ai:zn,dist:0}));eE={firstframe:95,lastframe:99,frames:SE,endfunc:Kt};var AE=Array.from({length:21},()=>({ai:zn,dist:0}));tE={firstframe:100,lastframe:120,frames:AE,endfunc:Kt};var xE=Array.from({length:12},()=>({ai:zn,dist:0}));nE={firstframe:48,lastframe:59,frames:xE,endfunc:Um};var EE=Array.from({length:23},()=>({ai:zn,dist:0}));rE={firstframe:60,lastframe:82,frames:EE,endfunc:Um};function Um(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var kE=[{ai:U,dist:0,think:uE},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:4},{ai:U,dist:0},{ai:U,dist:-3},{ai:U,dist:3},{ai:U,dist:5},{ai:U,dist:7},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0,think:mE}];q2={firstframe:0,lastframe:12,frames:kE,endfunc:null};var bE=[{ai:U,dist:19,think:lE},{ai:U,dist:-6},{ai:U,dist:-5},{ai:U,dist:-2},{ai:U,dist:-7},{ai:U,dist:0},{ai:U,dist:1},{ai:U,dist:10,think:dE},{ai:U,dist:4},{ai:U,dist:5},{ai:U,dist:6},{ai:U,dist:6},{ai:U,dist:4},{ai:U,dist:3,think:hE}];Po={firstframe:13,lastframe:26,frames:bE,endfunc:null};var TE=[{ai:U,dist:-3},{ai:U,dist:0},{ai:U,dist:-6},{ai:U,dist:-4},{ai:U,dist:-2}];lo={firstframe:27,lastframe:31,frames:TE,endfunc:Kt};var ME=[{ai:U,dist:1},{ai:U,dist:8},{ai:U,dist:3}];J2={firstframe:32,lastframe:34,frames:ME,endfunc:_E};var RE=[{ai:U,dist:1},{ai:U,dist:7,think:cE},{ai:U,dist:-7},{ai:U,dist:1},{ai:U,dist:-1},{ai:U,dist:1},{ai:U,dist:0},{ai:U,dist:1},{ai:U,dist:-2,think:fE}];Fo={firstframe:35,lastframe:43,frames:RE,endfunc:null};var zE=[{ai:U,dist:-6},{ai:U,dist:-1},{ai:U,dist:-6},{ai:U,dist:0}];Pm={firstframe:44,lastframe:47,frames:zE,endfunc:Kt};var LE=Array.from({length:7},()=>({ai:zn,dist:0}));iE={firstframe:83,lastframe:89,frames:LE,endfunc:Kt};var Bi=.1,NE=80,OE=24;function IE(e,t,n){R(e,Bi,n)}function CE(e,t,n){L(e,t,Bi,n)}function Bm(e,t,n){ne(e,t,Bi,n)}function he(e,t,n){se(e,t,Bi,n)}function Do(e,t,n){f(e,t)}var PE,FE,Gm,Hm,DE,UE,BE,GE;function HE(e){e.monsterinfo.current_move=Hm}function Uo(e){e.monsterinfo.current_move=Gm}function Kd(e,t){wr(e,{x:NE,y:0,z:0},5,0,t)}function VE(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var WE=[{ai:IE,dist:0}];PE={firstframe:41,lastframe:41,frames:WE,endfunc:null};var KE=Array.from({length:24},()=>({ai:Bm,dist:OE}));Hm={firstframe:70,lastframe:93,frames:KE,endfunc:null};var $E=Array.from({length:6},()=>({ai:Bm,dist:8}));Gm={firstframe:65,lastframe:70,frames:$E,endfunc:HE};var XE=Array.from({length:24},()=>({ai:CE,dist:4}));FE={firstframe:41,lastframe:64,frames:XE,endfunc:null};var YE=Array.from({length:5},()=>({ai:Do,dist:0}));UE={firstframe:99,lastframe:103,frames:YE,endfunc:Uo};var ZE=Array.from({length:5},()=>({ai:Do,dist:0}));BE={firstframe:94,lastframe:98,frames:ZE,endfunc:Uo};var jE=[{ai:he,dist:0,think:VE},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0,think:Kd},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0},{ai:he,dist:0,think:Kd},{ai:he,dist:0}];DE={firstframe:0,lastframe:19,frames:jE,endfunc:Uo};function qE(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var JE=Array.from({length:56},()=>({ai:Do,dist:0}));GE={firstframe:104,lastframe:159,frames:JE,endfunc:qE};var Gi=.1;function QE(e,t,n){R(e,Gi,n)}function ek(e,t,n){L(e,t,Gi,n)}function tk(e,t,n){ne(e,t,Gi,n)}function nk(e,t,n){se(e,t,Gi,n)}function Vm(e,t,n){f(e,t)}var Bo,Wm,Km,rk,ik,$m;function ak(e){e.monsterinfo.current_move=Bo}function sk(e){e.monsterinfo.current_move=Wm}function Go(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Km:e.monsterinfo.current_move=Bo}function ok(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function ck(e){e.monsterinfo.nextframe=$m.lastframe,e.nextthink=-1}var lk=Array.from({length:46},()=>({ai:QE,dist:0}));Bo={firstframe:0,lastframe:45,frames:lk,endfunc:ak};var uk=Array.from({length:46},()=>({ai:ek,dist:5}));Wm={firstframe:0,lastframe:45,frames:uk,endfunc:sk};var dk=Array.from({length:46},()=>({ai:tk,dist:10}));Km={firstframe:0,lastframe:45,frames:dk,endfunc:Go};var mk=Array.from({length:20},(e,t)=>({ai:nk,dist:0,think:t===10?ok:null}));rk={firstframe:46,lastframe:65,frames:mk,endfunc:Go};var hk=Array.from({length:6},()=>({ai:Vm,dist:0}));ik={firstframe:66,lastframe:71,frames:hk,endfunc:Go};var fk=Array.from({length:10},()=>({ai:Vm,dist:0}));$m={firstframe:84,lastframe:93,frames:fk,endfunc:ck};var Hi=.1;function _k(e,t,n){R(e,Hi,n)}function gk(e,t,n){L(e,t,Hi,n)}function pk(e,t,n){ne(e,t,Hi,n)}function vk(e,t,n){se(e,t,Hi,n)}function Xm(e,t,n){f(e,t)}var Ho,Ym,Zm,yk,wk,jm;function Sk(e){e.monsterinfo.current_move=Ho}function Ak(e){e.monsterinfo.current_move=Ym}function Vo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Zm:e.monsterinfo.current_move=Ho}function xk(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function Ek(e,t){if(!e.enemy)return;let n=5+Math.random()*5;zt(e,e.enemy)<=80&&fr(e,e.enemy)&&ye(e.enemy,e,e,B(P(e.enemy.origin,e.origin)),e.enemy.origin,$,n,5,2,0,t.timeSeconds)}function kk(e){e.monsterinfo.nextframe=jm.lastframe,e.nextthink=-1}var bk=Array.from({length:46},()=>({ai:_k,dist:0}));Ho={firstframe:0,lastframe:45,frames:bk,endfunc:Sk};var Tk=Array.from({length:46},()=>({ai:gk,dist:5}));Ym={firstframe:0,lastframe:45,frames:Tk,endfunc:Ak};var Mk=Array.from({length:46},()=>({ai:pk,dist:10}));Zm={firstframe:0,lastframe:45,frames:Mk,endfunc:Vo};var Rk=Array.from({length:20},(e,t)=>({ai:vk,dist:0,think:t===10?xk:t===12?Ek:null}));yk={firstframe:46,lastframe:65,frames:Rk,endfunc:Vo};var zk=Array.from({length:6},()=>({ai:Xm,dist:0}));wk={firstframe:66,lastframe:71,frames:zk,endfunc:Vo};var Lk=Array.from({length:10},()=>({ai:Xm,dist:0}));jm={firstframe:84,lastframe:93,frames:Lk,endfunc:kk};var Vi=.1;function Nk(e,t,n){R(e,Vi,n)}function Ok(e,t,n){L(e,t,Vi,n)}function Ik(e,t,n){ne(e,t,Vi,n)}function qm(e,t,n){se(e,t,Vi,n)}function Jm(e,t,n){f(e,t)}var Wo,Qm,eh,Ck,Pk,Fk,th;function Dk(e){e.monsterinfo.current_move=Wo}function Uk(e){e.monsterinfo.current_move=Qm}function Wi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=eh:e.monsterinfo.current_move=Wo}function Bk(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Gk(e,t){if(!e.enemy||!fr(e,e.enemy))return;let n=zt(e,e.enemy);if(Bk(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,r));ye(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function Hk(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,n));pm(e,n,r,50,100,0,t)}function Vk(e){e.monsterinfo.nextframe=th.lastframe,e.nextthink=-1}var Wk=Array.from({length:30},()=>({ai:Nk,dist:0}));Wo={firstframe:0,lastframe:29,frames:Wk,endfunc:Dk};var Kk=Array.from({length:40},()=>({ai:Ok,dist:3}));Qm={firstframe:30,lastframe:69,frames:Kk,endfunc:Uk};var $k=Array.from({length:20},()=>({ai:Ik,dist:12}));eh={firstframe:70,lastframe:89,frames:$k,endfunc:Wi};var Xk=Array.from({length:10},(e,t)=>({ai:qm,dist:0,think:t===5?Gk:null}));Ck={firstframe:90,lastframe:99,frames:Xk,endfunc:Wi};var Yk=Array.from({length:12},(e,t)=>({ai:qm,dist:0,think:t===6?Hk:null}));Pk={firstframe:100,lastframe:111,frames:Yk,endfunc:Wi};var Zk=Array.from({length:6},()=>({ai:Jm,dist:0}));Fk={firstframe:112,lastframe:117,frames:Zk,endfunc:Wi};var jk=Array.from({length:12},()=>({ai:Jm,dist:0}));th={firstframe:118,lastframe:129,frames:jk,endfunc:Vk};var Ki=.1;function nh(e,t,n){R(e,Ki,n)}function qk(e,t,n){L(e,t,Ki,n)}function rh(e,t,n){ne(e,t,Ki,n)}function $i(e,t,n){se(e,t,Ki,n)}function fe(e,t,n){f(e,t)}var Ko,ih,Jk,ah,Qk,e5,t5,$o,sh,n5,r5,i5,oh,a5,ch;function s5(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function o5(e){e.monsterinfo.current_move=Ko}function c5(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=ih)}function $t(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ko:e.monsterinfo.current_move=ah}function l5(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function u5(e,t){e.monsterinfo.current_move=$o}function d5(e,t){if(e.enemy&&e.enemy.health>0&&Tn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=$o;return}e.monsterinfo.current_move=sh}function m5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=B(P(e.enemy.origin,n)),i=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Mt(e,n,r,i,a,300,500,0,t,5)}function lh(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),sm(t,e,n,r,i,a)}function h5(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&lh(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function f5(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function _5(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function g5(e,t){if(!e.enemy)return;let n=P(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),i=600,a=B({x:n.x,y:n.y,z:0}),s=En(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function p5(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function v5(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=ch)}var y5=Array.from({length:30},(e,t)=>({ai:nh,dist:0,think:t===29?c5:null}));Ko={firstframe:0,lastframe:29,frames:y5,endfunc:null};var w5=Array.from({length:40},(e,t)=>({ai:nh,dist:0,think:t===7?s5:null}));ih={firstframe:30,lastframe:69,frames:w5,endfunc:o5};var S5=[0,3,4,5,7,2,6,4,2,7,5,7,4],A5=S5.map(e=>({ai:qk,dist:e}));Jk={firstframe:76,lastframe:88,frames:A5,endfunc:null};var x5=[26,9,9,9,15,10,13,6],E5=x5.map((e,t)=>({ai:rh,dist:e,think:t%4===0?v5:null}));ah={firstframe:94,lastframe:101,frames:E5,endfunc:null};var k5=[32,15,10,18,8,20],b5=k5.map(e=>({ai:rh,dist:e}));Qk={firstframe:102,lastframe:107,frames:b5,endfunc:null};var T5=Array.from({length:21},(e,t)=>({ai:$i,dist:0,think:[4,7,10,13].includes(t)?lh:null}));t5={firstframe:108,lastframe:128,frames:T5,endfunc:$t};var M5=Array.from({length:7},(e,t)=>({ai:$i,dist:0,think:t===0?l5:null}));e5={firstframe:137,lastframe:143,frames:M5,endfunc:u5};var R5=Array.from({length:8},()=>({ai:$i,dist:0,think:m5}));$o={firstframe:144,lastframe:151,frames:R5,endfunc:d5};var z5=Array.from({length:7},()=>({ai:$i,dist:0}));sh={firstframe:152,lastframe:158,frames:z5,endfunc:$t};var L5=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],N5=L5.map(e=>({ai:fe,dist:e}));n5={firstframe:159,lastframe:176,frames:N5,endfunc:$t};var O5=[-2,11,6,2,-1,-7,-2,-7],I5=O5.map(e=>({ai:fe,dist:e}));r5={firstframe:177,lastframe:184,frames:I5,endfunc:$t};var C5=[-3,1,1,0,1],P5=C5.map(e=>({ai:fe,dist:e}));i5={firstframe:185,lastframe:189,frames:P5,endfunc:$t};var F5=[0,0,0,-7,-3,-5,8,6,0,0,0],D5=F5.map(e=>({ai:fe,dist:e}));function U5(e){e.monsterinfo.nextframe=oh.lastframe,e.nextthink=-1,e.solid=0}oh={firstframe:190,lastframe:200,frames:D5,endfunc:U5};var B5=[{ai:fe,dist:1,think:h5},{ai:fe,dist:1},{ai:fe,dist:1,think:f5},{ai:fe,dist:0},{ai:fe,dist:-1},{ai:fe,dist:-1},{ai:fe,dist:0,think:_5},{ai:fe,dist:-1}];a5={firstframe:201,lastframe:208,frames:B5,endfunc:$t};var G5=[{ai:fe,dist:0,think:g5},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:p5},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0}];ch={firstframe:209,lastframe:216,frames:G5,endfunc:$t};var Xi=.1;function H5(e,t,n){R(e,Xi,n)}function V5(e,t,n){L(e,t,Xi,n)}function W5(e,t,n){ne(e,t,Xi,n)}function K5(e,t,n){se(e,t,Xi,n)}function uh(e,t,n){f(e,t)}var Xo,dh,mh,$5,X5,hh;function Y5(e){e.monsterinfo.current_move=Xo}function Z5(e){e.monsterinfo.current_move=dh}function Yo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mh:e.monsterinfo.current_move=Xo}function j5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function q5(e){e.monsterinfo.nextframe=hh.lastframe,e.nextthink=-1}var J5=Array.from({length:46},()=>({ai:H5,dist:0}));Xo={firstframe:0,lastframe:45,frames:J5,endfunc:Y5};var Q5=Array.from({length:46},()=>({ai:V5,dist:5}));dh={firstframe:0,lastframe:45,frames:Q5,endfunc:Z5};var eb=Array.from({length:46},()=>({ai:W5,dist:10}));mh={firstframe:0,lastframe:45,frames:eb,endfunc:Yo};var tb=Array.from({length:20},(e,t)=>({ai:K5,dist:0,think:t===10?j5:null}));$5={firstframe:46,lastframe:65,frames:tb,endfunc:Yo};var nb=Array.from({length:6},()=>({ai:uh,dist:0}));X5={firstframe:66,lastframe:71,frames:nb,endfunc:Yo};var rb=Array.from({length:10},()=>({ai:uh,dist:0}));hh={firstframe:84,lastframe:93,frames:rb,endfunc:q5};var Yi=.1;function ib(e,t,n){R(e,Yi,n)}function ab(e,t,n){L(e,t,Yi,n)}function sb(e,t,n){ne(e,t,Yi,n)}function ob(e,t,n){se(e,t,Yi,n)}function fh(e,t,n){f(e,t)}var Zo,_h,gh,cb,lb,ph;function ub(e){e.monsterinfo.current_move=Zo}function db(e){e.monsterinfo.current_move=_h}function jo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gh:e.monsterinfo.current_move=Zo}function mb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function hb(e){e.monsterinfo.nextframe=ph.lastframe,e.nextthink=-1}var fb=Array.from({length:46},()=>({ai:ib,dist:0}));Zo={firstframe:0,lastframe:45,frames:fb,endfunc:ub};var _b=Array.from({length:46},()=>({ai:ab,dist:5}));_h={firstframe:0,lastframe:45,frames:_b,endfunc:db};var gb=Array.from({length:46},()=>({ai:sb,dist:10}));gh={firstframe:0,lastframe:45,frames:gb,endfunc:jo};var pb=Array.from({length:20},(e,t)=>({ai:ob,dist:0,think:t===10?mb:null}));cb={firstframe:46,lastframe:65,frames:pb,endfunc:jo};var vb=Array.from({length:6},()=>({ai:fh,dist:0}));lb={firstframe:66,lastframe:71,frames:vb,endfunc:jo};var yb=Array.from({length:10},()=>({ai:fh,dist:0}));ph={firstframe:84,lastframe:93,frames:yb,endfunc:hb};var Zi=.1;function wb(e,t,n){R(e,Zi,n)}function Sb(e,t,n){L(e,t,Zi,n)}function Ab(e,t,n){ne(e,t,Zi,n)}function xb(e,t,n){se(e,t,Zi,n)}function qo(e,t,n){f(e,t)}var Jo,vh,yh,Eb,kb,wh,bb;function Tb(e){e.monsterinfo.current_move=Jo}function Mb(e){e.monsterinfo.current_move=vh}function ji(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yh:e.monsterinfo.current_move=Jo}function Rb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},i=B(P(r,n));Mt(e,n,i,5,2,.05,.05,0,t,4)}var zb=Array.from({length:22},()=>({ai:wb,dist:0}));Jo={firstframe:0,lastframe:21,frames:zb,endfunc:Tb};var Lb=Array.from({length:15},()=>({ai:Sb,dist:4}));vh={firstframe:22,lastframe:36,frames:Lb,endfunc:Mb};var Nb=Array.from({length:8},()=>({ai:Ab,dist:12}));yh={firstframe:37,lastframe:44,frames:Nb,endfunc:ji};var Ob=Array.from({length:15},(e,t)=>({ai:xb,dist:0,think:t>=5&&t<=7?Rb:null}));Eb={firstframe:45,lastframe:59,frames:Ob,endfunc:ji};var Ib=Array.from({length:10},()=>({ai:qo,dist:0}));kb={firstframe:60,lastframe:69,frames:Ib,endfunc:ji};var Cb=Array.from({length:20},()=>({ai:qo,dist:0}));function Pb(e){e.monsterinfo.nextframe=wh.lastframe,e.nextthink=-1}wh={firstframe:70,lastframe:89,frames:Cb,endfunc:Pb};var Fb=Array.from({length:5},()=>({ai:qo,dist:0}));bb={firstframe:90,lastframe:94,frames:Fb,endfunc:ji};var Ar=.1,Db={x:30,y:28,z:24},Ub={x:26,y:16,z:24},Bb={x:26,y:-14,z:24};function Gb(e,t,n){R(e,Ar,n)}function Hb(e,t,n){L(e,t,Ar,n)}function Vb(e,t,n){ne(e,t,Ar,n)}function Sh(e,t,n){se(e,t,Ar,n)}function Ln(e,t,n){f(e,t)}var Qo,Ah,xh,Eh,ec,kh,bh,Th,Mh,tc,uo;function Rh(e){e.monsterinfo.current_move=Qo}function zh(e){e.monsterinfo.current_move=Ah}function ht(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=xh:e.monsterinfo.current_move=Qo}function Wb(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=Eh:t<=.6?e.monsterinfo.current_move=ec:e.monsterinfo.current_move=kh}function nc(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=H(n,t.x),o=H(r,t.y),l=H(i,t.z);return K(K(K(a,s),o),l)}function Kb(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=nc(e,Db),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=B(P(r,n));gm(e,n,i,50,300,100,300,0,t)}function $b(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=nc(e,Bb),r=B(P(e.pos1,n));pm(e,n,r,50,100,0,t)}function Xb(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function Yb(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=nc(e,Ub),r=(e.monsterinfo.nextframe||0)-ec.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...En(o)};r<=12?c.y-=5*(r-4):c.y-=40-5*(r-12),a=te(c).forward}else{let{forward:s}=te(e.angles);a=s}mt(e,n,a,15,1e3,0,0,t,1)}function Zb(e,t,n,r,i){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(r<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,r<=40?(i.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=bh):r<=110?(i.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=Th):Math.random()<=.45&&(i.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=Mh)))}function jb(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function qb(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=jb,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:r}=te(e.angles),i=H(r,120),a=H(n,-120);e.velocity=K(K(e.velocity,i),a),e.origin=K(e.origin,H(n,-10)),e.angles={...e.angles,x:90},e.avelocity=$,t.linkentity(e)}function Jb(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,qb(n,t)}function Qb(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),Jb(e,t),e.monsterinfo.current_move=tc,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function e6(e){e.monsterinfo.nextframe=tc.lastframe,e.nextthink=-1}var t6=Array.from({length:60},()=>({ai:Gb,dist:0}));Qo={firstframe:0,lastframe:59,frames:t6,endfunc:Rh};var n6=Array.from({length:10},()=>({ai:Hb,dist:8}));Ah={firstframe:60,lastframe:69,frames:n6,endfunc:zh};var r6=Array.from({length:10},()=>({ai:Vb,dist:8}));xh={firstframe:60,lastframe:69,frames:r6,endfunc:ht};var i6=Array.from({length:8},(e,t)=>({ai:Sh,dist:0,think:t===3?Kb:null}));Eh={firstframe:70,lastframe:77,frames:i6,endfunc:ht};var a6=Array.from({length:26},(e,t)=>({ai:Ln,dist:0,think:t>=4&&t<=20?Yb:null}));ec={firstframe:78,lastframe:103,frames:a6,endfunc:ht};var s6=Array.from({length:16},(e,t)=>({ai:Sh,dist:0,think:t===7?Xb:t===8?$b:null}));kh={firstframe:104,lastframe:119,frames:s6,endfunc:ht};var o6=Array.from({length:4},()=>({ai:Ln,dist:0}));bh={firstframe:120,lastframe:123,frames:o6,endfunc:ht};var c6=Array.from({length:4},()=>({ai:Ln,dist:0}));Th={firstframe:124,lastframe:127,frames:c6,endfunc:ht};var l6=Array.from({length:27},()=>({ai:Ln,dist:0}));Mh={firstframe:128,lastframe:154,frames:l6,endfunc:ht};var u6=Array.from({length:95},()=>({ai:Ln,dist:0}));tc={firstframe:155,lastframe:249,frames:u6,endfunc:e6};var d6=Array.from({length:13},()=>({ai:Ln,dist:0}));uo={firstframe:250,lastframe:262,frames:d6,endfunc:ht};function m6(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,r,i,a)=>Zb(n,r,i,a,t.entities),e.die=(n,r,i,a,s)=>{if(n.health<=-2e3){sx(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,Qb(n,t.entities)},e.monsterinfo.stand=Rh,e.monsterinfo.walk=zh,e.monsterinfo.run=ht,e.monsterinfo.attack=Wb,e.monsterinfo.sight=(n,r)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=uo},e.think=ix,e.monsterinfo.current_move=uo,e.nextthink=e.timestamp+Ar}var qi=.1,h6={x:40,y:-20,z:20},f6={x:40,y:20,z:20},_6={x:30,y:0,z:40};function g6(e,t,n){R(e,qi,n)}function p6(e,t,n){L(e,t,qi,n)}function v6(e,t,n){ne(e,t,qi,n)}function rc(e,t,n){se(e,t,qi,n)}function xr(e,t,n){f(e,t)}var ic,Lh,Nh,ac,mo,y6,w6,S6,A6,Oh;function x6(e){e.monsterinfo.current_move=ic}function E6(e){e.monsterinfo.current_move=Lh}function Nn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nh:e.monsterinfo.current_move=ic}function k6(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&Tn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=ac:e.monsterinfo.current_move=mo}function ho(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=H(n,t.x),o=H(r,t.y),l=H(i,t.z);return K(K(K(a,s),o),l)}function b6(e,t){if(!e.enemy)return;let n=ho(e,f6),r=B(P(e.enemy.origin,n));bi(e,n,r,6,4,.05,.05,0,t,4);let i=ho(e,h6),a=B(P(e.enemy.origin,i));bi(e,i,a,6,4,.05,.05,0,t,4)}function T6(e,t){if(!e.enemy)return;let n=ho(e,_6),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=B(P(r,n));gm(e,n,i,50,300,100,200,0,t)}function M6(e){e.monsterinfo.nextframe=Oh.lastframe,e.nextthink=-1}function R6(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,m6(n,{entities:t}),n.enemy&&n.enemy.health>0){let i=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:pr(i)};let a=B(i),s=H(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var z6=Array.from({length:51},()=>({ai:g6,dist:0}));ic={firstframe:0,lastframe:50,frames:z6,endfunc:x6};var L6=Array.from({length:14},()=>({ai:p6,dist:10}));Lh={firstframe:51,lastframe:64,frames:L6,endfunc:E6};var N6=Array.from({length:14},()=>({ai:v6,dist:10}));Nh={firstframe:51,lastframe:64,frames:N6,endfunc:Nn};var O6=Array.from({length:8},()=>({ai:rc,dist:0})),I6={firstframe:65,lastframe:72,frames:O6,endfunc:null},C6=Array.from({length:6},()=>({ai:rc,dist:0,think:b6}));ac={firstframe:73,lastframe:78,frames:C6,endfunc:k6};I6.endfunc=e=>{e.monsterinfo.current_move=ac};var P6=Array.from({length:4},()=>({ai:xr,dist:0}));mo={firstframe:79,lastframe:82,frames:P6,endfunc:Nn};var F6=Array.from({length:13},(e,t)=>({ai:rc,dist:0,think:t===6?T6:null}));y6={firstframe:83,lastframe:95,frames:F6,endfunc:Nn};var D6=Array.from({length:3},()=>({ai:xr,dist:0}));w6={firstframe:96,lastframe:98,frames:D6,endfunc:Nn};var U6=Array.from({length:3},()=>({ai:xr,dist:0}));S6={firstframe:99,lastframe:101,frames:U6,endfunc:Nn};var B6=Array.from({length:25},()=>({ai:xr,dist:0}));A6={firstframe:102,lastframe:126,frames:B6,endfunc:Nn};var G6=Array.from({length:50},(e,t)=>({ai:xr,dist:0,think:t===49?((n,r)=>{}):t===48?R6:null}));Oh={firstframe:127,lastframe:176,frames:G6,endfunc:M6};var sc=.1,Ji=4,Ih=8,Qi=16,H6=32,oc=64,V6=0,W6=39,K6=40,$6=58,X6=59,Ch=64,Y6=93,Z6=95,cc=99,Ph=159,Fh=160,Dh=172,Uh=173,Bh=198,j6=199,q6=209,J6=210,Q6=226,lc=227,uc=235,Gh=236,Ti=244,e3=245,t3=251,n3=252,r3=266,i3=267,a3=281,Hh,Vh,Wh,Kh,$h,Er,Xh,Yh,Zh,jh,s3,o3,qh,Jh,c3,l3,dc,Qh,u3="insane/insane11.wav",d3="insane/insane5.wav",m3="insane/insane7.wav",$d=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function fo(e,t){t.sound(e,2,u3,1,1,0)}function h3(e,t){(e.spawnflags&oc)===0&&t.sound(e,2,d3,1,1,0)}function mc(e,t){e.spawnflags&oc||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,m3,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Nt(e,t){if(!(e.spawnflags&oc)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=$d[Math.floor(Math.random()*$d.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Ce(e,t){}function ef(e,t){e.spawnflags&H6||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=Wh:e.monsterinfo.current_move=$h)}function f3(e,t){e.spawnflags&Ji&&e.spawnflags&Qi||Math.random()<.5&&(e.monsterinfo.current_move=Kh)}function hc(e,t){e.monsterinfo.current_move=Er}function tf(e,t){Math.random()<.8?e.monsterinfo.current_move=dc:e.monsterinfo.current_move=Qh}function fc(e,t){e.spawnflags&Ih?(e.monsterinfo.current_move=dc,e.monsterinfo.aiflags|=1):e.spawnflags&Ji&&e.spawnflags&Qi?e.monsterinfo.current_move=Er:Math.random()<.5?e.monsterinfo.current_move=Hh:e.monsterinfo.current_move=Vh}function _c(e,t){if(e.spawnflags&Qi&&e.frame===Ti){e.monsterinfo.current_move=Er;return}e.spawnflags&Ji?e.monsterinfo.current_move=qh:Math.random()<=.5?e.monsterinfo.current_move=Xh:e.monsterinfo.current_move=Zh}function kr(e,t){if(e.spawnflags&Qi&&e.frame===Ti){e.monsterinfo.current_move=Er;return}let n=e.frame;e.spawnflags&Ji||n>=Gh&&n<=Ti||n>=lc&&n<=uc||n>=cc&&n<=Ph?e.monsterinfo.current_move=Jh:Math.random()<=.5?e.monsterinfo.current_move=Yh:e.monsterinfo.current_move=jh}function nf(e,t){e.spawnflags&Ih?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function d(e,t=0,n){return{ai:(r,i,a)=>{n&&n(r,a),e(r,t,sc,a)},dist:t}}var _3=[d(R),d(R),d(R),d(R),d(R),d(R,0,ef)];Hh={firstframe:X6,lastframe:Ch,frames:_3,endfunc:fc};var g3=[d(R,0,h3),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R),d(R,0,ef)];Vh={firstframe:Ch,lastframe:Y6,frames:g3,endfunc:fc};var p3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,0,mc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,2.7),d(f,4.1),d(f,6),d(f,7.6),d(f,3.6),d(f),d(f),d(f,0,fo),d(f),d(f),d(f),d(f),d(f),d(f,0,fo),d(f),d(f),d(f),d(f),d(f),d(f)];Wh={firstframe:V6,lastframe:W6,frames:p3,endfunc:hc};var v3=[d(f,-.7),d(f,-1.2),d(f,-1.5),d(f,-4.5),d(f,-3.5),d(f,-.2),d(f),d(f,-1.3),d(f,-3),d(f,-2),d(f),d(f),d(f),d(f,-3.3),d(f,-1.6),d(f,-.3),d(f),d(f),d(f)];Kh={firstframe:K6,lastframe:$6,frames:v3,endfunc:fc};var y3=[d(f,.2),d(f,11.5),d(f,5.1),d(f,7.1),d(f)];$h={firstframe:Z6,lastframe:cc,frames:y3,endfunc:hc};var w3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,-1.7),d(f,-1.6),d(f),d(f),d(f),d(f,0,fo),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,0,mc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,.5),d(f),d(f,-.2,Nt),d(f),d(f,.2),d(f,.4),d(f,.6),d(f,.8),d(f,.7),d(f,0,f3)];Er={firstframe:cc,lastframe:Ph,frames:w3,endfunc:hc};var _o=[d(L,0,Nt),d(L,2.5),d(L,3.5),d(L,1.7),d(L,2.3),d(L,2.4),d(L,2.2,Ce),d(L,4.2),d(L,5.6),d(L,3.3),d(L,2.4),d(L,.9),d(L,0,Ce)];Xh={firstframe:Fh,lastframe:Dh,frames:_o,endfunc:_c};Yh={firstframe:Fh,lastframe:Dh,frames:_o.map(e=>({ai:(t,n,r)=>{e.ai===_o[0].ai&&Nt(t,r),ne(t,n,sc,r)},dist:e.dist})),endfunc:kr};var go=[d(L,0,Nt),d(L,3.4),d(L,3.6),d(L,2.9),d(L,2.2),d(L,2.6,Ce),d(L),d(L,.7),d(L,4.8),d(L,5.3),d(L,1.1),d(L,2,Ce),d(L,.5),d(L),d(L),d(L,4.9),d(L,6.7),d(L,3.8),d(L,2,Ce),d(L,.2),d(L),d(L,3.4),d(L,6.4),d(L,5),d(L,1.8,Ce),d(L)];Zh={firstframe:Uh,lastframe:Bh,frames:go,endfunc:_c};jh={firstframe:Uh,lastframe:Bh,frames:go.map(e=>({ai:(t,n,r)=>{e.ai===go[0].ai&&Nt(t,r),ne(t,n,sc,r)},dist:e.dist})),endfunc:kr};var S3=[d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f),d(f),d(f,0,Ce)];s3={firstframe:j6,lastframe:q6,frames:S3,endfunc:kr};var A3=[d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f)];o3={firstframe:J6,lastframe:Q6,frames:A3,endfunc:nf};var rf=[d(L,0,Nt),d(L,1.5),d(L,2.1),d(L,3.6),d(L,2,Ce),d(L,.9),d(L,3),d(L,3.4),d(L,2.4,Ce)];qh={firstframe:lc,lastframe:uc,frames:rf,endfunc:_c};Jh={firstframe:lc,lastframe:uc,frames:rf,endfunc:kr};var x3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];c3={firstframe:Gh,lastframe:Ti,frames:x3,endfunc:kr};var E3=[d(f),d(f),d(f),d(f),d(f,0,Nt),d(f),d(f)];l3={firstframe:e3,lastframe:t3,frames:E3,endfunc:nf};var k3=[d(f,0,mc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];dc={firstframe:n3,lastframe:r3,frames:k3,endfunc:tf};var b3=[d(f,0,Nt),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];Qh={firstframe:i3,lastframe:a3,frames:b3,endfunc:tf};var T3=.1,M3=0;var po=0,af=39,R3=40,z3=47,L3=48,N3=53,O3=54,I3=56,C3=57,P3=59,F3=60,D3=62,U3=63,B3=76,G3=77,H3=93,V3=94,W3=100,K3=101,$3=113,X3=114,Y3=117,sf,of,cf,Z3,j3,q3,J3,Q3,eT,tT,nT;function A(e,t=0,n){return{ai:(r,i,a)=>{n&&n(r,a),e(r,t,T3,a)},dist:t}}function Xd(e,t){e.monsterinfo.current_move=sf,t.timeSeconds<1&&(e.frame=po+Math.floor(Math.random()*(af-po+1)))}function rT(e,t){e.monsterinfo.current_move=of}function On(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?rT(e,t):Xd(e,t);return}if(e.monsterinfo.aiflags&1){Xd(e,t);return}e.monsterinfo.current_move=cf}function iT(e,t){let n={x:0,y:0,z:0},i=te(e.angles).forward,a=io(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,H(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=io(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=B(s)}else s=i;Mt(e,a,s,3,4,0,0,M3,t)}function lf(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function aT(e,t){iT(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var sT=[A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R),A(R)];sf={firstframe:po,lastframe:af,frames:sT,endfunc:null};var oT=[A(L),A(L,6),A(L,10),A(L,3),A(L,2),A(L,7),A(L,10),A(L,1)];of={firstframe:R3,lastframe:z3,frames:oT,endfunc:null};var cT=[A(ne,4),A(ne,15),A(ne,15),A(ne,8),A(ne,20),A(ne,15)];cf={firstframe:L3,lastframe:N3,frames:cT,endfunc:null};var lT=[A(f,-5),A(f,4),A(f,1)];Z3={firstframe:O3,lastframe:I3,frames:lT,endfunc:On};var uT=[A(f,-4),A(f,4),A(f)];j3={firstframe:C3,lastframe:P3,frames:uT,endfunc:On};var dT=[A(f,-1),A(f,1),A(f,0)];q3={firstframe:F3,lastframe:D3,frames:dT,endfunc:On};var mT=[A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q)];J3={firstframe:U3,lastframe:B3,frames:mT,endfunc:On};var hT=[A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q),A(Q)];Q3={firstframe:G3,lastframe:H3,frames:hT,endfunc:On};var fT=[A(f),A(f),A(f,-13),A(f,14),A(f,3),A(f,-2),A(f,1)];eT={firstframe:V3,lastframe:W3,frames:fT,endfunc:lf};var _T=[A(f),A(f,7),A(f,-6),A(f,-5),A(f,1),A(f),A(f,-1),A(f,-2),A(f,-1),A(f,-9),A(f,-13),A(f,-13),A(f)];tT={firstframe:K3,lastframe:$3,frames:_T,endfunc:lf};var gT=[A(se,-2,aT),A(se,-2),A(se,3),A(se,2)];nT={firstframe:X3,lastframe:Y3,frames:gT,endfunc:On};var gr=.1;function pT(e,t,n){if(e.classname==="monster_medic"&&hf(e,n)){e.monsterinfo.current_move=br;return}R(e,gr,n)}function vT(e,t,n){L(e,t,gr,n)}function yT(e,t,n){e.classname==="monster_medic"&&hf(e,n)?e.monsterinfo.current_move=br:ne(e,t,gr,n)}function it(e,t,n){se(e,t,gr,n)}function gc(e,t,n){f(e,t)}var pc,uf,br,wT,df,ST,AT,mf;function xT(e){e.monsterinfo.current_move=pc}function ET(e){e.monsterinfo.current_move=uf}function Tr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&zt(e,e.enemy)<80){e.monsterinfo.current_move=df;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=br:e.monsterinfo.current_move=pc}function kT(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,n));mt(e,n,r,2,1e3,0,0,t,10)}function kt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(zt(e,e.enemy)>400){e.monsterinfo.current_move=br;return}let r=te(e.angles),i=r.forward,a=r.right,s=r.up,o={x:24,y:0,z:6},l=K(e.origin,K(H(i,o.x),K(H(a,o.y),H(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,ke.temp_entity,{te:be.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function bT(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),kt(e,t)}function TT(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,r=t.getSpawnFunction(n.classname);if(zt(e,n)>400){e.enemy=null;return}if(!r)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let i={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};r(n,i),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function hf(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,r=1024,i=(a,s,o,l,c,u)=>{let h=t.trace(a,s,o,l,c,u);return{fraction:h.fraction,ent:h.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!Tn(e,a,i))return;let s=zt(e,a);s<r&&(r=s,n=a)}),n?(e.enemy=n,!0):!1}function MT(e,t){let n=Math.random(),r="monster_soldier_light";n>.8?r="monster_soldier_ssg":n>.5&&(r="monster_soldier");let i=t.getSpawnFunction(r);if(i){let a=te(e.angles),s=H(a.forward,64),o=K(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,Le|Wt|Ni);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},i(u,{entities:t,keyValues:{classname:r},warn:()=>{},free:m=>t.free(m)}),u.enemy=e.enemy,t.multicast(l,1,ke.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function RT(e){e.monsterinfo.nextframe=mf.lastframe,e.nextthink=-1}var zT=Array.from({length:30},()=>({ai:pT,dist:0}));pc={firstframe:0,lastframe:29,frames:zT,endfunc:xT};var LT=Array.from({length:40},()=>({ai:vT,dist:3}));uf={firstframe:30,lastframe:69,frames:LT,endfunc:ET};var NT=Array.from({length:20},()=>({ai:yT,dist:12}));br={firstframe:70,lastframe:89,frames:NT,endfunc:Tr};var OT=Array.from({length:16},(e,t)=>({ai:it,dist:0,think:t>=4&&t<=13?kT:null}));wT={firstframe:90,lastframe:105,frames:OT,endfunc:Tr};var IT=[{ai:it,dist:0,think:bT},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:TT}];df={firstframe:106,lastframe:114,frames:IT,endfunc:Tr};var CT=Array.from({length:6},()=>({ai:gc,dist:0}));AT={firstframe:116,lastframe:121,frames:CT,endfunc:Tr};var PT=Array.from({length:23},(e,t)=>({ai:gc,dist:0,think:t===11?MT:null}));ST={firstframe:122,lastframe:144,frames:PT,endfunc:Tr};var FT=Array.from({length:30},()=>({ai:gc,dist:0}));mf={firstframe:161,lastframe:190,frames:FT,endfunc:RT};var Mr=.1;function F(e,t,n){R(e,Mr,n)}function Ie(e,t,n){L(e,t,Mr,n)}function gn(e,t,n){ne(e,t,Mr,n)}function Et(e,t,n){se(e,t,Mr,n)}function ee(e,t,n){f(e,t)}function to(e,t,n){BA(e,null,t,Mr)}var ff,_f,Mi,DT,UT,BT,GT,gf,pf;function HT(e){e.monsterinfo.current_move=_f}function VT(e){e.monsterinfo.current_move=ff}function In(e){e.monsterinfo.current_move=Mi}function vf(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=P(e.enemy.origin,e.origin);if(xn(r)>100)return;let a=B(r);ye(e.enemy,e,e,a,e.enemy.origin,$,t,0,0,0,n.timeSeconds)}function WT(e,t){vf(e,30,t)}function Yd(e,t){vf(e,30,t)}function yn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Mi),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Mi)}function KT(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),ye(t,e,e,B(e.velocity),e.origin,$,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function $T(e,t){let n=te(e.angles).forward;e.movetype=7,e.touch=KT,e.velocity=K(H(n,300),{x:0,y:0,z:300}),e.velocity=K(H(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function XT(e){e.monsterinfo.nextframe=gf.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var YT=[{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0},{ai:F,dist:0}];ff={firstframe:0,lastframe:50,frames:YT,endfunc:VT};var ZT=[{ai:Ie,dist:3},{ai:Ie,dist:1},{ai:Ie,dist:5},{ai:Ie,dist:10},{ai:Ie,dist:13},{ai:Ie,dist:12},{ai:Ie,dist:0},{ai:Ie,dist:0},{ai:Ie,dist:5},{ai:Ie,dist:6},{ai:Ie,dist:16},{ai:Ie,dist:15},{ai:Ie,dist:6}];_f={firstframe:51,lastframe:63,frames:ZT,endfunc:HT};var jT=[{ai:gn,dist:20},{ai:gn,dist:15},{ai:gn,dist:35},{ai:gn,dist:20},{ai:gn,dist:10},{ai:gn,dist:20}];Mi={firstframe:64,lastframe:69,frames:jT,endfunc:In};var qT=[{ai:Et,dist:0},{ai:Et,dist:0},{ai:Et,dist:0,think:Yd},{ai:Et,dist:0},{ai:Et,dist:0,think:WT},{ai:Et,dist:0},{ai:Et,dist:0,think:Yd},{ai:Et,dist:0}];DT={firstframe:70,lastframe:77,frames:qT,endfunc:In};var JT=[{ai:to,dist:0},{ai:to,dist:0},{ai:to,dist:0,think:$T},{ai:ee,dist:0,think:yn},{ai:ee,dist:0,think:yn},{ai:ee,dist:0,think:yn},{ai:ee,dist:0,think:yn},{ai:ee,dist:0,think:yn}];pf={firstframe:93,lastframe:100,frames:JT,endfunc:In};pf.frames[3].ai=(e,t,n)=>{yn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var QT=[{ai:ee,dist:4},{ai:ee,dist:-3},{ai:ee,dist:-8},{ai:ee,dist:2},{ai:ee,dist:5}];UT={firstframe:78,lastframe:82,frames:QT,endfunc:In};var eM=[{ai:ee,dist:-24},{ai:ee,dist:11},{ai:ee,dist:5},{ai:ee,dist:-2}];BT={firstframe:83,lastframe:86,frames:eM,endfunc:In};var tM=[{ai:ee,dist:11},{ai:ee,dist:0},{ai:ee,dist:-2},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];GT={firstframe:87,lastframe:92,frames:tM,endfunc:In};var nM=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];gf={firstframe:101,lastframe:109,frames:nM,endfunc:XT};var ea=.1,rM=()=>Math.random();function Z(e,t,n){R(e,ea,n)}function lt(e,t,n){L(e,t,ea,n)}function ut(e,t,n){ne(e,t,ea,n)}function Ae(e,t,n){se(e,t,ea,n)}function xe(e,t,n){f(e,t)}var vc,yf,wf,iM,aM,Sf,Af,sM,oM,yc,xf;function cM(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function lM(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function pn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function vo(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function uM(e){e.monsterinfo.current_move=yc}function dM(e){rM()<=.8?e.monsterinfo.current_move=yc:e.monsterinfo.current_move=xf}function Ef(e){e.monsterinfo.current_move=vc}function wc(e){e.monsterinfo.current_move=yf}function kf(e){e.monsterinfo.current_move=Af}function bf(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=vc:e.monsterinfo.current_move=wf}function no(e,t){let n=P(t,e);if(xn(n)>256)return!1;let a=En(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function $e(e,t){if(!e.enemy)return;let n=te(e.angles),r=n.forward,i=n.right,a=n.up,s={x:24,y:0,z:6},o=K(e.origin,K(H(r,s.x),K(H(i,s.y),H(a,s.z)))),l=io(e.enemy.origin);if(!no(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!no(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!no(o,l)))||t.trace(o,l,$,$,e,bt).ent!==e.enemy)return;let u=2,h=e.frame;h===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(h===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,ke.temp_entity,{te:be.PARASITE_ATTACK,entId:e.index,start:o,end:l});let m=B(P(o,l));ye(e.enemy,e,e,m,e.enemy.origin,$,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function mM(e){e.monsterinfo.nextframe=Sf.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var hM=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:pn},{ai:Z,dist:0},{ai:Z,dist:0,think:pn},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:pn},{ai:Z,dist:0},{ai:Z,dist:0,think:pn},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:pn},{ai:Z,dist:0},{ai:Z,dist:0,think:pn}];vc={firstframe:83,lastframe:99,frames:hM,endfunc:Ef};var fM=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];oM={firstframe:100,lastframe:103,frames:fM,endfunc:uM};var _M=[{ai:Z,dist:0,think:vo},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:vo},{ai:Z,dist:0},{ai:Z,dist:0}];yc={firstframe:104,lastframe:109,frames:_M,endfunc:dM};var gM=[{ai:Z,dist:0,think:vo},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];xf={firstframe:110,lastframe:117,frames:gM,endfunc:Ef};var pM=[{ai:ut,dist:0},{ai:ut,dist:30}];Af={firstframe:68,lastframe:69,frames:pM,endfunc:bf};var vM=[{ai:ut,dist:30},{ai:ut,dist:30},{ai:ut,dist:22},{ai:ut,dist:19},{ai:ut,dist:24},{ai:ut,dist:28},{ai:ut,dist:25}];wf={firstframe:70,lastframe:76,frames:vM,endfunc:bf};var yM=[{ai:lt,dist:0},{ai:lt,dist:30,think:wc}];sM={firstframe:68,lastframe:69,frames:yM,endfunc:wc};var wM=[{ai:lt,dist:30},{ai:lt,dist:30},{ai:lt,dist:22},{ai:lt,dist:19},{ai:lt,dist:24},{ai:lt,dist:28},{ai:lt,dist:25}];yf={firstframe:70,lastframe:76,frames:wM,endfunc:wc};var SM=[{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:6},{ai:xe,dist:16},{ai:xe,dist:-6},{ai:xe,dist:-7},{ai:xe,dist:0}];aM={firstframe:57,lastframe:67,frames:SM,endfunc:kf};var AM=[{ai:Ae,dist:0,think:cM},{ai:Ae,dist:0},{ai:Ae,dist:15,think:$e},{ai:Ae,dist:0,think:$e},{ai:Ae,dist:0,think:$e},{ai:Ae,dist:0,think:$e},{ai:Ae,dist:0,think:$e},{ai:Ae,dist:-2,think:$e},{ai:Ae,dist:-2,think:$e},{ai:Ae,dist:-3,think:$e},{ai:Ae,dist:-2,think:$e},{ai:Ae,dist:0,think:$e},{ai:Ae,dist:-1,think:$e},{ai:Ae,dist:0,think:lM},{ai:Ae,dist:-2},{ai:Ae,dist:-2},{ai:Ae,dist:-3},{ai:Ae,dist:0}];iM={firstframe:39,lastframe:56,frames:AM,endfunc:kf};var xM=[{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0}];Sf={firstframe:32,lastframe:38,frames:xM,endfunc:mM};var ta=.1;var EM=2,kM=4;function bM(e,t,n){R(e,ta,n)}function TM(e,t,n){L(e,t,ta,n)}function MM(e,t,n){ne(e,t,ta,n)}function Tf(e,t,n){se(e,t,ta,n)}function Mf(e,t,n){f(e,t)}var Sc,Rf,zf,RM,zM,LM,Lf;function NM(e){e.monsterinfo.current_move=Sc}function OM(e){e.monsterinfo.current_move=Rf}function na(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=zf:e.monsterinfo.current_move=Sc}function Rr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function zr(e,t){if(!e.enemy){let{forward:r}=te(e.angles);return r}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return B(P(n,t))}function IM(e,t){if(!e.enemy)return;let n=Rr(e),r=zr(e,n);mt(e,n,r,5,600,0,0,t,1)}function CM(e,t){if(!e.enemy)return;let n=Rr(e),r=zr(e,n),i=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Cx(e,n,r,i,a,o,l,s,0,t,3)}function PM(e,t){if(!e.enemy)return;let n=Rr(e),r=zr(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Mt(e,n,r,i,a,s,o,0,t,4)}function FM(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:r,right:i,up:a}=te(n.angles),s={...n.origin};s=K(s,H(r,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=B(P(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function DM(e,t){if(!e.enemy)return;let n=Rr(e),r=zr(e,n);Fx(e,n,r,5,600,0,0,t)}function UM(e,t){if(!e.enemy)return;let n=Rr(e),r=zr(e,n),i=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Px(e,n,r,i,a,0,0,t)}function BM(e,t){e.enemy&&oo(e,1,!1,FM,t)}function GM(e,t){e.count<2?DM(e,t):e.count<4?UM(e,t):BM(e,t)}function Nf(e,t){if(e.style===1){GM(e,t);return}e.spawnflags&EM?CM(e,t):e.spawnflags&kM?PM(e,t):IM(e,t)}var HM=Array.from({length:30},()=>({ai:bM,dist:0}));Sc={firstframe:0,lastframe:29,frames:HM,endfunc:NM};var VM=Array.from({length:40},()=>({ai:TM,dist:2}));Rf={firstframe:30,lastframe:69,frames:VM,endfunc:OM};var WM=Array.from({length:20},()=>({ai:MM,dist:10}));zf={firstframe:70,lastframe:89,frames:WM,endfunc:na};var KM=Array.from({length:10},(e,t)=>({ai:Tf,dist:0,think:t===5?Nf:null}));RM={firstframe:90,lastframe:99,frames:KM,endfunc:na};var $M=Array.from({length:10},(e,t)=>({ai:Tf,dist:0,think:t>=4&&t<=8?Nf:null}));zM={firstframe:90,lastframe:99,frames:$M,endfunc:na};var XM=Array.from({length:6},()=>({ai:Mf,dist:0}));LM={firstframe:100,lastframe:105,frames:XM,endfunc:na};var YM=Array.from({length:10},()=>({ai:Mf,dist:0}));function ZM(e){e.monsterinfo.nextframe=Lf.lastframe,e.nextthink=-1}Lf={firstframe:106,lastframe:115,frames:YM,endfunc:ZM};var Of=.1,jM={x:30,y:30,z:40},qM={x:30,y:-30,z:40},JM={x:20,y:0,z:70};function QM(e,t,n){R(e,Of,n)}function e8(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=xc:e.monsterinfo.current_move=ra}function Ac(e,t,n){se(e,t,Of,n)}function Lr(e,t,n){f(e,t)}var ra,xc,t8,n8,If,Cf,r8,i8,a8,Pf;function s8(e){e.monsterinfo.current_move=ra}function Xt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=xc:e.monsterinfo.current_move=ra}function Ec(e,t){let{forward:n,right:r,up:i}=te(e.angles),a={...e.origin},s=H(n,t.x),o=H(r,t.y),l=H(i,t.z);return K(K(K(a,s),o),l)}function o8(e,t){if(!e.enemy)return;let n=Ec(e,qM),r=B(P(e.enemy.origin,n));yr(e,n,r,50,650,0,t)}function c8(e,t){if(!e.enemy)return;let n=Ec(e,JM),r=B(P(e.enemy.origin,n));Dx(e,n,r,50,600,0,t)}function l8(e,t){if(!e.enemy)return;let n=Ec(e,jM),r=B(P(e.enemy.origin,n));bi(e,n,r,6,4,.05,.05,0,t,4)}function u8(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&Tn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=If:e.monsterinfo.current_move=Cf}function d8(e){e.monsterinfo.nextframe=Pf.lastframe,e.nextthink=-1}var m8=Array.from({length:60},()=>({ai:QM,dist:0}));ra={firstframe:0,lastframe:59,frames:m8,endfunc:s8};var h8=Array.from({length:18},()=>({ai:e8,dist:12}));xc={firstframe:60,lastframe:77,frames:h8,endfunc:Xt};var f8=Array.from({length:4},()=>({ai:Lr,dist:0}));a8={firstframe:78,lastframe:81,frames:f8,endfunc:Xt};var _8=Array.from({length:4},()=>({ai:Lr,dist:0}));i8={firstframe:82,lastframe:85,frames:_8,endfunc:Xt};var g8=Array.from({length:4},()=>({ai:Lr,dist:0}));r8={firstframe:86,lastframe:89,frames:g8,endfunc:Xt};var p8=Array.from({length:24},()=>({ai:Lr,dist:0}));Pf={firstframe:90,lastframe:113,frames:p8,endfunc:d8};var v8=Array.from({length:6},(e,t)=>({ai:Ac,dist:0,think:t===0||t===3?c8:null}));n8={firstframe:114,lastframe:119,frames:v8,endfunc:Xt};var y8=Array.from({length:27},(e,t)=>({ai:Ac,dist:0,think:t===7||t===10||t===13?o8:null}));t8={firstframe:120,lastframe:146,frames:y8,endfunc:Xt};var w8=Array.from({length:6},()=>({ai:Ac,dist:0,think:l8}));If={firstframe:147,lastframe:152,frames:w8,endfunc:u8};var S8=Array.from({length:14},()=>({ai:Lr,dist:0}));Cf={firstframe:153,lastframe:166,frames:S8,endfunc:Xt};var kc=.1;function Ff(e,t,n,r,i){let a=i.trace(t,n,$,$,e,bt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return B(P(n,t));let s=K(n,H(r,-20)),o=i.trace(t,s,$,$,e,bt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return B(P(s,t));let l=K(n,H(r,20)),c=i.trace(t,l,$,$,e,bt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?B(P(l,t)):null}function Df(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=P(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=pr(n)}}function A8(e,t,n){R(e,kc,n)}function x8(e,t,n){L(e,t,kc,n)}function E8(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Tc:e.monsterinfo.current_move=ia}function bc(e,t,n){se(e,t,kc,n)}function Uf(e,t,n){f(e,t)}var ia,Bf,Tc,k8,b8,T8,M8,Gf;function R8(e){e.monsterinfo.current_move=ia}function z8(e){e.monsterinfo.current_move=Bf}function Nr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Tc:e.monsterinfo.current_move=ia}function L8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=te(o),c=e.monsterinfo.blind_fire_target,u=Ff(e,n,c,l,t);if(!u)return;r=u}else r=B(P(e.enemy.origin,n));mt(e,n,r,30,1e3,0,0,t,1)}function N8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,n));Mt(e,n,r,20,2,.05,.05,0,t,4)}function O8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=te(o),c=e.monsterinfo.blind_fire_target,u=Ff(e,n,c,l,t);if(!u)return;r=u}else r=B(P(e.enemy.origin,n));yr(e,n,r,50,650,0,t)}function I8(e){e.monsterinfo.nextframe=Gf.lastframe,e.nextthink=-1}function C8(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Nr(e)}var P8=Array.from({length:30},()=>({ai:A8,dist:0}));ia={firstframe:0,lastframe:29,frames:P8,endfunc:R8};var F8=Array.from({length:16},()=>({ai:x8,dist:5}));Bf={firstframe:30,lastframe:45,frames:F8,endfunc:z8};var D8=Array.from({length:16},()=>({ai:E8,dist:10}));Tc={firstframe:46,lastframe:61,frames:D8,endfunc:Nr};var U8=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=Df:t>5&&t<12&&(n=L8),{ai:bc,dist:0,think:n}});k8={firstframe:62,lastframe:77,frames:U8,endfunc:Nr};var B8=Array.from({length:20},(e,t)=>({ai:bc,dist:0,think:t%2===0&&t>5?N8:null}));b8={firstframe:78,lastframe:97,frames:B8,endfunc:Nr};var G8=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=Df:(t===8||t===12||t===16)&&(n=O8),{ai:bc,dist:0,think:n}});T8={firstframe:98,lastframe:115,frames:G8,endfunc:C8};var H8=Array.from({length:6},()=>({ai:Uf,dist:0}));M8={firstframe:116,lastframe:121,frames:H8,endfunc:Nr};var V8=Array.from({length:16},()=>({ai:Uf,dist:0}));Gf={firstframe:122,lastframe:137,frames:V8,endfunc:I8};var Mc=.1;function W8(e,t,n){R(e,Mc,n)}function Rc(e,t,n){ne(e,t,Mc,n)}function K8(e,t,n){se(e,t,Mc,n)}var zc,Hf,$8,X8,Vf;function Y8(e){e.monsterinfo.current_move=zc}function Lc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hf:e.monsterinfo.current_move=zc}function Z8(e,t){if(!e.enemy)return;let n=te(e.angles).forward,r={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,r));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),mt(e,r,i,2,1e3,1,0,t)}var j8=Array.from({length:1},()=>({ai:W8,dist:0}));zc={firstframe:0,lastframe:0,frames:j8,endfunc:Y8};var q8=Array.from({length:1},()=>({ai:Rc,dist:0}));Hf={firstframe:0,lastframe:0,frames:q8,endfunc:Lc};var J8=Array.from({length:8},(e,t)=>({ai:K8,dist:0,think:t===4?Z8:void 0}));$8={firstframe:1,lastframe:8,frames:J8,endfunc:Lc};var Q8=Array.from({length:2},()=>({ai:Rc,dist:0}));X8={firstframe:9,lastframe:10,frames:Q8,endfunc:Lc};var eR=Array.from({length:4},()=>({ai:Rc,dist:0}));function tR(e){e.monsterinfo.nextframe=Vf.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}Vf={firstframe:11,lastframe:14,frames:eR,endfunc:tR};var Hz=new Map(Eo.map(e=>[e.name,e]));var nR=2166136261,rR=16777619;function Wf(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,rR)>>>0;return n>>>0}function wn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let i=new Uint8Array(n);return Wf(e,i)}function yo(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return Wf(e,n)}var ro=2,iR=1;function Pe(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ue(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Sn(e,t,n){return e===void 0?n:ue(e,t)}function Ri(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Ai(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ue(n,`${t} element`);return e}function aR(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Pe(e,"level");return{frameNumber:Sn(t.frameNumber,"level.frameNumber",0),timeSeconds:Sn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Sn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Sn(t.deltaSeconds,"level.deltaSeconds",0)}}function sR(e){if(e===void 0)return new Qd().getState();let t=Pe(e,"rng"),n=Pe(t.mt,"rng.mt"),r=Ai(n.state,"rng.mt.state");return{mt:{index:ue(n.index,"rng.mt.index"),state:r}}}function oR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let r=Pe(t,`thinks[${n}]`);return{time:ue(r.time,`thinks[${n}].time`),entityIndex:ue(r.entityIndex,`thinks[${n}].entityIndex`)}})}function cR(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Pe(e,"awareness"),n=(r,i)=>r===null?null:ue(r,i);return{frameNumber:ue(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ue(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ue(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ue(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function lR(e){if(e===void 0)return{};let t=Pe(e,"entity.fields"),n={};for(let[r,i]of Object.entries(t)){if(i===null){n[r]=null;continue}switch(typeof i){case"number":case"string":case"boolean":n[r]=i;break;default:{if(!Array.isArray(i)){let a=Pe(i,r),s={};for(let[o,l]of Object.entries(a))s[o]=ue(l,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[ue(a,`${r}[0]`),ue(s,`${r}[1]`),ue(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function uR(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=Pe(t,`entities[${n}]`);return{index:ue(r.index,`entities[${n}].index`),fields:lR(r.fields)}})}function dR(e){let t=Pe(e,"pool");return{capacity:ue(t.capacity,"pool.capacity"),activeOrder:Ai(t.activeOrder,"pool.activeOrder"),freeList:Ai(t.freeList,"pool.freeList"),pendingFree:Ai(t.pendingFree,"pool.pendingFree")}}function mR(e){let t=Pe(e,"entities");return{timeSeconds:ue(t.timeSeconds,"entities.timeSeconds"),pool:dR(t.pool),entities:uR(t.entities),thinks:oR(t.thinks),awareness:cR(t.awareness),crossLevelFlags:Sn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Sn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function hR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let r=Pe(t,`cvars[${n}]`);return{name:Ri(r.name,`cvars[${n}].name`),value:Ri(r.value,`cvars[${n}].value`),flags:ue(r.flags,`cvars[${n}].flags`)}})}function fR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Ri(t,`configstrings[${n}]`))}function _R(e){return e===void 0?{}:Pe(e,"gameState")}function dt(e,t){if(t==null)return e;if(typeof t=="number")return wn(e,t);if(typeof t=="string")return yo(e,t);if(typeof t=="boolean")return wn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let r of t)n=dt(n,r);return n}if(typeof t=="object"){let n=e,r=Object.keys(t).sort();for(let i of r)n=yo(n,i),n=dt(n,t[i]);return n}return e}function gR(e){let t=nR;return t=wn(t,e.version),t=wn(t,e.timestamp),t=yo(t,e.map),t=wn(t,e.difficulty),t=wn(t,e.playtimeSeconds),t=dt(t,e.gameState),t=dt(t,e.level),t=dt(t,e.rng),t=dt(t,e.entities),t=dt(t,e.cvars),t=dt(t,e.configstrings),e.player&&(t=dt(t,e.player)),t>>>0}function Kf(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=Pe(r,"save"),a=i.version??ro,s=ue(a,"version");if(s<iR)throw new Error(`Unsupported save version ${s}`);if(s>ro&&!n)throw new Error(`Save version ${s} is newer than supported ${ro}`);let o={version:s,timestamp:ue(i.timestamp,"timestamp"),map:Ri(i.map,"map"),difficulty:ue(i.difficulty,"difficulty"),playtimeSeconds:ue(i.playtimeSeconds,"playtimeSeconds"),gameState:_R(i.gameState),level:aR(i.level),rng:sR(i.rng),entities:mR(i.entities),cvars:hR(i.cvars),configstrings:fR(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?ue(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=gR(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var Vz=new Set(Eo.filter(e=>e.save).map(e=>e.name));var Zd=globalThis.TextEncoder;function An(e){return Kf({...e},{allowNewerVersion:!0})}function pR(e){return Zd?new Zd().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var vR=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:An(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:An(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:An(e.save)}))}},yR=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((r,i)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:An(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:An(t.save)}))}},Nc=class dr{constructor(t={}){let{dbName:n=dr.DEFAULT_DB_NAME,storeName:r=dr.DEFAULT_STORE}=t,i=t.indexedDB??globalThis.indexedDB;i?this.adapter=new yR(i,n,r):this.adapter=new vR}async save(t,n,r={}){let i=An(n),a={id:t,name:r.name??t,map:i.map,difficulty:i.difficulty,playtimeSeconds:i.playtimeSeconds,timestamp:i.timestamp,version:i.version,bytes:pR(i)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:i}),a}async load(t,n={}){await this.adapter.init();let r=await this.adapter.get(t);if(!r)throw new Error(`Save slot ${t} not found`);return Kf(r.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,r)=>r.timestamp-n.timestamp||n.id.localeCompare(r.id))}async quickSave(t){return this.save(dr.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(dr.QUICK_SLOT,t)}};Nc.DEFAULT_DB_NAME="quake2ts-saves";Nc.DEFAULT_STORE="saves";Nc.QUICK_SLOT="quicksave";var Wz=zi();var Kz=zi();var wR=new Map,SR=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],$f=async(e,t)=>{for(let n of SR)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);wR.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var AR=new Map,xR=["d_left","d_right","d_up","d_down"],Xf=async(e,t)=>{for(let n of xR)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);AR.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Oc=[],ER=0,Yf=async(e,t)=>{for(let n=0;n<10;n++)try{let r=await t.loadTexture(`pics/hud/num_${n}.pcx`),i=e.registerTexture(`hud_num_${n}`,r);Oc.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}Oc.length>0&&(ER=Oc[0].width),await Pd(e,t),await $f(e,t),await Xf(e,t)};var Ic=[{type:"null"},{type:"armor",id:bn.BODY},{type:"armor",id:bn.COMBAT},{type:"armor",id:bn.JACKET},{type:"armor",id:bn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:_e.Grapple},{type:"weapon",id:_e.Blaster},{type:"weapon",id:_e.ChainFist},{type:"weapon",id:_e.Shotgun},{type:"weapon",id:_e.SuperShotgun},{type:"weapon",id:_e.Machinegun},{type:"weapon",id:_e.EtfRifle},{type:"weapon",id:_e.Chaingun},{type:"ammo",id:W.Grenades},{type:"ammo",id:W.Trap},{type:"ammo",id:W.Tesla},{type:"weapon",id:_e.GrenadeLauncher},{type:"weapon",id:_e.ProxLauncher},{type:"weapon",id:_e.RocketLauncher},{type:"weapon",id:_e.HyperBlaster},{type:"weapon",id:_e.IonRipper},{type:"weapon",id:_e.PlasmaBeam},{type:"weapon",id:_e.Railgun},{type:"weapon",id:_e.Phalanx},{type:"weapon",id:_e.BFG10K},{type:"weapon",id:_e.Disruptor},{type:"ammo",id:W.Shells},{type:"ammo",id:W.Bullets},{type:"ammo",id:W.Cells},{type:"ammo",id:W.Rockets},{type:"ammo",id:W.Slugs},{type:"ammo",id:W.MagSlugs},{type:"ammo",id:W.Flechettes},{type:"ammo",id:W.Prox},{type:"ammo",id:W.Nuke},{type:"ammo",id:W.Rounds},{type:"powerup",id:le.QuadDamage},{type:"powerup",id:le.QuadFire},{type:"powerup",id:le.Invulnerability},{type:"powerup",id:le.Invisibility},{type:"powerup",id:le.Silencer},{type:"powerup",id:le.Rebreather},{type:"powerup",id:le.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:le.Bandolier},{type:"powerup",id:le.AmmoPack},{type:"powerup",id:le.IRGoggles},{type:"powerup",id:le.DoubleDamage},{type:"powerup",id:le.SphereVengeance},{type:"powerup",id:le.SphereHunter},{type:"powerup",id:le.SphereDefender},{type:"powerup",id:le.Doppelganger},{type:"powerup",id:le.TagToken},{type:"key",id:ve.DataCD},{type:"key",id:ve.PowerCube},{type:"key",id:ve.ExplosiveCharges},{type:"key",id:ve.Yellow},{type:"key",id:ve.PowerCore},{type:"key",id:ve.Pyramid},{type:"key",id:ve.DataSpinner},{type:"key",id:ve.Pass},{type:"key",id:ve.Blue},{type:"key",id:ve.Red},{type:"key",id:ve.Green},{type:"key",id:ve.CommanderHead},{type:"key",id:ve.Airstrike},{type:"key",id:ve.NukeContainer},{type:"key",id:ve.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ve.RedFlag},{type:"key",id:ve.BlueFlag},{type:"powerup",id:le.TechResistance},{type:"powerup",id:le.TechStrength},{type:"powerup",id:le.TechHaste},{type:"powerup",id:le.TechRegeneration},{type:"powerup",id:le.Flashlight},{type:"powerup",id:le.Compass}];var kR=32768,aa=class{constructor(t,n){this.configstrings=new Array(kR).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,r,i,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,r=new Map;if(n.delta)for(let[i,a]of this.entities)r.set(i,structuredClone(a));for(let i of n.entities){if(i.bits&zu){r.delete(i.number);continue}let a=i.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Jt();let o=structuredClone(s);this.applyDelta(o,i),r.set(a,o)}this.entities=r}applyDelta(t,n){let r=n.bits,i=n.bitsHigh;t.number=n.number,r&_s&&(t.modelindex=n.modelindex),r&vs&&(t.modelindex2=n.modelindex2),r&ys&&(t.modelindex3=n.modelindex3),r&ws&&(t.modelindex4=n.modelindex4),r&ds&&(t.frame=n.frame),r&ps&&(t.frame=n.frame),(r&qr||r&ei)&&(t.skinnum=n.skinnum),(r&jr||r&Qr)&&(t.effects=n.effects),(r&Zr||r&Jr)&&(t.renderfx=n.renderfx),r&os&&(t.origin.x=n.origin.x),r&cs&&(t.origin.y=n.origin.y),r&hs&&(t.origin.z=n.origin.z),r&fs&&(t.angles.x=n.angles.x),r&ls&&(t.angles.y=n.angles.y),r&us&&(t.angles.z=n.angles.z),r&Ss&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),r&As&&(t.sound=n.sound),r&ms&&(t.event=n.event),r&xs&&(t.solid=n.solid),r&gs&&(t.alpha=n.alpha),r&Es&&(t.scale=n.scale),r&ks&&(t.instanceBits=n.instanceBits),r&bs&&(t.loopVolume=n.loopVolume),i&Ts&&(t.loopAttenuation=n.loopAttenuation),i&Ms&&(t.owner=n.owner),i&Rs&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,r,i,a,s,o){if(!this.imports?.engine.audio)return;let l=r??1,c=i??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let i=0,a=0,s=0,o=St,c=ud(this.stats,Hs.QuadDamage)?4:1;switch(n){case Ju:i=-2,o={x:-2,y:0,z:0};break;case ad:i=-4,o={x:-4,y:0,z:0};break;case qu:i=-1,a=Math.random()-.5;break;case Qu:case ed:case td:i=-.5,a=Math.random()-.5;break;case nd:i=-3,o={x:-3,y:0,z:0};break;case rd:case id:i=-2,o={x:-2,y:0,z:0};break;case sd:i=-5,o={x:-2,y:0,z:0};break;case od:case ju:i=-.5;break}(i!==0||a!==0||s!==0)&&this.view.addKick({pitch:i*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,r){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,r)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,r){}convertFrameToPredictionState(t){let n=t.playerState,r={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=Ic.length)break;let u=Ic[l];switch(u.type){case"weapon":r.ownedWeapons.add(u.id);break;case"ammo":r.ammo.counts[u.id]||(r.ammo.counts[u.id]=0),r.ammo.counts[u.id]=c;break;case"armor":r.armor={armorType:u.id,armorCount:c};break;case"powerup":r.powerups.set(u.id,c);break;case"key":r.keys.add(u.id);break;case"health":break;case"item":r.items.add(u.id);break}}let i={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:i,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Gt.None,gravity:n.gravity,deltaAngles:o,client:{inventory:r,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:St,kick_origin:St,gunoffset:St,gunangles:St,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Vt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let r=this.latestFrame.serverFrame*100,i=this.previousFrame.serverFrame*100;if(t>=i&&t<=r){let a=(t-i)/(r-i),s=this.convertFrameToPredictionState(this.previousFrame);return mn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Cn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=me.Models&&t<me.Models+ar){let r=t-me.Models;this.models[r]=n}else if(t>=me.Sounds&&t<me.Sounds+sr){let r=t-me.Sounds;this.sounds[r]=n}else if(t>=me.Images&&t<me.Images+or){let r=t-me.Images;this.images[r]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var sa=class{constructor(t,n,r){this.menuSystem=t;this.saveLoadFactory=n;this.options=r}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var oa=class{constructor(t,n,r,i,a){this.menuSystem=t;this.storage=n;this.onSave=r;this.onLoad=i;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Zf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(r))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Zf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(r))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Zf(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}var ca=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let r=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return r.action&&r.action(),!0;if(t==="back")return this.popMenu(),!0;if(r.type==="input"&&r.onUpdate&&r.getValue){let i=r.getValue();if(t==="char"&&n){let a=(i||"")+n;r.onUpdate(a)}else if(t==="left"){let a=String(i||"");a.length>0&&r.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Or=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let r=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",r.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var la=class{constructor(t,n,r){this.menuSystem=t;this.vfs=n;this.onStartMap=r}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(r=>({label:r.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(r.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var ua=class{constructor(t,n,r){this.menuSystem=t;this.optionsFactory=n;this.host=r}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var da=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let r=t,i=[];return n&&i.push({label:n,action:()=>{}}),i.push({label:"Address: "+r,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",r);a&&(r=a,this.refreshMenu(r))}}},{label:"Connect",action:()=>{this.refreshMenu(r,"Connecting..."),this.connection.connect("ws://"+r).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(r,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(r,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:i}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function jf(e,t,n,r){if(!t.activeMenu)return;let i=t.activeMenu,a=n/2,s=r/2,o=20,l=i.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,r,[0,0,0,.7]),e.drawCenterString(c,i.title),i.items.forEach((u,h)=>{let m=c+40+h*o,_=u.label;if(u.type==="input"&&u.getValue){if(_+=`: ${u.getValue()}`,h===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(_+="_")}}else u.type==="toggle"&&u.getValue&&(_+=`: ${u.getValue()}`);if(h===t.selectedIndex){let w=_.replace(/\^[0-9]/g,"").length*8,M=(n-w)/2;e.drawString(M-16,m,"\r")}e.drawCenterString(m,_)})}var Ir=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r)){let s=t.get(i);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let r of t)r.flags&ir.Archive&&(n[r.name]=r.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(r){console.warn("Failed to save settings",r)}}};var ma=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(r){console.warn("Failed to write to localStorage",r)}}};var ha=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,r=t.height;t.drawfillRect(0,0,n,r,[.1,.1,.1,1]);let i=n*.6,a=20,s=(n-i)/2,o=r*.7;t.drawfillRect(s,o,i,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,i*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var fa=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,r=t.height,i=n/2,a=r/2,s=400,o=200;t.drawfillRect(0,0,n,r,[0,0,0,.5]),t.drawfillRect(i-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var _a=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,r,i){if(!this.state.active)return;let a=n/2,s=r/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function Pn(e,t,n){return e+(t-e)*n}function Cc(e,t,n){return Pn(e,t,n)}function qf(e,t,n,r,i){let a=[],s=i.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=r.getModelName(l.modelIndex);if(!u)continue;let h=s.getMd2Model(u)||s.getMd3Model(u);if(!h)continue;let m={x:Pn(c.origin.x,l.origin.x,n),y:Pn(c.origin.y,l.origin.y,n),z:Pn(c.origin.z,l.origin.z,n)},_={x:Cc(c.angles.x,l.angles.x,n),y:Cc(c.angles.y,l.angles.y,n),z:Cc(c.angles.z,l.angles.z,n)},g=l.frame,S=c.frame,y=c.scale!==void 0?c.scale:1,w=l.scale!==void 0?l.scale:1,M=Pn(y,w,n),x=N=>N===void 0||N===0?255:N,p=x(c.alpha),E=x(l.alpha),T=Pn(p,E,n)/255,z=ie.create();ie.translate(z,z,[m.x,m.y,m.z]),ie.rotateZ(z,z,_.z*Math.PI/180),ie.rotateY(z,z,_.y*Math.PI/180),ie.rotateX(z,z,_.x*Math.PI/180),ie.scale(z,z,[M,M,M]),h.header.magic===844121161?a.push({type:"md2",model:h,blend:{frame0:S,frame1:g,lerp:n},transform:z,skin:l.skinNum>0?r.getImageName(l.skinNum):void 0,alpha:T}):h.header.magic===860898377&&a.push({type:"md3",model:h,blend:{frame0:S,frame1:g,lerp:n},transform:z,alpha:T})}return a}var ga=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,r)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=i=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),r(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=i=>{this.messageCallback&&(i.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(i.data)):console.warn("Received non-binary message from server"))}}catch(i){r(i)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var pa=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new ga,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>Zu&&this.commandHistory.shift();let r=new fd;r.writeLong(0),r.writeLong(0),r.writeByte(Ht.move),r.writeByte(0),r.writeLong(this.latestServerFrame),dd(r,n),this.driver.send(r.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let r=new hd(n),i=r.readLong(),a=r.readLong();this.parser=new zs(r,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new cr;t.writeByte(Ht.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new cr;n.writeByte(Ht.stringcmd);let r=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${Yr} ${t} ${r}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,r,i,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=i,this.playerNum=a,this.levelName=s,this.state=3;let o=new cr;o.writeByte(Ht.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new cr;t.writeByte(Ht.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,r,i,a,s,o){}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,r){}};var bR=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Yt=class{constructor(t=bR){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Jf(){return new Yt}function Pc(e){return e}function Cr(e){return e.trim().toLowerCase()}var TR=250,Fc=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let r=this.msec;this.activeCodes.size>0&&(r+=n-this.downTime,this.downTime=n),this.msec=0;let i=Math.min(r/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:i}}},va=(w=>(w.Forward="+forward",w.Back="+back",w.MoveLeft="+moveleft",w.MoveRight="+moveright",w.MoveUp="+moveup",w.MoveDown="+movedown",w.Jump="+jump",w.Crouch="+crouch",w.Attack="+attack",w.Use="+use",w.Holster="+holster",w.TurnLeft="+left",w.TurnRight="+right",w.LookUp="+lookup",w.LookDown="+lookdown",w.SpeedModifier="+speed",w.Zoom="+zoom",w))(va||{}),MR={"+attack":et.Attack,"+use":et.Use,"+holster":et.Holster,"+jump":et.Jump,"+crouch":et.Crouch},RR=new Map(Object.values(va).map(e=>[Cr(e),e]));function zR(e){return RR.get(Cr(e))}function Pr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Fn=class{constructor(t={},n=new Yt){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??Gu,this.sideSpeed=t.sideSpeed??Hu,this.upSpeed=t.upSpeed??Vu,this.yawSpeed=t.yawSpeed??Wu,this.pitchSpeed=t.pitchSpeed??Ku,this.sensitivity=t.sensitivity??$u,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Pr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=Pr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=Pr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=Pr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!1,r,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Pr(),r){this.pollGamepads(n),this.applyTouchState(n);let i=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*i,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let k=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+k*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let k=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+k*a,y:u.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let k=this.sampleMouseDelta(),O=Yu(k,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+O.x,y:u.y+O.y,z:0}}let h=Xu(this.viewAngles,u);this.viewAngles=h;let m=this.sample("+forward",t,n),_=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),S=this.sample("+moveright",t,n),y=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),M=this.sample("+speed",t,n),x=this.sample("+jump",t,n),p=this.sample("+crouch",t,n),E=this.runByDefault?M.active?.5:1:M.active?1:.5,b=this.forwardSpeed*(m.fraction-_.fraction)*E,T=this.sideSpeed*(S.fraction-g.fraction)*E,z=this.upSpeed*(y.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*E,T+=this.sideSpeed*this.gamepadMove.x*E),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*E,T+=this.sideSpeed*this.touchMove.x*E),this.jumpAddsUpMove&&x.fraction>0&&(z+=this.upSpeed*x.fraction),this.crouchAddsDownMove&&p.fraction>0&&(z-=this.upSpeed*p.fraction),b=this.clampMove(b,this.forwardSpeed),T=this.clampMove(T,this.sideSpeed),z=this.clampMove(z,this.upSpeed);let N=this.collectButtonBits(t,n),v=Math.min(Math.max(Math.round(t),1),TR);return(this.anyPressed||N!==et.None)&&(N|=et.Any),this.anyPressed=!1,{msec:v,buttons:N,angles:{...this.viewAngles},forwardmove:b,sidemove:T,upmove:z,serverFrame:r}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let r=new Set;for(let i of n){if(!i||i.connected===!1)continue;let a=i.index??0,s=i.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=i.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,h=this.gamepadButtonCode(a,l);u&&r.add(h);let m=this.gamepadButtons.get(h)??!1;u!==m&&(this.applyCommand(this.bindings.getBinding(h),u,h,t),this.gamepadButtons.set(h,u))}}for(let[i,a]of this.gamepadButtons.entries())a&&!r.has(i)&&(this.applyCommand(this.bindings.getBinding(i),!1,i,t),this.gamepadButtons.set(i,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[r,i]of Object.entries(n.buttons)){if(i===void 0)continue;let a=this.touchButtons.get(r)??!1;i!==a&&(this.applyCommand(r,i,this.touchButtonCode(r),t),this.touchButtons.set(r,i))}}applyCommand(t,n,r,i){if(!t)return;let a=zR(t);if(a){let s=this.lookupButton(a);n?(s.press(r,i)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(r,i)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let r=et.None;for(let[i,a]of Object.entries(MR)){let s=this.sample(i,t,n);(s.fraction>0||s.active||s.wasPressed)&&(r|=a)}return r}lookupButton(t){let n=this.buttons.get(t);return n||(n=new Fc,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,r){return this.lookupButton(t).sample(n,r)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var ya=class{constructor(t,n=new Fn(t)){this.queued=[];this.controller=n}captureFrame(t,n,r){let i=this.controller.buildCommand(t,n,r),a=this.controller.consumeConsoleCommands(),s={command:i,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var wa={x:0,y:0,z:0};function LR(e){let t=new wi(e.engine.trace),n=new yi,r=new Nu,i=new aa(e);i.setView(n);let a=new ca,s=new ha,o=new fa,l=new _a,c=new Ir(new ma),u,h,m=new Cn,_,g=!1,y=Cd(e,{get tickRate(){return 10},get frameTimeMs(){return _?.timeMs??0},get serverFrame(){return i.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return m},getClientName:v=>`Player ${v}`,getKeyBinding:v=>`[${v}]`,get inAutoDemo(){return g}}),w=Id(y),M=new pa({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return T}}),x=new da(a,M);i.setCallbacks({onCenterPrint:v=>w.ParseCenterPrint(v,0,!1),onPrint:(v,k)=>w.NotifyMessage(0,k,!1),onConfigString:(v,k)=>{m.set(v,k),w.ParseConfigString(v,k)},onServerData:(v,k)=>{k&&k>0?r.setFrameDuration(1e3/k):r.setFrameDuration(100)}}),r.setHandler(i);let p,E,b,T=90,z=!1;if(e.host){h=new Or(a,e.host),u=new ua(a,h,e.host);let v=new Map;if(e.host.cvars){for(let k of e.host.cvars.list())v.set(k.name,{value:k.string,setValue:O=>e.host.cvars.setValue(k.name,O)});c.loadCvars(v)}}if(e.host?.commands&&(e.host.commands.register("playdemo",v=>{if(v.length<1){console.log("usage: playdemo <filename>");return}let k=v[0];console.log(`playdemo: ${k}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let v=Fd();console.log(`Crosshair changed to index ${v}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{z=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{z=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():u&&a.pushMenu(u.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",v=>{if(v.length<1){console.log("usage: connect <address>");return}let k=v[0];console.log(`Connecting to ${k}...`),M.connect(k).catch(O=>{console.error("Failed to connect:",O),o.show("Connection Failed",O instanceof Error?O.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{M.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:ir.Archive,onChange:k=>{let O=k.number;isNaN(O)||(T=Math.max(1,Math.min(179,O)))},description:"Field of view"});let v=e.host.cvars.get("fov");if(v){let k=v.number;isNaN(k)||(T=Math.max(1,Math.min(179,k)))}}return{loadingScreen:s,errorDialog:o,init(v){this.Init(v)},Init(v){_=v,v?.state&&t.setAuthoritative(v),w.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),Yf(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(v){return a.isActive(),M.isConnected()&&M.sendCommand(v),t.enqueueCommand(v)},handleInput(v,k){if(!a.isActive())return!1;if(!k)return!0;let O=v.toLowerCase();return O==="arrowup"||O==="w"?a.handleInput("up"):O==="arrowdown"||O==="s"?a.handleInput("down"):O==="arrowleft"||O==="a"?a.handleInput("left"):O==="arrowright"||O==="d"?a.handleInput("right"):O==="enter"||O===" "?a.handleInput("select"):O==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:v.length===1?a.handleInput("char",v):v==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let v=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));c.saveCvars(v)}}else u&&a.pushMenu(u.createPauseMenu())},createMainMenu(v,k,O,j,V){let q=new oa(a,k,O,j,V),we=h;if(!we){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");we=new Or(a,e.host)}let Me=e.engine.assets,ft={findByExtension:Zt=>Me?Me.listFiles(Zt):[]},Fr=new la(a,ft,Zt=>{console.log(`Starting map: ${Zt}`),e.host?.commands.execute(`map ${Zt}`)}),Qf=new sa(a,q,{...v,optionsFactory:we,mapsFactory:Fr,multiplayerFactory:x,onSetDifficulty:Zt=>{e.host?.cvars&&e.host.cvars.setValue("skill",Zt.toString())}});return{menuSystem:a,factory:Qf}},render(v){let k=r.getState(),O=[];k===Ls.Playing?p=i.getPredictionState():(v.latest?.state&&(t.setAuthoritative(v.latest),_=v.latest),v.previous?.state&&v.latest?.state?(p=mn(v.previous.state,v.latest.state,v.alpha),v.latest.state.packetEntities&&v.previous.state.packetEntities&&(O=qf(v.latest.state.packetEntities,v.previous.state.packetEntities,v.alpha,m,e))):p=v.latest?.state??v.previous?.state??t.getPredictedState());let j=v.latest&&v.previous?Math.max(0,v.latest.timeMs-v.previous.timeMs):0;E=n.sample(p,j);let V={};if(p){let{origin:q,viewAngles:we}=p;b=new Yl,b.position=oe.fromValues(q.x,q.y,q.z);let Me=E?.offset??{x:0,y:0,z:0};oe.add(b.position,b.position,[Me.x,Me.y,Me.z]);let ft=E?.angles??{x:0,y:0,z:0};b.angles=oe.fromValues(we.x+ft.x,we.y+ft.y,we.z+ft.z),b.fov=z?40:T,b.aspect=4/3,e.engine.renderer&&(b.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&b){let q;if(e.engine.assets){let we=m.getModelName(1);if(we){let Me=e.engine.assets.getMap(we)}}e.engine.renderer.renderFrame({camera:b,world:q,dlights:[]},O)}if(e.engine.renderer&&p&&p.client){let q=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},we=v.latest?.timeMs??0;this.DrawHUD(q,we)}return V},DrawHUD(v,k){if(!e.engine.renderer)return;let O=e.engine.renderer,j=O.width,V=O.height;if(p&&p.client){let q={origin:p.origin,velocity:p.velocity,viewAngles:p.viewAngles,onGround:ct(p.pmFlags,Be.OnGround),waterLevel:p.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:p.damageAlpha??0,damageIndicators:p.damageIndicators??[],blend:p.blend??[0,0,0,0],pickupIcon:p.pickupIcon,centerPrint:void 0,notify:void 0,stats:p.stats?[...p.stats]:new Array(32).fill(0),kick_angles:wa,kick_origin:wa,gunoffset:wa,gunangles:wa,gunindex:0,pm_type:p.pm_type??0,pm_time:p.pm_time??0,pm_flags:p.pmFlags,gun_frame:p.gun_frame??0,rdflags:p.rdflags??0,fov:p.fov??90};q.stats[He.STAT_HEALTH]=p.health??0,q.stats[He.STAT_AMMO]=p.ammo??0,q.stats[He.STAT_ARMOR]=p.armor??0,O.begin2D(),w.DrawHUD(0,null,{x:0,y:0,width:j,height:V},{x:0,y:0,width:j,height:V},1,0,q),O.end2D()}a.isActive()&&jf(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),p&&p.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,p.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(w.Shutdown(),_=void 0,p=void 0,e.host?.cvars){let v=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));c.saveCvars(v)}},get prediction(){return t},get lastRendered(){return p},get view(){return n},get lastView(){return E},get camera(){return b},demoPlayback:r,ParseCenterPrint(v){w.ParseCenterPrint(v,0,!1)},ParseNotify(v){w.NotifyMessage(0,v,!1)},showSubtitle(v,k){w.ShowSubtitle(v,k)},ParseConfigString(v,k){m.set(v,k),w.ParseConfigString(v,k)},demoHandler:i,multiplayer:M,configStrings:m}}return i0(NR);})();
|
|
169
|
+
}`;var Kl=class{constructor(){this._position=se.create(),this._angles=se.create(),this._bobAngles=se.create(),this._bobOffset=se.create(),this._kickAngles=se.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=re.create(),this._projectionMatrix=re.create(),this._viewProjectionMatrix=re.create(),this._dirty=!0}get position(){return this._position}set position(e){se.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){se.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){se.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){se.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){se.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=re.create();return re.perspective(t,e*Cn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;re.perspective(this._projectionMatrix,this._fov*Cn,this._aspect,this._near,this._far);let e=re.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],r=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,i=t*Cn,a=n*Cn,s=r*Cn,o=re.create();re.identity(o),re.rotateZ(o,o,-a),re.rotateY(o,o,-i),re.rotateX(o,o,-s);let l=re.create();re.multiply(l,e,o);let c=se.add(se.create(),this._position,this._bobOffset),u=se.negate(se.create(),c),h=se.create();se.transformMat4(h,u,o);let m=se.fromValues(h[1]||0,h[2]||0,h[0]||0);re.copy(this._viewMatrix,l),this._viewMatrix[12]=m[0],this._viewMatrix[13]=m[1],this._viewMatrix[14]=m[2],re.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var R_=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>2097152)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new Ba(t)}}reset(){this.offset=0}getOffset(){return this.offset}},z_=4,qc=0,Jc=1,L_=2;function tn(e){let t=e.length;for(;--t>=0;)e[t]=0}var N_=0,$l=1,O_=2,I_=3,C_=258,Qa=29,jn=256,Hn=jn+1+Qa,Jt=30,es=19,Xl=2*Hn+1,Ot=15,ba=16,P_=7,ts=256,Yl=16,Zl=17,jl=18,Ha=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),Hr=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),F_=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),ql=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),D_=512,st=new Array((Hn+2)*2);tn(st);var Un=new Array(Jt*2);tn(Un);var Vn=new Array(D_);tn(Vn);var Wn=new Array(C_-I_+1);tn(Wn);var ns=new Array(Qa);tn(ns);var Vr=new Array(Jt);tn(Vr);function Ta(e,t,n,r,i){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=r,this.max_length=i,this.has_stree=e&&e.length}var Jl,Ql,eu;function Ma(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var tu=e=>e<256?Vn[e]:Vn[256+(e>>>7)],Kn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Re=(e,t,n)=>{e.bi_valid>ba-n?(e.bi_buf|=t<<e.bi_valid&65535,Kn(e,e.bi_buf),e.bi_buf=t>>ba-e.bi_valid,e.bi_valid+=n-ba):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},Ze=(e,t,n)=>{Re(e,n[t*2],n[t*2+1])},nu=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},U_=e=>{e.bi_valid===16?(Kn(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=e.bi_buf&255,e.bi_buf>>=8,e.bi_valid-=8)},B_=(e,t)=>{let n=t.dyn_tree,r=t.max_code,i=t.stat_desc.static_tree,a=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,o=t.stat_desc.extra_base,l=t.stat_desc.max_length,c,u,h,m,_,g,A=0;for(m=0;m<=Ot;m++)e.bl_count[m]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Xl;c++)u=e.heap[c],m=n[n[u*2+1]*2+1]+1,m>l&&(m=l,A++),n[u*2+1]=m,!(u>r)&&(e.bl_count[m]++,_=0,u>=o&&(_=s[u-o]),g=n[u*2],e.opt_len+=g*(m+_),a&&(e.static_len+=g*(i[u*2+1]+_)));if(A!==0){do{for(m=l-1;e.bl_count[m]===0;)m--;e.bl_count[m]--,e.bl_count[m+1]+=2,e.bl_count[l]--,A-=2}while(A>0);for(m=l;m!==0;m--)for(u=e.bl_count[m];u!==0;)h=e.heap[--c],!(h>r)&&(n[h*2+1]!==m&&(e.opt_len+=(m-n[h*2+1])*n[h*2],n[h*2+1]=m),u--)}},ru=(e,t,n)=>{let r=new Array(Ot+1),i=0,a,s;for(a=1;a<=Ot;a++)i=i+n[a-1]<<1,r[a]=i;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=nu(r[o]++,o))}},G_=()=>{let e,t,n,r,i,a=new Array(Ot+1);for(n=0,r=0;r<Qa-1;r++)for(ns[r]=n,e=0;e<1<<Ha[r];e++)Wn[n++]=r;for(Wn[n-1]=r,i=0,r=0;r<16;r++)for(Vr[r]=i,e=0;e<1<<Hr[r];e++)Vn[i++]=r;for(i>>=7;r<Jt;r++)for(Vr[r]=i<<7,e=0;e<1<<Hr[r]-7;e++)Vn[256+i++]=r;for(t=0;t<=Ot;t++)a[t]=0;for(e=0;e<=143;)st[e*2+1]=8,e++,a[8]++;for(;e<=255;)st[e*2+1]=9,e++,a[9]++;for(;e<=279;)st[e*2+1]=7,e++,a[7]++;for(;e<=287;)st[e*2+1]=8,e++,a[8]++;for(ru(st,Hn+1,a),e=0;e<Jt;e++)Un[e*2+1]=5,Un[e*2]=nu(e,5);Jl=new Ta(st,Ha,jn+1,Hn,Ot),Ql=new Ta(Un,Hr,0,Jt,Ot),eu=new Ta(new Array(0),F_,0,es,P_)},iu=e=>{let t;for(t=0;t<Hn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Jt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<es;t++)e.bl_tree[t*2]=0;e.dyn_ltree[ts*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},au=e=>{e.bi_valid>8?Kn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Qc=(e,t,n,r)=>{let i=t*2,a=n*2;return e[i]<e[a]||e[i]===e[a]&&r[t]<=r[n]},Ra=(e,t,n)=>{let r=e.heap[n],i=n<<1;for(;i<=e.heap_len&&(i<e.heap_len&&Qc(t,e.heap[i+1],e.heap[i],e.depth)&&i++,!Qc(t,r,e.heap[i],e.depth));)e.heap[n]=e.heap[i],n=i,i<<=1;e.heap[n]=r},el=(e,t,n)=>{let r,i,a=0,s,o;if(e.sym_next!==0)do r=e.pending_buf[e.sym_buf+a++]&255,r+=(e.pending_buf[e.sym_buf+a++]&255)<<8,i=e.pending_buf[e.sym_buf+a++],r===0?Ze(e,i,t):(s=Wn[i],Ze(e,s+jn+1,t),o=Ha[s],o!==0&&(i-=ns[s],Re(e,i,o)),r--,s=tu(r),Ze(e,s,n),o=Hr[s],o!==0&&(r-=Vr[s],Re(e,r,o)));while(a<e.sym_next);Ze(e,ts,t)},Va=(e,t)=>{let n=t.dyn_tree,r=t.stat_desc.static_tree,i=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=Xl,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=l=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=l<2?++l:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,i&&(e.static_len-=r[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Ra(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ra(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,Ra(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],B_(e,t),ru(n,l,e.bl_count)},tl=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,r=0;r<=n;r++)a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==i&&e.bl_tree[a*2]++,e.bl_tree[Yl*2]++):o<=10?e.bl_tree[Zl*2]++:e.bl_tree[jl*2]++,o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},nl=(e,t,n)=>{let r,i=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),r=0;r<=n;r++)if(a=s,s=t[(r+1)*2+1],!(++o<l&&a===s)){if(o<c)do Ze(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==i&&(Ze(e,a,e.bl_tree),o--),Ze(e,Yl,e.bl_tree),Re(e,o-3,2)):o<=10?(Ze(e,Zl,e.bl_tree),Re(e,o-3,3)):(Ze(e,jl,e.bl_tree),Re(e,o-11,7));o=0,i=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},H_=e=>{let t;for(tl(e,e.dyn_ltree,e.l_desc.max_code),tl(e,e.dyn_dtree,e.d_desc.max_code),Va(e,e.bl_desc),t=es-1;t>=3&&e.bl_tree[ql[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},V_=(e,t,n,r)=>{let i;for(Re(e,t-257,5),Re(e,n-1,5),Re(e,r-4,4),i=0;i<r;i++)Re(e,e.bl_tree[ql[i]*2+1],3);nl(e,e.dyn_ltree,t-1),nl(e,e.dyn_dtree,n-1)},W_=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return qc;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Jc;for(n=32;n<jn;n++)if(e.dyn_ltree[n*2]!==0)return Jc;return qc},rl=!1,K_=e=>{rl||(G_(),rl=!0),e.l_desc=new Ma(e.dyn_ltree,Jl),e.d_desc=new Ma(e.dyn_dtree,Ql),e.bl_desc=new Ma(e.bl_tree,eu),e.bi_buf=0,e.bi_valid=0,iu(e)},su=(e,t,n,r)=>{Re(e,(N_<<1)+(r?1:0),3),au(e),Kn(e,n),Kn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},$_=e=>{Re(e,$l<<1,3),Ze(e,ts,st),U_(e)},X_=(e,t,n,r)=>{let i,a,s=0;e.level>0?(e.strm.data_type===L_&&(e.strm.data_type=W_(e)),Va(e,e.l_desc),Va(e,e.d_desc),s=H_(e),i=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=i&&(i=a)):i=a=n+5,n+4<=i&&t!==-1?su(e,t,n,r):e.strategy===z_||a===i?(Re(e,($l<<1)+(r?1:0),3),el(e,st,Un)):(Re(e,(O_<<1)+(r?1:0),3),V_(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),el(e,e.dyn_ltree,e.dyn_dtree)),iu(e),r&&au(e)},Y_=(e,t,n)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,t===0?e.dyn_ltree[n*2]++:(e.matches++,t--,e.dyn_ltree[(Wn[n]+jn+1)*2]++,e.dyn_dtree[tu(t)*2]++),e.sym_next===e.sym_end),Z_=K_,j_=su,q_=X_,J_=Y_,Q_=$_,eg={_tr_init:Z_,_tr_stored_block:j_,_tr_flush_block:q_,_tr_tally:J_,_tr_align:Q_},tg=(e,t,n,r)=>{let i=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do i=i+t[r++]|0,a=a+i|0;while(--s);i%=65521,a%=65521}return i|a<<16|0},$n=tg,ng=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},rg=new Uint32Array(ng()),ig=(e,t,n,r)=>{let i=rg,a=r+n;e^=-1;for(let s=r;s<a;s++)e=e>>>8^i[(e^t[s])&255];return e^-1},Ae=ig,Pt={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Ut={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},{_tr_init:ag,_tr_stored_block:Wa,_tr_flush_block:sg,_tr_tally:pt,_tr_align:og}=eg,{Z_NO_FLUSH:vt,Z_PARTIAL_FLUSH:cg,Z_FULL_FLUSH:lg,Z_FINISH:De,Z_BLOCK:il,Z_OK:ke,Z_STREAM_END:al,Z_STREAM_ERROR:je,Z_DATA_ERROR:ug,Z_BUF_ERROR:za,Z_DEFAULT_COMPRESSION:dg,Z_FILTERED:mg,Z_HUFFMAN_ONLY:Fr,Z_RLE:hg,Z_FIXED:fg,Z_DEFAULT_STRATEGY:_g,Z_UNKNOWN:gg,Z_DEFLATED:ni}=Ut,pg=9,vg=15,yg=8,wg=29,Sg=256,Ka=Sg+1+wg,Ag=30,xg=19,Eg=2*Ka+1,kg=15,Z=3,gt=258,qe=gt+Z+1,bg=32,Qt=42,rs=57,$a=69,Xa=73,Ya=91,Za=103,It=113,Fn=666,Me=1,nn=2,Ft=3,rn=4,Tg=3,Ct=(e,t)=>(e.msg=Pt[t],t),sl=e=>e*2-(e>4?9:0),_t=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Mg=e=>{let t,n,r,i=e.w_size;t=e.hash_size,r=t;do n=e.head[--r],e.head[r]=n>=i?n-i:0;while(--t);t=i,r=t;do n=e.prev[--r],e.prev[r]=n>=i?n-i:0;while(--t)},Rg=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,yt=Rg,Ne=e=>{let t=e.state,n=t.pending;n>e.avail_out&&(n=e.avail_out),n!==0&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,t.pending===0&&(t.pending_out=0))},Oe=(e,t)=>{sg(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ne(e.strm)},q=(e,t)=>{e.pending_buf[e.pending++]=t},Pn=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},ja=(e,t,n,r)=>{let i=e.avail_in;return i>r&&(i=r),i===0?0:(e.avail_in-=i,t.set(e.input.subarray(e.next_in,e.next_in+i),n),e.state.wrap===1?e.adler=$n(e.adler,t,i,n):e.state.wrap===2&&(e.adler=Ae(e.adler,t,i,n)),e.next_in+=i,e.total_in+=i,i)},ou=(e,t)=>{let n=e.max_chain_length,r=e.strstart,i,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-qe?e.strstart-(e.w_size-qe):0,c=e.window,u=e.w_mask,h=e.prev,m=e.strstart+gt,_=c[r+s-1],g=c[r+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(i=t,!(c[i+s]!==g||c[i+s-1]!==_||c[i]!==c[r]||c[++i]!==c[r+1])){r+=2,i++;do;while(c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&c[++r]===c[++i]&&r<m);if(a=gt-(m-r),r=m-gt,a>s){if(e.match_start=t,s=a,a>=o)break;_=c[r+s-1],g=c[r+s]}}while((t=h[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},en=e=>{let t=e.w_size,n,r,i;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-qe)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Mg(e),r+=t),e.strm.avail_in===0)break;if(n=ja(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=n,e.lookahead+e.insert>=Z)for(i=e.strstart-e.insert,e.ins_h=e.window[i],e.ins_h=yt(e,e.ins_h,e.window[i+1]);e.insert&&(e.ins_h=yt(e,e.ins_h,e.window[i+Z-1]),e.prev[i&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=i,i++,e.insert--,!(e.lookahead+e.insert<Z)););}while(e.lookahead<qe&&e.strm.avail_in!==0)},cu=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,r,i,a,s=0,o=e.strm.avail_in;do{if(r=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,i=e.strstart-e.block_start,r>i+e.strm.avail_in&&(r=i+e.strm.avail_in),r>a&&(r=a),r<n&&(r===0&&t!==De||t===vt||r!==i+e.strm.avail_in)))break;s=t===De&&r===i+e.strm.avail_in?1:0,Wa(e,0,0,s),e.pending_buf[e.pending-4]=r,e.pending_buf[e.pending-3]=r>>8,e.pending_buf[e.pending-2]=~r,e.pending_buf[e.pending-1]=~r>>8,Ne(e.strm),i&&(i>r&&(i=r),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,r-=i),r&&(ja(e.strm,e.strm.output,e.strm.next_out,r),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r)}while(s===0);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),s?rn:t!==vt&&t!==De&&e.strm.avail_in===0&&e.strstart===e.block_start?nn:(a=e.window_size-e.strstart,e.strm.avail_in>a&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,a+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),a>e.strm.avail_in&&(a=e.strm.avail_in),a&&(ja(e.strm,e.window,e.strstart,a),e.strstart+=a,e.insert+=a>e.w_size-e.insert?e.w_size-e.insert:a),e.high_water<e.strstart&&(e.high_water=e.strstart),a=e.bi_valid+42>>3,a=e.pending_buf_size-a>65535?65535:e.pending_buf_size-a,n=a>e.w_size?e.w_size:a,i=e.strstart-e.block_start,(i>=n||(i||t===De)&&t!==vt&&e.strm.avail_in===0&&i<=a)&&(r=i>a?a:i,s=t===De&&e.strm.avail_in===0&&r===i?1:0,Wa(e,e.block_start,r,s),e.block_start+=r,Ne(e.strm)),s?Ft:Me)},La=(e,t)=>{let n,r;for(;;){if(e.lookahead<qe){if(en(e),e.lookahead<qe&&t===vt)return Me;if(e.lookahead===0)break}if(n=0,e.lookahead>=Z&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Z-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),n!==0&&e.strstart-n<=e.w_size-qe&&(e.match_length=ou(e,n)),e.match_length>=Z)if(r=pt(e,e.strstart-e.match_start,e.match_length-Z),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=Z){e.match_length--;do e.strstart++,e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Z-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=yt(e,e.ins_h,e.window[e.strstart+1]);else r=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(Oe(e,!1),e.strm.avail_out===0))return Me}return e.insert=e.strstart<Z-1?e.strstart:Z-1,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:rn):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Me:nn},Zt=(e,t)=>{let n,r,i;for(;;){if(e.lookahead<qe){if(en(e),e.lookahead<qe&&t===vt)return Me;if(e.lookahead===0)break}if(n=0,e.lookahead>=Z&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Z-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=Z-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-qe&&(e.match_length=ou(e,n),e.match_length<=5&&(e.strategy===mg||e.match_length===Z&&e.strstart-e.match_start>4096)&&(e.match_length=Z-1)),e.prev_length>=Z&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-Z,r=pt(e,e.strstart-1-e.prev_match,e.prev_length-Z),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=i&&(e.ins_h=yt(e,e.ins_h,e.window[e.strstart+Z-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!==0);if(e.match_available=0,e.match_length=Z-1,e.strstart++,r&&(Oe(e,!1),e.strm.avail_out===0))return Me}else if(e.match_available){if(r=pt(e,0,e.window[e.strstart-1]),r&&Oe(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Me}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=pt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<Z-1?e.strstart:Z-1,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:rn):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Me:nn},zg=(e,t)=>{let n,r,i,a,s=e.window;for(;;){if(e.lookahead<=gt){if(en(e),e.lookahead<=gt&&t===vt)return Me;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=Z&&e.strstart>0&&(i=e.strstart-1,r=s[i],r===s[++i]&&r===s[++i]&&r===s[++i])){a=e.strstart+gt;do;while(r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&r===s[++i]&&i<a);e.match_length=gt-(a-i),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=Z?(n=pt(e,1,e.match_length-Z),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Oe(e,!1),e.strm.avail_out===0))return Me}return e.insert=0,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:rn):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Me:nn},Lg=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(en(e),e.lookahead===0)){if(t===vt)return Me;break}if(e.match_length=0,n=pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Oe(e,!1),e.strm.avail_out===0))return Me}return e.insert=0,t===De?(Oe(e,!0),e.strm.avail_out===0?Ft:rn):e.sym_next&&(Oe(e,!1),e.strm.avail_out===0)?Me:nn};function Ye(e,t,n,r,i){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=r,this.func=i}var Dn=[new Ye(0,0,0,0,cu),new Ye(4,4,8,4,La),new Ye(4,5,16,8,La),new Ye(4,6,32,32,La),new Ye(4,4,16,16,Zt),new Ye(8,16,32,32,Zt),new Ye(8,16,128,128,Zt),new Ye(8,32,128,256,Zt),new Ye(32,128,258,1024,Zt),new Ye(32,258,258,4096,Zt)],Ng=e=>{e.window_size=2*e.w_size,_t(e.head),e.max_lazy_match=Dn[e.level].max_lazy,e.good_match=Dn[e.level].good_length,e.nice_match=Dn[e.level].nice_length,e.max_chain_length=Dn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=Z-1,e.match_available=0,e.ins_h=0};function Og(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ni,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(Eg*2),this.dyn_dtree=new Uint16Array((2*Ag+1)*2),this.bl_tree=new Uint16Array((2*xg+1)*2),_t(this.dyn_ltree),_t(this.dyn_dtree),_t(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(kg+1),this.heap=new Uint16Array(2*Ka+1),_t(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Ka+1),_t(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var qn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Qt&&t.status!==rs&&t.status!==$a&&t.status!==Xa&&t.status!==Ya&&t.status!==Za&&t.status!==It&&t.status!==Fn?1:0},lu=e=>{if(qn(e))return Ct(e,je);e.total_in=e.total_out=0,e.data_type=gg;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?rs:t.wrap?Qt:It,e.adler=t.wrap===2?0:1,t.last_flush=-2,ag(t),ke},uu=e=>{let t=lu(e);return t===ke&&Ng(e.state),t},Ig=(e,t)=>qn(e)||e.state.wrap!==2?je:(e.state.gzhead=t,ke),du=(e,t,n,r,i,a)=>{if(!e)return je;let s=1;if(t===dg&&(t=6),r<0?(s=0,r=-r):r>15&&(s=2,r-=16),i<1||i>pg||n!==ni||r<8||r>15||t<0||t>9||a<0||a>fg||r===8&&s!==1)return Ct(e,je);r===8&&(r=9);let o=new Og;return e.state=o,o.strm=e,o.status=Qt,o.wrap=s,o.gzhead=null,o.w_bits=r,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=i+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+Z-1)/Z),o.window=new Uint8Array(o.w_size*2),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<i+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=(o.lit_bufsize-1)*3,o.level=t,o.strategy=a,o.method=n,uu(e)},Cg=(e,t)=>du(e,t,ni,vg,yg,_g),Pg=(e,t)=>{if(qn(e)||t>il||t<0)return e?Ct(e,je):je;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Fn&&t!==De)return Ct(e,e.avail_out===0?za:je);let r=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ne(e),e.avail_out===0)return n.last_flush=-1,ke}else if(e.avail_in===0&&sl(t)<=sl(r)&&t!==De)return Ct(e,za);if(n.status===Fn&&e.avail_in!==0)return Ct(e,za);if(n.status===Qt&&n.wrap===0&&(n.status=It),n.status===Qt){let i=ni+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Fr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,i|=a<<6,n.strstart!==0&&(i|=bg),i+=31-i%31,Pn(n,i),n.strstart!==0&&(Pn(n,e.adler>>>16),Pn(n,e.adler&65535)),e.adler=1,n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,ke}if(n.status===rs){if(e.adler=0,q(n,31),q(n,139),q(n,8),n.gzhead)q(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),q(n,n.gzhead.time&255),q(n,n.gzhead.time>>8&255),q(n,n.gzhead.time>>16&255),q(n,n.gzhead.time>>24&255),q(n,n.level===9?2:n.strategy>=Fr||n.level<2?4:0),q(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(q(n,n.gzhead.extra.length&255),q(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Ae(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=$a;else if(q(n,0),q(n,0),q(n,0),q(n,0),q(n,0),q(n,n.level===9?2:n.strategy>=Fr||n.level<2?4:0),q(n,Tg),n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,ke}if(n.status===$a){if(n.gzhead.extra){let i=n.pending,a=(n.gzhead.extra.length&65535)-n.gzindex;for(;n.pending+a>n.pending_buf_size;){let o=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+o),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex+=o,Ne(e),n.pending!==0)return n.last_flush=-1,ke;i=0,a-=o}let s=new Uint8Array(n.gzhead.extra);n.pending_buf.set(s.subarray(n.gzindex,n.gzindex+a),n.pending),n.pending+=a,n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Xa}if(n.status===Xa){if(n.gzhead.name){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i)),Ne(e),n.pending!==0)return n.last_flush=-1,ke;i=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=Ya}if(n.status===Ya){if(n.gzhead.comment){let i=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i)),Ne(e),n.pending!==0)return n.last_flush=-1,ke;i=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,q(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>i&&(e.adler=Ae(e.adler,n.pending_buf,n.pending-i,i))}n.status=Za}if(n.status===Za){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ne(e),n.pending!==0))return n.last_flush=-1,ke;q(n,e.adler&255),q(n,e.adler>>8&255),e.adler=0}if(n.status=It,Ne(e),n.pending!==0)return n.last_flush=-1,ke}if(e.avail_in!==0||n.lookahead!==0||t!==vt&&n.status!==Fn){let i=n.level===0?cu(n,t):n.strategy===Fr?Lg(n,t):n.strategy===hg?zg(n,t):Dn[n.level].func(n,t);if((i===Ft||i===rn)&&(n.status=Fn),i===Me||i===Ft)return e.avail_out===0&&(n.last_flush=-1),ke;if(i===nn&&(t===cg?og(n):t!==il&&(Wa(n,0,0,!1),t===lg&&(_t(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ne(e),e.avail_out===0))return n.last_flush=-1,ke}return t!==De?ke:n.wrap<=0?al:(n.wrap===2?(q(n,e.adler&255),q(n,e.adler>>8&255),q(n,e.adler>>16&255),q(n,e.adler>>24&255),q(n,e.total_in&255),q(n,e.total_in>>8&255),q(n,e.total_in>>16&255),q(n,e.total_in>>24&255)):(Pn(n,e.adler>>>16),Pn(n,e.adler&65535)),Ne(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ke:al)},Fg=e=>{if(qn(e))return je;let t=e.state.status;return e.state=null,t===It?Ct(e,ug):ke},Dg=(e,t)=>{let n=t.length;if(qn(e))return je;let r=e.state,i=r.wrap;if(i===2||i===1&&r.status!==Qt||r.lookahead)return je;if(i===1&&(e.adler=$n(e.adler,t,n,0)),r.wrap=0,n>=r.w_size){i===0&&(_t(r.head),r.strstart=0,r.block_start=0,r.insert=0);let l=new Uint8Array(r.w_size);l.set(t.subarray(n-r.w_size,n),0),t=l,n=r.w_size}let a=e.avail_in,s=e.next_in,o=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,en(r);r.lookahead>=Z;){let l=r.strstart,c=r.lookahead-(Z-1);do r.ins_h=yt(r,r.ins_h,r.window[l+Z-1]),r.prev[l&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=l,l++;while(--c);r.strstart=l,r.lookahead=Z-1,en(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=Z-1,r.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,r.wrap=i,ke},Ug=Cg,Bg=du,Gg=uu,Hg=lu,Vg=Ig,Wg=Pg,Kg=Fg,$g=Dg,Xg="pako deflate (from Nodeca project)",Bn={deflateInit:Ug,deflateInit2:Bg,deflateReset:Gg,deflateResetKeep:Hg,deflateSetHeader:Vg,deflate:Wg,deflateEnd:Kg,deflateSetDictionary:$g,deflateInfo:Xg},Yg=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Zg=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let n=t.shift();if(n){if(typeof n!="object")throw new TypeError(n+"must be non-object");for(let r in n)Yg(n,r)&&(e[r]=n[r])}}return e},jg=e=>{let t=0;for(let r=0,i=e.length;r<i;r++)t+=e[r].length;let n=new Uint8Array(t);for(let r=0,i=0,a=e.length;r<a;r++){let s=e[r];n.set(s,i),i+=s.length}return n},ri={assign:Zg,flattenChunks:jg},mu=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{mu=!1}var Xn=new Uint8Array(256);for(let e=0;e<256;e++)Xn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Xn[254]=Xn[254]=1;var qg=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,r,i,a,s=e.length,o=0;for(i=0;i<s;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,i=0;a<o;i++)n=e.charCodeAt(i),(n&64512)===55296&&i+1<s&&(r=e.charCodeAt(i+1),(r&64512)===56320&&(n=65536+(n-55296<<10)+(r-56320),i++)),n<128?t[a++]=n:n<2048?(t[a++]=192|n>>>6,t[a++]=128|n&63):n<65536?(t[a++]=224|n>>>12,t[a++]=128|n>>>6&63,t[a++]=128|n&63):(t[a++]=240|n>>>18,t[a++]=128|n>>>12&63,t[a++]=128|n>>>6&63,t[a++]=128|n&63);return t},Jg=(e,t)=>{if(t<65534&&e.subarray&&mu)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let r=0;r<t;r++)n+=String.fromCharCode(e[r]);return n},Qg=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let r,i,a=new Array(n*2);for(i=0,r=0;r<n;){let s=e[r++];if(s<128){a[i++]=s;continue}let o=Xn[s];if(o>4){a[i++]=65533,r+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&r<n;)s=s<<6|e[r++]&63,o--;if(o>1){a[i++]=65533;continue}s<65536?a[i++]=s:(s-=65536,a[i++]=55296|s>>10&1023,a[i++]=56320|s&1023)}return Jg(a,i)},ep=(e,t)=>{t=t||e.length,t>e.length&&(t=e.length);let n=t-1;for(;n>=0&&(e[n]&192)===128;)n--;return n<0||n===0?t:n+Xn[e[n]]>t?n:t},Yn={string2buf:qg,buf2string:Qg,utf8border:ep};function tp(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var hu=tp,fu=Object.prototype.toString,{Z_NO_FLUSH:np,Z_SYNC_FLUSH:rp,Z_FULL_FLUSH:ip,Z_FINISH:ap,Z_OK:Wr,Z_STREAM_END:sp,Z_DEFAULT_COMPRESSION:op,Z_DEFAULT_STRATEGY:cp,Z_DEFLATED:lp}=Ut;function Jn(e){this.options=ri.assign({level:op,method:lp,chunkSize:16384,windowBits:15,memLevel:8,strategy:cp},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new hu,this.strm.avail_out=0;let n=Bn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Wr)throw new Error(Pt[n]);if(t.header&&Bn.deflateSetHeader(this.strm,t.header),t.dictionary){let r;if(typeof t.dictionary=="string"?r=Yn.string2buf(t.dictionary):fu.call(t.dictionary)==="[object ArrayBuffer]"?r=new Uint8Array(t.dictionary):r=t.dictionary,n=Bn.deflateSetDictionary(this.strm,r),n!==Wr)throw new Error(Pt[n]);this._dict_set=!0}}Jn.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?ap:np,typeof e=="string"?n.input=Yn.string2buf(e):fu.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){if(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),(a===rp||a===ip)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(i=Bn.deflate(n,a),i===sp)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),i=Bn.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Wr;if(n.avail_out===0){this.onData(n.output);continue}if(a>0&&n.next_out>0){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(n.avail_in===0)break}return!0};Jn.prototype.onData=function(e){this.chunks.push(e)};Jn.prototype.onEnd=function(e){e===Wr&&(this.result=ri.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function is(e,t){let n=new Jn(t);if(n.push(e,!0),n.err)throw n.msg||Pt[n.err];return n.result}function up(e,t){return t=t||{},t.raw=!0,is(e,t)}function dp(e,t){return t=t||{},t.gzip=!0,is(e,t)}var mp=Jn,hp=is,fp=up,_p=dp,gp=Ut,pp={Deflate:mp,deflate:hp,deflateRaw:fp,gzip:_p,constants:gp},Dr=16209,vp=16191,yp=function(t,n){let r,i,a,s,o,l,c,u,h,m,_,g,A,p,S,b,E,v,w,T,k,z,N,R,y=t.state;r=t.next_in,N=t.input,i=r+(t.avail_in-5),a=t.next_out,R=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=y.dmax,c=y.wsize,u=y.whave,h=y.wnext,m=y.window,_=y.hold,g=y.bits,A=y.lencode,p=y.distcode,S=(1<<y.lenbits)-1,b=(1<<y.distbits)-1;e:do{g<15&&(_+=N[r++]<<g,g+=8,_+=N[r++]<<g,g+=8),E=A[_&S];t:for(;;){if(v=E>>>24,_>>>=v,g-=v,v=E>>>16&255,v===0)R[a++]=E&65535;else if(v&16){w=E&65535,v&=15,v&&(g<v&&(_+=N[r++]<<g,g+=8),w+=_&(1<<v)-1,_>>>=v,g-=v),g<15&&(_+=N[r++]<<g,g+=8,_+=N[r++]<<g,g+=8),E=p[_&b];n:for(;;){if(v=E>>>24,_>>>=v,g-=v,v=E>>>16&255,v&16){if(T=E&65535,v&=15,g<v&&(_+=N[r++]<<g,g+=8,g<v&&(_+=N[r++]<<g,g+=8)),T+=_&(1<<v)-1,T>l){t.msg="invalid distance too far back",y.mode=Dr;break e}if(_>>>=v,g-=v,v=a-s,T>v){if(v=T-v,v>u&&y.sane){t.msg="invalid distance too far back",y.mode=Dr;break e}if(k=0,z=m,h===0){if(k+=c-v,v<w){w-=v;do R[a++]=m[k++];while(--v);k=a-T,z=R}}else if(h<v){if(k+=c+h-v,v-=h,v<w){w-=v;do R[a++]=m[k++];while(--v);if(k=0,h<w){v=h,w-=v;do R[a++]=m[k++];while(--v);k=a-T,z=R}}}else if(k+=h-v,v<w){w-=v;do R[a++]=m[k++];while(--v);k=a-T,z=R}for(;w>2;)R[a++]=z[k++],R[a++]=z[k++],R[a++]=z[k++],w-=3;w&&(R[a++]=z[k++],w>1&&(R[a++]=z[k++]))}else{k=a-T;do R[a++]=R[k++],R[a++]=R[k++],R[a++]=R[k++],w-=3;while(w>2);w&&(R[a++]=R[k++],w>1&&(R[a++]=R[k++]))}}else if((v&64)===0){E=p[(E&65535)+(_&(1<<v)-1)];continue n}else{t.msg="invalid distance code",y.mode=Dr;break e}break}}else if((v&64)===0){E=A[(E&65535)+(_&(1<<v)-1)];continue t}else if(v&32){y.mode=vp;break e}else{t.msg="invalid literal/length code",y.mode=Dr;break e}break}}while(r<i&&a<o);w=g>>3,r-=w,g-=w<<3,_&=(1<<g)-1,t.next_in=r,t.next_out=a,t.avail_in=r<i?5+(i-r):5-(r-i),t.avail_out=a<o?257+(o-a):257-(a-o),y.hold=_,y.bits=g},jt=15,ol=852,cl=592,ll=0,Na=1,ul=2,wp=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Sp=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Ap=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),xp=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Ep=(e,t,n,r,i,a,s,o)=>{let l=o.bits,c=0,u=0,h=0,m=0,_=0,g=0,A=0,p=0,S=0,b=0,E,v,w,T,k,z=null,N,R=new Uint16Array(jt+1),y=new Uint16Array(jt+1),L=null,C,W,le;for(c=0;c<=jt;c++)R[c]=0;for(u=0;u<r;u++)R[t[n+u]]++;for(_=l,m=jt;m>=1&&R[m]===0;m--);if(_>m&&(_=m),m===0)return i[a++]=1<<24|64<<16|0,i[a++]=1<<24|64<<16|0,o.bits=1,0;for(h=1;h<m&&R[h]===0;h++);for(_<h&&(_=h),p=1,c=1;c<=jt;c++)if(p<<=1,p-=R[c],p<0)return-1;if(p>0&&(e===ll||m!==1))return-1;for(y[1]=0,c=1;c<jt;c++)y[c+1]=y[c]+R[c];for(u=0;u<r;u++)t[n+u]!==0&&(s[y[t[n+u]]++]=u);if(e===ll?(z=L=s,N=20):e===Na?(z=wp,L=Sp,N=257):(z=Ap,L=xp,N=0),b=0,u=0,c=h,k=a,g=_,A=0,w=-1,S=1<<_,T=S-1,e===Na&&S>ol||e===ul&&S>cl)return 1;for(;;){C=c-A,s[u]+1<N?(W=0,le=s[u]):s[u]>=N?(W=L[s[u]-N],le=z[s[u]-N]):(W=96,le=0),E=1<<c-A,v=1<<g,h=v;do v-=E,i[k+(b>>A)+v]=C<<24|W<<16|le|0;while(v!==0);for(E=1<<c-1;b&E;)E>>=1;if(E!==0?(b&=E-1,b+=E):b=0,u++,--R[c]===0){if(c===m)break;c=t[n+s[u]]}if(c>_&&(b&T)!==w){for(A===0&&(A=_),k+=h,g=c-A,p=1<<g;g+A<m&&(p-=R[g+A],!(p<=0));)g++,p<<=1;if(S+=1<<g,e===Na&&S>ol||e===ul&&S>cl)return 1;w=b&T,i[w]=_<<24|g<<16|k-a|0}}return b!==0&&(i[k+b]=c-A<<24|64<<16|0),o.bits=_,0},Gn=Ep,kp=0,_u=1,gu=2,{Z_FINISH:dl,Z_BLOCK:bp,Z_TREES:Ur,Z_OK:Dt,Z_STREAM_END:Tp,Z_NEED_DICT:Mp,Z_STREAM_ERROR:Ue,Z_DATA_ERROR:pu,Z_MEM_ERROR:vu,Z_BUF_ERROR:Rp,Z_DEFLATED:ml}=Ut,ii=16180,hl=16181,fl=16182,_l=16183,gl=16184,pl=16185,vl=16186,yl=16187,wl=16188,Sl=16189,Kr=16190,at=16191,Oa=16192,Al=16193,Ia=16194,xl=16195,El=16196,kl=16197,bl=16198,Br=16199,Gr=16200,Tl=16201,Ml=16202,Rl=16203,zl=16204,Ll=16205,Ca=16206,Nl=16207,Ol=16208,oe=16209,yu=16210,wu=16211,zp=852,Lp=592,Np=15,Op=Np,Il=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function Ip(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var Bt=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<ii||t.mode>wu?1:0},Su=e=>{if(Bt(e))return Ue;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=t.wrap&1),t.mode=ii,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(zp),t.distcode=t.distdyn=new Int32Array(Lp),t.sane=1,t.back=-1,Dt},Au=e=>{if(Bt(e))return Ue;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Su(e)},xu=(e,t)=>{let n;if(Bt(e))return Ue;let r=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Ue:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,Au(e))},Eu=(e,t)=>{if(!e)return Ue;let n=new Ip;e.state=n,n.strm=e,n.window=null,n.mode=ii;let r=xu(e,t);return r!==Dt&&(e.state=null),r},Cp=e=>Eu(e,Op),Cl=!0,Pa,Fa,Pp=e=>{if(Cl){Pa=new Int32Array(512),Fa=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(Gn(_u,e.lens,0,288,Pa,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Gn(gu,e.lens,0,32,Fa,0,e.work,{bits:5}),Cl=!1}e.lencode=Pa,e.lenbits=9,e.distcode=Fa,e.distbits=5},ku=(e,t,n,r)=>{let i,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),r>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(i=a.wsize-a.wnext,i>r&&(i=r),a.window.set(t.subarray(n-r,n-r+i),a.wnext),r-=i,r?(a.window.set(t.subarray(n-r,n),0),a.wnext=r,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=i))),0},Fp=(e,t)=>{let n,r,i,a,s,o,l,c,u,h,m,_,g,A,p=0,S,b,E,v,w,T,k,z,N=new Uint8Array(4),R,y,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Bt(e)||!e.output||!e.input&&e.avail_in!==0)return Ue;n=e.state,n.mode===at&&(n.mode=Oa),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,h=o,m=l,z=Dt;e:for(;;)switch(n.mode){case ii:if(n.wrap===0){n.mode=Oa;break}for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,N[0]=c&255,N[1]=c>>>8&255,n.check=Ae(n.check,N,2,0),c=0,u=0,n.mode=hl;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=oe;break}if((c&15)!==ml){e.msg="unknown compression method",n.mode=oe;break}if(c>>>=4,u-=4,k=(c&15)+8,n.wbits===0&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=oe;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Sl:at,c=0,u=0;break;case hl:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==ml){e.msg="unknown compression method",n.mode=oe;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=oe;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Ae(n.check,N,2,0)),c=0,u=0,n.mode=fl;case fl:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,N[2]=c>>>16&255,N[3]=c>>>24&255,n.check=Ae(n.check,N,4,0)),c=0,u=0,n.mode=_l;case _l:for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Ae(n.check,N,2,0)),c=0,u=0,n.mode=gl;case gl:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(N[0]=c&255,N[1]=c>>>8&255,n.check=Ae(n.check,N,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=pl;case pl:if(n.flags&1024&&(_=n.length,_>o&&(_=o),_&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(r.subarray(a,a+_),k)),n.flags&512&&n.wrap&4&&(n.check=Ae(n.check,r,_,a)),o-=_,a+=_,n.length-=_),n.length))break e;n.length=0,n.mode=vl;case vl:if(n.flags&2048){if(o===0)break e;_=0;do k=r[a+_++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k));while(k&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=Ae(n.check,r,_,a)),o-=_,a+=_,k)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=yl;case yl:if(n.flags&4096){if(o===0)break e;_=0;do k=r[a+_++],n.head&&k&&n.length<65536&&(n.head.comment+=String.fromCharCode(k));while(k&&_<o);if(n.flags&512&&n.wrap&4&&(n.check=Ae(n.check,r,_,a)),o-=_,a+=_,k)break e}else n.head&&(n.head.comment=null);n.mode=wl;case wl:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=oe;break}c=0,u=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=at;break;case Sl:for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}e.adler=n.check=Il(c),c=0,u=0,n.mode=Kr;case Kr:if(n.havedict===0)return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,Mp;e.adler=n.check=1,n.mode=at;case at:if(t===bp||t===Ur)break e;case Oa:if(n.last){c>>>=u&7,u-=u&7,n.mode=Ca;break}for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Al;break;case 1:if(Pp(n),n.mode=Br,t===Ur){c>>>=2,u-=2;break e}break;case 2:n.mode=El;break;case 3:e.msg="invalid block type",n.mode=oe}c>>>=2,u-=2;break;case Al:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=oe;break}if(n.length=c&65535,c=0,u=0,n.mode=Ia,t===Ur)break e;case Ia:n.mode=xl;case xl:if(_=n.length,_){if(_>o&&(_=o),_>l&&(_=l),_===0)break e;i.set(r.subarray(a,a+_),s),o-=_,a+=_,l-=_,s+=_,n.length-=_;break}n.mode=at;break;case El:for(;u<14;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.nlen=(c&31)+257,c>>>=5,u-=5,n.ndist=(c&31)+1,c>>>=5,u-=5,n.ncode=(c&15)+4,c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=oe;break}n.have=0,n.mode=kl;case kl:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.lens[L[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[L[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,R={bits:n.lenbits},z=Gn(kp,n.lens,0,19,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid code lengths set",n.mode=oe;break}n.have=0,n.mode=bl;case bl:for(;n.have<n.nlen+n.ndist;){for(;p=n.lencode[c&(1<<n.lenbits)-1],S=p>>>24,b=p>>>16&255,E=p&65535,!(S<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(E<16)c>>>=S,u-=S,n.lens[n.have++]=E;else{if(E===16){for(y=S+2;u<y;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(c>>>=S,u-=S,n.have===0){e.msg="invalid bit length repeat",n.mode=oe;break}k=n.lens[n.have-1],_=3+(c&3),c>>>=2,u-=2}else if(E===17){for(y=S+3;u<y;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=S,u-=S,k=0,_=3+(c&7),c>>>=3,u-=3}else{for(y=S+7;u<y;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=S,u-=S,k=0,_=11+(c&127),c>>>=7,u-=7}if(n.have+_>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=oe;break}for(;_--;)n.lens[n.have++]=k}}if(n.mode===oe)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=oe;break}if(n.lenbits=9,R={bits:n.lenbits},z=Gn(_u,n.lens,0,n.nlen,n.lencode,0,n.work,R),n.lenbits=R.bits,z){e.msg="invalid literal/lengths set",n.mode=oe;break}if(n.distbits=6,n.distcode=n.distdyn,R={bits:n.distbits},z=Gn(gu,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,R),n.distbits=R.bits,z){e.msg="invalid distances set",n.mode=oe;break}if(n.mode=Br,t===Ur)break e;case Br:n.mode=Gr;case Gr:if(o>=6&&l>=258){e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,yp(e,m),s=e.next_out,i=e.output,l=e.avail_out,a=e.next_in,r=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===at&&(n.back=-1);break}for(n.back=0;p=n.lencode[c&(1<<n.lenbits)-1],S=p>>>24,b=p>>>16&255,E=p&65535,!(S<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(b&&(b&240)===0){for(v=S,w=b,T=E;p=n.lencode[T+((c&(1<<v+w)-1)>>v)],S=p>>>24,b=p>>>16&255,E=p&65535,!(v+S<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=v,u-=v,n.back+=v}if(c>>>=S,u-=S,n.back+=S,n.length=E,b===0){n.mode=Ll;break}if(b&32){n.back=-1,n.mode=at;break}if(b&64){e.msg="invalid literal/length code",n.mode=oe;break}n.extra=b&15,n.mode=Tl;case Tl:if(n.extra){for(y=n.extra;u<y;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ml;case Ml:for(;p=n.distcode[c&(1<<n.distbits)-1],S=p>>>24,b=p>>>16&255,E=p&65535,!(S<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if((b&240)===0){for(v=S,w=b,T=E;p=n.distcode[T+((c&(1<<v+w)-1)>>v)],S=p>>>24,b=p>>>16&255,E=p&65535,!(v+S<=u);){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}c>>>=v,u-=v,n.back+=v}if(c>>>=S,u-=S,n.back+=S,b&64){e.msg="invalid distance code",n.mode=oe;break}n.offset=E,n.extra=b&15,n.mode=Rl;case Rl:if(n.extra){for(y=n.extra;u<y;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=oe;break}n.mode=zl;case zl:if(l===0)break e;if(_=m-l,n.offset>_){if(_=n.offset-_,_>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=oe;break}_>n.wnext?(_-=n.wnext,g=n.wsize-_):g=n.wnext-_,_>n.length&&(_=n.length),A=n.window}else A=i,g=s-n.offset,_=n.length;_>l&&(_=l),l-=_,n.length-=_;do i[s++]=A[g++];while(--_);n.length===0&&(n.mode=Gr);break;case Ll:if(l===0)break e;i[s++]=n.length,l--,n.mode=Gr;break;case Ca:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=r[a++]<<u,u+=8}if(m-=l,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?Ae(n.check,i,m,s-m):$n(n.check,i,m,s-m)),m=l,n.wrap&4&&(n.flags?c:Il(c))!==n.check){e.msg="incorrect data check",n.mode=oe;break}c=0,u=0}n.mode=Nl;case Nl:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=r[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=oe;break}c=0,u=0}n.mode=Ol;case Ol:z=Tp;break e;case oe:z=pu;break e;case yu:return vu;case wu:default:return Ue}return e.next_out=s,e.avail_out=l,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=u,(n.wsize||m!==e.avail_out&&n.mode<oe&&(n.mode<Ca||t!==dl))&&ku(e,e.output,e.next_out,m-e.avail_out),h-=e.avail_in,m-=e.avail_out,e.total_in+=h,e.total_out+=m,n.total+=m,n.wrap&4&&m&&(e.adler=n.check=n.flags?Ae(n.check,i,m,e.next_out-m):$n(n.check,i,m,e.next_out-m)),e.data_type=n.bits+(n.last?64:0)+(n.mode===at?128:0)+(n.mode===Br||n.mode===Ia?256:0),(h===0&&m===0||t===dl)&&z===Dt&&(z=Rp),z},Dp=e=>{if(Bt(e))return Ue;let t=e.state;return t.window&&(t.window=null),e.state=null,Dt},Up=(e,t)=>{if(Bt(e))return Ue;let n=e.state;return(n.wrap&2)===0?Ue:(n.head=t,t.done=!1,Dt)},Bp=(e,t)=>{let n=t.length,r,i,a;return Bt(e)||(r=e.state,r.wrap!==0&&r.mode!==Kr)?Ue:r.mode===Kr&&(i=1,i=$n(i,t,n,0),i!==r.check)?pu:(a=ku(e,t,n,n),a?(r.mode=yu,vu):(r.havedict=1,Dt))},Gp=Au,Hp=xu,Vp=Su,Wp=Cp,Kp=Eu,$p=Fp,Xp=Dp,Yp=Up,Zp=Bp,jp="pako inflate (from Nodeca project)",ot={inflateReset:Gp,inflateReset2:Hp,inflateResetKeep:Vp,inflateInit:Wp,inflateInit2:Kp,inflate:$p,inflateEnd:Xp,inflateGetHeader:Yp,inflateSetDictionary:Zp,inflateInfo:jp};function qp(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}var Jp=qp,bu=Object.prototype.toString,{Z_NO_FLUSH:Qp,Z_FINISH:ev,Z_OK:Zn,Z_STREAM_END:Da,Z_NEED_DICT:Ua,Z_STREAM_ERROR:tv,Z_DATA_ERROR:Pl,Z_MEM_ERROR:nv}=Ut;function Qn(e){this.options=ri.assign({chunkSize:1024*64,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,t.windowBits===0&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(t.windowBits&15)===0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new hu,this.strm.avail_out=0;let n=ot.inflateInit2(this.strm,t.windowBits);if(n!==Zn)throw new Error(Pt[n]);if(this.header=new Jp,ot.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Yn.string2buf(t.dictionary):bu.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=ot.inflateSetDictionary(this.strm,t.dictionary),n!==Zn)))throw new Error(Pt[n])}Qn.prototype.push=function(e,t){let n=this.strm,r=this.options.chunkSize,i=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?ev:Qp,bu.call(e)==="[object ArrayBuffer]"?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(n.avail_out===0&&(n.output=new Uint8Array(r),n.next_out=0,n.avail_out=r),a=ot.inflate(n,s),a===Ua&&i&&(a=ot.inflateSetDictionary(n,i),a===Zn?a=ot.inflate(n,s):a===Pl&&(a=Ua));n.avail_in>0&&a===Da&&n.state.wrap>0&&e[n.next_in]!==0;)ot.inflateReset(n),a=ot.inflate(n,s);switch(a){case tv:case Pl:case Ua:case nv:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Da))if(this.options.to==="string"){let l=Yn.utf8border(n.output,n.next_out),c=n.next_out-l,u=Yn.buf2string(n.output,l);n.next_out=c,n.avail_out=r-c,c&&n.output.set(n.output.subarray(l,l+c),0),this.onData(u)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Zn&&o===0)){if(a===Da)return a=ot.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Qn.prototype.onData=function(e){this.chunks.push(e)};Qn.prototype.onEnd=function(e){e===Zn&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ri.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function as(e,t){let n=new Qn(t);if(n.push(e),n.err)throw n.msg||Pt[n.err];return n.result}function rv(e,t){return t=t||{},t.raw=!0,as(e,t)}var iv=Qn,av=as,sv=rv,ov=as,cv=Ut,lv={Inflate:iv,inflate:av,inflateRaw:sv,ungzip:ov,constants:cv},{Deflate:uv,deflate:dv,deflateRaw:mv,gzip:hv}=pp,{Inflate:fv,inflate:_v,inflateRaw:gv,ungzip:pv}=lv,vv=uv,yv=dv,wv=mv,Sv=hv,Av=fv,xv=_v,Ev=gv,kv=pv,bv=Ut,Fl={Deflate:vv,deflate:yv,deflateRaw:wv,gzip:Sv,Inflate:Av,inflate:xv,inflateRaw:Ev,ungzip:kv,constants:bv},$r=2023,ss=1,os=2,cs=4,ls=8,us=16,ds=32,Tu=64,Tv=128,Mv=256,ms=512,hs=1024,fs=2048,Xr=4096,_s=8192,Yr=16384,Rv=32768,Zr=65536,gs=1<<17,jr=1<<18,qr=1<<19,ps=1<<20,vs=1<<21,ys=1<<22,zv=1<<23,ws=1<<24,Jr=1<<25,Ss=1<<26,As=1<<27,xs=1<<28,Es=1<<29,ks=1<<30,Lv=-2147483648,bs=1,Ts=2,Ms=4,Nv=1,Ov=2,Iv=128,qt=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0,bitsHigh:0,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Dl=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0),gunskin:0,gunrate:0,damage_blend:[0,0,0,0],team_id:0}),Rs=class Mu{constructor(t,n){this.protocolVersion=0,this.isDemo=Nv,this.stream=t,this.handler=n}setProtocolVersion(t){this.protocolVersion=t}getProtocolVersion(){return this.protocolVersion}translateCommand(t){return this.protocolVersion===0&&(t===7||t===12)?Y.serverdata:this.protocolVersion===$r?t:this.protocolVersion===34||this.protocolVersion===25?t<=Y.frame?t:Y.bad:(this.protocolVersion===0,t)}parseMessage(){for(;this.stream.hasMore();){let t=this.stream.readByte();if(t===-1)break;let n=t;t=this.translateCommand(t);try{switch(t){case Y.bad:return;case Y.nop:break;case Y.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case Y.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case Y.print:this.parsePrint();break;case Y.serverdata:this.parseServerData();break;case Y.configstring:this.parseConfigString();break;case Y.spawnbaseline:this.parseSpawnBaseline();break;case Y.centerprint:this.parseCenterPrint();break;case Y.download:this.parseDownload();break;case Y.frame:this.parseFrame();break;case Y.packetentities:this.parsePacketEntities(!1);break;case Y.deltapacketentities:this.parsePacketEntities(!0);break;case Y.playerinfo:this.parsePlayerState();break;case Y.stufftext:this.parseStuffText();break;case Y.layout:this.parseLayout();break;case Y.inventory:this.parseInventory();break;case Y.sound:this.parseSound();break;case Y.muzzleflash:this.parseMuzzleFlash();break;case Y.muzzleflash2:this.parseMuzzleFlash2();break;case Y.temp_entity:this.parseTempEntity();break;case Y.splitclient:this.parseSplitClient();break;case Y.configblast:this.parseConfigBlast();break;case Y.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case Y.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case Y.damage:this.parseDamage();break;case Y.locprint:this.parseLocPrint();break;case Y.fog:this.parseFog();break;case Y.waitingforplayers:this.parseWaitingForPlayers();break;case Y.bot_chat:this.parseBotChat();break;case Y.poi:this.parsePoi();break;case Y.help_path:this.parseHelpPath();break;case Y.muzzleflash3:this.parseMuzzleFlash3();break;case Y.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(r){console.warn(`Error parsing command ${t}: ${r.message}`);return}}}parsePrint(){let t=this.stream.readByte(),n=this.stream.readString();this.handler&&this.handler.onPrint(t,n)}parseStuffText(){let t=this.stream.readString();this.handler&&this.handler.onStuffText(t)}parseLayout(){let t=this.stream.readString();this.handler&&this.handler.onLayout(t)}parseCenterPrint(){let t=this.stream.readString();this.handler&&this.handler.onCenterPrint(t)}parseServerData(){if(this.protocolVersion=this.stream.readLong(),this.protocolVersion===$r){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let r=this.stream.readByte(),i=this.stream.readString(),a=this.stream.readShort();if(a===-2){let o=this.stream.readShort();for(let l=0;l<o;l++)this.stream.readShort();a=0}else a===-1&&(a=-1);let s=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,0,i,a,s,r,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${r}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,r=this.stream.readString(),i=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,r,i,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${r}`)}}parseConfigString(){let t=this.stream.readShort(),n=this.stream.readString();this.handler&&this.handler.onConfigString(t,n)}parseSplitClient(){let t=this.stream.readByte();this.handler&&this.handler.onSplitClient&&this.handler.onSplitClient(t)}parseConfigBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Fl.inflate(r);i.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Ba(i.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(i){console.error("svc_configblast: Failed to decompress data",i)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),r=this.stream.readData(t);try{let i=Fl.inflate(r);i.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${i.byteLength}`);let a=new Ba(i.buffer),s=new Mu(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(i){console.error("svc_spawnbaselineblast: Failed to decompress data",i)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),r=this.stream.readByte(),i=[];for(let a=0;a<r;a++)i.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,i)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers(t)}parseBotChat(){let t=this.stream.readString(),n=this.stream.readShort(),r=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(r)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),r={x:0,y:0,z:0};this.stream.readPos(r);let i=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,r)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let r={x:0,y:0,z:0};this.stream.readDir(r),this.handler&&this.handler.onHelpPath&&this.handler.onHelpPath(n)}parseAchievement(){let t=this.stream.readString();this.handler&&this.handler.onAchievement&&this.handler.onAchievement(t)}parseDownload(){let t=this.stream.readShort(),n=this.stream.readByte(),r;t>0&&(r=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,r)}parseInventory(){let n=new Array(256);for(let r=0;r<256;r++)n[r]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),r,i,a,s,o;if(t&1&&(r=this.stream.readByte()),t&2&&(i=this.stream.readByte()),t&16&&(a=this.stream.readByte()),t&8&&(s=this.stream.readShort()),t&4){let l={x:0,y:0,z:0};this.stream.readPos(l),o=l}this.handler&&this.handler.onSound(t,n,r,i,a,s,o)}parseMuzzleFlash(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(t,n)}parseMuzzleFlash2(){let t=this.stream.readShort(),n=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(t,n)}parseMuzzleFlash3(){let t=this.stream.readShort(),n=this.stream.readShort();this.handler&&this.handler.onMuzzleFlash3&&this.handler.onMuzzleFlash3(t,n)}parseFog(){let t=this.stream.readByte();if(t&128){let r=this.stream.readByte();t|=r<<8}let n={};t&1&&(n.density=this.stream.readFloat(),n.skyfactor=this.stream.readByte()),t&2&&(n.red=this.stream.readByte()),t&4&&(n.green=this.stream.readByte()),t&8&&(n.blue=this.stream.readByte()),t&16&&(n.time=this.stream.readShort()),t&32&&(n.hf_falloff=this.stream.readFloat()),t&64&&(n.hf_density=this.stream.readFloat()),t&256&&(n.hf_start_r=this.stream.readByte()),t&512&&(n.hf_start_g=this.stream.readByte()),t&1024&&(n.hf_start_b=this.stream.readByte()),t&2048&&(n.hf_start_dist=this.stream.readLong()),t&4096&&(n.hf_end_r=this.stream.readByte()),t&8192&&(n.hf_end_g=this.stream.readByte()),t&16384&&(n.hf_end_b=this.stream.readByte()),t&32768&&(n.hf_end_dist=this.stream.readLong()),this.handler&&this.handler.onFog&&this.handler.onFog(n)}parseDamage(){let t=this.stream.readByte(),n=[];for(let r=0;r<t;r++){let i=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=i&31,o=(i&32)!==0,l=(i&64)!==0,c=(i&128)!==0;n.push({damage:s,health:o,armor:l,power:c,dir:a})}this.handler&&this.handler.onDamage&&this.handler.onDamage(n)}parseTempEntity(){let t=this.stream.readByte(),n={x:0,y:0,z:0},r={x:0,y:0,z:0},i={x:0,y:0,z:0},a,s,o,l,c;switch(t){case P.EXPLOSION1:case P.EXPLOSION2:case P.ROCKET_EXPLOSION:case P.GRENADE_EXPLOSION:case P.ROCKET_EXPLOSION_WATER:case P.GRENADE_EXPLOSION_WATER:case P.BFG_EXPLOSION:case P.BFG_BIGEXPLOSION:case P.BOSSTPORT:case P.PLASMA_EXPLOSION:case P.PLAIN_EXPLOSION:case P.CHAINFIST_SMOKE:case P.TRACKER_EXPLOSION:case P.TELEPORT_EFFECT:case P.DBALL_GOAL:case P.NUKEBLAST:case P.WIDOWSPLASH:case P.EXPLOSION1_BIG:case P.EXPLOSION1_NP:this.stream.readPos(n);break;case P.GUNSHOT:case P.BLOOD:case P.BLASTER:case P.SHOTGUN:case P.SPARKS:case P.BULLET_SPARKS:case P.SCREEN_SPARKS:case P.SHIELD_SPARKS:case P.BLASTER2:case P.FLECHETTE:case P.MOREBLOOD:case P.ELECTRIC_SPARKS:case P.HEATBEAM_SPARKS:case P.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(i);break;case P.SPLASH:case P.LASER_SPARKS:case P.WELDING_SPARKS:case P.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte();break;case P.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(r)):(this.stream.readPos(n),this.stream.readDir(i));break;case P.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(i)):(this.stream.readPos(n),this.stream.readPos(r));break;case P.RAILTRAIL:case P.BUBBLETRAIL:case P.BFG_LASER:case P.DEBUGTRAIL:case P.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(r);break;case P.PARASITE_ATTACK:case P.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case P.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;case P.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r);break;case P.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case P.FORCEWALL:this.stream.readPos(n),this.stream.readPos(r),s=this.stream.readByte();break;case P.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(i),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case P.WIDOWBEAMOUT:this.stream.readShort();case P.HEATBEAM:case P.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(r),this.stream.readPos(i);break;default:break}this.handler&&this.handler.onTempEntity(t,n,r,i,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=qt();this.parseDelta(qt(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),r=this.stream.readByte(),i=this.stream.readByte(),a=this.stream.readData(i),s=this.stream.readByte();if(s=this.translateCommand(s),s!==Y.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState();if(this.isDemo===Iv){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===Ov&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:r,areaBytes:i,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=Dl(),n=this.stream.readShort();n&1&&(t.pm_type=this.stream.readByte()),n&2&&(t.origin.x=this.stream.readShort()*.125,t.origin.y=this.stream.readShort()*.125,t.origin.z=this.stream.readShort()*.125),n&4&&(t.velocity.x=this.stream.readShort()*.125,t.velocity.y=this.stream.readShort()*.125,t.velocity.z=this.stream.readShort()*.125),n&8&&(t.pm_time=this.stream.readByte()),n&16&&(t.pm_flags=this.stream.readByte()),n&32&&(t.gravity=this.stream.readShort()),n&64&&(t.delta_angles.x=this.stream.readShort()*(180/32768),t.delta_angles.y=this.stream.readShort()*(180/32768),t.delta_angles.z=this.stream.readShort()*(180/32768)),n&128&&(t.viewoffset.x=this.stream.readChar()*.25,t.viewoffset.y=this.stream.readChar()*.25,t.viewoffset.z=this.stream.readChar()*.25),n&256&&(t.viewangles.x=this.stream.readAngle16(),t.viewangles.y=this.stream.readAngle16(),t.viewangles.z=this.stream.readAngle16()),n&512&&(t.kick_angles.x=this.stream.readChar()*.25,t.kick_angles.y=this.stream.readChar()*.25,t.kick_angles.z=this.stream.readChar()*.25),n&4096&&(t.gun_index=this.stream.readByte()),n&8192&&(t.gun_frame=this.stream.readByte(),t.gun_offset.x=this.stream.readChar()*.25,t.gun_offset.y=this.stream.readChar()*.25,t.gun_offset.z=this.stream.readChar()*.25,t.gun_angles.x=this.stream.readChar()*.25,t.gun_angles.y=this.stream.readChar()*.25,t.gun_angles.z=this.stream.readChar()*.25),n&1024&&(t.blend[0]=this.stream.readByte(),t.blend[1]=this.stream.readByte(),t.blend[2]=this.stream.readByte(),t.blend[3]=this.stream.readByte()),n&2048&&(t.fov=this.stream.readByte()),n&16384&&(t.rdflags=this.stream.readByte());let r=this.stream.readLong();for(let i=0;i<32;i++)r&1<<i&&(t.stats[i]=this.stream.readShort());return t}parsePacketEntities(t){let n=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:Dl(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let r=qt();this.parseDelta(qt(),r,n.number,n.bits,n.bitsHigh),t.push(r)}return t}parseEntityBits(){let t=this.stream.readByte();t&Tv&&(t|=this.stream.readByte()<<8),t&Rv&&(t|=this.stream.readByte()<<16),t&zv&&(t|=this.stream.readByte()<<24);let n=0;t&Lv&&(n=this.stream.readByte());let r;return t&Mv?r=this.stream.readShort():r=this.stream.readByte(),{number:r,bits:t,bitsHigh:n}}parseDelta(t,n,r,i,a=0){n.number=t.number,n.modelindex=t.modelindex,n.modelindex2=t.modelindex2,n.modelindex3=t.modelindex3,n.modelindex4=t.modelindex4,n.frame=t.frame,n.skinnum=t.skinnum,n.effects=t.effects,n.renderfx=t.renderfx,n.origin.x=t.origin.x,n.origin.y=t.origin.y,n.origin.z=t.origin.z,n.old_origin.x=t.origin.x,n.old_origin.y=t.origin.y,n.old_origin.z=t.origin.z,n.angles.x=t.angles.x,n.angles.y=t.angles.y,n.angles.z=t.angles.z,n.sound=t.sound,n.event=t.event,n.solid=t.solid,n.alpha=t.alpha,n.scale=t.scale,n.instanceBits=t.instanceBits,n.loopVolume=t.loopVolume,n.loopAttenuation=t.loopAttenuation,n.owner=t.owner,n.oldFrame=t.oldFrame,n.number=r,n.bits=i,n.bitsHigh=a,i&fs&&(n.modelindex=this.stream.readByte()),i&ps&&(n.modelindex2=this.stream.readByte()),i&vs&&(n.modelindex3=this.stream.readByte()),i&ys&&(n.modelindex4=this.stream.readByte()),i&us&&(n.frame=this.stream.readByte()),i&gs&&(n.frame=this.stream.readShort()),i&Zr&&i&Jr?n.skinnum=this.stream.readLong():i&Zr?n.skinnum=this.stream.readByte():i&Jr&&(n.skinnum=this.stream.readShort()),i&Yr&&i&qr?n.effects=this.stream.readLong():i&Yr?n.effects=this.stream.readByte():i&qr&&(n.effects=this.stream.readShort()),i&Xr&&i&jr?n.renderfx=this.stream.readLong():i&Xr?n.renderfx=this.stream.readByte():i&jr&&(n.renderfx=this.stream.readShort()),i&ss&&(n.origin.x=this.stream.readCoord()),i&os&&(n.origin.y=this.stream.readCoord()),i&ms&&(n.origin.z=this.stream.readCoord()),i&hs&&(n.angles.x=this.stream.readAngle()),i&cs&&(n.angles.y=this.stream.readAngle()),i&ls&&(n.angles.z=this.stream.readAngle()),i&ws&&this.stream.readPos(n.old_origin),i&Ss&&(n.sound=this.stream.readByte()),i&ds?n.event=this.stream.readByte():n.event=0,i&As&&(n.solid=this.stream.readShort()),i&_s&&(n.alpha=this.stream.readByte()/255),i&xs&&(n.scale=this.stream.readFloat()),i&Es&&(n.instanceBits=this.stream.readLong()),i&ks&&(n.loopVolume=this.stream.readByte()/255),a&bs&&(n.loopAttenuation=this.stream.readByte()/255),a&Ts&&(n.owner=this.stream.readShort()),a&Ms&&(n.oldFrame=this.stream.readShort())}},zs=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(zs||{}),Ru=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.currentProtocolVersion=0,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new R_(e),this.state=0,this.accumulatedTime=0,this.currentProtocolVersion=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0,this.currentProtocolVersion=0}setFrameDuration(e){this.frameDuration=e}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}let n=new Rs(t.data,this.handler);n.setProtocolVersion(this.currentProtocolVersion),n.parseMessage(),this.currentProtocolVersion=n.getProtocolVersion(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var Cv=Object.defineProperty,zu=(e,t)=>{for(var n in t)Cv(e,n,{get:t[n],enumerable:!0})},St={x:0,y:0,z:0};var E4=Math.PI/180;function ai(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function oi(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function tr(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Pv(e){return tr(e,e)}function ci(e){return Math.sqrt(Pv(e))}function Lu(e){let t=ci(e);return t===0?e:oi(e,1/t)}var Nu=0,Ou=1,Iu=2,Fv=Math.PI/180,k4=180/Math.PI;function Ls(e,t){switch(t){case Nu:return e.x;case Ou:return e.y;case Iu:default:return e.z}}function Ns(e){return e*Fv}function sn(e){let t=e%360;return t<0?360+t:t}function li(e){let t=Ns(Ls(e,Ou)),n=Ns(Ls(e,Nu)),r=Ns(Ls(e,Iu)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}var an=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var Qe=1,At=2;var Cs=8,Ps=16,Dv=32;var Uv=16384;var ui=65536,Cu=1<<17,Bv=1<<18,Gv=1<<19,Hv=1<<20,Vv=1<<21,Wv=1<<22,Kv=1<<23,b4=1<<24,di=1<<25,$v=1<<26,T4=1<<27,M4=1<<28,R4=1<<29,mi=1<<30,z4=1<<31;var L4=1<<25,N4=1<<28,O4=1<<29,I4=1<<30,C4=1<<31;var P4=Qe|At,F4=Qe|ui|At|di|mi,D4=Qe|ui|At,U4=Qe|Cu|At|di|mi,B4=Dv|Cs|Ps,G4=Qe|Ps|Cs,Xv=Qe|di|mi|At|$v,H4=Bv|Gv|Hv|Vv|Wv|Kv,V4=Qe|Cs|Ps|di|mi,W4=Qe|ui|At,K4=Qe|At,$4=Qe|ui|At|Cu,X4=Xv|Uv;var Y4=Number.MAX_SAFE_INTEGER-1;var nr=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(nr||{});var Pu=256;var Yv=256,rr=8192,ir=2048,ar=512,Zv=256,jv=Pu*2,qv=256,Os=32;var me=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+rr]="Sounds",e[e.Images=e.Sounds+ir]="Images",e[e.Lights=e.Images+ar]="Lights",e[e.ShadowLights=e.Lights+Yv]="ShadowLights",e[e.Items=e.ShadowLights+qv]="Items",e[e.PlayerSkins=e.Items+Zv]="PlayerSkins",e[e.General=e.PlayerSkins+Pu]="General",e[e.WheelWeapons=e.General+jv]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Os]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Os]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Os]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(me||{}),Z4=me.MaxConfigStrings;var Jv={};zu(Jv,{addReplayFrame:()=>ny,createReplaySession:()=>ty,deserializeReplay:()=>ey,serializeReplay:()=>Qv});function Qv(e){return JSON.stringify(e,null,2)}function ey(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function ty(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function ny(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var sr=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(sr||{});var ct=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(ct||{});function on(e,t){return(e&t)!==0}var hi=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(hi||{}),et=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(et||{});function ry(e){let{velocity:t,frametime:n,onGround:r,groundIsSlick:i,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=ci(t);if(u<1)return{x:0,y:0,z:t.z};let h=0;if(r&&!i||a){let g=u<l?l:u;h+=g*o*n}s>0&&!a&&(h+=u*c*s*n);let m=u-h;if(m<0&&(m=0),m===u)return t;let _=m/u;return oi(t,_)}function iy(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=tr(t,n),o=r-s;if(o<=0)return t;let l=i*a*r;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function ay(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0},s=ci(a);if(s>i){let o=i/s;a=oi(a,o),s=i}return{wishdir:s===0?a:Lu(a),wishspeed:s}}function sy(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:t.z*r.forwardmove+n.z*r.sidemove};r.upmove>10?a=ai(a,{x:0,y:0,z:r.upmove}):r.upmove<-10?a=ai(a,{x:0,y:0,z:r.upmove}):Math.abs(r.forwardmove)<10&&Math.abs(r.sidemove)<10?a=ai(a,{x:0,y:0,z:-60}):a=ai(a,{x:0,y:0,z:10});let s=ci(a);if(s>i){let o=i/s;a=oi(a,o),s=i}return s*=.5,{wishdir:s===0?a:Lu(a),wishspeed:s}}function oy(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function cy(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Fs(e){let{pmFlags:t,cmdAngles:n,deltaAngles:r}=e,i;(t&32)!==0?i={x:0,y:n.y+r.y,z:0}:(i=oy(n,r),i={...i,x:cy(i.x)});let a=li(i);return{viewangles:i,...a}}var Fu=200,Du=200,Uu=200,Bu=140,Gu=150,Hu=3;function ly(e){let t=sn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Vu(e,t){return{x:ly(e.x+t.x),y:sn(e.y+t.y),z:sn(e.z+t.z)}}function Wu(e,t){let n=t.sensitivityX??t.sensitivity,r=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*r,y:e.deltaX*n,z:0}}var Gt=(e=>(e[e.bad=0]="bad",e[e.nop=1]="nop",e[e.move=2]="move",e[e.userinfo=3]="userinfo",e[e.stringcmd=4]="stringcmd",e))(Gt||{});var Ku=64;var $u=0,Xu=1,Yu=2,Zu=3,ju=4,qu=5,Ju=6,Qu=7,ed=8;var td=11,nd=12,rd=13;function uy(e,t,n){let r=Math.floor(n/2),i=n%2!==0,a=t+r,s=e[a]||0;if(i){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function dy(e,t,n,r){let i=r*n,a=Math.floor(i/8),s=i%8,o=(1<<r)-1<<s;return(uy(e,t,a)&o)>>>s}var Ds=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(Ds||{}),He=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(He||{}),my=12,hy=9,j4=Math.ceil(my*hy/16),id=23,ad=2,q4=Math.ceil(id*ad/16),fy={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,bandolier:10,ammo_pack:10,ir_goggles:11,double_damage:12,sphere_vengeance:13,sphere_hunter:14,sphere_defender:15,doppelganger:16,flashlight:17,compass:18,tech_resistance:19,tech_strength:20,tech_haste:21,tech_regeneration:22,tag_token:-1};function sd(e,t){let n;return typeof t=="number"?n=t:n=fy[t],n===void 0||n<0||n>=id?0:dy(e,41,n,ad)}function od(e,t){e.writeByte(t.msec),e.writeByte(t.buttons),e.writeAngle16(t.angles.x),e.writeAngle16(t.angles.y),e.writeAngle16(t.angles.z),e.writeShort(t.forwardmove),e.writeShort(t.sidemove),e.writeShort(t.upmove),e.writeByte(0),e.writeByte(0)}var _y={};zu(_y,{U_ANGLE1:()=>Ay,U_ANGLE2:()=>xy,U_ANGLE3:()=>Ey,U_EFFECTS:()=>Ty,U_EVENT:()=>zy,U_FRAME:()=>ky,U_MODEL:()=>py,U_MODEL2:()=>Ny,U_MODEL3:()=>Oy,U_MODEL4:()=>Iy,U_MOREBITS:()=>Ly,U_NUMBER:()=>gy,U_ORIGIN1:()=>yy,U_ORIGIN2:()=>wy,U_ORIGIN3:()=>Sy,U_REMOVE:()=>Cy,U_RENDERFX:()=>My,U_SKIN:()=>by,U_SOLID:()=>Ry,U_SOUND:()=>vy});var gy=1,py=2,vy=4,yy=8,wy=16,Sy=32,Ay=64,xy=128,Ey=256,ky=512,by=1024,Ty=2048,My=4096,Ry=8192,zy=16384,Ly=32768,Ny=1,Oy=2,Iy=4,Cy=32768,er=.025,Is=33554432,si={None:0,Feet:1,Waist:2,Under:3},Py=(e,t)=>{let n={...e.origin};n.z-=.25;let r=t(e.origin,n);return{...e,onGround:r.fraction<1}},Fy=(e,t)=>{let n={...e.origin},{mins:r,maxs:i}=e;if(n.z=e.origin.z+r.z+1,!(t(n)&Is))return{...e,waterLevel:si.None};let s=si.Feet,o=e.origin.z+(r.z+i.z)*.5;if(n.z=o,t(n)&Is){s=si.Waist;let c=e.origin.z+22;n.z=c,t(n)&Is&&(s=si.Under)}return{...e,waterLevel:s}},Us=(e,t,n,r)=>{let i={...e};i=Py(i,n),i=Fy(i,r);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=i,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:h,right:m}=li(u),_=ry({velocity:s,frametime:er,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?sy({forward:h,right:m,cmd:t,maxSpeed:320}):ay({forward:h,right:m,cmd:t,maxSpeed:320}),A=iy({velocity:_,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:er}),p=n(a,{x:a.x+A.x*er,y:a.y+A.y*er,z:a.z+A.z*er});return{...i,origin:p.endpos,velocity:A}},cd=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readUShort(){let e=this.view.getUint16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readULong(){let e=this.view.getUint32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=an[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ld=class{constructor(e=1400){typeof e=="number"?(this.buffer=new Uint8Array(e),this.fixed=!1):(this.buffer=e,this.fixed=!0),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength),this.offset=0}ensureSpace(e){if(this.offset+e>this.buffer.byteLength){if(this.fixed)throw new Error(`Buffer overflow: capacity ${this.buffer.byteLength}, needed ${this.offset+e}`);let t=Math.max(this.buffer.byteLength*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset,this.buffer.byteLength)}}writeByte(e){this.ensureSpace(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureSpace(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureSpace(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureSpace(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureSpace(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length;this.ensureSpace(t+1);for(let n=0;n<t;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+t,0),this.offset+=t+1}writeCoord(e){this.writeShort(Math.trunc(e*8))}writeAngle(e){this.writeByte(Math.trunc(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.trunc(e*65536/360)&65535)}writePos(e){this.writeCoord(e.x),this.writeCoord(e.y),this.writeCoord(e.z)}writeDir(e){let t=-1,n=0;if(e.x===0&&e.y===0&&e.z===0){this.writeByte(0);return}for(let r=0;r<an.length;r++){let i=an[r],a=e.x*i[0]+e.y*i[1]+e.z*i[2];a>t&&(t=a,n=r)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},or=class{constructor(e=1024){this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer),this.offset=0}ensureCapacity(e){if(this.offset+e>this.buffer.length){let t=Math.max(this.buffer.length*2,this.offset+e),n=new Uint8Array(t);n.set(this.buffer),this.buffer=n,this.view=new DataView(this.buffer.buffer)}}getData(){return this.buffer.slice(0,this.offset)}writeByte(e){this.ensureCapacity(1),this.view.setUint8(this.offset,e),this.offset+=1}writeChar(e){this.ensureCapacity(1),this.view.setInt8(this.offset,e),this.offset+=1}writeShort(e){this.ensureCapacity(2),this.view.setInt16(this.offset,e,!0),this.offset+=2}writeUShort(e){this.ensureCapacity(2),this.view.setUint16(this.offset,e,!0),this.offset+=2}writeLong(e){this.ensureCapacity(4),this.view.setInt32(this.offset,e,!0),this.offset+=4}writeFloat(e){this.ensureCapacity(4),this.view.setFloat32(this.offset,e,!0),this.offset+=4}writeString(e){let t=e.length+1;this.ensureCapacity(t);for(let n=0;n<e.length;n++)this.view.setUint8(this.offset+n,e.charCodeAt(n));this.view.setUint8(this.offset+e.length,0),this.offset+=t}writeData(e){this.ensureCapacity(e.length),this.buffer.set(e,this.offset),this.offset+=e.length}writeCoord(e){this.writeShort(Math.round(e*8))}writeAngle(e){this.writeByte(Math.round(e*256/360)&255)}writeAngle16(e){this.writeShort(Math.round(e*65536/360))}writeDir(e,t,n){let r=0,i=-999999,a=Math.sqrt(e*e+t*t+n*n);if(a>0){e/=a,t/=a,n/=a;for(let s=0;s<162;s++){let o=e*an[s][0]+t*an[s][1]+n*an[s][2];o>i&&(i=o,r=s)}}this.writeByte(r)}};var ud=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(ud||{}),J4=Object.keys(ud).length/2;var Dy=Object.defineProperty,Uy=(e,t)=>{for(var n in t)Dy(e,n,{get:t[n],enumerable:!0})},_i=null,fi=[1,1,1,1],dd=["ch1","ch2","ch3"],Bs=[null,null,null],By=e=>{for(let t=0;t<dd.length;t++){let n=dd[t];try{Bs[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Bs[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
+
`)}}}_i=Bs[0]},Gy=(e,t,n)=>{if(_i){let r=e.Draw_GetPicSize(_i),i=(t-r.width)/2,a=(n-r.height)/2;e.SCR_DrawColorPic(i,a,_i,{x:fi[0],y:fi[1],z:fi[2]},fi[3])}},pd=new Map,Hy=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Vy=e=>{for(let t of Hy)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);pd.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
171
|
+
`)}},Wy=new Map,Ky=["d_left","d_right","d_up","d_down"],$y=e=>{for(let t of Ky)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Wy.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
172
|
+
`)}},Xy=(e,t,n,r)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},md=3e3,hd=5e3,fd=4,Yy=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:md}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:hd}),this.notifyMessages.length>fd&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:md}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:hd}),this.notifyMessages.length>fd&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let r=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(r,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let r of this.notifyMessages)e.SCR_DrawFontString(10,n,r.text),n+=10}},Zy=3e3,jy=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:Zy}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},qy=(e,t,n,r)=>{if(!t.blend)return;let[i,a,s,o]=t.blend},Jy=(e,t,n,r)=>{if(!t.pickupIcon)return;let i=pd.get(t.pickupIcon);if(i){let a=e.Draw_GetPicSize(i),s=n-a.width-10,o=r-a.height-10;e.SCR_DrawPic(s,o,i)}},Gs=(e,t,n,r,i,a,s)=>{let o=Math.abs(r).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=i[c];u&&(s?e.SCR_DrawColorPic(t+l*a,n,u,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+l*a,n,u))}},Qy=(e,t,n,r,i,a)=>{let s=t.stats[He.STAT_HEALTH]||0,o=t.stats[He.STAT_ARMOR]||0,l=t.stats[He.STAT_AMMO]||0,c=t.stats[He.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(Gs(e,a.HEALTH_X,a.HEALTH_Y,s,n,r,u),Gs(e,a.ARMOR_X,a.ARMOR_Y,o,n,r),Gs(e,a.AMMO_X,a.AMMO_Y,l,n,r)),c>0){let h=e.get_configstring(me.Images+c);if(h){let m=e.Draw_RegisterPic(h);m&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,m)}}if(t.pickupIcon){let h=e.Draw_RegisterPic(t.pickupIcon);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}else{let h=t.stats[He.STAT_SELECTED_ICON]||0;if(h>0){let m=e.get_configstring(me.Images+h);if(m){let _=e.Draw_RegisterPic(m);_&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,_)}}}},Hs=640,cn=480,ew=(e,t)=>{let n=e/Hs,r=t/cn,i=Math.min(n,r);return{HEALTH_X:100*i,HEALTH_Y:t-(cn-450)*i,ARMOR_X:200*i,ARMOR_Y:t-(cn-450)*i,AMMO_X:e-(Hs-540)*i,AMMO_Y:t-(cn-450)*i,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*i,WEAPON_ICON_X:10*i,WEAPON_ICON_Y:t-(cn-450)*i,POWERUP_X:e-(Hs-610)*i,POWERUP_Y:t-(cn-450)*i,scale:i}},pe=null,$s=[],vd=0,Xs=new Yy,yd=new jy;function tw(e){pe=e}function nw(){if(pe){$s.length=0;for(let e=0;e<10;e++)try{let t=pe.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);$s.push(t),e===0&&(vd=pe.Draw_GetPicSize(t).width)}catch{pe.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
173
|
+
`)}By(pe),Vy(pe),$y(pe)}}function rw(e,t,n,r,i,a,s){if(!pe){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=pe.CL_ClientTime(),l=ew(n.width,n.height);if(qy(pe,s,n.width,n.height),Qy(pe,s,$s,vd,o,l),Jy(pe,s,n.width,n.height),Xy(pe,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
|
|
174
|
+
`),u=n.height/2-c.length*10;for(let h of c)pe.SCR_DrawCenterString(u,h),u+=16}Xs.drawCenterPrint(pe,o,l),Xs.drawNotifications(pe,o),yd.drawSubtitles(pe,o),Gy(pe,n.width,n.height)}function pi(){return Xs}function iw(){return yd}function aw(e,t,n){t>=me.Models&&t<me.Models+rr?e.RegisterModel(n):t>=me.Sounds&&t<me.Sounds+ir?e.RegisterSound(n):t>=me.Images&&t<me.Images+ar&&e.Draw_RegisterPic(n)}var Vs=1e-6,gi=typeof Float32Array<"u"?Float32Array:Array,_d=Math.random;function Ws(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var sw={};Uy(sw,{add:()=>dw,angle:()=>Iw,bezier:()=>bw,ceil:()=>mw,clone:()=>ow,copy:()=>lw,create:()=>wd,cross:()=>Aw,dist:()=>Hw,distance:()=>kd,div:()=>Gw,divide:()=>Ed,dot:()=>Ys,equals:()=>Dw,exactEquals:()=>Fw,floor:()=>hw,forEach:()=>$w,fromValues:()=>cw,hermite:()=>kw,inverse:()=>ww,len:()=>Ww,length:()=>Sd,lerp:()=>xw,max:()=>_w,min:()=>fw,mul:()=>Bw,multiply:()=>xd,negate:()=>yw,normalize:()=>Sw,random:()=>Tw,rotateX:()=>Lw,rotateY:()=>Nw,rotateZ:()=>Ow,round:()=>gw,scale:()=>pw,scaleAndAdd:()=>vw,set:()=>uw,slerp:()=>Ew,sqrDist:()=>Vw,sqrLen:()=>Kw,squaredDistance:()=>bd,squaredLength:()=>Td,str:()=>Pw,sub:()=>Uw,subtract:()=>Ad,transformMat3:()=>Rw,transformMat4:()=>Mw,transformQuat:()=>zw,zero:()=>Cw});function wd(){var e=new gi(3);return gi!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function ow(e){var t=new gi(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Sd(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function cw(e,t,n){var r=new gi(3);return r[0]=e,r[1]=t,r[2]=n,r}function lw(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function uw(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function dw(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Ad(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function xd(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Ed(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function mw(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function hw(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function fw(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function _w(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function gw(e,t){return e[0]=Ws(t[0]),e[1]=Ws(t[1]),e[2]=Ws(t[2]),e}function pw(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function vw(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function kd(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function bd(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Td(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function yw(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function ww(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Sw(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function Ys(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Aw(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=i*l-a*o,e[1]=a*s-r*l,e[2]=r*o-i*s,e}function xw(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function Ew(e,t,n,r){var i=Math.acos(Math.min(Math.max(Ys(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function kw(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,l=s*(a-2)+a,c=s*(a-1),u=s*(3-2*a);return e[0]=t[0]*o+n[0]*l+r[0]*c+i[0]*u,e[1]=t[1]*o+n[1]*l+r[1]*c+i[1]*u,e[2]=t[2]*o+n[2]*l+r[2]*c+i[2]*u,e}function bw(e,t,n,r,i,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,h=3*l*s,m=l*a;return e[0]=t[0]*c+n[0]*u+r[0]*h+i[0]*m,e[1]=t[1]*c+n[1]*u+r[1]*h+i[1]*m,e[2]=t[2]*c+n[2]*u+r[2]*h+i[2]*m,e}function Tw(e,t){t=t===void 0?1:t;var n=_d()*2*Math.PI,r=_d()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function Mw(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function Rw(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function zw(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=i*c-a*l,h=a*o-r*c,m=r*l-i*o;return u=u+u,h=h+h,m=m+m,e[0]=o+s*u+i*m-a*h,e[1]=l+s*h+a*u-r*m,e[2]=c+s*m+r*h-i*u,e}function Lw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Nw(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Ow(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Iw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),c=l&&Ys(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Cw(e){return e[0]=0,e[1]=0,e[2]=0,e}function Pw(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Fw(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Dw(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=Vs*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=Vs*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=Vs*Math.max(1,Math.abs(i),Math.abs(o))}var Uw=Ad,Bw=xd,Gw=Ed,Hw=kd,Vw=bd,Ww=Sd,Kw=Td,$w=(function(){var e=wd();return function(t,n,r,i,a,s){var o,l;for(n||(n=3),r||(r=0),i?l=Math.min(i*n+r,t.length):l=t.length,o=r;o<l;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var Xw={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Yw(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function Zw(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function jw(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Zw(t,r,i),s=e+a,l=on(n,ct.Ducked)&&r?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var vi=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Xw,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:r}=li(Fs({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??St}).viewangles),i=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=on(e.pmFlags,ct.OnGround),s=jw(this.bobTime,i,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=tr(e.velocity,n)*this.settings.runPitch,l=tr(e.velocity,r),c=l<0?-1:1,h=Math.abs(l)*this.settings.runRoll;h>2&&(h=2),h*=c;let m=this.bobFracSin*this.settings.bobPitch*i,_=this.bobFracSin*this.settings.bobRoll*i;on(e.pmFlags,ct.Ducked)&&a&&(m*=6,_*=6),o+=Math.min(m,this.settings.maxBobAngle),_=Math.min(_,this.settings.maxBobAngle),this.bobCycle&1&&(_=-_),h+=_;let g=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),A=0,p=0,S=0,b=0,E=0;if(this.kick&&this.kick.remainingMs>0){let k=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));A+=k*this.kick.pitch,p+=k*this.kick.roll,this.kick.origin&&(S+=k*this.kick.origin.x,b+=k*this.kick.origin.y,E+=k*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let v={x:o+A,y:0,z:h+p},w={x:S,y:b,z:g+E},T={angles:v,offset:Yw(w),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=T,T}},qw={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Jw=800,tt={x:0,y:0,z:0};function Ht(){return{origin:tt,velocity:tt,viewAngles:tt,onGround:!1,pmFlags:ct.OnGround,pmType:hi.Normal,waterLevel:sr.None,gravity:Jw,deltaAngles:tt,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:tt,kick_origin:tt,gunoffset:tt,gunangles:tt,gunindex:0,pm_time:0,pm_type:hi.Normal,pm_flags:ct.OnGround,gun_frame:0,rdflags:0,fov:90,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function gd(e){return e?{...Ht(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:tt,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Ht()}function ze(e,t,n){return e+(t-e)*n}function Ks(e,t,n){let r=sn(t-e);return r>180&&(r-=360),sn(e+r*n)}function ln(e,t,n){let r=Math.max(0,Math.min(n,1));return{...t,origin:{x:ze(e.origin.x,t.origin.x,r),y:ze(e.origin.y,t.origin.y,r),z:ze(e.origin.z,t.origin.z,r)},velocity:{x:ze(e.velocity.x,t.velocity.x,r),y:ze(e.velocity.y,t.velocity.y,r),z:ze(e.velocity.z,t.velocity.z,r)},viewAngles:{x:Ks(e.viewAngles.x,t.viewAngles.x,r),y:Ks(e.viewAngles.y,t.viewAngles.y,r),z:Ks(e.viewAngles.z,t.viewAngles.z,r)},damageAlpha:ze(e.damageAlpha,t.damageAlpha,r),blend:[ze(e.blend[0],t.blend[0],r),ze(e.blend[1],t.blend[1],r),ze(e.blend[2],t.blend[2],r),ze(e.blend[3],t.blend[3],r)],health:ze(e.health||0,t.health||0,r),armor:ze(e.armor||0,t.armor||0,r),ammo:ze(e.ammo||0,t.ammo||0,r)}}function Qw(e,t,n,r,i){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons},s=Us(e,a,r,i),{viewangles:o}=Fs({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??tt});return{...s,viewAngles:o}}var yi=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Ht()},this.commands=[],this.predicted=Ht(),this.settings={...qw,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Ht()}setAuthoritative(e){let t=gd(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=gd(this.baseFrame.state);for(let t of this.commands)e=Qw(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},ve=null;function eS(){if(!ve){console.error("CGame Init: cgame imports not set");return}ve.Com_Print(`===== CGame Initialization =====
|
|
175
|
+
`),tw(ve),ve.Com_Print(`CGame initialized
|
|
176
|
+
`)}function tS(){ve&&ve.Com_Print(`CGame shutdown
|
|
177
|
+
`),ve=null}function nS(e,t,n,r,i,a,s){rw(e,t,n,r,i,a,s)}function rS(){nw()}function iS(e){return 0}function aS(e){return 0}function sS(e){return[]}function oS(e,t){return 0}function cS(e){return 0}function lS(e){return 0}function uS(e){let t=e;if(!t||!t.s||!t.cmd||!ve)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return ve.PM_Trace(a,s,o||c,l||c)},r=a=>{let s={x:0,y:0,z:0};return ve.PM_Trace(a,a,s,s).contents||0},i=Us(t.s,t.cmd,n,r);t.s.origin=i.origin,t.s.velocity=i.velocity,t.s.onGround=i.onGround,t.s.waterLevel=i.waterLevel}function dS(e,t){ve&&aw(ve,e,t)}function mS(e,t,n){if(!ve)return;pi().setCenterPrint(e,ve.CL_ClientTime())}function hS(e,t,n){if(!ve)return;pi().addNotification(t,n,ve.CL_ClientTime())}function fS(e){pi().clearNotifications()}function _S(e){pi().clearCenterPrint()}function gS(e,t){if(!ve)return;iw().addSubtitle(e,ve.CL_ClientTime())}function pS(e){return{x:0,y:0,z:0}}function vS(e){return null}function Md(e){return ve=e,{Init:eS,Shutdown:tS,DrawHUD:nS,TouchPics:rS,LayoutFlags:iS,GetActiveWeaponWheelWeapon:aS,GetOwnedWeaponWheelWeapons:sS,GetWeaponWheelAmmoCount:oS,GetPowerupWheelCount:cS,GetHitMarkerDamage:lS,Pmove:uS,ParseConfigString:dS,ParseCenterPrint:mS,NotifyMessage:hS,ShowSubtitle:gS,ClearNotify:fS,ClearCenterprint:_S,GetMonsterFlashOffset:pS,GetExtension:vS}}function Rd(e,t){let n=new Map,r=new Set,i=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{if(!e.host||!e.host.cvars)return null;let l=e.host.cvars.get(a);return l||e.host.cvars.register({name:a,defaultValue:s,flags:o})},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||r.has(a)||(r.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}r.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),r.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{i()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&i()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,h=n.get(u);h&&i()?.drawPic(a,s,h,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{i()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{i()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let l=t.getKeyBinding(o);i()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,l)=>e.engine.trace(a,s,o,l)}}var un=null,xt=0;var cr=!0,lr=["ch1","ch2","ch3"],dn=[null,null,null],zd=async(e,t)=>{for(let n=0;n<lr.length;n++){let r=lr[n];try{let i=await t.loadTexture(`pics/${r}.pcx`);dn[n]=e.registerTexture(r,i)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");dn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}un=dn[0]};var Ld=()=>{if(cr?(xt++,xt>=lr.length&&(cr=!1,xt=0)):(cr=!0,xt=0),cr){if(un=dn[xt],!un){let e=!1;for(let t=0;t<lr.length;t++){let n=(xt+t)%lr.length;if(dn[n]){xt=n,un=dn[n],e=!0;break}}e||(un=null)}}else un=null;return cr?xt:-1};var yS=Object.defineProperty,Wd=(e,t)=>{for(var n in t)yS(e,n,{get:t[n],enumerable:!0})},X={x:0,y:0,z:0};var dz=Math.PI/180;function to(e){return{x:e.x,y:e.y,z:e.z}}function $(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function F(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function V(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Kd(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function wS(e){return Kd(e,e)}function wn(e){return Math.sqrt(wS(e))}function G(e){let t=wn(e);return t===0?e:V(e,1/t)}function SS(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function AS(e,t,n,r){let i=0;if(t.x<n.x){let a=t.x-n.x;i+=a*a}else if(e.x>r.x){let a=e.x-r.x;i+=a*a}if(t.y<n.y){let a=t.y-n.y;i+=a*a}else if(e.y>r.y){let a=e.y-r.y;i+=a*a}if(t.z<n.z){let a=t.z-n.z;i+=a*a}else if(e.z>r.z){let a=e.z-r.z;i+=a*a}return i}var po=0,vo=1,$d=2,xS=Math.PI/180,ES=180/Math.PI;function dr(e,t){switch(t){case po:return e.x;case vo:return e.y;case $d:default:return e.z}}function wi(e){return e*xS}function no(e){return e*ES}function ro(e){let t=e%360;return t<0?360+t:t}function ee(e){let t=wi(dr(e,vo)),n=wi(dr(e,po)),r=wi(dr(e,$d)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(r),c=Math.cos(r),u={x:o*a,y:o*i,z:-s},h={x:-l*s*a-c*-i,y:-l*s*i-c*a,z:-l*o},m={x:c*s*a-l*-i,y:c*s*i-l*a,z:c*o};return{forward:u,right:h,up:m}}function gr(e){let t=dr(e,po),n=dr(e,vo);if(t===0)return n===0?0:n>0?90:270;let r=no(Math.atan2(n,t));return r<0?r+360:r}function Sn(e){let t=e.x,n=e.y,r=e.z;if(n===0&&t===0)return{x:r>0?-90:-270,y:0,z:0};let i;t?i=no(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=no(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var nt=624,kS=397,bS=2567483615,TS=2147483648,MS=2147483647,Zs=4294967296,RS=class{constructor(e=5489){this.state=new Uint32Array(nt),this.index=nt,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<nt;t++){let n=this.state[t-1]^this.state[t-1]>>>30,r=Math.imul(n>>>0,1812433253)+t;this.state[t]=r>>>0}this.index=nt}nextUint32(){this.index>=nt&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<nt;e++){let t=this.state[e]&TS|this.state[(e+1)%nt]&MS,n=this.state[(e+kS)%nt]^t>>>1;(t&1)!==0&&(n^=bS),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==nt)throw new Error(`Expected ${nt} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Xd=class{constructor(e={}){this.mt=new RS(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/Zs}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,r=Zs-Zs%n,i;do i=this.mt.nextUint32();while(i>=r);return e+i%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function Ri(e){return new Xd(e)}var Le=1,Rt=2;var yo=8,wo=16,zS=32;var LS=16384;var zi=65536,Yd=1<<17,NS=1<<18,OS=1<<19,IS=1<<20,CS=1<<21,PS=1<<22,FS=1<<23,mz=1<<24,Vt=1<<25,Li=1<<26,hz=1<<27,fz=1<<28,_z=1<<29,An=1<<30,gz=1<<31;var pz=1<<25,vz=1<<28,yz=1<<29,wz=1<<30,Sz=1<<31,DS=Le|Rt,Az=Le|zi|Rt|Vt|An,xz=Le|zi|Rt,Ai=Le|Yd|Rt|Vt|An,US=zS|yo|wo,Ez=Le|wo|yo,bt=Le|Vt|An|Rt|Li,kz=NS|OS|IS|CS|PS|FS,bz=Le|yo|wo|Vt|An,Tz=Le|zi|Rt,Mz=Le|Rt,Rz=Le|zi|Rt|Yd,zz=bt|LS,Lz=Number.MAX_SAFE_INTEGER-1;var Zd=256,BS=256,GS=8192,HS=2048,VS=512,WS=256,KS=Zd*2,$S=256,js=32,jd=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+GS]="Sounds",e[e.Images=e.Sounds+HS]="Images",e[e.Lights=e.Images+VS]="Lights",e[e.ShadowLights=e.Lights+BS]="ShadowLights",e[e.Items=e.ShadowLights+$S]="Items",e[e.PlayerSkins=e.Items+WS]="PlayerSkins",e[e.General=e.PlayerSkins+Zd]="General",e[e.WheelWeapons=e.General+KS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+js]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+js]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+js]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(jd||{}),Nz=jd.MaxConfigStrings,XS={};Wd(XS,{addReplayFrame:()=>qS,createReplaySession:()=>jS,deserializeReplay:()=>ZS,serializeReplay:()=>YS});function YS(e){return JSON.stringify(e,null,2)}function ZS(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function jS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function qS(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var be=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e[e.splitclient=21]="splitclient",e[e.configblast=22]="configblast",e[e.spawnbaselineblast=23]="spawnbaselineblast",e[e.level_restart=24]="level_restart",e[e.damage=25]="damage",e[e.locprint=26]="locprint",e[e.fog=27]="fog",e[e.waitingforplayers=28]="waitingforplayers",e[e.bot_chat=29]="bot_chat",e[e.poi=30]="poi",e[e.help_path=31]="help_path",e[e.muzzleflash3=32]="muzzleflash3",e[e.achievement=33]="achievement",e))(be||{}),Te=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(Te||{});var JS=12,QS=9,Oz=Math.ceil(JS*QS/16),eA=23,tA=2,Iz=Math.ceil(eA*tA/16);var nA={};Wd(nA,{U_ANGLE1:()=>lA,U_ANGLE2:()=>uA,U_ANGLE3:()=>dA,U_EFFECTS:()=>fA,U_EVENT:()=>pA,U_FRAME:()=>mA,U_MODEL:()=>iA,U_MODEL2:()=>yA,U_MODEL3:()=>wA,U_MODEL4:()=>SA,U_MOREBITS:()=>vA,U_NUMBER:()=>rA,U_ORIGIN1:()=>sA,U_ORIGIN2:()=>oA,U_ORIGIN3:()=>cA,U_REMOVE:()=>AA,U_RENDERFX:()=>_A,U_SKIN:()=>hA,U_SOLID:()=>gA,U_SOUND:()=>aA});var rA=1,iA=2,aA=4,sA=8,oA=16,cA=32,lA=64,uA=128,dA=256,mA=512,hA=1024,fA=2048,_A=4096,gA=8192,pA=16384,vA=32768,yA=1,wA=2,SA=4,AA=32768;var K=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(K||{}),Cz=Object.keys(K).length/2,ie=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e.MagSlugs="ammo_magslug",e.Flechettes="ammo_flechettes",e.Disruptor="ammo_disruptor",e.Tesla="ammo_tesla",e.Trap="ammo_trap",e.Prox="ammo_prox",e))(ie||{}),Pz={[ie.Shells]:{id:ie.Shells,ammoType:K.Shells,quantity:10,weaponAmmo:!1},[ie.Bullets]:{id:ie.Bullets,ammoType:K.Bullets,quantity:50,weaponAmmo:!1},[ie.Rockets]:{id:ie.Rockets,ammoType:K.Rockets,quantity:5,weaponAmmo:!1},[ie.Grenades]:{id:ie.Grenades,ammoType:K.Grenades,quantity:5,weaponAmmo:!0},[ie.Cells]:{id:ie.Cells,ammoType:K.Cells,quantity:50,weaponAmmo:!1},[ie.Slugs]:{id:ie.Slugs,ammoType:K.Slugs,quantity:10,weaponAmmo:!1},[ie.MagSlugs]:{id:ie.MagSlugs,ammoType:K.MagSlugs,quantity:10,weaponAmmo:!1},[ie.Flechettes]:{id:ie.Flechettes,ammoType:K.Flechettes,quantity:50,weaponAmmo:!1},[ie.Disruptor]:{id:ie.Disruptor,ammoType:K.Disruptor,quantity:15,weaponAmmo:!1},[ie.Tesla]:{id:ie.Tesla,ammoType:K.Tesla,quantity:5,weaponAmmo:!1},[ie.Trap]:{id:ie.Trap,ammoType:K.Trap,quantity:5,weaponAmmo:!1},[ie.Prox]:{id:ie.Prox,ammoType:K.Prox,quantity:5,weaponAmmo:!1}};function Tt(e,t){return(e&t)!==0}var xn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(xn||{}),xA={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function EA(e,t,n){if(e<=0||Tt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=xA[n.armorType],i=Tt(t,4)?r.energyProtection:r.normalProtection,a=Math.ceil(i*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function kA(e,t,n,r,i,a={}){if(i.health<=0||e<=0)return{saved:0,remainingCells:i.cellCount};if(Tt(t,258))return{saved:0,remainingCells:i.cellCount};if(!i.type||i.cellCount<=0)return{saved:0,remainingCells:i.cellCount};let{forward:s}=ee(i.angles),o={x:n.x-i.origin.x,y:n.y-i.origin.y,z:n.z-i.origin.z},l=Math.hypot(o.x,o.y,o.z);if(i.type==="screen"&&l>0){let p={x:o.x/l,y:o.y/l,z:o.z/l};if(p.x*s.x+p.y*s.y+p.z*s.z<=.3)return{saved:0,remainingCells:i.cellCount}}let c=a.ctfMode??!1,u=i.type==="screen"||c?1:2,h=i.type==="screen"?e/3:2*e/3;h=Math.max(1,h);let m=i.cellCount*u;Tt(t,4)&&(m=Math.max(1,Math.floor(m/2))),m>h&&(m=Math.floor(h));let _=m/u;Tt(t,4)&&(_*=2),_=Math.max(1,Math.floor(_));let g=Math.max(u,_),A=Math.max(0,i.cellCount-g);return{saved:m,remainingCells:A}}var ge=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.HandGrenade="grenades",e.Grapple="grapple",e.IonRipper="ionripper",e.Phalanx="phalanx",e.Trap="trap",e.PlasmaBeam="plasmabeam",e.EtfRifle="etfrifle",e.ProxLauncher="proxlauncher",e.ChainFist="chainfist",e.Disruptor="disruptor",e))(ge||{}),ce=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.Silencer="silencer",e.Rebreather="rebreather",e.EnviroSuit="enviro",e.DoubleDamage="double",e.QuadFire="quadfire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="pack",e.IRGoggles="goggles",e.SphereVengeance="vengeance",e.SphereHunter="hunter",e.SphereDefender="defender",e.Doppelganger="doppelganger",e.TagToken="tagtoken",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))(ce||{}),ye=(e=>(e.Blue="key_blue",e.Red="key_red",e.Green="key_green",e.Yellow="key_yellow",e.DataCD="key_data_cd",e.PowerCube="key_power_cube",e.ExplosiveCharges="key_explosive_charges",e.PowerCore="key_power_core",e.Pyramid="key_pyramid",e.DataSpinner="key_data_spinner",e.Pass="key_pass",e.CommanderHead="key_commander_head",e.Airstrike="key_airstrike",e.NukeContainer="key_nuke_container",e.Nuke="key_nuke",e.RedFlag="key_red_flag",e.BlueFlag="key_blue_flag",e))(ye||{});var bA={...X};var Fz=Object.freeze({aiflags:0,last_sighting:bA,trail_time:0,pausetime:0});var So=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"random",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],TA=20,MA=440,RA=940,qs=32,zA=1<<24,xi=1;function Nd(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function zt(e,t){let n=Nd(e),r=Nd(t),i=AS(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function LA(e){return e<=TA?"melee":e<=MA?"near":e<=RA?"mid":"far"}function hr(e,t){let{forward:n}=ee(e.angles),r=G(F(t.origin,e.origin)),i=Kd(r,n);return(e.spawnflags&xi)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function En(e,t,n,r){if((t.flags&zA)!==0)return!1;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=r?.throughGlass?1:3,o=n(i,null,null,a,e,s);return o.fraction===1||o.ent===t}function NA(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=gr(n)}function qd(e){e.angles.y=ro(e.ideal_yaw)}function OA(e,t,n){e.enemy&&(e.goalentity=e.enemy,NA(e,e.enemy),qd(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function IA(e,t,n,r){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let i=e.monsterinfo.last_sighting;if(i.x=e.enemy.origin.x,i.y=e.enemy.origin.y,i.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){OA(e,t,n);return}let a=r?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function CA(e,t,n,r){let i=zt(e,t),a=LA(i);return a==="far"||t.light_level<=5||!En(e,t,r,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||hr(e,t):a==="mid"?hr(e,t):!0}function PA(e,t,n,r,i){if((e.spawnflags&xi)!==0){if(!En(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=F(t.origin,e.origin);return wn(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=gr(a),qd(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function FA(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&xi)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&xi)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function DA(e){return(e.flags&qs)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&qs)!==0:!!(e.enemy&&(e.enemy.flags&qs)!==0)}function Ao(e,t,n,r,i={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=FA(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(DA(a))return!1;if(s){if(!PA(e,a,t,i,r))return!1}else{if(!CA(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return IA(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Jd(e,t){if(t===0)return{x:0,y:0,z:0};let n=wi(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ni(e,t,n){let r=Jd(t,n),i=e.origin;return i.x+=r.x,i.y+=r.y,i.z+=r.z,!0}function kn(e,t){let n=ro(e.angles.y),r=e.ideal_yaw;if(n===r){e.angles.y=n;return}let i=e.yaw_speed*t*10,a=r-n;r>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>i?a=i:a<-i&&(a=-i),e.angles.y=ro(n+a)}function f(e,t){Ni(e,e.angles.y,t)}function Oi(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=gr(n)}function M(e,t,n){Ao(e,n.targetAwareness,n,n.trace)||kn(e,t)}function O(e,t,n,r){if(!Ao(e,r.targetAwareness,r,r.trace)&&(Oi(e,e.goalentity),kn(e,n),t!==0&&Ni(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&zt(e,e.goalentity)<64&&e.goalentity.target)){let a=r.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function J(e,t,n){t!==0&&Ni(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&kn(e,n)}function te(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}Ao(e,r.targetAwareness,r,r.trace),(e.monsterinfo.aiflags&32768)===0&&Oi(e,e.enemy??e.goalentity),kn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Qd(e,e.angles.y,t,r)}function UA(e,t,n,r){t&&(e.monsterinfo.aiflags&32768)===0&&Oi(e,t),kn(e,r),n!==0&&Ni(e,e.angles.y,n)}function ae(e,t,n,r){(e.monsterinfo.aiflags&32768)===0&&Oi(e,e.enemy),kn(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Qd(e,e.angles.y,t,r)}function BA(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},r=t.trace(e.origin,e.mins,e.maxs,n,e,Ai);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&US?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function GA(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},r={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},i={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?i={x:n.x,y:n.y,z:0}:i={x:r.x,y:n.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Ai).fraction<1)||(s===1?i={x:n.x,y:r.y,z:0}:i={x:r.x,y:r.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0)||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Ai).fraction<1))return!0;return!1}function Qd(e,t,n,r){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let i=Jd(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+i.x,y:e.origin.y+i.y,z:e.origin.z+i.z};if(r.trace(e.origin,e.mins,e.maxs,a,e,Ai).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!GA(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&BA(e,r),!0)}var HA=So.filter(e=>e.save||e.type==="callback"),Dz=new Map(HA.map(e=>[e.name,e]));function VA(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let r=1;return n.quad_time&&n.quad_time>t&&(r*=4),n.double_time&&n.double_time>t&&(r*=2),r}function WA(e,t,n,r,i){if(Tt(i,8)||((e.flags??0)&4)!==0||r===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=G(n),c=V(o,(t===e?1600:500)*r/s);return e.velocity=$(e.velocity,c),c}function KA(e,t,n,r,i){let a=r,s=0,o=0,l,c;if(e.powerArmor){let u=kA(r,i,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=EA(a,i,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function Od(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function we(e,t,n,r,i,a,s,o,l,c,u,h){if(!e.takedamage)return null;let m=VA(n,u),_=s*m,g=o*m;if(!Tt(l,32)&&((e.flags??0)&1)!==0&&_>0)return{take:0,psave:0,asave:_,knocked:{x:0,y:0,z:0},killed:!1};let p=WA(e,n,r,g,l),[S,b,E,v,w]=KA(e,i,a,_,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&_>0&&(S=e.health+100,b=0,E=0),e.powerArmor&&v!==void 0&&(e.powerArmor.cellCount=v),e.regularArmor&&(e.regularArmor.armorCount=w??e.regularArmor.armorCount);let T=S;T>0&&(e.health-=T,h&&!Tt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&h(i,1,be.temp_entity,Te.BLOOD,i,a));let k=e.health<=0;return k?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,i,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:b,asave:E,knocked:p,killed:k,remainingCells:v,remainingArmor:w}}function xo(e,t,n,r,i,a,s,o,l,c={},u){let h=[],m=Od(t),_=c.canDamage??(()=>!0);for(let g of e){if(g===i||!g.takedamage||!_(g,t))continue;let A=g.mins&&g.maxs?SS(m,$(g.origin,g.mins),$(g.origin,g.maxs)):Od(g),p=F(m,A),S=wn(p);if(a>0&&S>a)continue;let b=r-.5*S;if(b<=0)continue;let E=g===n?b*.5:b,v=G(F(g.origin,m)),w=we(g,t,n,v,A,v,E,E,s|1,o,l,u);h.push({target:g,result:w,appliedDamage:E})}return h}function $A(e,t,n,r,i,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:r.x*s,y:r.y*s,z:r.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,h,m)=>{if(u===c.owner)return;u&&u.takedamage&&we(u,c,c.owner,c.velocity,c.origin,h?h.normal:X,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let _=e.findByRadius(c.origin,120);xo(_,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,be.temp_entity,Te.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function em(e,t,n,r,i,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=9,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),o.mins={x:-4,y:-4,z:-4},o.maxs={x:4,y:4,z:4},o.avelocity={x:300,y:300,z:300};let l=c=>{let u=e.findByRadius(c.origin,120);xo(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,be.temp_entity,Te.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,h,m)=>{if(u!==c.owner){if(u&&u.takedamage){l(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{l(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function tm(e,t,n,r,i,a,s){let o=e.spawn();return s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,h)=>{if(c!==l.owner){if(c&&c.takedamage)we(c,l,l.owner,l.velocity,l.origin,u?u.normal:X,i,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let m=Te.BLASTER;s===58&&(m=Te.BLUEHYPERBLASTER),e.multicast(l.origin,1,be.temp_entity,m,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function XA(e,t,n,r,i,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,l,c,u)=>{if(l!==o.owner){if(l&&l.takedamage){we(l,o,o.owner,o.velocity,o.origin,c?c.normal:X,i,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}if(o.count=(o.count||0)+1,o.count>5){e.multicast(o.origin,1,be.temp_entity,Te.WELDING_SPARKS,o.origin,X,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,be.temp_entity,Te.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,be.temp_entity,Te.WELDING_SPARKS,o.origin,X,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function YA(e,t,n,r,i,a){tm(e,t,n,r,i,a,58)}function ZA(e,t,n,r){let i={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=G(F(a,i)),o={x:i.x+s.x*2048,y:i.y+s.y*2048,z:i.z+s.z*2048},l=16,c=[],u=[],h={...i};try{for(let _=0;_<l;_++){let g=e.trace(h,null,null,o,t,Le|Vt|An|Li);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&we(g.ent,t,t.owner,s,g.endpos,X,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;c.push(g.ent),u.push(g.ent.solid),g.ent.solid=0,h={...g.endpos}}let m=e.trace(i,null,null,o,t,Le);e.multicast(t.origin,2,be.temp_entity,Te.BFG_LASER,i,m.endpos)}finally{for(let m=0;m<c.length;m++)c[m].solid=u[m]}}function jA(e,t){let n=t.deathmatch?5:10,r=t.findByRadius(e.origin,256);for(let i of r){if(i===e||i===e.owner||!i.takedamage||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let a={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5};t.trace(e.origin,null,null,a,null,DS).fraction<1||ZA(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function qA(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let r of n){if(!r.takedamage||r===e.owner||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let i={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5},a=F(e.origin,i),s=wn(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&we(r,e,e.owner,e.velocity,i,X,Math.floor(l),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function JA(e,t,n,r,i,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=i,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,h)=>{if(c===l.owner)return;c&&c.takedamage&&we(c,l,l.owner,l.velocity,l.origin,u?u.normal:X,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let m=e.findByRadius(l.origin,100);xo(m,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,be.temp_entity,Te.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=X,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(_,g)=>qA(_,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>jA(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}var Uz=1/40;function QA(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ex=1;function tx(e,t){if(!e.client)return;let n=QA(e.client.weaponStates,"chaingun");!(e.client.buttons&ex)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var Bz={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:"blaster",ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:"shotgun",ammoType:K.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:"supershotgun",ammoType:K.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:"machinegun",ammoType:K.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:tx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:"chaingun",ammoType:K.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:"grenades",ammoType:K.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:"grenadelauncher",ammoType:K.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:"rocketlauncher",ammoType:K.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:"hyperblaster",ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:"railgun",ammoType:K.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:"bfg10k",ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:"ionripper",ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:"phalanx",ammoType:K.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:"plasmabeam",ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:"etfrifle",ammoType:K.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:"proxlauncher",ammoType:K.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};function nx(e,t){let n=e.monsterinfo.current_move;if(!n||((e.frame<n.firstframe||e.frame>n.lastframe)&&(e.monsterinfo.aiflags&=-129,e.frame=n.firstframe),(e.monsterinfo.aiflags&128)!==0))return;let r=e.frame-n.firstframe,i=n.frames[r];i.ai&&i.ai(e,i.dist,t),i.think&&i.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function rx(e,t){nx(e,t),e.nextthink=t.timeSeconds+.1}var Be=Ri();function ix(e,t,n){let r=e.spawn();r.classname="gib",r.origin={x:t.x+(Be.frandom()-.5)*20,y:t.y+(Be.frandom()-.5)*20,z:t.z+(Be.frandom()-.5)*20},r.velocity={x:(Be.frandom()-.5)*300,y:(Be.frandom()-.5)*300,z:200+Be.frandom()*100},r.movetype=9,r.solid=0,r.clipmask=1,r.avelocity={x:Be.crandom()*600,y:Be.crandom()*600,z:Be.crandom()*600};let i=["models/objects/gibs/bone/tris.md2","models/objects/gibs/meat/tris.md2","models/objects/gibs/sm_meat/tris.md2"],a=i[Math.floor(Be.frandom()*i.length)];r.modelindex=e.modelIndex(a),r.mins={x:-2,y:-2,z:-2},r.maxs={x:2,y:2,z:2},r.think=s=>{e.free(s)},e.scheduleThink(r,e.timeSeconds+10+Be.frandom()*10),e.finalizeSpawn(r)}function ax(e,t,n){let r=4+Math.floor(Be.frandom()*4);for(let i=0;i<r;i++)ix(e,t,n)}var Ii=.1,mr=80;var nm=Ri();function sx(){return nm.frandom()}function rm(e,t){return Math.floor(nm.frandom()*(t-e+1)+e)}function _n(e,t,n){M(e,Ii,n)}function Ve(e,t,n){O(e,t,Ii,n)}function mn(e,t,n){te(e,t,Ii,n)}function de(e,t,n){ae(e,t,Ii,n)}function H(e,t,n){f(e,t)}var fr={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function Xe(e,t){t.sound(e,2,fr.footstep,1,1,0)}function Ei(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function ox(e,t){}var Eo,im,cx,am,lx,ux,dx,mx,hx,sm,fx;function _x(e,t){Ei(e,Eo)}function gx(e,t){e.monsterinfo.aiflags&1||e.enemy||sx()>.15||(Ei(e,im),t.sound(e,1,fr.idle,1,2,0))}var px=[{ai:_n,dist:0,think:gx},{ai:_n,dist:0},{ai:_n,dist:0},{ai:_n,dist:0},{ai:_n,dist:0}];Eo={firstframe:0,lastframe:4,frames:px,endfunc:null};var vx=Array.from({length:20},()=>({ai:_n,dist:0}));im={firstframe:5,lastframe:24,frames:vx,endfunc:_x};var yx=[{ai:Ve,dist:9.1},{ai:Ve,dist:6.3},{ai:Ve,dist:4.9},{ai:Ve,dist:6.7,think:Xe},{ai:Ve,dist:6},{ai:Ve,dist:8.2},{ai:Ve,dist:7.2},{ai:Ve,dist:6.1},{ai:Ve,dist:4.9},{ai:Ve,dist:4.7,think:Xe},{ai:Ve,dist:4.7}];cx={firstframe:25,lastframe:35,frames:yx,endfunc:null};var wx=[{ai:mn,dist:21},{ai:mn,dist:11,think:Xe},{ai:mn,dist:21},{ai:mn,dist:25,think:ox},{ai:mn,dist:18,think:Xe},{ai:mn,dist:19}];am={firstframe:36,lastframe:41,frames:wx,endfunc:null};function pr(e,t){e.monsterinfo.aiflags&1?Ei(e,Eo):Ei(e,am)}function om(e,t,n,r,i){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=ee(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},l={x:a.x+s.x*mr,y:a.y+s.y*mr,z:a.z+s.z*mr},c=i.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(we(c.ent,e,e,s,c.endpos,c.plane?.normal||X,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function Sx(e,t){om(e,{x:mr,y:0,z:-24},rm(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function cm(e,t){t.sound(e,1,fr.punch,1,1,0)}var Ax=[{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:cm},{ai:de,dist:0,think:Sx},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];lx={firstframe:67,lastframe:74,frames:Ax,endfunc:pr};function xx(e,t){om(e,{x:mr,y:0,z:-4},rm(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Ex=[{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0,think:Xe},{ai:de,dist:0},{ai:de,dist:0,think:cm},{ai:de,dist:0},{ai:de,dist:0,think:xx},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];ux={firstframe:75,lastframe:86,frames:Ex,endfunc:pr};function kx(e,t,n,r,i,a){let s=a.findByRadius(e.origin,r);for(let o of s){if(o===e||!o.takedamage)continue;let l=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),c=Math.max(0,1-l/r);if(c<=0)continue;let u=Math.max(1,n*c*c),h=i*c*c,m=G(F(o.origin,e.origin));we(o,e,t,m,o.origin,m,u,h,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function ko(e,t){t.sound(e,1,fr.thud,1,1,0),t.sound(e,2,fr.explod,.75,1,0);let{forward:n,right:r}=ee(e.angles),i={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*i.x+r.x*i.y,y:e.origin.y+n.y*i.x+r.y*i.y,z:e.origin.z+n.z*i.x+r.z*i.y+i.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,be.temp_entity,Te.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},kx(e,e,8,165,300,t)}function bx(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,ko(e,i))}function bo(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Tx(e,t){if(!e.enemy)return;let n=F(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=G({x:n.x,y:n.y,z:0}),s=Sn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,h)=>{bx(l,c,u,h,t),l.groundentity&&(l.frame=104,ko(l,t),l.touch=void 0)},bo(e,t)}function Mx(e,t){if(bo(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(ko(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Rx=[{ai:de,dist:0},{ai:de,dist:0},{ai:H,dist:0,think:Tx},{ai:H,dist:0,think:bo},{ai:H,dist:0,think:Mx},{ai:H,dist:0,think:Xe},{ai:H,dist:0},{ai:H,dist:0,think:Xe},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Xe}];dx={firstframe:87,lastframe:109,frames:Rx,endfunc:pr};var zx=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];mx={firstframe:149,lastframe:152,frames:zx,endfunc:pr};var Lx=Array.from({length:20},(e,t)=>({ai:H,dist:0,think:t%5===4?Xe:void 0}));hx={firstframe:153,lastframe:172,frames:Lx,endfunc:pr};function lm(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=sm.lastframe,e.nextthink=-1,e.deadflag=2}var Nx=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Xe},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];sm={firstframe:173,lastframe:185,frames:Nx,endfunc:lm};var Ox=[{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0,think:Xe},{ai:H,dist:0},{ai:H,dist:0},{ai:H,dist:0}];fx={firstframe:186,lastframe:193,frames:Ox,endfunc:lm};function Id(){return 2*Math.random()-1}function ki(e,t,n,r,i,a,s,o,l,c=0){let u=n;if(a>0||s>0){let _=Sn(n),{right:g,up:A}=ee(_),p=Id()*a,S=Id()*s;u={x:n.x+g.x*p+A.x*S,y:n.y+g.y*p+A.y*S,z:n.z+g.z*p+A.z*S},u=G(u)}let h=$(t,V(u,8192)),m=l.trace(t,h,X,X,e,bt);!m.ent||m.fraction===1||we(m.ent,e,e,u,m.endpos,m.plane?.normal||X,r,i,18,c,l.timeSeconds)}var Mt=ki;function Ix(e,t,n,r,i,a,s,o,l,c,u=2){for(let h=0;h<o;h++)Mt(e,t,n,r,i,a,s,l,c,u)}function mt(e,t,n,r,i,a,s,o,l=1){tm(o,e,t,n,r,i,l)}function Cx(e,t,n,r,i,a,s,o){YA(o,e,t,n,r,i)}function Px(e,t,n,r,i,a,s,o){XA(o,e,t,n,r,i)}function Fx(e,t,n,r,i,a,s){em(s,e,t,n,r,i)}function vr(e,t,n,r,i,a,s){$A(s,e,t,n,r,120,i)}function um(e,t,n,r,i,a,s,o,l){JA(l,e,t,n,r,i,s)}function dm(e,t,n,r,i,a,s){let o=$(t,V(n,8192)),l=s.trace(t,o,X,X,e,bt);s.multicast(t,2,be.temp_entity,Te.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&we(l.ent,e,e,n,l.endpos,X,r,i,6,11,s.timeSeconds)}function yr(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=ee(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=$(s,V(a,o)),c=i.trace(s,l,X,X,e,bt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=G(F(c.endpos,s));return we(c.ent,e,e,u,c.endpos,c.plane?.normal||X,n,r,0,0,i.timeSeconds),!0}return!1}function Dx(e,t,n,r,i,a,s,o){vr(e,t,n,r,i,a,o)}function Cd(e,t){let n={...e.origin},r=$(n,V(e.movedir,2048)),i={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(i,r,X,X,e,Le|Vt|An|Li);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&we(c.ent,e,e.owner,e.movedir,c.endpos,X,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,be.temp_entity,Te.LASER_SPARKS,10,c.endpos,c.plane?.normal||X,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,i={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function Ux(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function io(e,t,n,r,i){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=i.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?Ux(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),Cd(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),Cd(a,i)}var To=.1,Bx={x:0,y:30,z:-15},Gx={x:0,y:15,z:0},Hx={x:0,y:-15,z:0},Vx={x:0,y:-30,z:-15},Wx={x:30,y:20,z:0},Kx={x:30,y:-20,z:0};function $x(e,t,n){M(e,To,n)}function Xx(e,t,n){O(e,t,To,n)}function Ci(e,t,n){ae(e,t,To,n)}function Mo(e,t,n){f(e,t)}var Ro,mm,hm,Yx,fm,_m,Zx,jx,qx,gm;function Jx(e){e.monsterinfo.current_move=Ro}function Qx(e){e.monsterinfo.current_move=mm}function wr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hm:e.monsterinfo.current_move=Ro}function pm(e){e.monsterinfo.current_move=fm}function e2(e){e.enemy&&hr(e,e.enemy)&&Math.random()<=.7?pm(e):e.monsterinfo.current_move=_m}function ao(e,t){let{forward:n,right:r,up:i}=ee(e.angles),a={...e.origin},s=V(n,t.x),o=V(r,t.y),l=V(i,t.z);return $($($(a,s),o),l)}function t2(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=ao(e,Wx),r=G(F(e.enemy.origin,n));Mt(e,n,r,6,4,.1,.05,0,t,4);let i=ao(e,Kx),a=G(F(e.enemy.origin,i));Mt(e,i,a,6,4,.1,.05,0,t,4)}function n2(e,t){if(!e.enemy)return;let n=[Bx,Gx,Hx,Vx],r=n[Math.floor(Math.random()*n.length)],i=ao(e,r),a=G(F(e.enemy.origin,i));vr(e,i,a,50,500,0,t)}function r2(e){e.monsterinfo.nextframe=gm.lastframe,e.nextthink=-1}var vm=Array.from({length:20},()=>({ai:Xx,dist:10}));mm={firstframe:0,lastframe:19,frames:vm,endfunc:Qx};hm={firstframe:0,lastframe:19,frames:vm,endfunc:wr};var i2=Array.from({length:21},()=>({ai:$x,dist:0}));Ro={firstframe:29,lastframe:49,frames:i2,endfunc:Jx};var a2=Array.from({length:9},(e,t)=>({ai:Ci,dist:2,think:t===8?pm:null}));Yx={firstframe:50,lastframe:58,frames:a2,endfunc:null};var s2=Array.from({length:6},()=>({ai:Ci,dist:2,think:t2}));fm={firstframe:59,lastframe:64,frames:s2,endfunc:e2};var o2=Array.from({length:4},()=>({ai:Ci,dist:2}));_m={firstframe:65,lastframe:68,frames:o2,endfunc:wr};var c2=Array.from({length:21},(e,t)=>({ai:Ci,dist:2,think:t===12?n2:null}));Zx={firstframe:69,lastframe:89,frames:c2,endfunc:wr};var l2=Array.from({length:18},()=>({ai:Mo,dist:0}));jx={firstframe:90,lastframe:107,frames:l2,endfunc:wr};var u2=Array.from({length:4},()=>({ai:Mo,dist:0}));qx={firstframe:108,lastframe:111,frames:u2,endfunc:wr};var d2=Array.from({length:49},()=>({ai:Mo,dist:0}));gm={firstframe:112,lastframe:160,frames:d2,endfunc:r2};var Pi=.1,zo=80,Fi=Math.random;function ym(e,t,n){M(e,Pi,n)}function We(e,t,n){O(e,t,Pi,n)}function Ke(e,t,n){te(e,t,Pi,n)}function I(e,t,n){ae(e,t,Pi,n)}function U(e,t,n){f(e,t)}var Lo,m2,h2,wm,Sm,f2,_2,g2,p2,v2,y2,w2,S2,A2;function Am(e){e.monsterinfo.current_move=Lo}function Lt(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Lo:e.monsterinfo.current_move=wm}function x2(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function E2(e,t){let n={x:zo,y:e.maxs.x,z:8};yr(e,n,15+Math.floor(Fi()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function k2(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function b2(e,t){let n={x:zo,y:e.mins.x,z:8};yr(e,n,15+Math.floor(Fi()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function xm(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Em(e,t){yr(e,{x:zo,y:0,z:8},10+Math.floor(Fi()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function km(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Sm)}function Pd(e,t){if(!e.enemy)return;let n=ee(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,X,X,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,be.temp_entity,Te.PARASITE_ATTACK,e,r,i);let s=F(r,i);we(e.enemy,e,e,s,e.enemy.origin,X,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=ee(e.angles).forward;e.enemy.velocity=V(o,-1200)}var Fd=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],Dd=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function T2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=ee(n.angles),s=n.frame-0;(s<0||s>=Fd.length)&&(s=0);let o=Fd[s],l=$(n.origin,V(i,o.x));l=$(l,V(r,o.y)),l=$(l,V(a,o.z));let c=G(F(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function M2(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=ee(n.angles),s=n.frame-0;(s<0||s>=Dd.length)&&(s=0);let o=Dd[s],l=$(n.origin,V(i,o.x));l=$(l,V(r,o.y)),l=$(l,V(a,o.z));let c=G(F(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function rt(e,t){io(e,1,!1,T2,t),io(e,1,!0,M2,t)}function R2(e){Fi()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function z2(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function L2(e){}function N2(e){e.monsterinfo.aiflags&=-17}var O2=Array.from({length:30},()=>({ai:ym,dist:0}));Lo={firstframe:162,lastframe:191,frames:O2,endfunc:Am};var I2=Array.from({length:30},()=>({ai:ym,dist:0}));m2={firstframe:192,lastframe:221,frames:I2,endfunc:Am};var C2=[{ai:We,dist:7},{ai:We,dist:2},{ai:We,dist:3},{ai:We,dist:3},{ai:We,dist:1},{ai:We,dist:0},{ai:We,dist:0},{ai:We,dist:9},{ai:We,dist:-4},{ai:We,dist:-1},{ai:We,dist:2}];h2={firstframe:0,lastframe:10,frames:C2,endfunc:null};var P2=[{ai:Ke,dist:9},{ai:Ke,dist:2},{ai:Ke,dist:3},{ai:Ke,dist:3},{ai:Ke,dist:1},{ai:Ke,dist:0},{ai:Ke,dist:0},{ai:Ke,dist:10},{ai:Ke,dist:-4},{ai:Ke,dist:-1},{ai:Ke,dist:2}];wm={firstframe:0,lastframe:10,frames:P2,endfunc:null};var F2=[{ai:I,dist:8},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:0},{ai:I,dist:-3,think:x2},{ai:I,dist:0},{ai:I,dist:-5},{ai:I,dist:-7,think:E2},{ai:I,dist:0},{ai:I,dist:6,think:k2},{ai:I,dist:1},{ai:I,dist:2,think:b2},{ai:I,dist:-3},{ai:I,dist:6},{ai:I,dist:-1},{ai:I,dist:-3},{ai:I,dist:2},{ai:I,dist:-11}];Sm={firstframe:53,lastframe:70,frames:F2,endfunc:Lt};var D2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:xm},{ai:I,dist:0},{ai:I,dist:13,think:Em},{ai:I,dist:0},{ai:I,dist:2},{ai:I,dist:0},{ai:I,dist:-9,think:km},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];f2={firstframe:71,lastframe:87,frames:D2,endfunc:Lt};var U2=[{ai:I,dist:5},{ai:I,dist:-4},{ai:I,dist:-4},{ai:I,dist:-3},{ai:I,dist:0,think:xm},{ai:I,dist:0,think:Pd},{ai:I,dist:13},{ai:I,dist:0,think:Em},{ai:I,dist:2},{ai:I,dist:0,think:Pd},{ai:I,dist:-9,think:km},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:3},{ai:I,dist:2},{ai:I,dist:-3},{ai:I,dist:-6}];_2={firstframe:71,lastframe:87,frames:U2,endfunc:Lt};var B2=[{ai:I,dist:9,think:rt},{ai:I,dist:2,think:rt},{ai:I,dist:3,think:rt},{ai:I,dist:3,think:rt},{ai:I,dist:1,think:rt},{ai:I,dist:0,think:rt},{ai:I,dist:0,think:rt},{ai:I,dist:10,think:rt},{ai:I,dist:-4,think:rt},{ai:I,dist:-1,think:rt},{ai:I,dist:2,think:R2}];g2={firstframe:0,lastframe:10,frames:B2,endfunc:Lt};var G2=[{ai:U,dist:-6},{ai:U,dist:-2},{ai:U,dist:-6},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:2},{ai:U,dist:0},{ai:U,dist:2},{ai:U,dist:1},{ai:U,dist:7},{ai:U,dist:0},{ai:U,dist:3},{ai:U,dist:-1}];p2={firstframe:88,lastframe:108,frames:G2,endfunc:Lt};var H2=[{ai:U,dist:-2},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:3},{ai:U,dist:1},{ai:U,dist:-2}];v2={firstframe:109,lastframe:116,frames:H2,endfunc:Lt};var V2=[{ai:U,dist:-2},{ai:U,dist:2},{ai:U,dist:1},{ai:U,dist:3},{ai:U,dist:0},{ai:U,dist:-4}];y2={firstframe:117,lastframe:122,frames:V2,endfunc:Lt};var W2=Array.from({length:18},()=>({ai:U,dist:0}));w2={firstframe:123,lastframe:140,frames:W2,endfunc:bm};var K2=[{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:0},{ai:U,dist:9},{ai:U,dist:0}];S2={firstframe:141,lastframe:145,frames:K2,endfunc:bm};var $2=[{ai:U,dist:0},{ai:U,dist:-2,think:z2},{ai:U,dist:17,think:L2},{ai:U,dist:-3},{ai:U,dist:-1,think:N2},{ai:U,dist:-5},{ai:U,dist:-6},{ai:U,dist:-6}];A2={firstframe:146,lastframe:153,frames:$2,endfunc:Lt};function bm(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var Di=.1,X2=80,bn=Math.random;function Tm(e,t,n){M(e,Di,n)}function Y2(e,t,n){O(e,t,Di,n)}function Z2(e,t,n){te(e,t,Di,n)}function B(e,t,n){ae(e,t,Di,n)}function Tn(e,t,n){f(e,t)}var No,Mm,Rm,j2,Oo,so,q2,Io,zm,J2,Q2,eE,tE,nE,rE,Lm;function Nm(e){e.monsterinfo.current_move=No}function iE(e){e.monsterinfo.current_move=Mm}function Wt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=No;return}e.monsterinfo.current_move=Rm}function aE(e){e.monsterinfo.aiflags&4||e.enemy||bn()<=.3&&(e.monsterinfo.current_move=Lm)}function sE(e,t){bn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function oE(e,t){let n={x:X2,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),yr(e,n,10+Math.floor(bn()*6),100,t)}function cE(e,t){let{forward:n,right:r}=ee(e.angles),i={x:0,y:20,z:40},a=$(e.origin,V(n,i.x)),s=V(r,i.y),o=$(a,s),l={...o,z:o.z+i.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,h=X;if(u&&e.monsterinfo.blind_fire_target)h=e.monsterinfo.blind_fire_target;else if(e.enemy)h=e.enemy.origin;else return;let m=F(h,l);!u&&e.enemy&&(bn()<.33||l.z<e.enemy.absmin.z?m={...m,z:m.z+e.enemy.viewheight}:m={...m,z:e.enemy.absmin.z+1-l.z});let _=G(m);e.skin>1?Dx(e,l,_,50,c,0,.075,t):vr(e,l,_,50,c,0,t)}function lE(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=F(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=Sn(n).y}}function uE(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function dE(e){e.monsterinfo.current_move=Oo}function mE(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=so;return}if(e.enemy&&e.enemy.health>0&&bn()<=.6){e.monsterinfo.current_move=Oo;return}e.monsterinfo.current_move=so}function hE(e){if(e.enemy&&e.enemy.health>0&&bn()<=.9){e.monsterinfo.current_move=Io;return}e.monsterinfo.current_move=zm}function fE(e){e.monsterinfo.current_move=Io}var _E=Array.from({length:30},(e,t)=>({ai:Tm,dist:0,think:t===8?(n,r)=>sE(n,r):null}));Lm={firstframe:201,lastframe:230,frames:_E,endfunc:Nm};var gE=Array.from({length:30},(e,t)=>({ai:Tm,dist:0,think:t===29?aE:null}));No={firstframe:101,lastframe:130,frames:gE,endfunc:Nm};var pE=Array.from({length:10},()=>({ai:Y2,dist:6}));Mm={firstframe:171,lastframe:180,frames:pE,endfunc:iE};var vE=Array.from({length:10},()=>({ai:Z2,dist:12}));Rm={firstframe:171,lastframe:180,frames:vE,endfunc:Wt};var yE=Array.from({length:5},()=>({ai:Tn,dist:0}));J2={firstframe:90,lastframe:94,frames:yE,endfunc:Wt};var wE=Array.from({length:5},()=>({ai:Tn,dist:0}));Q2={firstframe:95,lastframe:99,frames:wE,endfunc:Wt};var SE=Array.from({length:21},()=>({ai:Tn,dist:0}));eE={firstframe:100,lastframe:120,frames:SE,endfunc:Wt};var AE=Array.from({length:12},()=>({ai:Tn,dist:0}));tE={firstframe:48,lastframe:59,frames:AE,endfunc:Om};var xE=Array.from({length:23},()=>({ai:Tn,dist:0}));nE={firstframe:60,lastframe:82,frames:xE,endfunc:Om};function Om(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var EE=[{ai:B,dist:0,think:lE},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:4},{ai:B,dist:0},{ai:B,dist:-3},{ai:B,dist:3},{ai:B,dist:5},{ai:B,dist:7},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:dE}];j2={firstframe:0,lastframe:12,frames:EE,endfunc:null};var kE=[{ai:B,dist:19,think:cE},{ai:B,dist:-6},{ai:B,dist:-5},{ai:B,dist:-2},{ai:B,dist:-7},{ai:B,dist:0},{ai:B,dist:1},{ai:B,dist:10,think:uE},{ai:B,dist:4},{ai:B,dist:5},{ai:B,dist:6},{ai:B,dist:6},{ai:B,dist:4},{ai:B,dist:3,think:mE}];Oo={firstframe:13,lastframe:26,frames:kE,endfunc:null};var bE=[{ai:B,dist:-3},{ai:B,dist:0},{ai:B,dist:-6},{ai:B,dist:-4},{ai:B,dist:-2}];so={firstframe:27,lastframe:31,frames:bE,endfunc:Wt};var TE=[{ai:B,dist:1},{ai:B,dist:8},{ai:B,dist:3}];q2={firstframe:32,lastframe:34,frames:TE,endfunc:fE};var ME=[{ai:B,dist:1},{ai:B,dist:7,think:oE},{ai:B,dist:-7},{ai:B,dist:1},{ai:B,dist:-1},{ai:B,dist:1},{ai:B,dist:0},{ai:B,dist:1},{ai:B,dist:-2,think:hE}];Io={firstframe:35,lastframe:43,frames:ME,endfunc:null};var RE=[{ai:B,dist:-6},{ai:B,dist:-1},{ai:B,dist:-6},{ai:B,dist:0}];zm={firstframe:44,lastframe:47,frames:RE,endfunc:Wt};var zE=Array.from({length:7},()=>({ai:Tn,dist:0}));rE={firstframe:83,lastframe:89,frames:zE,endfunc:Wt};var Ui=.1,LE=80,NE=24;function OE(e,t,n){M(e,Ui,n)}function IE(e,t,n){O(e,t,Ui,n)}function Im(e,t,n){te(e,t,Ui,n)}function fe(e,t,n){ae(e,t,Ui,n)}function Co(e,t,n){f(e,t)}var CE,PE,Cm,Pm,FE,DE,UE,BE;function GE(e){e.monsterinfo.current_move=Pm}function Po(e){e.monsterinfo.current_move=Cm}function Ud(e,t){yr(e,{x:LE,y:0,z:0},5,0,t)}function HE(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var VE=[{ai:OE,dist:0}];CE={firstframe:41,lastframe:41,frames:VE,endfunc:null};var WE=Array.from({length:24},()=>({ai:Im,dist:NE}));Pm={firstframe:70,lastframe:93,frames:WE,endfunc:null};var KE=Array.from({length:6},()=>({ai:Im,dist:8}));Cm={firstframe:65,lastframe:70,frames:KE,endfunc:GE};var $E=Array.from({length:24},()=>({ai:IE,dist:4}));PE={firstframe:41,lastframe:64,frames:$E,endfunc:null};var XE=Array.from({length:5},()=>({ai:Co,dist:0}));DE={firstframe:99,lastframe:103,frames:XE,endfunc:Po};var YE=Array.from({length:5},()=>({ai:Co,dist:0}));UE={firstframe:94,lastframe:98,frames:YE,endfunc:Po};var ZE=[{ai:fe,dist:0,think:HE},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Ud},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0},{ai:fe,dist:0,think:Ud},{ai:fe,dist:0}];FE={firstframe:0,lastframe:19,frames:ZE,endfunc:Po};function jE(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var qE=Array.from({length:56},()=>({ai:Co,dist:0}));BE={firstframe:104,lastframe:159,frames:qE,endfunc:jE};var Bi=.1;function JE(e,t,n){M(e,Bi,n)}function QE(e,t,n){O(e,t,Bi,n)}function ek(e,t,n){te(e,t,Bi,n)}function tk(e,t,n){ae(e,t,Bi,n)}function Fm(e,t,n){f(e,t)}var Fo,Dm,Um,nk,rk,Bm;function ik(e){e.monsterinfo.current_move=Fo}function ak(e){e.monsterinfo.current_move=Dm}function Do(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Um:e.monsterinfo.current_move=Fo}function sk(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function ok(e){e.monsterinfo.nextframe=Bm.lastframe,e.nextthink=-1}var ck=Array.from({length:46},()=>({ai:JE,dist:0}));Fo={firstframe:0,lastframe:45,frames:ck,endfunc:ik};var lk=Array.from({length:46},()=>({ai:QE,dist:5}));Dm={firstframe:0,lastframe:45,frames:lk,endfunc:ak};var uk=Array.from({length:46},()=>({ai:ek,dist:10}));Um={firstframe:0,lastframe:45,frames:uk,endfunc:Do};var dk=Array.from({length:20},(e,t)=>({ai:tk,dist:0,think:t===10?sk:null}));nk={firstframe:46,lastframe:65,frames:dk,endfunc:Do};var mk=Array.from({length:6},()=>({ai:Fm,dist:0}));rk={firstframe:66,lastframe:71,frames:mk,endfunc:Do};var hk=Array.from({length:10},()=>({ai:Fm,dist:0}));Bm={firstframe:84,lastframe:93,frames:hk,endfunc:ok};var Gi=.1;function fk(e,t,n){M(e,Gi,n)}function _k(e,t,n){O(e,t,Gi,n)}function gk(e,t,n){te(e,t,Gi,n)}function pk(e,t,n){ae(e,t,Gi,n)}function Gm(e,t,n){f(e,t)}var Uo,Hm,Vm,vk,yk,Wm;function wk(e){e.monsterinfo.current_move=Uo}function Sk(e){e.monsterinfo.current_move=Hm}function Bo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vm:e.monsterinfo.current_move=Uo}function Ak(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function xk(e,t){if(!e.enemy)return;let n=5+Math.random()*5;zt(e,e.enemy)<=80&&hr(e,e.enemy)&&we(e.enemy,e,e,G(F(e.enemy.origin,e.origin)),e.enemy.origin,X,n,5,2,0,t.timeSeconds)}function Ek(e){e.monsterinfo.nextframe=Wm.lastframe,e.nextthink=-1}var kk=Array.from({length:46},()=>({ai:fk,dist:0}));Uo={firstframe:0,lastframe:45,frames:kk,endfunc:wk};var bk=Array.from({length:46},()=>({ai:_k,dist:5}));Hm={firstframe:0,lastframe:45,frames:bk,endfunc:Sk};var Tk=Array.from({length:46},()=>({ai:gk,dist:10}));Vm={firstframe:0,lastframe:45,frames:Tk,endfunc:Bo};var Mk=Array.from({length:20},(e,t)=>({ai:pk,dist:0,think:t===10?Ak:t===12?xk:null}));vk={firstframe:46,lastframe:65,frames:Mk,endfunc:Bo};var Rk=Array.from({length:6},()=>({ai:Gm,dist:0}));yk={firstframe:66,lastframe:71,frames:Rk,endfunc:Bo};var zk=Array.from({length:10},()=>({ai:Gm,dist:0}));Wm={firstframe:84,lastframe:93,frames:zk,endfunc:Ek};var Hi=.1;function Lk(e,t,n){M(e,Hi,n)}function Nk(e,t,n){O(e,t,Hi,n)}function Ok(e,t,n){te(e,t,Hi,n)}function Km(e,t,n){ae(e,t,Hi,n)}function $m(e,t,n){f(e,t)}var Go,Xm,Ym,Ik,Ck,Pk,Zm;function Fk(e){e.monsterinfo.current_move=Go}function Dk(e){e.monsterinfo.current_move=Xm}function Vi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ym:e.monsterinfo.current_move=Go}function Uk(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Bk(e,t){if(!e.enemy||!hr(e,e.enemy))return;let n=zt(e,e.enemy);if(Uk(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(F(e.enemy.origin,r));we(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function Gk(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(F(e.enemy.origin,n));dm(e,n,r,50,100,0,t)}function Hk(e){e.monsterinfo.nextframe=Zm.lastframe,e.nextthink=-1}var Vk=Array.from({length:30},()=>({ai:Lk,dist:0}));Go={firstframe:0,lastframe:29,frames:Vk,endfunc:Fk};var Wk=Array.from({length:40},()=>({ai:Nk,dist:3}));Xm={firstframe:30,lastframe:69,frames:Wk,endfunc:Dk};var Kk=Array.from({length:20},()=>({ai:Ok,dist:12}));Ym={firstframe:70,lastframe:89,frames:Kk,endfunc:Vi};var $k=Array.from({length:10},(e,t)=>({ai:Km,dist:0,think:t===5?Bk:null}));Ik={firstframe:90,lastframe:99,frames:$k,endfunc:Vi};var Xk=Array.from({length:12},(e,t)=>({ai:Km,dist:0,think:t===6?Gk:null}));Ck={firstframe:100,lastframe:111,frames:Xk,endfunc:Vi};var Yk=Array.from({length:6},()=>({ai:$m,dist:0}));Pk={firstframe:112,lastframe:117,frames:Yk,endfunc:Vi};var Zk=Array.from({length:12},()=>({ai:$m,dist:0}));Zm={firstframe:118,lastframe:129,frames:Zk,endfunc:Hk};var Wi=.1;function jm(e,t,n){M(e,Wi,n)}function jk(e,t,n){O(e,t,Wi,n)}function qm(e,t,n){te(e,t,Wi,n)}function Ki(e,t,n){ae(e,t,Wi,n)}function _e(e,t,n){f(e,t)}var Ho,Jm,qk,Qm,Jk,Qk,e5,Vo,eh,t5,n5,r5,th,i5,nh;function a5(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function s5(e){e.monsterinfo.current_move=Ho}function o5(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=Jm)}function Kt(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ho:e.monsterinfo.current_move=Qm}function c5(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function l5(e,t){e.monsterinfo.current_move=Vo}function u5(e,t){if(e.enemy&&e.enemy.health>0&&En(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Vo;return}e.monsterinfo.current_move=eh}function d5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=G(F(e.enemy.origin,n)),i=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Mt(e,n,r,i,a,300,500,0,t,5)}function rh(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),em(t,e,n,r,i,a)}function m5(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&rh(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function h5(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function f5(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function _5(e,t){if(!e.enemy)return;let n=F(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),i=600,a=G({x:n.x,y:n.y,z:0}),s=Sn(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function g5(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049;return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=214:e.monsterinfo.nextframe=212}function p5(e,t){if(e.spawnflags&16||!e.enemy||!e.groundentity)return;Math.sqrt(Math.pow(e.enemy.origin.x-e.origin.x,2)+Math.pow(e.enemy.origin.y-e.origin.y,2))>256&&Math.random()<.02&&(t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),e.monsterinfo.current_move=nh)}var v5=Array.from({length:30},(e,t)=>({ai:jm,dist:0,think:t===29?o5:null}));Ho={firstframe:0,lastframe:29,frames:v5,endfunc:null};var y5=Array.from({length:40},(e,t)=>({ai:jm,dist:0,think:t===7?a5:null}));Jm={firstframe:30,lastframe:69,frames:y5,endfunc:s5};var w5=[0,3,4,5,7,2,6,4,2,7,5,7,4],S5=w5.map(e=>({ai:jk,dist:e}));qk={firstframe:76,lastframe:88,frames:S5,endfunc:null};var A5=[26,9,9,9,15,10,13,6],x5=A5.map((e,t)=>({ai:qm,dist:e,think:t%4===0?p5:null}));Qm={firstframe:94,lastframe:101,frames:x5,endfunc:null};var E5=[32,15,10,18,8,20],k5=E5.map(e=>({ai:qm,dist:e}));Jk={firstframe:102,lastframe:107,frames:k5,endfunc:null};var b5=Array.from({length:21},(e,t)=>({ai:Ki,dist:0,think:[4,7,10,13].includes(t)?rh:null}));e5={firstframe:108,lastframe:128,frames:b5,endfunc:Kt};var T5=Array.from({length:7},(e,t)=>({ai:Ki,dist:0,think:t===0?c5:null}));Qk={firstframe:137,lastframe:143,frames:T5,endfunc:l5};var M5=Array.from({length:8},()=>({ai:Ki,dist:0,think:d5}));Vo={firstframe:144,lastframe:151,frames:M5,endfunc:u5};var R5=Array.from({length:7},()=>({ai:Ki,dist:0}));eh={firstframe:152,lastframe:158,frames:R5,endfunc:Kt};var z5=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],L5=z5.map(e=>({ai:_e,dist:e}));t5={firstframe:159,lastframe:176,frames:L5,endfunc:Kt};var N5=[-2,11,6,2,-1,-7,-2,-7],O5=N5.map(e=>({ai:_e,dist:e}));n5={firstframe:177,lastframe:184,frames:O5,endfunc:Kt};var I5=[-3,1,1,0,1],C5=I5.map(e=>({ai:_e,dist:e}));r5={firstframe:185,lastframe:189,frames:C5,endfunc:Kt};var P5=[0,0,0,-7,-3,-5,8,6,0,0,0],F5=P5.map(e=>({ai:_e,dist:e}));function D5(e){e.monsterinfo.nextframe=th.lastframe,e.nextthink=-1,e.solid=0}th={firstframe:190,lastframe:200,frames:F5,endfunc:D5};var U5=[{ai:_e,dist:1,think:m5},{ai:_e,dist:1},{ai:_e,dist:1,think:h5},{ai:_e,dist:0},{ai:_e,dist:-1},{ai:_e,dist:-1},{ai:_e,dist:0,think:f5},{ai:_e,dist:-1}];i5={firstframe:201,lastframe:208,frames:U5,endfunc:Kt};var B5=[{ai:_e,dist:0,think:_5},{ai:_e,dist:0},{ai:_e,dist:0},{ai:_e,dist:0,think:g5},{ai:_e,dist:0},{ai:_e,dist:0},{ai:_e,dist:0},{ai:_e,dist:0}];nh={firstframe:209,lastframe:216,frames:B5,endfunc:Kt};var $i=.1;function G5(e,t,n){M(e,$i,n)}function H5(e,t,n){O(e,t,$i,n)}function V5(e,t,n){te(e,t,$i,n)}function W5(e,t,n){ae(e,t,$i,n)}function ih(e,t,n){f(e,t)}var Wo,ah,sh,K5,$5,oh;function X5(e){e.monsterinfo.current_move=Wo}function Y5(e){e.monsterinfo.current_move=ah}function Ko(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=sh:e.monsterinfo.current_move=Wo}function Z5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function j5(e){e.monsterinfo.nextframe=oh.lastframe,e.nextthink=-1}var q5=Array.from({length:46},()=>({ai:G5,dist:0}));Wo={firstframe:0,lastframe:45,frames:q5,endfunc:X5};var J5=Array.from({length:46},()=>({ai:H5,dist:5}));ah={firstframe:0,lastframe:45,frames:J5,endfunc:Y5};var Q5=Array.from({length:46},()=>({ai:V5,dist:10}));sh={firstframe:0,lastframe:45,frames:Q5,endfunc:Ko};var eb=Array.from({length:20},(e,t)=>({ai:W5,dist:0,think:t===10?Z5:null}));K5={firstframe:46,lastframe:65,frames:eb,endfunc:Ko};var tb=Array.from({length:6},()=>({ai:ih,dist:0}));$5={firstframe:66,lastframe:71,frames:tb,endfunc:Ko};var nb=Array.from({length:10},()=>({ai:ih,dist:0}));oh={firstframe:84,lastframe:93,frames:nb,endfunc:j5};var Xi=.1;function rb(e,t,n){M(e,Xi,n)}function ib(e,t,n){O(e,t,Xi,n)}function ab(e,t,n){te(e,t,Xi,n)}function sb(e,t,n){ae(e,t,Xi,n)}function ch(e,t,n){f(e,t)}var $o,lh,uh,ob,cb,dh;function lb(e){e.monsterinfo.current_move=$o}function ub(e){e.monsterinfo.current_move=lh}function Xo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=uh:e.monsterinfo.current_move=$o}function db(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n));mt(e,n,r,5,1e3,0,0,t,1)}function mb(e){e.monsterinfo.nextframe=dh.lastframe,e.nextthink=-1}var hb=Array.from({length:46},()=>({ai:rb,dist:0}));$o={firstframe:0,lastframe:45,frames:hb,endfunc:lb};var fb=Array.from({length:46},()=>({ai:ib,dist:5}));lh={firstframe:0,lastframe:45,frames:fb,endfunc:ub};var _b=Array.from({length:46},()=>({ai:ab,dist:10}));uh={firstframe:0,lastframe:45,frames:_b,endfunc:Xo};var gb=Array.from({length:20},(e,t)=>({ai:sb,dist:0,think:t===10?db:null}));ob={firstframe:46,lastframe:65,frames:gb,endfunc:Xo};var pb=Array.from({length:6},()=>({ai:ch,dist:0}));cb={firstframe:66,lastframe:71,frames:pb,endfunc:Xo};var vb=Array.from({length:10},()=>({ai:ch,dist:0}));dh={firstframe:84,lastframe:93,frames:vb,endfunc:mb};var Yi=.1;function yb(e,t,n){M(e,Yi,n)}function wb(e,t,n){O(e,t,Yi,n)}function Sb(e,t,n){te(e,t,Yi,n)}function Ab(e,t,n){ae(e,t,Yi,n)}function Yo(e,t,n){f(e,t)}var Zo,mh,hh,xb,Eb,fh,kb;function bb(e){e.monsterinfo.current_move=Zo}function Tb(e){e.monsterinfo.current_move=mh}function Zi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hh:e.monsterinfo.current_move=Zo}function Mb(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},i=G(F(r,n));Mt(e,n,i,5,2,.05,.05,0,t,4)}var Rb=Array.from({length:22},()=>({ai:yb,dist:0}));Zo={firstframe:0,lastframe:21,frames:Rb,endfunc:bb};var zb=Array.from({length:15},()=>({ai:wb,dist:4}));mh={firstframe:22,lastframe:36,frames:zb,endfunc:Tb};var Lb=Array.from({length:8},()=>({ai:Sb,dist:12}));hh={firstframe:37,lastframe:44,frames:Lb,endfunc:Zi};var Nb=Array.from({length:15},(e,t)=>({ai:Ab,dist:0,think:t>=5&&t<=7?Mb:null}));xb={firstframe:45,lastframe:59,frames:Nb,endfunc:Zi};var Ob=Array.from({length:10},()=>({ai:Yo,dist:0}));Eb={firstframe:60,lastframe:69,frames:Ob,endfunc:Zi};var Ib=Array.from({length:20},()=>({ai:Yo,dist:0}));function Cb(e){e.monsterinfo.nextframe=fh.lastframe,e.nextthink=-1}fh={firstframe:70,lastframe:89,frames:Ib,endfunc:Cb};var Pb=Array.from({length:5},()=>({ai:Yo,dist:0}));kb={firstframe:90,lastframe:94,frames:Pb,endfunc:Zi};var Sr=.1,Fb={x:30,y:28,z:24},Db={x:26,y:16,z:24},Ub={x:26,y:-14,z:24};function Bb(e,t,n){M(e,Sr,n)}function Gb(e,t,n){O(e,t,Sr,n)}function Hb(e,t,n){te(e,t,Sr,n)}function _h(e,t,n){ae(e,t,Sr,n)}function Mn(e,t,n){f(e,t)}var jo,gh,ph,vh,qo,yh,wh,Sh,Ah,Jo,oo;function xh(e){e.monsterinfo.current_move=jo}function Eh(e){e.monsterinfo.current_move=gh}function ht(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ph:e.monsterinfo.current_move=jo}function Vb(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=vh:t<=.6?e.monsterinfo.current_move=qo:e.monsterinfo.current_move=yh}function Qo(e,t){let{forward:n,right:r,up:i}=ee(e.angles),a={...e.origin},s=V(n,t.x),o=V(r,t.y),l=V(i,t.z);return $($($(a,s),o),l)}function Wb(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=Qo(e,Fb),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=G(F(r,n));um(e,n,i,50,300,100,300,0,t)}function Kb(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=Qo(e,Ub),r=G(F(e.pos1,n));dm(e,n,r,50,100,0,t)}function $b(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function Xb(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=Qo(e,Db),r=(e.monsterinfo.nextframe||0)-qo.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=F(s,n),c={...Sn(o)};r<=12?c.y-=5*(r-4):c.y-=40-5*(r-12),a=ee(c).forward}else{let{forward:s}=ee(e.angles);a=s}mt(e,n,a,15,1e3,0,0,t,1)}function Yb(e,t,n,r,i){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(r<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,r<=40?(i.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=wh):r<=110?(i.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=Sh):Math.random()<=.45&&(i.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=Ah)))}function Zb(e,t){++e.frame>=365&&(e.frame=346),e.nextthink=t.timeSeconds+.1,e.angles.x>0&&(e.angles={...e.angles,x:Math.max(0,e.angles.x-15)})}function jb(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=Zb,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:r}=ee(e.angles),i=V(r,120),a=V(n,-120);e.velocity=$($(e.velocity,i),a),e.origin=$(e.origin,V(n,-10)),e.angles={...e.angles,x:90},e.avelocity=X,t.linkentity(e)}function qb(e,t){let n=t.spawn();n.classname="makron_torso",n.origin={...e.origin},n.angles={...e.angles},n.origin.z+=e.maxs.z-15,jb(n,t)}function Jb(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),qb(e,t),e.monsterinfo.current_move=Jo,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function Qb(e){e.monsterinfo.nextframe=Jo.lastframe,e.nextthink=-1}var e6=Array.from({length:60},()=>({ai:Bb,dist:0}));jo={firstframe:0,lastframe:59,frames:e6,endfunc:xh};var t6=Array.from({length:10},()=>({ai:Gb,dist:8}));gh={firstframe:60,lastframe:69,frames:t6,endfunc:Eh};var n6=Array.from({length:10},()=>({ai:Hb,dist:8}));ph={firstframe:60,lastframe:69,frames:n6,endfunc:ht};var r6=Array.from({length:8},(e,t)=>({ai:_h,dist:0,think:t===3?Wb:null}));vh={firstframe:70,lastframe:77,frames:r6,endfunc:ht};var i6=Array.from({length:26},(e,t)=>({ai:Mn,dist:0,think:t>=4&&t<=20?Xb:null}));qo={firstframe:78,lastframe:103,frames:i6,endfunc:ht};var a6=Array.from({length:16},(e,t)=>({ai:_h,dist:0,think:t===7?$b:t===8?Kb:null}));yh={firstframe:104,lastframe:119,frames:a6,endfunc:ht};var s6=Array.from({length:4},()=>({ai:Mn,dist:0}));wh={firstframe:120,lastframe:123,frames:s6,endfunc:ht};var o6=Array.from({length:4},()=>({ai:Mn,dist:0}));Sh={firstframe:124,lastframe:127,frames:o6,endfunc:ht};var c6=Array.from({length:27},()=>({ai:Mn,dist:0}));Ah={firstframe:128,lastframe:154,frames:c6,endfunc:ht};var l6=Array.from({length:95},()=>({ai:Mn,dist:0}));Jo={firstframe:155,lastframe:249,frames:l6,endfunc:Qb};var u6=Array.from({length:13},()=>({ai:Mn,dist:0}));oo={firstframe:250,lastframe:262,frames:u6,endfunc:ht};function d6(e,t){e.classname="monster_makron",e.model="models/monsters/boss3/rider/tris.md2",e.mins={x:-30,y:-30,z:0},e.maxs={x:30,y:30,z:90},e.movetype=5,e.solid=2,e.health=3e3,e.max_health=3e3,e.mass=500,e.takedamage=!0,e.viewheight=90,e.pain=(n,r,i,a)=>Yb(n,r,i,a,t.entities),e.die=(n,r,i,a,s)=>{if(n.health<=-2e3){ax(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,Jb(n,t.entities)},e.monsterinfo.stand=xh,e.monsterinfo.walk=Eh,e.monsterinfo.run=ht,e.monsterinfo.attack=Vb,e.monsterinfo.sight=(n,r)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=oo},e.think=rx,e.monsterinfo.current_move=oo,e.nextthink=e.timestamp+Sr}var ji=.1,m6={x:40,y:-20,z:20},h6={x:40,y:20,z:20},f6={x:30,y:0,z:40};function _6(e,t,n){M(e,ji,n)}function g6(e,t,n){O(e,t,ji,n)}function p6(e,t,n){te(e,t,ji,n)}function ec(e,t,n){ae(e,t,ji,n)}function Ar(e,t,n){f(e,t)}var tc,kh,bh,nc,co,v6,y6,w6,S6,Th;function A6(e){e.monsterinfo.current_move=tc}function x6(e){e.monsterinfo.current_move=kh}function Rn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=bh:e.monsterinfo.current_move=tc}function E6(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&En(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=nc:e.monsterinfo.current_move=co}function lo(e,t){let{forward:n,right:r,up:i}=ee(e.angles),a={...e.origin},s=V(n,t.x),o=V(r,t.y),l=V(i,t.z);return $($($(a,s),o),l)}function k6(e,t){if(!e.enemy)return;let n=lo(e,h6),r=G(F(e.enemy.origin,n));ki(e,n,r,6,4,.05,.05,0,t,4);let i=lo(e,m6),a=G(F(e.enemy.origin,i));ki(e,i,a,6,4,.05,.05,0,t,4)}function b6(e,t){if(!e.enemy)return;let n=lo(e,f6),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=G(F(r,n));um(e,n,i,50,300,100,200,0,t)}function T6(e){e.monsterinfo.nextframe=Th.lastframe,e.nextthink=-1}function M6(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,d6(n,{entities:t}),n.enemy&&n.enemy.health>0){let i=F(n.enemy.origin,n.origin);n.angles={...n.angles,y:gr(i)};let a=G(i),s=V(a,400);n.velocity={x:s.x,y:s.y,z:200},n.groundentity=null,n.monsterinfo.sight&&n.monsterinfo.sight(n,n.enemy)}}var R6=Array.from({length:51},()=>({ai:_6,dist:0}));tc={firstframe:0,lastframe:50,frames:R6,endfunc:A6};var z6=Array.from({length:14},()=>({ai:g6,dist:10}));kh={firstframe:51,lastframe:64,frames:z6,endfunc:x6};var L6=Array.from({length:14},()=>({ai:p6,dist:10}));bh={firstframe:51,lastframe:64,frames:L6,endfunc:Rn};var N6=Array.from({length:8},()=>({ai:ec,dist:0})),O6={firstframe:65,lastframe:72,frames:N6,endfunc:null},I6=Array.from({length:6},()=>({ai:ec,dist:0,think:k6}));nc={firstframe:73,lastframe:78,frames:I6,endfunc:E6};O6.endfunc=e=>{e.monsterinfo.current_move=nc};var C6=Array.from({length:4},()=>({ai:Ar,dist:0}));co={firstframe:79,lastframe:82,frames:C6,endfunc:Rn};var P6=Array.from({length:13},(e,t)=>({ai:ec,dist:0,think:t===6?b6:null}));v6={firstframe:83,lastframe:95,frames:P6,endfunc:Rn};var F6=Array.from({length:3},()=>({ai:Ar,dist:0}));y6={firstframe:96,lastframe:98,frames:F6,endfunc:Rn};var D6=Array.from({length:3},()=>({ai:Ar,dist:0}));w6={firstframe:99,lastframe:101,frames:D6,endfunc:Rn};var U6=Array.from({length:25},()=>({ai:Ar,dist:0}));S6={firstframe:102,lastframe:126,frames:U6,endfunc:Rn};var B6=Array.from({length:50},(e,t)=>({ai:Ar,dist:0,think:t===49?((n,r)=>{}):t===48?M6:null}));Th={firstframe:127,lastframe:176,frames:B6,endfunc:T6};var rc=.1,qi=4,Mh=8,Ji=16,G6=32,ic=64,H6=0,V6=39,W6=40,K6=58,$6=59,Rh=64,X6=93,Y6=95,ac=99,zh=159,Lh=160,Nh=172,Oh=173,Ih=198,Z6=199,j6=209,q6=210,J6=226,sc=227,oc=235,Ch=236,bi=244,Q6=245,e3=251,t3=252,n3=266,r3=267,i3=281,Ph,Fh,Dh,Uh,Bh,xr,Gh,Hh,Vh,Wh,a3,s3,Kh,$h,o3,c3,cc,Xh,l3="insane/insane11.wav",u3="insane/insane5.wav",d3="insane/insane7.wav",Bd=["insane/insane1.wav","insane/insane2.wav","insane/insane3.wav","insane/insane4.wav","insane/insane6.wav","insane/insane8.wav","insane/insane9.wav","insane/insane10.wav"];function uo(e,t){t.sound(e,2,l3,1,1,0)}function m3(e,t){(e.spawnflags&ic)===0&&t.sound(e,2,u3,1,1,0)}function lc(e,t){e.spawnflags&ic||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,d3,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function Nt(e,t){if(!(e.spawnflags&ic)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Bd[Math.floor(Math.random()*Bd.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Ce(e,t){}function Yh(e,t){e.spawnflags&G6||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=Dh:e.monsterinfo.current_move=Bh)}function h3(e,t){e.spawnflags&qi&&e.spawnflags&Ji||Math.random()<.5&&(e.monsterinfo.current_move=Uh)}function uc(e,t){e.monsterinfo.current_move=xr}function Zh(e,t){Math.random()<.8?e.monsterinfo.current_move=cc:e.monsterinfo.current_move=Xh}function dc(e,t){e.spawnflags&Mh?(e.monsterinfo.current_move=cc,e.monsterinfo.aiflags|=1):e.spawnflags&qi&&e.spawnflags&Ji?e.monsterinfo.current_move=xr:Math.random()<.5?e.monsterinfo.current_move=Ph:e.monsterinfo.current_move=Fh}function mc(e,t){if(e.spawnflags&Ji&&e.frame===bi){e.monsterinfo.current_move=xr;return}e.spawnflags&qi?e.monsterinfo.current_move=Kh:Math.random()<=.5?e.monsterinfo.current_move=Gh:e.monsterinfo.current_move=Vh}function Er(e,t){if(e.spawnflags&Ji&&e.frame===bi){e.monsterinfo.current_move=xr;return}let n=e.frame;e.spawnflags&qi||n>=Ch&&n<=bi||n>=sc&&n<=oc||n>=ac&&n<=zh?e.monsterinfo.current_move=$h:Math.random()<=.5?e.monsterinfo.current_move=Hh:e.monsterinfo.current_move=Wh}function jh(e,t){e.spawnflags&Mh?e.flags|=1:(e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,t.linkentity(e)),e.nextthink=-1}function d(e,t=0,n){return{ai:(r,i,a)=>{n&&n(r,a),e(r,t,rc,a)},dist:t}}var f3=[d(M),d(M),d(M),d(M),d(M),d(M,0,Yh)];Ph={firstframe:$6,lastframe:Rh,frames:f3,endfunc:dc};var _3=[d(M,0,m3),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M),d(M,0,Yh)];Fh={firstframe:Rh,lastframe:X6,frames:_3,endfunc:dc};var g3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,0,lc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,2.7),d(f,4.1),d(f,6),d(f,7.6),d(f,3.6),d(f),d(f),d(f,0,uo),d(f),d(f),d(f),d(f),d(f),d(f,0,uo),d(f),d(f),d(f),d(f),d(f),d(f)];Dh={firstframe:H6,lastframe:V6,frames:g3,endfunc:uc};var p3=[d(f,-.7),d(f,-1.2),d(f,-1.5),d(f,-4.5),d(f,-3.5),d(f,-.2),d(f),d(f,-1.3),d(f,-3),d(f,-2),d(f),d(f),d(f),d(f,-3.3),d(f,-1.6),d(f,-.3),d(f),d(f),d(f)];Uh={firstframe:W6,lastframe:K6,frames:p3,endfunc:dc};var v3=[d(f,.2),d(f,11.5),d(f,5.1),d(f,7.1),d(f)];Bh={firstframe:Y6,lastframe:ac,frames:v3,endfunc:uc};var y3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,-1.7),d(f,-1.6),d(f),d(f),d(f),d(f,0,uo),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,0,lc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f,.5),d(f),d(f,-.2,Nt),d(f),d(f,.2),d(f,.4),d(f,.6),d(f,.8),d(f,.7),d(f,0,h3)];xr={firstframe:ac,lastframe:zh,frames:y3,endfunc:uc};var mo=[d(O,0,Nt),d(O,2.5),d(O,3.5),d(O,1.7),d(O,2.3),d(O,2.4),d(O,2.2,Ce),d(O,4.2),d(O,5.6),d(O,3.3),d(O,2.4),d(O,.9),d(O,0,Ce)];Gh={firstframe:Lh,lastframe:Nh,frames:mo,endfunc:mc};Hh={firstframe:Lh,lastframe:Nh,frames:mo.map(e=>({ai:(t,n,r)=>{e.ai===mo[0].ai&&Nt(t,r),te(t,n,rc,r)},dist:e.dist})),endfunc:Er};var ho=[d(O,0,Nt),d(O,3.4),d(O,3.6),d(O,2.9),d(O,2.2),d(O,2.6,Ce),d(O),d(O,.7),d(O,4.8),d(O,5.3),d(O,1.1),d(O,2,Ce),d(O,.5),d(O),d(O),d(O,4.9),d(O,6.7),d(O,3.8),d(O,2,Ce),d(O,.2),d(O),d(O,3.4),d(O,6.4),d(O,5),d(O,1.8,Ce),d(O)];Vh={firstframe:Oh,lastframe:Ih,frames:ho,endfunc:mc};Wh={firstframe:Oh,lastframe:Ih,frames:ho.map(e=>({ai:(t,n,r)=>{e.ai===ho[0].ai&&Nt(t,r),te(t,n,rc,r)},dist:e.dist})),endfunc:Er};var w3=[d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f),d(f),d(f,0,Ce)];a3={firstframe:Z6,lastframe:j6,frames:w3,endfunc:Er};var S3=[d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f),d(f),d(f,0,Ce),d(f),d(f,0,Ce),d(f),d(f),d(f),d(f)];s3={firstframe:q6,lastframe:J6,frames:S3,endfunc:jh};var qh=[d(O,0,Nt),d(O,1.5),d(O,2.1),d(O,3.6),d(O,2,Ce),d(O,.9),d(O,3),d(O,3.4),d(O,2.4,Ce)];Kh={firstframe:sc,lastframe:oc,frames:qh,endfunc:mc};$h={firstframe:sc,lastframe:oc,frames:qh,endfunc:Er};var A3=[d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];o3={firstframe:Ch,lastframe:bi,frames:A3,endfunc:Er};var x3=[d(f),d(f),d(f),d(f),d(f,0,Nt),d(f),d(f)];c3={firstframe:Q6,lastframe:e3,frames:x3,endfunc:jh};var E3=[d(f,0,lc),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];cc={firstframe:t3,lastframe:n3,frames:E3,endfunc:Zh};var k3=[d(f,0,Nt),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f),d(f)];Xh={firstframe:r3,lastframe:i3,frames:k3,endfunc:Zh};var b3=.1,T3=0;var fo=0,Jh=39,M3=40,R3=47,z3=48,L3=53,N3=54,O3=56,I3=57,C3=59,P3=60,F3=62,D3=63,U3=76,B3=77,G3=93,H3=94,V3=100,W3=101,K3=113,$3=114,X3=117,Qh,ef,tf,Y3,Z3,j3,q3,J3,Q3,eT,tT;function x(e,t=0,n){return{ai:(r,i,a)=>{n&&n(r,a),e(r,t,b3,a)},dist:t}}function Gd(e,t){e.monsterinfo.current_move=Qh,t.timeSeconds<1&&(e.frame=fo+Math.floor(Math.random()*(Jh-fo+1)))}function nT(e,t){e.monsterinfo.current_move=ef}function zn(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?nT(e,t):Gd(e,t);return}if(e.monsterinfo.aiflags&1){Gd(e,t);return}e.monsterinfo.current_move=tf}function rT(e,t){let n={x:0,y:0,z:0},i=ee(e.angles).forward,a=to(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=F(e.enemy.origin,V(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=to(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=F(o,a),s=G(s)}else s=i;Mt(e,a,s,3,4,0,0,T3,t)}function nf(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.svflags|=1,e.nextthink=-1,t.linkentity(e)}function iT(e,t){rT(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var aT=[x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M),x(M)];Qh={firstframe:fo,lastframe:Jh,frames:aT,endfunc:null};var sT=[x(O),x(O,6),x(O,10),x(O,3),x(O,2),x(O,7),x(O,10),x(O,1)];ef={firstframe:M3,lastframe:R3,frames:sT,endfunc:null};var oT=[x(te,4),x(te,15),x(te,15),x(te,8),x(te,20),x(te,15)];tf={firstframe:z3,lastframe:L3,frames:oT,endfunc:null};var cT=[x(f,-5),x(f,4),x(f,1)];Y3={firstframe:N3,lastframe:O3,frames:cT,endfunc:zn};var lT=[x(f,-4),x(f,4),x(f)];Z3={firstframe:I3,lastframe:C3,frames:lT,endfunc:zn};var uT=[x(f,-1),x(f,1),x(f,0)];j3={firstframe:P3,lastframe:F3,frames:uT,endfunc:zn};var dT=[x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J)];q3={firstframe:D3,lastframe:U3,frames:dT,endfunc:zn};var mT=[x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J),x(J)];J3={firstframe:B3,lastframe:G3,frames:mT,endfunc:zn};var hT=[x(f),x(f),x(f,-13),x(f,14),x(f,3),x(f,-2),x(f,1)];Q3={firstframe:H3,lastframe:V3,frames:hT,endfunc:nf};var fT=[x(f),x(f,7),x(f,-6),x(f,-5),x(f,1),x(f),x(f,-1),x(f,-2),x(f,-1),x(f,-9),x(f,-13),x(f,-13),x(f)];eT={firstframe:W3,lastframe:K3,frames:fT,endfunc:nf};var _T=[x(ae,-2,iT),x(ae,-2),x(ae,3),x(ae,2)];tT={firstframe:$3,lastframe:X3,frames:_T,endfunc:zn};var _r=.1;function gT(e,t,n){if(e.classname==="monster_medic"&&of(e,n)){e.monsterinfo.current_move=kr;return}M(e,_r,n)}function pT(e,t,n){O(e,t,_r,n)}function vT(e,t,n){e.classname==="monster_medic"&&of(e,n)?e.monsterinfo.current_move=kr:te(e,t,_r,n)}function it(e,t,n){ae(e,t,_r,n)}function hc(e,t,n){f(e,t)}var fc,rf,kr,yT,af,wT,ST,sf;function AT(e){e.monsterinfo.current_move=fc}function xT(e){e.monsterinfo.current_move=rf}function br(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&zt(e,e.enemy)<80){e.monsterinfo.current_move=af;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=kr:e.monsterinfo.current_move=fc}function ET(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=G(F(e.enemy.origin,n));mt(e,n,r,2,1e3,0,0,t,10)}function kt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(zt(e,e.enemy)>400){e.monsterinfo.current_move=kr;return}let r=ee(e.angles),i=r.forward,a=r.right,s=r.up,o={x:24,y:0,z:6},l=$(e.origin,$(V(i,o.x),$(V(a,o.y),V(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,be.temp_entity,{te:Te.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function kT(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),kt(e,t)}function bT(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,r=t.getSpawnFunction(n.classname);if(zt(e,n)>400){e.enemy=null;return}if(!r)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let i={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};r(n,i),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function of(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,r=1024,i=(a,s,o,l,c,u)=>{let h=t.trace(a,s,o,l,c,u);return{fraction:h.fraction,ent:h.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!En(e,a,i))return;let s=zt(e,a);s<r&&(r=s,n=a)}),n?(e.enemy=n,!0):!1}function TT(e,t){let n=Math.random(),r="monster_soldier_light";n>.8?r="monster_soldier_ssg":n>.5&&(r="monster_soldier");let i=t.getSpawnFunction(r);if(i){let a=ee(e.angles),s=V(a.forward,64),o=$(e.origin,s),l={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},l,e,Le|Vt|Li);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},i(u,{entities:t,keyValues:{classname:r},warn:()=>{},free:m=>t.free(m)}),u.enemy=e.enemy,t.multicast(l,1,be.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function MT(e){e.monsterinfo.nextframe=sf.lastframe,e.nextthink=-1}var RT=Array.from({length:30},()=>({ai:gT,dist:0}));fc={firstframe:0,lastframe:29,frames:RT,endfunc:AT};var zT=Array.from({length:40},()=>({ai:pT,dist:3}));rf={firstframe:30,lastframe:69,frames:zT,endfunc:xT};var LT=Array.from({length:20},()=>({ai:vT,dist:12}));kr={firstframe:70,lastframe:89,frames:LT,endfunc:br};var NT=Array.from({length:16},(e,t)=>({ai:it,dist:0,think:t>=4&&t<=13?ET:null}));yT={firstframe:90,lastframe:105,frames:NT,endfunc:br};var OT=[{ai:it,dist:0,think:kT},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:kt},{ai:it,dist:0,think:bT}];af={firstframe:106,lastframe:114,frames:OT,endfunc:br};var IT=Array.from({length:6},()=>({ai:hc,dist:0}));ST={firstframe:116,lastframe:121,frames:IT,endfunc:br};var CT=Array.from({length:23},(e,t)=>({ai:hc,dist:0,think:t===11?TT:null}));wT={firstframe:122,lastframe:144,frames:CT,endfunc:br};var PT=Array.from({length:30},()=>({ai:hc,dist:0}));sf={firstframe:161,lastframe:190,frames:PT,endfunc:MT};var Tr=.1;function D(e,t,n){M(e,Tr,n)}function Ie(e,t,n){O(e,t,Tr,n)}function hn(e,t,n){te(e,t,Tr,n)}function Et(e,t,n){ae(e,t,Tr,n)}function Q(e,t,n){f(e,t)}function Js(e,t,n){UA(e,null,t,Tr)}var cf,lf,Ti,FT,DT,UT,BT,uf,df;function GT(e){e.monsterinfo.current_move=lf}function HT(e){e.monsterinfo.current_move=cf}function Ln(e){e.monsterinfo.current_move=Ti}function mf(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=F(e.enemy.origin,e.origin);if(wn(r)>100)return;let a=G(r);we(e.enemy,e,e,a,e.enemy.origin,X,t,0,0,0,n.timeSeconds)}function VT(e,t){mf(e,30,t)}function Hd(e,t){mf(e,30,t)}function gn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Ti),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Ti)}function WT(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),we(t,e,e,G(e.velocity),e.origin,X,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function KT(e,t){let n=ee(e.angles).forward;e.movetype=7,e.touch=WT,e.velocity=$(V(n,300),{x:0,y:0,z:300}),e.velocity=$(V(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function $T(e){e.monsterinfo.nextframe=uf.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var XT=[{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0},{ai:D,dist:0}];cf={firstframe:0,lastframe:50,frames:XT,endfunc:HT};var YT=[{ai:Ie,dist:3},{ai:Ie,dist:1},{ai:Ie,dist:5},{ai:Ie,dist:10},{ai:Ie,dist:13},{ai:Ie,dist:12},{ai:Ie,dist:0},{ai:Ie,dist:0},{ai:Ie,dist:5},{ai:Ie,dist:6},{ai:Ie,dist:16},{ai:Ie,dist:15},{ai:Ie,dist:6}];lf={firstframe:51,lastframe:63,frames:YT,endfunc:GT};var ZT=[{ai:hn,dist:20},{ai:hn,dist:15},{ai:hn,dist:35},{ai:hn,dist:20},{ai:hn,dist:10},{ai:hn,dist:20}];Ti={firstframe:64,lastframe:69,frames:ZT,endfunc:Ln};var jT=[{ai:Et,dist:0},{ai:Et,dist:0},{ai:Et,dist:0,think:Hd},{ai:Et,dist:0},{ai:Et,dist:0,think:VT},{ai:Et,dist:0},{ai:Et,dist:0,think:Hd},{ai:Et,dist:0}];FT={firstframe:70,lastframe:77,frames:jT,endfunc:Ln};var qT=[{ai:Js,dist:0},{ai:Js,dist:0},{ai:Js,dist:0,think:KT},{ai:Q,dist:0,think:gn},{ai:Q,dist:0,think:gn},{ai:Q,dist:0,think:gn},{ai:Q,dist:0,think:gn},{ai:Q,dist:0,think:gn}];df={firstframe:93,lastframe:100,frames:qT,endfunc:Ln};df.frames[3].ai=(e,t,n)=>{gn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var JT=[{ai:Q,dist:4},{ai:Q,dist:-3},{ai:Q,dist:-8},{ai:Q,dist:2},{ai:Q,dist:5}];DT={firstframe:78,lastframe:82,frames:JT,endfunc:Ln};var QT=[{ai:Q,dist:-24},{ai:Q,dist:11},{ai:Q,dist:5},{ai:Q,dist:-2}];UT={firstframe:83,lastframe:86,frames:QT,endfunc:Ln};var eM=[{ai:Q,dist:11},{ai:Q,dist:0},{ai:Q,dist:-2},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];BT={firstframe:87,lastframe:92,frames:eM,endfunc:Ln};var tM=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];uf={firstframe:101,lastframe:109,frames:tM,endfunc:$T};var Qi=.1,nM=()=>Math.random();function j(e,t,n){M(e,Qi,n)}function lt(e,t,n){O(e,t,Qi,n)}function ut(e,t,n){te(e,t,Qi,n)}function xe(e,t,n){ae(e,t,Qi,n)}function Ee(e,t,n){f(e,t)}var _c,hf,ff,rM,iM,_f,gf,aM,sM,gc,pf;function oM(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function cM(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function fn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function _o(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function lM(e){e.monsterinfo.current_move=gc}function uM(e){nM()<=.8?e.monsterinfo.current_move=gc:e.monsterinfo.current_move=pf}function vf(e){e.monsterinfo.current_move=_c}function pc(e){e.monsterinfo.current_move=hf}function yf(e){e.monsterinfo.current_move=gf}function wf(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=_c:e.monsterinfo.current_move=ff}function Qs(e,t){let n=F(t,e);if(wn(n)>256)return!1;let a=Sn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function $e(e,t){if(!e.enemy)return;let n=ee(e.angles),r=n.forward,i=n.right,a=n.up,s={x:24,y:0,z:6},o=$(e.origin,$(V(r,s.x),$(V(i,s.y),V(a,s.z)))),l=to(e.enemy.origin);if(!Qs(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Qs(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!Qs(o,l)))||t.trace(o,l,X,X,e,bt).ent!==e.enemy)return;let u=2,h=e.frame;h===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(h===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,be.temp_entity,{te:Te.PARASITE_ATTACK,entId:e.index,start:o,end:l});let m=G(F(o,l));we(e.enemy,e,e,m,e.enemy.origin,X,u,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=u,e.health>e.max_health&&(e.health=e.max_health))}function dM(e){e.monsterinfo.nextframe=_f.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var mM=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:fn},{ai:j,dist:0},{ai:j,dist:0,think:fn},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:fn},{ai:j,dist:0},{ai:j,dist:0,think:fn},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:fn},{ai:j,dist:0},{ai:j,dist:0,think:fn}];_c={firstframe:83,lastframe:99,frames:mM,endfunc:vf};var hM=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];sM={firstframe:100,lastframe:103,frames:hM,endfunc:lM};var fM=[{ai:j,dist:0,think:_o},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:_o},{ai:j,dist:0},{ai:j,dist:0}];gc={firstframe:104,lastframe:109,frames:fM,endfunc:uM};var _M=[{ai:j,dist:0,think:_o},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];pf={firstframe:110,lastframe:117,frames:_M,endfunc:vf};var gM=[{ai:ut,dist:0},{ai:ut,dist:30}];gf={firstframe:68,lastframe:69,frames:gM,endfunc:wf};var pM=[{ai:ut,dist:30},{ai:ut,dist:30},{ai:ut,dist:22},{ai:ut,dist:19},{ai:ut,dist:24},{ai:ut,dist:28},{ai:ut,dist:25}];ff={firstframe:70,lastframe:76,frames:pM,endfunc:wf};var vM=[{ai:lt,dist:0},{ai:lt,dist:30,think:pc}];aM={firstframe:68,lastframe:69,frames:vM,endfunc:pc};var yM=[{ai:lt,dist:30},{ai:lt,dist:30},{ai:lt,dist:22},{ai:lt,dist:19},{ai:lt,dist:24},{ai:lt,dist:28},{ai:lt,dist:25}];hf={firstframe:70,lastframe:76,frames:yM,endfunc:pc};var wM=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:6},{ai:Ee,dist:16},{ai:Ee,dist:-6},{ai:Ee,dist:-7},{ai:Ee,dist:0}];iM={firstframe:57,lastframe:67,frames:wM,endfunc:yf};var SM=[{ai:xe,dist:0,think:oM},{ai:xe,dist:0},{ai:xe,dist:15,think:$e},{ai:xe,dist:0,think:$e},{ai:xe,dist:0,think:$e},{ai:xe,dist:0,think:$e},{ai:xe,dist:0,think:$e},{ai:xe,dist:-2,think:$e},{ai:xe,dist:-2,think:$e},{ai:xe,dist:-3,think:$e},{ai:xe,dist:-2,think:$e},{ai:xe,dist:0,think:$e},{ai:xe,dist:-1,think:$e},{ai:xe,dist:0,think:cM},{ai:xe,dist:-2},{ai:xe,dist:-2},{ai:xe,dist:-3},{ai:xe,dist:0}];rM={firstframe:39,lastframe:56,frames:SM,endfunc:yf};var AM=[{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];_f={firstframe:32,lastframe:38,frames:AM,endfunc:dM};var ea=.1;var xM=2,EM=4;function kM(e,t,n){M(e,ea,n)}function bM(e,t,n){O(e,t,ea,n)}function TM(e,t,n){te(e,t,ea,n)}function Sf(e,t,n){ae(e,t,ea,n)}function Af(e,t,n){f(e,t)}var vc,xf,Ef,MM,RM,zM,kf;function LM(e){e.monsterinfo.current_move=vc}function NM(e){e.monsterinfo.current_move=xf}function ta(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ef:e.monsterinfo.current_move=vc}function Mr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Rr(e,t){if(!e.enemy){let{forward:r}=ee(e.angles);return r}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return G(F(n,t))}function OM(e,t){if(!e.enemy)return;let n=Mr(e),r=Rr(e,n);mt(e,n,r,5,600,0,0,t,1)}function IM(e,t){if(!e.enemy)return;let n=Mr(e),r=Rr(e,n),i=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Ix(e,n,r,i,a,o,l,s,0,t,3)}function CM(e,t){if(!e.enemy)return;let n=Mr(e),r=Rr(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Mt(e,n,r,i,a,s,o,0,t,4)}function PM(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:r,right:i,up:a}=ee(n.angles),s={...n.origin};s=$(s,V(r,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=G(F(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function FM(e,t){if(!e.enemy)return;let n=Mr(e),r=Rr(e,n);Px(e,n,r,5,600,0,0,t)}function DM(e,t){if(!e.enemy)return;let n=Mr(e),r=Rr(e,n),i=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Cx(e,n,r,i,a,0,0,t)}function UM(e,t){e.enemy&&io(e,1,!1,PM,t)}function BM(e,t){e.count<2?FM(e,t):e.count<4?DM(e,t):UM(e,t)}function bf(e,t){if(e.style===1){BM(e,t);return}e.spawnflags&xM?IM(e,t):e.spawnflags&EM?CM(e,t):OM(e,t)}var GM=Array.from({length:30},()=>({ai:kM,dist:0}));vc={firstframe:0,lastframe:29,frames:GM,endfunc:LM};var HM=Array.from({length:40},()=>({ai:bM,dist:2}));xf={firstframe:30,lastframe:69,frames:HM,endfunc:NM};var VM=Array.from({length:20},()=>({ai:TM,dist:10}));Ef={firstframe:70,lastframe:89,frames:VM,endfunc:ta};var WM=Array.from({length:10},(e,t)=>({ai:Sf,dist:0,think:t===5?bf:null}));MM={firstframe:90,lastframe:99,frames:WM,endfunc:ta};var KM=Array.from({length:10},(e,t)=>({ai:Sf,dist:0,think:t>=4&&t<=8?bf:null}));RM={firstframe:90,lastframe:99,frames:KM,endfunc:ta};var $M=Array.from({length:6},()=>({ai:Af,dist:0}));zM={firstframe:100,lastframe:105,frames:$M,endfunc:ta};var XM=Array.from({length:10},()=>({ai:Af,dist:0}));function YM(e){e.monsterinfo.nextframe=kf.lastframe,e.nextthink=-1}kf={firstframe:106,lastframe:115,frames:XM,endfunc:YM};var Tf=.1,ZM={x:30,y:30,z:40},jM={x:30,y:-30,z:40},qM={x:20,y:0,z:70};function JM(e,t,n){M(e,Tf,n)}function QM(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wc:e.monsterinfo.current_move=na}function yc(e,t,n){ae(e,t,Tf,n)}function zr(e,t,n){f(e,t)}var na,wc,e8,t8,Mf,Rf,n8,r8,i8,zf;function a8(e){e.monsterinfo.current_move=na}function $t(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wc:e.monsterinfo.current_move=na}function Sc(e,t){let{forward:n,right:r,up:i}=ee(e.angles),a={...e.origin},s=V(n,t.x),o=V(r,t.y),l=V(i,t.z);return $($($(a,s),o),l)}function s8(e,t){if(!e.enemy)return;let n=Sc(e,jM),r=G(F(e.enemy.origin,n));vr(e,n,r,50,650,0,t)}function o8(e,t){if(!e.enemy)return;let n=Sc(e,qM),r=G(F(e.enemy.origin,n));Fx(e,n,r,50,600,0,t)}function c8(e,t){if(!e.enemy)return;let n=Sc(e,ZM),r=G(F(e.enemy.origin,n));ki(e,n,r,6,4,.05,.05,0,t,4)}function l8(e,t){let n=(r,i,a,s,o,l)=>{let c=t.trace(r,i,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&En(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=Mf:e.monsterinfo.current_move=Rf}function u8(e){e.monsterinfo.nextframe=zf.lastframe,e.nextthink=-1}var d8=Array.from({length:60},()=>({ai:JM,dist:0}));na={firstframe:0,lastframe:59,frames:d8,endfunc:a8};var m8=Array.from({length:18},()=>({ai:QM,dist:12}));wc={firstframe:60,lastframe:77,frames:m8,endfunc:$t};var h8=Array.from({length:4},()=>({ai:zr,dist:0}));i8={firstframe:78,lastframe:81,frames:h8,endfunc:$t};var f8=Array.from({length:4},()=>({ai:zr,dist:0}));r8={firstframe:82,lastframe:85,frames:f8,endfunc:$t};var _8=Array.from({length:4},()=>({ai:zr,dist:0}));n8={firstframe:86,lastframe:89,frames:_8,endfunc:$t};var g8=Array.from({length:24},()=>({ai:zr,dist:0}));zf={firstframe:90,lastframe:113,frames:g8,endfunc:u8};var p8=Array.from({length:6},(e,t)=>({ai:yc,dist:0,think:t===0||t===3?o8:null}));t8={firstframe:114,lastframe:119,frames:p8,endfunc:$t};var v8=Array.from({length:27},(e,t)=>({ai:yc,dist:0,think:t===7||t===10||t===13?s8:null}));e8={firstframe:120,lastframe:146,frames:v8,endfunc:$t};var y8=Array.from({length:6},()=>({ai:yc,dist:0,think:c8}));Mf={firstframe:147,lastframe:152,frames:y8,endfunc:l8};var w8=Array.from({length:14},()=>({ai:zr,dist:0}));Rf={firstframe:153,lastframe:166,frames:w8,endfunc:$t};var Ac=.1;function Lf(e,t,n,r,i){let a=i.trace(t,n,X,X,e,bt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(F(n,t));let s=$(n,V(r,-20)),o=i.trace(t,s,X,X,e,bt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(F(s,t));let l=$(n,V(r,20)),c=i.trace(t,l,X,X,e,bt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(F(l,t)):null}function Nf(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=F(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=gr(n)}}function S8(e,t,n){M(e,Ac,n)}function A8(e,t,n){O(e,t,Ac,n)}function x8(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ec:e.monsterinfo.current_move=ra}function xc(e,t,n){ae(e,t,Ac,n)}function Of(e,t,n){f(e,t)}var ra,If,Ec,E8,k8,b8,T8,Cf;function M8(e){e.monsterinfo.current_move=ra}function R8(e){e.monsterinfo.current_move=If}function Lr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ec:e.monsterinfo.current_move=ra}function z8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=ee(o),c=e.monsterinfo.blind_fire_target,u=Lf(e,n,c,l,t);if(!u)return;r=u}else r=G(F(e.enemy.origin,n));mt(e,n,r,30,1e3,0,0,t,1)}function L8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(F(e.enemy.origin,n));Mt(e,n,r,20,2,.05,.05,0,t,4)}function N8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=ee(o),c=e.monsterinfo.blind_fire_target,u=Lf(e,n,c,l,t);if(!u)return;r=u}else r=G(F(e.enemy.origin,n));vr(e,n,r,50,650,0,t)}function O8(e){e.monsterinfo.nextframe=Cf.lastframe,e.nextthink=-1}function I8(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Lr(e)}var C8=Array.from({length:30},()=>({ai:S8,dist:0}));ra={firstframe:0,lastframe:29,frames:C8,endfunc:M8};var P8=Array.from({length:16},()=>({ai:A8,dist:5}));If={firstframe:30,lastframe:45,frames:P8,endfunc:R8};var F8=Array.from({length:16},()=>({ai:x8,dist:10}));Ec={firstframe:46,lastframe:61,frames:F8,endfunc:Lr};var D8=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=Nf:t>5&&t<12&&(n=z8),{ai:xc,dist:0,think:n}});E8={firstframe:62,lastframe:77,frames:D8,endfunc:Lr};var U8=Array.from({length:20},(e,t)=>({ai:xc,dist:0,think:t%2===0&&t>5?L8:null}));k8={firstframe:78,lastframe:97,frames:U8,endfunc:Lr};var B8=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=Nf:(t===8||t===12||t===16)&&(n=N8),{ai:xc,dist:0,think:n}});b8={firstframe:98,lastframe:115,frames:B8,endfunc:I8};var G8=Array.from({length:6},()=>({ai:Of,dist:0}));T8={firstframe:116,lastframe:121,frames:G8,endfunc:Lr};var H8=Array.from({length:16},()=>({ai:Of,dist:0}));Cf={firstframe:122,lastframe:137,frames:H8,endfunc:O8};var kc=.1;function V8(e,t,n){M(e,kc,n)}function bc(e,t,n){te(e,t,kc,n)}function W8(e,t,n){ae(e,t,kc,n)}var Tc,Pf,K8,$8,Ff;function X8(e){e.monsterinfo.current_move=Tc}function Mc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Pf:e.monsterinfo.current_move=Tc}function Y8(e,t){if(!e.enemy)return;let n=ee(e.angles).forward,r={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},i=G(F(e.enemy.origin,r));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),mt(e,r,i,2,1e3,1,0,t)}var Z8=Array.from({length:1},()=>({ai:V8,dist:0}));Tc={firstframe:0,lastframe:0,frames:Z8,endfunc:X8};var j8=Array.from({length:1},()=>({ai:bc,dist:0}));Pf={firstframe:0,lastframe:0,frames:j8,endfunc:Mc};var q8=Array.from({length:8},(e,t)=>({ai:W8,dist:0,think:t===4?Y8:void 0}));K8={firstframe:1,lastframe:8,frames:q8,endfunc:Mc};var J8=Array.from({length:2},()=>({ai:bc,dist:0}));$8={firstframe:9,lastframe:10,frames:J8,endfunc:Mc};var Q8=Array.from({length:4},()=>({ai:bc,dist:0}));function eR(e){e.monsterinfo.nextframe=Ff.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}Ff={firstframe:11,lastframe:14,frames:Q8,endfunc:eR};var Gz=new Map(So.map(e=>[e.name,e]));var tR=2166136261,nR=16777619;function Df(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,nR)>>>0;return n>>>0}function pn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let i=new Uint8Array(n);return Df(e,i)}function go(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return Df(e,n)}var eo=2,rR=1;function Pe(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ue(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function vn(e,t,n){return e===void 0?n:ue(e,t)}function Mi(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Si(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ue(n,`${t} element`);return e}function iR(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Pe(e,"level");return{frameNumber:vn(t.frameNumber,"level.frameNumber",0),timeSeconds:vn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:vn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:vn(t.deltaSeconds,"level.deltaSeconds",0)}}function aR(e){if(e===void 0)return new Xd().getState();let t=Pe(e,"rng"),n=Pe(t.mt,"rng.mt"),r=Si(n.state,"rng.mt.state");return{mt:{index:ue(n.index,"rng.mt.index"),state:r}}}function sR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let r=Pe(t,`thinks[${n}]`);return{time:ue(r.time,`thinks[${n}].time`),entityIndex:ue(r.entityIndex,`thinks[${n}].entityIndex`)}})}function oR(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Pe(e,"awareness"),n=(r,i)=>r===null?null:ue(r,i);return{frameNumber:ue(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ue(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ue(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ue(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function cR(e){if(e===void 0)return{};let t=Pe(e,"entity.fields"),n={};for(let[r,i]of Object.entries(t)){if(i===null){n[r]=null;continue}switch(typeof i){case"number":case"string":case"boolean":n[r]=i;break;default:{if(!Array.isArray(i)){let a=Pe(i,r),s={};for(let[o,l]of Object.entries(a))s[o]=ue(l,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[ue(a,`${r}[0]`),ue(s,`${r}[1]`),ue(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function lR(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=Pe(t,`entities[${n}]`);return{index:ue(r.index,`entities[${n}].index`),fields:cR(r.fields)}})}function uR(e){let t=Pe(e,"pool");return{capacity:ue(t.capacity,"pool.capacity"),activeOrder:Si(t.activeOrder,"pool.activeOrder"),freeList:Si(t.freeList,"pool.freeList"),pendingFree:Si(t.pendingFree,"pool.pendingFree")}}function dR(e){let t=Pe(e,"entities");return{timeSeconds:ue(t.timeSeconds,"entities.timeSeconds"),pool:uR(t.pool),entities:lR(t.entities),thinks:sR(t.thinks),awareness:oR(t.awareness),crossLevelFlags:vn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:vn(t.crossUnitFlags,"entities.crossUnitFlags",0)}}function mR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let r=Pe(t,`cvars[${n}]`);return{name:Mi(r.name,`cvars[${n}].name`),value:Mi(r.value,`cvars[${n}].value`),flags:ue(r.flags,`cvars[${n}].flags`)}})}function hR(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Mi(t,`configstrings[${n}]`))}function fR(e){return e===void 0?{}:Pe(e,"gameState")}function dt(e,t){if(t==null)return e;if(typeof t=="number")return pn(e,t);if(typeof t=="string")return go(e,t);if(typeof t=="boolean")return pn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let r of t)n=dt(n,r);return n}if(typeof t=="object"){let n=e,r=Object.keys(t).sort();for(let i of r)n=go(n,i),n=dt(n,t[i]);return n}return e}function _R(e){let t=tR;return t=pn(t,e.version),t=pn(t,e.timestamp),t=go(t,e.map),t=pn(t,e.difficulty),t=pn(t,e.playtimeSeconds),t=dt(t,e.gameState),t=dt(t,e.level),t=dt(t,e.rng),t=dt(t,e.entities),t=dt(t,e.cvars),t=dt(t,e.configstrings),e.player&&(t=dt(t,e.player)),t>>>0}function Uf(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=Pe(r,"save"),a=i.version??eo,s=ue(a,"version");if(s<rR)throw new Error(`Unsupported save version ${s}`);if(s>eo&&!n)throw new Error(`Save version ${s} is newer than supported ${eo}`);let o={version:s,timestamp:ue(i.timestamp,"timestamp"),map:Mi(i.map,"map"),difficulty:ue(i.difficulty,"difficulty"),playtimeSeconds:ue(i.playtimeSeconds,"playtimeSeconds"),gameState:fR(i.gameState),level:iR(i.level),rng:aR(i.rng),entities:dR(i.entities),cvars:mR(i.cvars),configstrings:hR(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?ue(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=_R(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var Hz=new Set(So.filter(e=>e.save).map(e=>e.name));var Vd=globalThis.TextEncoder;function yn(e){return Uf({...e},{allowNewerVersion:!0})}function gR(e){return Vd?new Vd().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var pR=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:yn(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:yn(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:yn(e.save)}))}},vR=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((r,i)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:yn(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:yn(t.save)}))}},Rc=class ur{constructor(t={}){let{dbName:n=ur.DEFAULT_DB_NAME,storeName:r=ur.DEFAULT_STORE}=t,i=t.indexedDB??globalThis.indexedDB;i?this.adapter=new vR(i,n,r):this.adapter=new pR}async save(t,n,r={}){let i=yn(n),a={id:t,name:r.name??t,map:i.map,difficulty:i.difficulty,playtimeSeconds:i.playtimeSeconds,timestamp:i.timestamp,version:i.version,bytes:gR(i)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:i}),a}async load(t,n={}){await this.adapter.init();let r=await this.adapter.get(t);if(!r)throw new Error(`Save slot ${t} not found`);return Uf(r.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,r)=>r.timestamp-n.timestamp||n.id.localeCompare(r.id))}async quickSave(t){return this.save(ur.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(ur.QUICK_SLOT,t)}};Rc.DEFAULT_DB_NAME="quake2ts-saves";Rc.DEFAULT_STORE="saves";Rc.QUICK_SLOT="quicksave";var Vz=Ri();var Wz=Ri();var yR=new Map,wR=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Bf=async(e,t)=>{for(let n of wR)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);yR.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var SR=new Map,AR=["d_left","d_right","d_up","d_down"],Gf=async(e,t)=>{for(let n of AR)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);SR.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var zc=[],xR=0,Hf=async(e,t)=>{for(let n=0;n<10;n++)try{let r=await t.loadTexture(`pics/hud/num_${n}.pcx`),i=e.registerTexture(`hud_num_${n}`,r);zc.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}zc.length>0&&(xR=zc[0].width),await zd(e,t),await Bf(e,t),await Gf(e,t)};var Lc=[{type:"null"},{type:"armor",id:xn.BODY},{type:"armor",id:xn.COMBAT},{type:"armor",id:xn.JACKET},{type:"armor",id:xn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:ge.Grapple},{type:"weapon",id:ge.Blaster},{type:"weapon",id:ge.ChainFist},{type:"weapon",id:ge.Shotgun},{type:"weapon",id:ge.SuperShotgun},{type:"weapon",id:ge.Machinegun},{type:"weapon",id:ge.EtfRifle},{type:"weapon",id:ge.Chaingun},{type:"ammo",id:K.Grenades},{type:"ammo",id:K.Trap},{type:"ammo",id:K.Tesla},{type:"weapon",id:ge.GrenadeLauncher},{type:"weapon",id:ge.ProxLauncher},{type:"weapon",id:ge.RocketLauncher},{type:"weapon",id:ge.HyperBlaster},{type:"weapon",id:ge.IonRipper},{type:"weapon",id:ge.PlasmaBeam},{type:"weapon",id:ge.Railgun},{type:"weapon",id:ge.Phalanx},{type:"weapon",id:ge.BFG10K},{type:"weapon",id:ge.Disruptor},{type:"ammo",id:K.Shells},{type:"ammo",id:K.Bullets},{type:"ammo",id:K.Cells},{type:"ammo",id:K.Rockets},{type:"ammo",id:K.Slugs},{type:"ammo",id:K.MagSlugs},{type:"ammo",id:K.Flechettes},{type:"ammo",id:K.Prox},{type:"ammo",id:K.Nuke},{type:"ammo",id:K.Rounds},{type:"powerup",id:ce.QuadDamage},{type:"powerup",id:ce.QuadFire},{type:"powerup",id:ce.Invulnerability},{type:"powerup",id:ce.Invisibility},{type:"powerup",id:ce.Silencer},{type:"powerup",id:ce.Rebreather},{type:"powerup",id:ce.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ce.Bandolier},{type:"powerup",id:ce.AmmoPack},{type:"powerup",id:ce.IRGoggles},{type:"powerup",id:ce.DoubleDamage},{type:"powerup",id:ce.SphereVengeance},{type:"powerup",id:ce.SphereHunter},{type:"powerup",id:ce.SphereDefender},{type:"powerup",id:ce.Doppelganger},{type:"powerup",id:ce.TagToken},{type:"key",id:ye.DataCD},{type:"key",id:ye.PowerCube},{type:"key",id:ye.ExplosiveCharges},{type:"key",id:ye.Yellow},{type:"key",id:ye.PowerCore},{type:"key",id:ye.Pyramid},{type:"key",id:ye.DataSpinner},{type:"key",id:ye.Pass},{type:"key",id:ye.Blue},{type:"key",id:ye.Red},{type:"key",id:ye.Green},{type:"key",id:ye.CommanderHead},{type:"key",id:ye.Airstrike},{type:"key",id:ye.NukeContainer},{type:"key",id:ye.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ye.RedFlag},{type:"key",id:ye.BlueFlag},{type:"powerup",id:ce.TechResistance},{type:"powerup",id:ce.TechStrength},{type:"powerup",id:ce.TechHaste},{type:"powerup",id:ce.TechRegeneration},{type:"powerup",id:ce.Flashlight},{type:"powerup",id:ce.Compass}];var ER=32768,ia=class{constructor(t,n){this.configstrings=new Array(ER).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,r,i,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a,this.callbacks?.onServerData&&this.callbacks.onServerData(t,o)}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,r=new Map;if(n.delta)for(let[i,a]of this.entities)r.set(i,structuredClone(a));for(let i of n.entities){if(i.bits&Tu){r.delete(i.number);continue}let a=i.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=qt();let o=structuredClone(s);this.applyDelta(o,i),r.set(a,o)}this.entities=r}applyDelta(t,n){let r=n.bits,i=n.bitsHigh;t.number=n.number,r&fs&&(t.modelindex=n.modelindex),r&ps&&(t.modelindex2=n.modelindex2),r&vs&&(t.modelindex3=n.modelindex3),r&ys&&(t.modelindex4=n.modelindex4),r&us&&(t.frame=n.frame),r&gs&&(t.frame=n.frame),(r&Zr||r&Jr)&&(t.skinnum=n.skinnum),(r&Yr||r&qr)&&(t.effects=n.effects),(r&Xr||r&jr)&&(t.renderfx=n.renderfx),r&ss&&(t.origin.x=n.origin.x),r&os&&(t.origin.y=n.origin.y),r&ms&&(t.origin.z=n.origin.z),r&hs&&(t.angles.x=n.angles.x),r&cs&&(t.angles.y=n.angles.y),r&ls&&(t.angles.z=n.angles.z),r&ws&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),r&Ss&&(t.sound=n.sound),r&ds&&(t.event=n.event),r&As&&(t.solid=n.solid),r&_s&&(t.alpha=n.alpha),r&xs&&(t.scale=n.scale),r&Es&&(t.instanceBits=n.instanceBits),r&ks&&(t.loopVolume=n.loopVolume),i&bs&&(t.loopAttenuation=n.loopAttenuation),i&Ts&&(t.owner=n.owner),i&Ms&&(t.oldFrame=n.oldFrame)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,r,i,a,s,o){if(!this.imports?.engine.audio)return;let l=r??1,c=i??1,u=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,l,c,u):o&&this.imports.engine.audio.positioned_sound(o,n,l,c)}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onMuzzleFlash3(t,n){if(t===this.playerNum+1&&this.view){let i=0,a=0,s=0,o=St,c=sd(this.stats,Ds.QuadDamage)?4:1;switch(n){case Yu:i=-2,o={x:-2,y:0,z:0};break;case td:i=-4,o={x:-4,y:0,z:0};break;case Xu:i=-1,a=Math.random()-.5;break;case Zu:case ju:case qu:i=-.5,a=Math.random()-.5;break;case Ju:i=-3,o={x:-3,y:0,z:0};break;case Qu:case ed:i=-2,o={x:-2,y:0,z:0};break;case nd:i=-5,o={x:-2,y:0,z:0};break;case rd:case $u:i=-.5;break}(i!==0||a!==0||s!==0)&&this.view.addKick({pitch:i*c,roll:s*c,durationMs:200,origin:o})}this.callbacks?.onMuzzleFlash3&&this.callbacks.onMuzzleFlash3(t,n)}onFog(t){this.callbacks?.onFog&&this.callbacks.onFog(t)}onDamage(t){this.callbacks?.onDamage&&this.callbacks.onDamage(t)}onLocPrint(t,n,r){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,r)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(t){this.callbacks?.onWaitingForPlayers&&this.callbacks.onWaitingForPlayers()}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,r){}convertFrameToPredictionState(t){let n=t.playerState,r={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let l=0;l<this.inventory.length;l++){let c=this.inventory[l];if(c<=0)continue;if(l>=Lc.length)break;let u=Lc[l];switch(u.type){case"weapon":r.ownedWeapons.add(u.id);break;case"ammo":r.ammo.counts[u.id]||(r.ammo.counts[u.id]=0),r.ammo.counts[u.id]=c;break;case"armor":r.armor={armorType:u.id,armorCount:c};break;case"powerup":r.powerups.set(u.id,c);break;case"key":r.keys.add(u.id);break;case"health":break;case"item":r.items.add(u.id);break}}let i={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:i,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:sr.None,gravity:n.gravity,deltaAngles:o,client:{inventory:r,weaponStates:{states:new Map},buttons:0,pm_type:n.pm_type,pm_time:n.pm_time,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:St,kick_origin:St,gunoffset:St,gunangles:St,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},pm_time:n.pm_time,pm_type:n.pm_type,pm_flags:n.pm_flags,gun_frame:n.gun_frame,rdflags:n.rdflags,fov:n.fov}}getPredictionState(t){if(!this.latestFrame)return Ht();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let r=this.latestFrame.serverFrame*100,i=this.previousFrame.serverFrame*100;if(t>=i&&t<=r){let a=(t-i)/(r-i),s=this.convertFrameToPredictionState(this.previousFrame);return ln(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Nn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=me.Models&&t<me.Models+rr){let r=t-me.Models;this.models[r]=n}else if(t>=me.Sounds&&t<me.Sounds+ir){let r=t-me.Sounds;this.sounds[r]=n}else if(t>=me.Images&&t<me.Images+ar){let r=t-me.Images;this.images[r]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var aa=class{constructor(t,n,r){this.menuSystem=t;this.saveLoadFactory=n;this.options=r}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Multiplayer",action:()=>{this.options.multiplayerFactory?this.menuSystem.pushMenu(this.options.multiplayerFactory.createMultiplayerMenu()):console.warn("Multiplayer factory not configured")}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var sa=class{constructor(t,n,r,i,a){this.menuSystem=t;this.storage=n;this.onSave=r;this.onLoad=i;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Vf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(r))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Vf(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(r))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Vf(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}var oa=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let r=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return r.action&&r.action(),!0;if(t==="back")return this.popMenu(),!0;if(r.type==="input"&&r.onUpdate&&r.getValue){let i=r.getValue();if(t==="char"&&n){let a=(i||"")+n;r.onUpdate(a)}else if(t==="left"){let a=String(i||"");a.length>0&&r.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Nr=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let r=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",r.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var ca=class{constructor(t,n,r){this.menuSystem=t;this.vfs=n;this.onStartMap=r}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(r=>({label:r.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(r.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var la=class{constructor(t,n,r){this.menuSystem=t;this.optionsFactory=n;this.host=r}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};var ua=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let r=t,i=[];return n&&i.push({label:n,action:()=>{}}),i.push({label:"Address: "+r,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",r);a&&(r=a,this.refreshMenu(r))}}},{label:"Connect",action:()=>{this.refreshMenu(r,"Connecting..."),this.connection.connect("ws://"+r).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(r,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(r,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:i}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function Wf(e,t,n,r){if(!t.activeMenu)return;let i=t.activeMenu,a=n/2,s=r/2,o=20,l=i.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,r,[0,0,0,.7]),e.drawCenterString(c,i.title),i.items.forEach((u,h)=>{let m=c+40+h*o,_=u.label;if(u.type==="input"&&u.getValue){if(_+=`: ${u.getValue()}`,h===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(_+="_")}}else u.type==="toggle"&&u.getValue&&(_+=`: ${u.getValue()}`);if(h===t.selectedIndex){let S=_.replace(/\^[0-9]/g,"").length*8,b=(n-S)/2;e.drawString(b-16,m,"\r")}e.drawCenterString(m,_)})}var Or=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r)){let s=t.get(i);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let r of t)r.flags&nr.Archive&&(n[r.name]=r.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(r){console.warn("Failed to save settings",r)}}};var da=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(r){console.warn("Failed to write to localStorage",r)}}};var ma=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,r=t.height;t.drawfillRect(0,0,n,r,[.1,.1,.1,1]);let i=n*.6,a=20,s=(n-i)/2,o=r*.7;t.drawfillRect(s,o,i,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,i*l,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(l*100);t.drawCenterString(o+a+10,`${c}%`)}};var ha=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,r=t.height,i=n/2,a=r/2,s=400,o=200;t.drawfillRect(0,0,n,r,[0,0,0,.5]),t.drawfillRect(i-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var fa=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,r,i){if(!this.state.active)return;let a=n/2,s=r/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};function On(e,t,n){return e+(t-e)*n}function Nc(e,t,n){return On(e,t,n)}function Kf(e,t,n,r,i){let a=[],s=i.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=r.getModelName(l.modelIndex);if(!u)continue;let h=s.getMd2Model(u)||s.getMd3Model(u);if(!h)continue;let m={x:On(c.origin.x,l.origin.x,n),y:On(c.origin.y,l.origin.y,n),z:On(c.origin.z,l.origin.z,n)},_={x:Nc(c.angles.x,l.angles.x,n),y:Nc(c.angles.y,l.angles.y,n),z:Nc(c.angles.z,l.angles.z,n)},g=l.frame,A=c.frame,p=c.scale!==void 0?c.scale:1,S=l.scale!==void 0?l.scale:1,b=On(p,S,n),E=N=>N===void 0||N===0?255:N,v=E(c.alpha),w=E(l.alpha),k=On(v,w,n)/255,z=re.create();re.translate(z,z,[m.x,m.y,m.z]),re.rotateZ(z,z,_.z*Math.PI/180),re.rotateY(z,z,_.y*Math.PI/180),re.rotateX(z,z,_.x*Math.PI/180),re.scale(z,z,[b,b,b]),h.header.magic===844121161?a.push({type:"md2",model:h,blend:{frame0:A,frame1:g,lerp:n},transform:z,skin:l.skinNum>0?r.getImageName(l.skinNum):void 0,alpha:k}):h.header.magic===860898377&&a.push({type:"md3",model:h,blend:{frame0:A,frame1:g,lerp:n},transform:z,alpha:k})}return a}var _a=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,r)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=i=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),r(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=i=>{this.messageCallback&&(i.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(i.data)):console.warn("Received non-binary message from server"))}}catch(i){r(i)}})}disconnect(){this.socket&&(this.socket.close(),this.socket=null)}send(t){this.socket&&this.socket.readyState===WebSocket.OPEN?this.socket.send(t):console.warn("Attempted to send data on closed or connecting socket")}onMessage(t){this.messageCallback=t}onClose(t){this.closeCallback=t}onError(t){this.errorCallback=t}isConnected(){return this.socket!==null&&this.socket.readyState===WebSocket.OPEN}};var ga=class{constructor(t){this.state=0;this.parser=null;this.serverProtocol=0;this.serverCount=0;this.gameDir="";this.playerNum=0;this.levelName="";this.configStrings=new Map;this.baselines=new Map;this.challenge=0;this.connectPacketCount=0;this.connectPacketTime=0;this.latestServerFrame=0;this.commandHistory=[];this.driver=new _a,this.options=t,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1;try{await this.driver.connect(t),console.log("WebSocket connected."),this.state=2,this.sendChallenge()}catch(n){throw console.error("Connection failed:",n),this.state=0,n}}disconnect(){this.state!==0&&(this.driver.disconnect(),this.state=0,this.configStrings.clear(),this.baselines.clear(),this.commandHistory=[],this.latestServerFrame=0)}sendCommand(t){if(this.state!==5)return;let n={...t,serverFrame:t.serverFrame??this.latestServerFrame};this.commandHistory.push(n),this.commandHistory.length>Ku&&this.commandHistory.shift();let r=new ld;r.writeLong(0),r.writeLong(0),r.writeByte(Gt.move),r.writeByte(0),r.writeLong(this.latestServerFrame),od(r,n),this.driver.send(r.getData())}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let s=new ArrayBuffer(t.byteLength);new Uint8Array(s).set(t),n=s}let r=new cd(n),i=r.readLong(),a=r.readLong();this.parser=new Rs(r,this),this.parser.parseMessage()}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new or;t.writeByte(Gt.stringcmd),t.writeString("getchallenge"),this.driver.send(t.getData())}sendConnect(t){let n=new or;n.writeByte(Gt.stringcmd);let r=`\\name\\${this.options.username}\\model\\${this.options.model}\\skin\\${this.options.skin}\\hand\\${this.options.hand??0}\\fov\\${this.options.fov??90}`;n.writeString(`connect ${$r} ${t} ${r}`),this.driver.send(n.getData())}isConnected(){return this.state===5}onServerData(t,n,r,i,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=i,this.playerNum=a,this.levelName=s,this.state=3;let o=new or;o.writeByte(Gt.stringcmd),o.writeString("new"),this.driver.send(o.getData()),this.state=4}onConfigString(t,n){this.configStrings.set(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,t)}onStuffText(t){if(console.log(`Server StuffText: ${t}`),t.startsWith("precache")&&this.finishLoading(),t.startsWith("challenge ")){let n=t.split(" ");n.length>1&&(this.challenge=parseInt(n[1],10),this.sendConnect(this.challenge))}}finishLoading(){console.log("Finished loading, sending begin...");let t=new or;t.writeByte(Gt.stringcmd),t.writeString("begin"),this.driver.send(t.getData()),this.state=5}onFrame(t){t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame)}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,r,i,a,s,o){}onTempEntity(t,n,r,i,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,r){}};var kR=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],Xt=class{constructor(t=kR){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function $f(){return new Xt}function Oc(e){return e}function Ir(e){return e.trim().toLowerCase()}var bR=250,Ic=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let r=this.msec;this.activeCodes.size>0&&(r+=n-this.downTime,this.downTime=n),this.msec=0;let i=Math.min(r/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:i}}},pa=(S=>(S.Forward="+forward",S.Back="+back",S.MoveLeft="+moveleft",S.MoveRight="+moveright",S.MoveUp="+moveup",S.MoveDown="+movedown",S.Jump="+jump",S.Crouch="+crouch",S.Attack="+attack",S.Use="+use",S.Holster="+holster",S.TurnLeft="+left",S.TurnRight="+right",S.LookUp="+lookup",S.LookDown="+lookdown",S.SpeedModifier="+speed",S.Zoom="+zoom",S))(pa||{}),TR={"+attack":et.Attack,"+use":et.Use,"+holster":et.Holster,"+jump":et.Jump,"+crouch":et.Crouch},MR=new Map(Object.values(pa).map(e=>[Ir(e),e]));function RR(e){return MR.get(Ir(e))}function Cr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var In=class{constructor(t={},n=new Xt){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??Fu,this.sideSpeed=t.sideSpeed??Du,this.upSpeed=t.upSpeed??Uu,this.yawSpeed=t.yawSpeed??Bu,this.pitchSpeed=t.pitchSpeed??Gu,this.sensitivity=t.sensitivity??Hu,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=Cr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=Cr()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=Cr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=Cr()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!1,r,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=Cr(),r){this.pollGamepads(n),this.applyTouchState(n);let i=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),l=this.sample("+lookup",t,n),u={x:(this.sample("+lookdown",t,n).fraction-l.fraction)*a,y:(o.fraction-s.fraction)*i,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let y=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+y*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let y=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+y*a,y:u.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let y=this.sampleMouseDelta(),L=Wu(y,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+L.x,y:u.y+L.y,z:0}}let h=Vu(this.viewAngles,u);this.viewAngles=h;let m=this.sample("+forward",t,n),_=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),A=this.sample("+moveright",t,n),p=this.sample("+moveup",t,n),S=this.sample("+movedown",t,n),b=this.sample("+speed",t,n),E=this.sample("+jump",t,n),v=this.sample("+crouch",t,n),w=this.runByDefault?b.active?.5:1:b.active?1:.5,T=this.forwardSpeed*(m.fraction-_.fraction)*w,k=this.sideSpeed*(A.fraction-g.fraction)*w,z=this.upSpeed*(p.fraction-S.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*w,k+=this.sideSpeed*this.gamepadMove.x*w),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*w,k+=this.sideSpeed*this.touchMove.x*w),this.jumpAddsUpMove&&E.fraction>0&&(z+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&v.fraction>0&&(z-=this.upSpeed*v.fraction),T=this.clampMove(T,this.forwardSpeed),k=this.clampMove(k,this.sideSpeed),z=this.clampMove(z,this.upSpeed);let N=this.collectButtonBits(t,n),R=Math.min(Math.max(Math.round(t),1),bR);return(this.anyPressed||N!==et.None)&&(N|=et.Any),this.anyPressed=!1,{msec:R,buttons:N,angles:{...this.viewAngles},forwardmove:T,sidemove:k,upmove:z,serverFrame:r}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let r=new Set;for(let i of n){if(!i||i.connected===!1)continue;let a=i.index??0,s=i.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=i.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,h=this.gamepadButtonCode(a,l);u&&r.add(h);let m=this.gamepadButtons.get(h)??!1;u!==m&&(this.applyCommand(this.bindings.getBinding(h),u,h,t),this.gamepadButtons.set(h,u))}}for(let[i,a]of this.gamepadButtons.entries())a&&!r.has(i)&&(this.applyCommand(this.bindings.getBinding(i),!1,i,t),this.gamepadButtons.set(i,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[r,i]of Object.entries(n.buttons)){if(i===void 0)continue;let a=this.touchButtons.get(r)??!1;i!==a&&(this.applyCommand(r,i,this.touchButtonCode(r),t),this.touchButtons.set(r,i))}}applyCommand(t,n,r,i){if(!t)return;let a=RR(t);if(a){let s=this.lookupButton(a);n?(s.press(r,i)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(r,i)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let r=et.None;for(let[i,a]of Object.entries(TR)){let s=this.sample(i,t,n);(s.fraction>0||s.active||s.wasPressed)&&(r|=a)}return r}lookupButton(t){let n=this.buttons.get(t);return n||(n=new Ic,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,r){return this.lookupButton(t).sample(n,r)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var va=class{constructor(t,n=new In(t)){this.queued=[];this.controller=n}captureFrame(t,n,r){let i=this.controller.buildCommand(t,n,r),a=this.controller.consumeConsoleCommands(),s={command:i,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var ya={x:0,y:0,z:0};function zR(e){let t=y=>{let L={x:0,y:0,z:0};return e.engine.trace(y,y,L,L).contents||0},n=new yi(e.engine.trace,t),r=new vi,i=new Ru,a=new ia(e);a.setView(r);let s=new oa,o=new ma,l=new ha,c=new fa,u=new Or(new da),h,m,_=new Nn,g,A=!1,S=Rd(e,{get tickRate(){return 10},get frameTimeMs(){return g?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return _},getClientName:y=>`Player ${y}`,getKeyBinding:y=>`[${y}]`,get inAutoDemo(){return A}}),b=Md(S),E=new ga({get username(){return e.host?.cvars?.get("name")?.string||"Player"},get model(){return e.host?.cvars?.get("model")?.string||"male"},get skin(){return e.host?.cvars?.get("skin")?.string||"grunt"},get fov(){return z}}),v=new ua(s,E);a.setCallbacks({onCenterPrint:y=>b.ParseCenterPrint(y,0,!1),onPrint:(y,L)=>b.NotifyMessage(0,L,!1),onConfigString:(y,L)=>{_.set(y,L),b.ParseConfigString(y,L)},onServerData:(y,L)=>{L&&L>0?i.setFrameDuration(1e3/L):i.setFrameDuration(100)}}),i.setHandler(a);let w,T,k,z=90,N=!1;if(e.host){m=new Nr(s,e.host),h=new la(s,m,e.host);let y=new Map;if(e.host.cvars){for(let L of e.host.cvars.list())y.set(L.name,{value:L.string,setValue:C=>e.host.cvars.setValue(L.name,C)});u.loadCvars(y)}}if(e.host?.commands&&(e.host.commands.register("playdemo",y=>{if(y.length<1){console.log("usage: playdemo <filename>");return}let L=y[0];console.log(`playdemo: ${L}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let y=Ld();console.log(`Crosshair changed to index ${y}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{N=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{N=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{s.isActive()?s.closeAll():h&&s.pushMenu(h.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",y=>{if(y.length<1){console.log("usage: connect <address>");return}let L=y[0];console.log(`Connecting to ${L}...`),E.connect(L).catch(C=>{console.error("Failed to connect:",C),l.show("Connection Failed",C instanceof Error?C.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{E.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:nr.Archive,onChange:L=>{let C=L.number;isNaN(C)||(z=Math.max(1,Math.min(179,C)))},description:"Field of view"});let y=e.host.cvars.get("fov");if(y){let L=y.number;isNaN(L)||(z=Math.max(1,Math.min(179,L)))}}return{loadingScreen:o,errorDialog:l,init(y){this.Init(y)},Init(y){g=y,y?.state&&n.setAuthoritative(y),b.Init(),e.engine.assets&&e.engine.renderer&&(o.start(100,"Loading assets..."),Hf(e.engine.renderer,e.engine.assets).then(()=>{o.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(s.isActive()||document.body.requestPointerLock?.())})},predict(y){return s.isActive(),E.isConnected()&&E.sendCommand(y),n.enqueueCommand(y)},handleInput(y,L){if(!s.isActive())return!1;if(!L)return!0;let C=y.toLowerCase();return C==="arrowup"||C==="w"?s.handleInput("up"):C==="arrowdown"||C==="s"?s.handleInput("down"):C==="arrowleft"||C==="a"?s.handleInput("left"):C==="arrowright"||C==="d"?s.handleInput("right"):C==="enter"||C===" "?s.handleInput("select"):C==="escape"?s.getState().activeMenu?.parent?s.handleInput("back"):!1:y.length===1?s.handleInput("char",y):y==="Backspace"?s.handleInput("left"):!0},toggleMenu(){if(s.isActive()){if(s.closeAll(),e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));u.saveCvars(y)}}else h&&s.pushMenu(h.createPauseMenu())},createMainMenu(y,L,C,W,le){let he=new sa(s,L,C,W,le),Se=m;if(!Se){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");Se=new Nr(s,e.host)}let Ge=e.engine.assets,ft={findByExtension:Yt=>Ge?Ge.listFiles(Yt):[]},Xf=new ca(s,ft,Yt=>{console.log(`Starting map: ${Yt}`),e.host?.commands.execute(`map ${Yt}`)}),Yf=new aa(s,he,{...y,optionsFactory:Se,mapsFactory:Xf,multiplayerFactory:v,onSetDifficulty:Yt=>{e.host?.cvars&&e.host.cvars.setValue("skill",Yt.toString())}});return{menuSystem:s,factory:Yf}},render(y){let L=i.getState(),C=[];L===zs.Playing?w=a.getPredictionState():(y.latest?.state&&(n.setAuthoritative(y.latest),g=y.latest),y.previous?.state&&y.latest?.state?(w=ln(y.previous.state,y.latest.state,y.alpha),y.latest.state.packetEntities&&y.previous.state.packetEntities&&(C=Kf(y.latest.state.packetEntities,y.previous.state.packetEntities,y.alpha,_,e))):w=y.latest?.state??y.previous?.state??n.getPredictedState());let W=y.latest&&y.previous?Math.max(0,y.latest.timeMs-y.previous.timeMs):0;T=r.sample(w,W);let le={};if(w){let{origin:he,viewAngles:Se}=w;k=new Kl,k.position=se.fromValues(he.x,he.y,he.z);let Ge=T?.offset??{x:0,y:0,z:0};se.add(k.position,k.position,[Ge.x,Ge.y,Ge.z]);let ft=T?.angles??{x:0,y:0,z:0};k.angles=se.fromValues(Se.x+ft.x,Se.y+ft.y,Se.z+ft.z),k.fov=N?40:z,k.aspect=4/3,e.engine.renderer&&(k.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&k){let he;if(e.engine.assets){let Se=_.getModelName(1);if(Se){let Ge=e.engine.assets.getMap(Se)}}e.engine.renderer.renderFrame({camera:k,world:he,dlights:[]},C)}if(e.engine.renderer&&w&&w.client){let he=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},Se=y.latest?.timeMs??0;this.DrawHUD(he,Se)}return le},DrawHUD(y,L){if(!e.engine.renderer)return;let C=e.engine.renderer,W=C.width,le=C.height;if(w&&w.client){let he={origin:w.origin,velocity:w.velocity,viewAngles:w.viewAngles,onGround:on(w.pmFlags,ct.OnGround),waterLevel:w.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:w.damageAlpha??0,damageIndicators:w.damageIndicators??[],blend:w.blend??[0,0,0,0],pickupIcon:w.pickupIcon,centerPrint:void 0,notify:void 0,stats:w.stats?[...w.stats]:new Array(32).fill(0),kick_angles:ya,kick_origin:ya,gunoffset:ya,gunangles:ya,gunindex:0,pm_type:w.pm_type??0,pm_time:w.pm_time??0,pm_flags:w.pmFlags,gun_frame:w.gun_frame??0,rdflags:w.rdflags??0,fov:w.fov??90};he.stats[He.STAT_HEALTH]=w.health??0,he.stats[He.STAT_AMMO]=w.ammo??0,he.stats[He.STAT_ARMOR]=w.armor??0,C.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:W,height:le},{x:0,y:0,width:W,height:le},1,0,he),C.end2D()}s.isActive()&&Wf(e.engine.renderer,s.getState(),e.engine.renderer.width,e.engine.renderer.height),w&&w.client&&c.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,w.client),l.render(e.engine.renderer),o.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),g=void 0,w=void 0,e.host?.cvars){let y=e.host.cvars.list().map(L=>({name:L.name,value:L.string,flags:L.flags}));u.saveCvars(y)}},get prediction(){return n},get lastRendered(){return w},get view(){return r},get lastView(){return T},get camera(){return k},demoPlayback:i,ParseCenterPrint(y){b.ParseCenterPrint(y,0,!1)},ParseNotify(y){b.NotifyMessage(0,y,!1)},showSubtitle(y,L){b.ShowSubtitle(y,L)},ParseConfigString(y,L){_.set(y,L),b.ParseConfigString(y,L)},demoHandler:a,multiplayer:E,configStrings:_}}return Qf(LR);})();
|
|
178
178
|
/*! Bundled license information:
|
|
179
179
|
|
|
180
180
|
pako/dist/pako.esm.mjs:
|