quake2ts 0.0.299 → 0.0.301

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.
@@ -1,4 +1,4 @@
1
- "use strict";var Quake2Client=(()=>{var bs=Object.defineProperty;var kg=Object.getOwnPropertyDescriptor;var xg=Object.getOwnPropertyNames;var bg=Object.prototype.hasOwnProperty;var Ts=(e,t)=>{for(var n in t)bs(e,n,{get:t[n],enumerable:!0})},Tg=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of xg(t))!bg.call(e,r)&&r!==n&&bs(e,r,{get:()=>t[r],enumerable:!(i=kg(t,r))||i.enumerable});return e};var Mg=e=>Tg(bs({},"__esModule",{value:!0}),e);var qI={};Ts(qI,{ClientConfigStrings:()=>fi,ClientMode:()=>wg,ClientPrediction:()=>ua,InputAction:()=>Es,InputBindings:()=>kn,InputCommandBuffer:()=>ks,InputController:()=>_i,ViewEffects:()=>la,createClient:()=>YI,createDefaultBindings:()=>yg,interpolatePredictionState:()=>hn,normalizeCommand:()=>xr,normalizeInputCode:()=>nu});var de=1e-6,je=typeof Float32Array<"u"?Float32Array:Array,Ms=Math.random;function Tr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var ZI=Math.PI/180,JI=180/Math.PI;var me={};Ts(me,{add:()=>hv,adjoint:()=>Pg,clone:()=>Lg,copy:()=>zg,create:()=>Rg,decompose:()=>Qg,determinant:()=>Dg,equals:()=>vv,exactEquals:()=>gv,frob:()=>mv,fromQuat:()=>nv,fromQuat2:()=>jg,fromRotation:()=>$g,fromRotationTranslation:()=>ou,fromRotationTranslationScale:()=>ev,fromRotationTranslationScaleOrigin:()=>tv,fromScaling:()=>Kg,fromTranslation:()=>Wg,fromValues:()=>Ng,fromXRotation:()=>Xg,fromYRotation:()=>Yg,fromZRotation:()=>qg,frustum:()=>iv,getRotation:()=>Jg,getScaling:()=>cu,getTranslation:()=>Zg,identity:()=>au,invert:()=>Cg,lookAt:()=>lv,mul:()=>pv,multiply:()=>su,multiplyScalar:()=>fv,multiplyScalarAndAdd:()=>_v,ortho:()=>ov,orthoNO:()=>uu,orthoZO:()=>cv,perspective:()=>rv,perspectiveFromFieldOfView:()=>sv,perspectiveNO:()=>lu,perspectiveZO:()=>av,rotate:()=>Bg,rotateX:()=>Gg,rotateY:()=>Hg,rotateZ:()=>Vg,scale:()=>Ug,set:()=>Og,str:()=>dv,sub:()=>yv,subtract:()=>du,targetTo:()=>uv,translate:()=>Fg,transpose:()=>Ig});function Rg(){var e=new je(16);return je!=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 Lg(e){var t=new je(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 zg(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 Ng(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,p){var v=new je(16);return v[0]=e,v[1]=t,v[2]=n,v[3]=i,v[4]=r,v[5]=a,v[6]=s,v[7]=o,v[8]=l,v[9]=c,v[10]=u,v[11]=m,v[12]=d,v[13]=f,v[14]=g,v[15]=p,v}function Og(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,p,v){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=m,e[11]=d,e[12]=f,e[13]=g,e[14]=p,e[15]=v,e}function au(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 Ig(e,t){if(e===t){var n=t[1],i=t[2],r=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]=i,e[9]=a,e[11]=t[14],e[12]=r,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 Cg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],M=n*o-i*s,E=n*l-r*s,y=n*c-a*s,k=i*l-r*o,b=i*c-a*o,T=r*c-a*l,O=u*p-m*g,x=u*v-d*g,S=u*w-f*g,z=m*v-d*p,J=m*w-f*p,ce=d*w-f*v,Q=M*ce-E*J+y*z+k*S-b*x+T*O;return Q?(Q=1/Q,e[0]=(o*ce-l*J+c*z)*Q,e[1]=(r*J-i*ce-a*z)*Q,e[2]=(p*T-v*b+w*k)*Q,e[3]=(d*b-m*T-f*k)*Q,e[4]=(l*S-s*ce-c*x)*Q,e[5]=(n*ce-r*S+a*x)*Q,e[6]=(v*y-g*T-w*E)*Q,e[7]=(u*T-d*y+f*E)*Q,e[8]=(s*J-o*S+c*O)*Q,e[9]=(i*S-n*J-a*O)*Q,e[10]=(g*b-p*y+w*M)*Q,e[11]=(m*y-u*b-f*M)*Q,e[12]=(o*x-s*z-l*O)*Q,e[13]=(n*z-i*x+r*O)*Q,e[14]=(p*E-g*k-v*M)*Q,e[15]=(u*k-m*E+d*M)*Q,e):null}function Pg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],p=t[13],v=t[14],w=t[15],M=n*o-i*s,E=n*l-r*s,y=n*c-a*s,k=i*l-r*o,b=i*c-a*o,T=r*c-a*l,O=u*p-m*g,x=u*v-d*g,S=u*w-f*g,z=m*v-d*p,J=m*w-f*p,ce=d*w-f*v;return e[0]=o*ce-l*J+c*z,e[1]=r*J-i*ce-a*z,e[2]=p*T-v*b+w*k,e[3]=d*b-m*T-f*k,e[4]=l*S-s*ce-c*x,e[5]=n*ce-r*S+a*x,e[6]=v*y-g*T-w*E,e[7]=u*T-d*y+f*E,e[8]=s*J-o*S+c*O,e[9]=i*S-n*J-a*O,e[10]=g*b-p*y+w*M,e[11]=m*y-u*b-f*M,e[12]=o*x-s*z-l*O,e[13]=n*z-i*x+r*O,e[14]=p*E-g*k-v*M,e[15]=u*k-m*E+d*M,e}function Dg(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],m=e[10],d=e[11],f=e[12],g=e[13],p=e[14],v=e[15],w=t*s-n*a,M=t*o-i*a,E=n*o-i*s,y=c*g-u*f,k=c*p-m*f,b=u*p-m*g,T=t*b-n*k+i*y,O=a*b-s*k+o*y,x=c*E-u*M+m*w,S=f*E-g*M+p*w;return l*T-r*O+v*x-d*S}function su(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=t[8],d=t[9],f=t[10],g=t[11],p=t[12],v=t[13],w=t[14],M=t[15],E=n[0],y=n[1],k=n[2],b=n[3];return e[0]=E*i+y*o+k*m+b*p,e[1]=E*r+y*l+k*d+b*v,e[2]=E*a+y*c+k*f+b*w,e[3]=E*s+y*u+k*g+b*M,E=n[4],y=n[5],k=n[6],b=n[7],e[4]=E*i+y*o+k*m+b*p,e[5]=E*r+y*l+k*d+b*v,e[6]=E*a+y*c+k*f+b*w,e[7]=E*s+y*u+k*g+b*M,E=n[8],y=n[9],k=n[10],b=n[11],e[8]=E*i+y*o+k*m+b*p,e[9]=E*r+y*l+k*d+b*v,e[10]=E*a+y*c+k*f+b*w,e[11]=E*s+y*u+k*g+b*M,E=n[12],y=n[13],k=n[14],b=n[15],e[12]=E*i+y*o+k*m+b*p,e[13]=E*r+y*l+k*d+b*v,e[14]=E*a+y*c+k*f+b*w,e[15]=E*s+y*u+k*g+b*M,e}function Fg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,f,g,p,v,w;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],m=t[5],d=t[6],f=t[7],g=t[8],p=t[9],v=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=f,e[8]=g,e[9]=p,e[10]=v,e[11]=w,e[12]=s*i+u*r+g*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=l*i+d*r+v*a+t[14],e[15]=c*i+f*r+w*a+t[15]),e}function Ug(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,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 Bg(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),l,c,u,m,d,f,g,p,v,w,M,E,y,k,b,T,O,x,S,z,J,ce,Q,R;return o<de?null:(o=1/o,r*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,m=t[0],d=t[1],f=t[2],g=t[3],p=t[4],v=t[5],w=t[6],M=t[7],E=t[8],y=t[9],k=t[10],b=t[11],T=r*r*u+c,O=a*r*u+s*l,x=s*r*u-a*l,S=r*a*u-s*l,z=a*a*u+c,J=s*a*u+r*l,ce=r*s*u+a*l,Q=a*s*u-r*l,R=s*s*u+c,e[0]=m*T+p*O+E*x,e[1]=d*T+v*O+y*x,e[2]=f*T+w*O+k*x,e[3]=g*T+M*O+b*x,e[4]=m*S+p*z+E*J,e[5]=d*S+v*z+y*J,e[6]=f*S+w*z+k*J,e[7]=g*S+M*z+b*J,e[8]=m*ce+p*Q+E*R,e[9]=d*ce+v*Q+y*R,e[10]=f*ce+w*Q+k*R,e[11]=g*ce+M*Q+b*R,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Gg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],m=t[10],d=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*r+c*i,e[5]=s*r+u*i,e[6]=o*r+m*i,e[7]=l*r+d*i,e[8]=c*r-a*i,e[9]=u*r-s*i,e[10]=m*r-o*i,e[11]=d*r-l*i,e}function Hg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],m=t[10],d=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*r-c*i,e[1]=s*r-u*i,e[2]=o*r-m*i,e[3]=l*r-d*i,e[8]=a*i+c*r,e[9]=s*i+u*r,e[10]=o*i+m*r,e[11]=l*i+d*r,e}function Vg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],m=t[6],d=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*r+c*i,e[1]=s*r+u*i,e[2]=o*r+m*i,e[3]=l*r+d*i,e[4]=c*r-a*i,e[5]=u*r-s*i,e[6]=m*r-o*i,e[7]=d*r-l*i,e}function Wg(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 Kg(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 $g(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,l,c;return s<de?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=i*i*c+l,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+l,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Xg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Yg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,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]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function qg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,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 ou(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,l=r+r,c=a+a,u=i*o,m=i*l,d=i*c,f=r*l,g=r*c,p=a*c,v=s*o,w=s*l,M=s*c;return e[0]=1-(f+p),e[1]=m+M,e[2]=d-w,e[3]=0,e[4]=m-M,e[5]=1-(u+p),e[6]=g+v,e[7]=0,e[8]=d+w,e[9]=g-v,e[10]=1-(u+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function jg(e,t){var n=new je(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+u*i+l*a-c*r)*2/m,n[1]=(l*s+u*r+c*i-o*a)*2/m,n[2]=(c*s+u*a+o*r-l*i)*2/m):(n[0]=(o*s+u*i+l*a-c*r)*2,n[1]=(l*s+u*r+c*i-o*a)*2,n[2]=(c*s+u*a+o*r-l*i)*2),ou(e,t,n),e}function Zg(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function cu(e,t){var n=t[0],i=t[1],r=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+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function Jg(e,t){var n=new je(3);cu(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,l=t[2]*a,c=t[4]*i,u=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,g=t[10]*a,p=s+u+g,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(d-l)/v,e[2]=(o-c)/v):s>u&&s>g?(v=Math.sqrt(1+s-u-g)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+l)/v):u>g?(v=Math.sqrt(1+u-s-g)*2,e[3]=(d-l)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/v,e[0]=(d+l)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function Qg(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],l=i[5],c=i[6],u=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+m*m+d*d);var f=1/n[0],g=1/n[1],p=1/n[2],v=r*f,w=a*g,M=s*p,E=o*f,y=l*g,k=c*p,b=u*f,T=m*g,O=d*p,x=v+y+O,S=0;return x>0?(S=Math.sqrt(x+1)*2,e[3]=.25*S,e[0]=(k-T)/S,e[1]=(b-M)/S,e[2]=(w-E)/S):v>y&&v>O?(S=Math.sqrt(1+v-y-O)*2,e[3]=(k-T)/S,e[0]=.25*S,e[1]=(w+E)/S,e[2]=(b+M)/S):y>O?(S=Math.sqrt(1+y-v-O)*2,e[3]=(b-M)/S,e[0]=(w+E)/S,e[1]=.25*S,e[2]=(k+T)/S):(S=Math.sqrt(1+O-v-y)*2,e[3]=(w-E)/S,e[0]=(b+M)/S,e[1]=(k+T)/S,e[2]=.25*S),e}function ev(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],l=r+r,c=a+a,u=s+s,m=r*l,d=r*c,f=r*u,g=a*c,p=a*u,v=s*u,w=o*l,M=o*c,E=o*u,y=i[0],k=i[1],b=i[2];return e[0]=(1-(g+v))*y,e[1]=(d+E)*y,e[2]=(f-M)*y,e[3]=0,e[4]=(d-E)*k,e[5]=(1-(m+v))*k,e[6]=(p+w)*k,e[7]=0,e[8]=(f+M)*b,e[9]=(p-w)*b,e[10]=(1-(m+g))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function tv(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,m=o+o,d=a*c,f=a*u,g=a*m,p=s*u,v=s*m,w=o*m,M=l*c,E=l*u,y=l*m,k=i[0],b=i[1],T=i[2],O=r[0],x=r[1],S=r[2],z=(1-(p+w))*k,J=(f+y)*k,ce=(g-E)*k,Q=(f-y)*b,R=(1-(d+w))*b,V=(v+M)*b,ee=(g+E)*T,yt=(v-M)*T,be=(1-(d+p))*T;return e[0]=z,e[1]=J,e[2]=ce,e[3]=0,e[4]=Q,e[5]=R,e[6]=V,e[7]=0,e[8]=ee,e[9]=yt,e[10]=be,e[11]=0,e[12]=n[0]+O-(z*O+Q*x+ee*S),e[13]=n[1]+x-(J*O+R*x+yt*S),e[14]=n[2]+S-(ce*O+V*x+be*S),e[15]=1,e}function nv(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,l=r+r,c=n*s,u=i*s,m=i*o,d=r*s,f=r*o,g=r*l,p=a*s,v=a*o,w=a*l;return e[0]=1-m-g,e[1]=u+w,e[2]=d-v,e[3]=0,e[4]=u-w,e[5]=1-c-g,e[6]=f+p,e[7]=0,e[8]=d+v,e[9]=f-p,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function iv(e,t,n,i,r,a,s){var o=1/(n-t),l=1/(r-i),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]=(r+i)*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 lu(e,t,n,i,r){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,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var rv=lu;function av(e,t,n,i,r){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,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function sv(e,t,n,i){var r=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/(r+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]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function uu(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),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]=(r+i)*l,e[14]=(s+a)*c,e[15]=1,e}var ov=uu;function cv(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),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]=(r+i)*l,e[14]=a*c,e[15]=1,e}function lv(e,t,n,i){var r,a,s,o,l,c,u,m,d,f,g=t[0],p=t[1],v=t[2],w=i[0],M=i[1],E=i[2],y=n[0],k=n[1],b=n[2];return Math.abs(g-y)<de&&Math.abs(p-k)<de&&Math.abs(v-b)<de?au(e):(u=g-y,m=p-k,d=v-b,f=1/Math.sqrt(u*u+m*m+d*d),u*=f,m*=f,d*=f,r=M*d-E*m,a=E*u-w*d,s=w*m-M*u,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,f=Math.sqrt(o*o+l*l+c*c),f?(f=1/f,o*=f,l*=f,c*=f):(o=0,l=0,c=0),e[0]=r,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*g+a*p+s*v),e[13]=-(o*g+l*p+c*v),e[14]=-(u*g+m*p+d*v),e[15]=1,e)}function uv(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],l=i[1],c=i[2],u=r-n[0],m=a-n[1],d=s-n[2],f=u*u+m*m+d*d;f>0&&(f=1/Math.sqrt(f),u*=f,m*=f,d*=f);var g=l*d-c*m,p=c*u-o*d,v=o*m-l*u;return f=g*g+p*p+v*v,f>0&&(f=1/Math.sqrt(f),g*=f,p*=f,v*=f),e[0]=g,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*g-u*v,e[6]=u*p-m*g,e[7]=0,e[8]=u,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function dv(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 mv(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 hv(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 du(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 fv(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 _v(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function gv(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 vv(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],m=e[9],d=e[10],f=e[11],g=e[12],p=e[13],v=e[14],w=e[15],M=t[0],E=t[1],y=t[2],k=t[3],b=t[4],T=t[5],O=t[6],x=t[7],S=t[8],z=t[9],J=t[10],ce=t[11],Q=t[12],R=t[13],V=t[14],ee=t[15];return Math.abs(n-M)<=de*Math.max(1,Math.abs(n),Math.abs(M))&&Math.abs(i-E)<=de*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(r-y)<=de*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-k)<=de*Math.max(1,Math.abs(a),Math.abs(k))&&Math.abs(s-b)<=de*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-T)<=de*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(l-O)<=de*Math.max(1,Math.abs(l),Math.abs(O))&&Math.abs(c-x)<=de*Math.max(1,Math.abs(c),Math.abs(x))&&Math.abs(u-S)<=de*Math.max(1,Math.abs(u),Math.abs(S))&&Math.abs(m-z)<=de*Math.max(1,Math.abs(m),Math.abs(z))&&Math.abs(d-J)<=de*Math.max(1,Math.abs(d),Math.abs(J))&&Math.abs(f-ce)<=de*Math.max(1,Math.abs(f),Math.abs(ce))&&Math.abs(g-Q)<=de*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(p-R)<=de*Math.max(1,Math.abs(p),Math.abs(R))&&Math.abs(v-V)<=de*Math.max(1,Math.abs(v),Math.abs(V))&&Math.abs(w-ee)<=de*Math.max(1,Math.abs(w),Math.abs(ee))}var pv=su,yv=du;var _e={};Ts(_e,{add:()=>kv,angle:()=>Xv,bezier:()=>Uv,ceil:()=>xv,clone:()=>wv,copy:()=>Sv,create:()=>mu,cross:()=>Cv,dist:()=>tp,distance:()=>vu,div:()=>ep,divide:()=>gu,dot:()=>Rs,equals:()=>Zv,exactEquals:()=>jv,floor:()=>bv,forEach:()=>ap,fromValues:()=>Av,hermite:()=>Fv,inverse:()=>Ov,len:()=>ip,length:()=>hu,lerp:()=>Pv,max:()=>Mv,min:()=>Tv,mul:()=>Qv,multiply:()=>_u,negate:()=>Nv,normalize:()=>Iv,random:()=>Bv,rotateX:()=>Wv,rotateY:()=>Kv,rotateZ:()=>$v,round:()=>Rv,scale:()=>Lv,scaleAndAdd:()=>zv,set:()=>Ev,slerp:()=>Dv,sqrDist:()=>np,sqrLen:()=>rp,squaredDistance:()=>pu,squaredLength:()=>yu,str:()=>qv,sub:()=>Jv,subtract:()=>fu,transformMat3:()=>Hv,transformMat4:()=>Gv,transformQuat:()=>Vv,zero:()=>Yv});function mu(){var e=new je(3);return je!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function wv(e){var t=new je(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function hu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Av(e,t,n){var i=new je(3);return i[0]=e,i[1]=t,i[2]=n,i}function Sv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function Ev(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function kv(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function fu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function _u(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function gu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function xv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function bv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Tv(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 Mv(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 Rv(e,t){return e[0]=Tr(t[0]),e[1]=Tr(t[1]),e[2]=Tr(t[2]),e}function Lv(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function zv(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function vu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function pu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function yu(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Nv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Ov(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Iv(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;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 Rs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Cv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Pv(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Dv(e,t,n,i){var r=Math.acos(Math.min(Math.max(Rs(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/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 Fv(e,t,n,i,r,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+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function Uv(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function Bv(e,t){t=t===void 0?1:t;var n=Ms()*2*Math.PI,i=Ms()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Gv(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function Hv(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function Vv(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function Wv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Kv(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function $v(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Xv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&Rs(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Yv(e){return e[0]=0,e[1]=0,e[2]=0,e}function qv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function jv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function Zv(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=de*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=de*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=de*Math.max(1,Math.abs(r),Math.abs(o))}var Jv=fu,Qv=_u,ep=gu,tp=vu,np=pu,ip=hu,rp=yu,ap=(function(){var e=mu();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;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 sp=Object.defineProperty,cd=(e,t)=>{for(var n in t)sp(e,n,{get:t[n],enumerable:!0})};var eC=Math.PI/180;var op=Math.PI/180,tC=180/Math.PI,gi=op,$s=[[-.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 ut=1,Ut=2;var ro=8,ao=16,cp=32;var lp=16384;var Wr=65536,ld=1<<17,up=1<<18,dp=1<<19,mp=1<<20,hp=1<<21,fp=1<<22,_p=1<<23,nC=1<<24,Kr=1<<25,gp=1<<26,iC=1<<27,rC=1<<28,aC=1<<29,$r=1<<30,sC=1<<31;var oC=1<<25,cC=1<<28,lC=1<<29,uC=1<<30,dC=1<<31,mC=ut|Ut,hC=ut|Wr|Ut|Kr|$r,fC=ut|Wr|Ut,_C=ut|ld|Ut|Kr|$r,gC=cp|ro|ao,vC=ut|ao|ro,vp=ut|Kr|$r|Ut|gp,pC=up|dp|mp|hp|fp|_p,yC=ut|ro|ao|Kr|$r,wC=ut|Wr|Ut,AC=ut|Ut,SC=ut|Wr|Ut|ld,EC=vp|lp,kC=Number.MAX_SAFE_INTEGER-1;var ud=256,pp=256,yp=8192,wp=2048,Ap=512,Sp=256,Ep=ud*2,kp=256,Ls=32;var dd=(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.HealthBarName=55]="HealthBarName",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+yp]="Sounds",e[e.Images=e.Sounds+wp]="Images",e[e.Lights=e.Images+Ap]="Lights",e[e.ShadowLights=e.Lights+pp]="ShadowLights",e[e.Items=e.ShadowLights+kp]="Items",e[e.PlayerSkins=e.Items+Sp]="PlayerSkins",e[e.General=e.PlayerSkins+ud]="General",e[e.WheelWeapons=e.General+Ep]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ls]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ls]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ls]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(dd||{}),xC=dd.MaxConfigStrings;var xp={};cd(xp,{addReplayFrame:()=>Rp,createReplaySession:()=>Mp,deserializeReplay:()=>Tp,serializeReplay:()=>bp});function bp(e){return JSON.stringify(e,null,2)}function Tp(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 Mp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Rp(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Z=(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))(Z||{}),G=(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))(G||{}),Lp=12,zp=9,bC=Math.ceil(Lp*zp/16),Np=23,Op=2,TC=Math.ceil(Np*Op/16),Ip={};cd(Ip,{U_ANGLE1:()=>Gp,U_ANGLE2:()=>Hp,U_ANGLE3:()=>Vp,U_EFFECTS:()=>$p,U_EVENT:()=>qp,U_FRAME:()=>Wp,U_MODEL:()=>Pp,U_MODEL2:()=>Zp,U_MODEL3:()=>Jp,U_MODEL4:()=>Qp,U_MOREBITS:()=>jp,U_NUMBER:()=>Cp,U_ORIGIN1:()=>Fp,U_ORIGIN2:()=>Up,U_ORIGIN3:()=>Bp,U_REMOVE:()=>ey,U_RENDERFX:()=>Xp,U_SKIN:()=>Kp,U_SOLID:()=>Yp,U_SOUND:()=>Dp});var Cp=1,Pp=2,Dp=4,Fp=8,Up=16,Bp=32,Gp=64,Hp=128,Vp=256,Wp=512,Kp=1024,$p=2048,Xp=4096,Yp=8192,qp=16384,jp=32768,Zp=1,Jp=2,Qp=4,ey=32768,Xs=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=$s[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ty=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 i=0;i<$s.length;i++){let r=$s[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Ei=class Ne{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ty(Ne.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Ne.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Ne.MAX_MSGLEN&&(r=Ne.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Ne.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ne.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ne.MAX_MSGLEN-Ne.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ne.MAX_MSGLEN-Ne.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ne.MAX_MSGLEN-Ne.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ne.MAX_MSGLEN-Ne.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};Ei.MAX_MSGLEN=1400;Ei.FRAGMENT_SIZE=1024;Ei.PACKET_HEADER=10;Ei.HEADER_OVERHEAD=Ei.PACKET_HEADER+2;var md=(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))(md||{}),MC=Object.keys(md).length/2;function ny(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var RC=ny();var LC=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 iy=19,zC=8+iy*8;var Ys=4,zs=7*Ys,NC=[{index:0,size:3,type:5126,stride:zs,offset:0},{index:1,size:2,type:5126,stride:zs,offset:3*Ys},{index:2,size:2,type:5126,stride:zs,offset:5*Ys}];var hd=32;var OC=`#version 300 es
1
+ "use strict";var Quake2Client=(()=>{var Ms=Object.defineProperty;var Tg=Object.getOwnPropertyDescriptor;var Mg=Object.getOwnPropertyNames;var Rg=Object.prototype.hasOwnProperty;var Rs=(e,t)=>{for(var n in t)Ms(e,n,{get:t[n],enumerable:!0})},Lg=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Mg(t))!Rg.call(e,r)&&r!==n&&Ms(e,r,{get:()=>t[r],enumerable:!(i=Tg(t,r))||i.enumerable});return e};var zg=e=>Lg(Ms({},"__esModule",{value:!0}),e);var QI={};Rs(QI,{ClientConfigStrings:()=>fi,ClientMode:()=>kg,ClientPrediction:()=>da,InputAction:()=>bs,InputBindings:()=>En,InputCommandBuffer:()=>xs,InputController:()=>_i,ViewEffects:()=>ua,createClient:()=>JI,createDefaultBindings:()=>Sg,interpolatePredictionState:()=>fn,normalizeCommand:()=>xr,normalizeInputCode:()=>au});var de=1e-6,Ze=typeof Float32Array<"u"?Float32Array:Array,Ls=Math.random;function Mr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var tC=Math.PI/180,nC=180/Math.PI;var me={};Rs(me,{add:()=>gp,adjoint:()=>Ug,clone:()=>Og,copy:()=>Ig,create:()=>Ng,decompose:()=>np,determinant:()=>Bg,equals:()=>wp,exactEquals:()=>yp,frob:()=>_p,fromQuat:()=>ap,fromQuat2:()=>Qg,fromRotation:()=>qg,fromRotationTranslation:()=>uu,fromRotationTranslationScale:()=>ip,fromRotationTranslationScaleOrigin:()=>rp,fromScaling:()=>Yg,fromTranslation:()=>Xg,fromValues:()=>Cg,fromXRotation:()=>jg,fromYRotation:()=>Zg,fromZRotation:()=>Jg,frustum:()=>sp,getRotation:()=>tp,getScaling:()=>du,getTranslation:()=>ep,identity:()=>cu,invert:()=>Fg,lookAt:()=>mp,mul:()=>Ap,multiply:()=>lu,multiplyScalar:()=>pp,multiplyScalarAndAdd:()=>vp,ortho:()=>up,orthoNO:()=>hu,orthoZO:()=>dp,perspective:()=>op,perspectiveFromFieldOfView:()=>lp,perspectiveNO:()=>mu,perspectiveZO:()=>cp,rotate:()=>Vg,rotateX:()=>Wg,rotateY:()=>Kg,rotateZ:()=>$g,scale:()=>Hg,set:()=>Pg,str:()=>fp,sub:()=>Sp,subtract:()=>fu,targetTo:()=>hp,translate:()=>Gg,transpose:()=>Dg});function Ng(){var e=new Ze(16);return Ze!=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 Og(e){var t=new Ze(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 Ig(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 Cg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,v){var p=new Ze(16);return p[0]=e,p[1]=t,p[2]=n,p[3]=i,p[4]=r,p[5]=a,p[6]=s,p[7]=o,p[8]=l,p[9]=c,p[10]=u,p[11]=m,p[12]=d,p[13]=f,p[14]=g,p[15]=v,p}function Pg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,g,v,p){return e[0]=t,e[1]=n,e[2]=i,e[3]=r,e[4]=a,e[5]=s,e[6]=o,e[7]=l,e[8]=c,e[9]=u,e[10]=m,e[11]=d,e[12]=f,e[13]=g,e[14]=v,e[15]=p,e}function cu(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 Dg(e,t){if(e===t){var n=t[1],i=t[2],r=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]=i,e[9]=a,e[11]=t[14],e[12]=r,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 Fg(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],v=t[13],p=t[14],w=t[15],x=n*o-i*s,k=n*l-r*s,y=n*c-a*s,E=i*l-r*o,T=i*c-a*o,b=r*c-a*l,L=u*v-m*g,N=u*p-d*g,A=u*w-f*g,O=m*p-d*v,X=m*w-f*v,oe=d*w-f*p,Q=x*oe-k*X+y*O+E*A-T*N+b*L;return Q?(Q=1/Q,e[0]=(o*oe-l*X+c*O)*Q,e[1]=(r*X-i*oe-a*O)*Q,e[2]=(v*b-p*T+w*E)*Q,e[3]=(d*T-m*b-f*E)*Q,e[4]=(l*A-s*oe-c*N)*Q,e[5]=(n*oe-r*A+a*N)*Q,e[6]=(p*y-g*b-w*k)*Q,e[7]=(u*b-d*y+f*k)*Q,e[8]=(s*X-o*A+c*L)*Q,e[9]=(i*A-n*X-a*L)*Q,e[10]=(g*T-v*y+w*x)*Q,e[11]=(m*y-u*T-f*x)*Q,e[12]=(o*N-s*O-l*L)*Q,e[13]=(n*O-i*N+r*L)*Q,e[14]=(v*k-g*E-p*x)*Q,e[15]=(u*E-m*k+d*x)*Q,e):null}function Ug(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],l=t[6],c=t[7],u=t[8],m=t[9],d=t[10],f=t[11],g=t[12],v=t[13],p=t[14],w=t[15],x=n*o-i*s,k=n*l-r*s,y=n*c-a*s,E=i*l-r*o,T=i*c-a*o,b=r*c-a*l,L=u*v-m*g,N=u*p-d*g,A=u*w-f*g,O=m*p-d*v,X=m*w-f*v,oe=d*w-f*p;return e[0]=o*oe-l*X+c*O,e[1]=r*X-i*oe-a*O,e[2]=v*b-p*T+w*E,e[3]=d*T-m*b-f*E,e[4]=l*A-s*oe-c*N,e[5]=n*oe-r*A+a*N,e[6]=p*y-g*b-w*k,e[7]=u*b-d*y+f*k,e[8]=s*X-o*A+c*L,e[9]=i*A-n*X-a*L,e[10]=g*T-v*y+w*x,e[11]=m*y-u*T-f*x,e[12]=o*N-s*O-l*L,e[13]=n*O-i*N+r*L,e[14]=v*k-g*E-p*x,e[15]=u*E-m*k+d*x,e}function Bg(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],c=e[8],u=e[9],m=e[10],d=e[11],f=e[12],g=e[13],v=e[14],p=e[15],w=t*s-n*a,x=t*o-i*a,k=n*o-i*s,y=c*g-u*f,E=c*v-m*f,T=u*v-m*g,b=t*T-n*E+i*y,L=a*T-s*E+o*y,N=c*k-u*x+m*w,A=f*k-g*x+v*w;return l*b-r*L+p*N-d*A}function lu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=t[8],d=t[9],f=t[10],g=t[11],v=t[12],p=t[13],w=t[14],x=t[15],k=n[0],y=n[1],E=n[2],T=n[3];return e[0]=k*i+y*o+E*m+T*v,e[1]=k*r+y*l+E*d+T*p,e[2]=k*a+y*c+E*f+T*w,e[3]=k*s+y*u+E*g+T*x,k=n[4],y=n[5],E=n[6],T=n[7],e[4]=k*i+y*o+E*m+T*v,e[5]=k*r+y*l+E*d+T*p,e[6]=k*a+y*c+E*f+T*w,e[7]=k*s+y*u+E*g+T*x,k=n[8],y=n[9],E=n[10],T=n[11],e[8]=k*i+y*o+E*m+T*v,e[9]=k*r+y*l+E*d+T*p,e[10]=k*a+y*c+E*f+T*w,e[11]=k*s+y*u+E*g+T*x,k=n[12],y=n[13],E=n[14],T=n[15],e[12]=k*i+y*o+E*m+T*v,e[13]=k*r+y*l+E*d+T*p,e[14]=k*a+y*c+E*f+T*w,e[15]=k*s+y*u+E*g+T*x,e}function Gg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,f,g,v,p,w;return t===e?(e[12]=t[0]*i+t[4]*r+t[8]*a+t[12],e[13]=t[1]*i+t[5]*r+t[9]*a+t[13],e[14]=t[2]*i+t[6]*r+t[10]*a+t[14],e[15]=t[3]*i+t[7]*r+t[11]*a+t[15]):(s=t[0],o=t[1],l=t[2],c=t[3],u=t[4],m=t[5],d=t[6],f=t[7],g=t[8],v=t[9],p=t[10],w=t[11],e[0]=s,e[1]=o,e[2]=l,e[3]=c,e[4]=u,e[5]=m,e[6]=d,e[7]=f,e[8]=g,e[9]=v,e[10]=p,e[11]=w,e[12]=s*i+u*r+g*a+t[12],e[13]=o*i+m*r+v*a+t[13],e[14]=l*i+d*r+p*a+t[14],e[15]=c*i+f*r+w*a+t[15]),e}function Hg(e,t,n){var i=n[0],r=n[1],a=n[2];return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,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 Vg(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),l,c,u,m,d,f,g,v,p,w,x,k,y,E,T,b,L,N,A,O,X,oe,Q,Re;return o<de?null:(o=1/o,r*=o,a*=o,s*=o,l=Math.sin(n),c=Math.cos(n),u=1-c,m=t[0],d=t[1],f=t[2],g=t[3],v=t[4],p=t[5],w=t[6],x=t[7],k=t[8],y=t[9],E=t[10],T=t[11],b=r*r*u+c,L=a*r*u+s*l,N=s*r*u-a*l,A=r*a*u-s*l,O=a*a*u+c,X=s*a*u+r*l,oe=r*s*u+a*l,Q=a*s*u-r*l,Re=s*s*u+c,e[0]=m*b+v*L+k*N,e[1]=d*b+p*L+y*N,e[2]=f*b+w*L+E*N,e[3]=g*b+x*L+T*N,e[4]=m*A+v*O+k*X,e[5]=d*A+p*O+y*X,e[6]=f*A+w*O+E*X,e[7]=g*A+x*O+T*X,e[8]=m*oe+v*Q+k*Re,e[9]=d*oe+p*Q+y*Re,e[10]=f*oe+w*Q+E*Re,e[11]=g*oe+x*Q+T*Re,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Wg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],m=t[10],d=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*r+c*i,e[5]=s*r+u*i,e[6]=o*r+m*i,e[7]=l*r+d*i,e[8]=c*r-a*i,e[9]=u*r-s*i,e[10]=m*r-o*i,e[11]=d*r-l*i,e}function Kg(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[8],u=t[9],m=t[10],d=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*r-c*i,e[1]=s*r-u*i,e[2]=o*r-m*i,e[3]=l*r-d*i,e[8]=a*i+c*r,e[9]=s*i+u*r,e[10]=o*i+m*r,e[11]=l*i+d*r,e}function $g(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],l=t[3],c=t[4],u=t[5],m=t[6],d=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*r+c*i,e[1]=s*r+u*i,e[2]=o*r+m*i,e[3]=l*r+d*i,e[4]=c*r-a*i,e[5]=u*r-s*i,e[6]=m*r-o*i,e[7]=d*r-l*i,e}function Xg(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 Yg(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 qg(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,l,c;return s<de?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),l=Math.cos(t),c=1-l,e[0]=i*i*c+l,e[1]=r*i*c+a*o,e[2]=a*i*c-r*o,e[3]=0,e[4]=i*r*c-a*o,e[5]=r*r*c+l,e[6]=a*r*c+i*o,e[7]=0,e[8]=i*a*c+r*o,e[9]=r*a*c-i*o,e[10]=a*a*c+l,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function jg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Zg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,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]=i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Jg(e,t){var n=Math.sin(t),i=Math.cos(t);return e[0]=i,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=i,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 uu(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,l=r+r,c=a+a,u=i*o,m=i*l,d=i*c,f=r*l,g=r*c,v=a*c,p=s*o,w=s*l,x=s*c;return e[0]=1-(f+v),e[1]=m+x,e[2]=d-w,e[3]=0,e[4]=m-x,e[5]=1-(u+v),e[6]=g+p,e[7]=0,e[8]=d+w,e[9]=g-p,e[10]=1-(u+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Qg(e,t){var n=new Ze(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],l=t[5],c=t[6],u=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+u*i+l*a-c*r)*2/m,n[1]=(l*s+u*r+c*i-o*a)*2/m,n[2]=(c*s+u*a+o*r-l*i)*2/m):(n[0]=(o*s+u*i+l*a-c*r)*2,n[1]=(l*s+u*r+c*i-o*a)*2,n[2]=(c*s+u*a+o*r-l*i)*2),uu(e,t,n),e}function ep(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function du(e,t){var n=t[0],i=t[1],r=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+i*i+r*r),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(l*l+c*c+u*u),e}function tp(e,t){var n=new Ze(3);du(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,l=t[2]*a,c=t[4]*i,u=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,g=t[10]*a,v=s+u+g,p=0;return v>0?(p=Math.sqrt(v+1)*2,e[3]=.25*p,e[0]=(m-f)/p,e[1]=(d-l)/p,e[2]=(o-c)/p):s>u&&s>g?(p=Math.sqrt(1+s-u-g)*2,e[3]=(m-f)/p,e[0]=.25*p,e[1]=(o+c)/p,e[2]=(d+l)/p):u>g?(p=Math.sqrt(1+u-s-g)*2,e[3]=(d-l)/p,e[0]=(o+c)/p,e[1]=.25*p,e[2]=(m+f)/p):(p=Math.sqrt(1+g-s-u)*2,e[3]=(o-c)/p,e[0]=(d+l)/p,e[1]=(m+f)/p,e[2]=.25*p),e}function np(e,t,n,i){t[0]=i[12],t[1]=i[13],t[2]=i[14];var r=i[0],a=i[1],s=i[2],o=i[4],l=i[5],c=i[6],u=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+l*l+c*c),n[2]=Math.sqrt(u*u+m*m+d*d);var f=1/n[0],g=1/n[1],v=1/n[2],p=r*f,w=a*g,x=s*v,k=o*f,y=l*g,E=c*v,T=u*f,b=m*g,L=d*v,N=p+y+L,A=0;return N>0?(A=Math.sqrt(N+1)*2,e[3]=.25*A,e[0]=(E-b)/A,e[1]=(T-x)/A,e[2]=(w-k)/A):p>y&&p>L?(A=Math.sqrt(1+p-y-L)*2,e[3]=(E-b)/A,e[0]=.25*A,e[1]=(w+k)/A,e[2]=(T+x)/A):y>L?(A=Math.sqrt(1+y-p-L)*2,e[3]=(T-x)/A,e[0]=(w+k)/A,e[1]=.25*A,e[2]=(E+b)/A):(A=Math.sqrt(1+L-p-y)*2,e[3]=(w-k)/A,e[0]=(T+x)/A,e[1]=(E+b)/A,e[2]=.25*A),e}function ip(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],l=r+r,c=a+a,u=s+s,m=r*l,d=r*c,f=r*u,g=a*c,v=a*u,p=s*u,w=o*l,x=o*c,k=o*u,y=i[0],E=i[1],T=i[2];return e[0]=(1-(g+p))*y,e[1]=(d+k)*y,e[2]=(f-x)*y,e[3]=0,e[4]=(d-k)*E,e[5]=(1-(m+p))*E,e[6]=(v+w)*E,e[7]=0,e[8]=(f+x)*T,e[9]=(v-w)*T,e[10]=(1-(m+g))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function rp(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],l=t[3],c=a+a,u=s+s,m=o+o,d=a*c,f=a*u,g=a*m,v=s*u,p=s*m,w=o*m,x=l*c,k=l*u,y=l*m,E=i[0],T=i[1],b=i[2],L=r[0],N=r[1],A=r[2],O=(1-(v+w))*E,X=(f+y)*E,oe=(g-k)*E,Q=(f-y)*T,Re=(1-(d+w))*T,R=(p+x)*T,G=(g+k)*b,ne=(p-x)*b,At=(1-(d+v))*b;return e[0]=O,e[1]=X,e[2]=oe,e[3]=0,e[4]=Q,e[5]=Re,e[6]=R,e[7]=0,e[8]=G,e[9]=ne,e[10]=At,e[11]=0,e[12]=n[0]+L-(O*L+Q*N+G*A),e[13]=n[1]+N-(X*L+Re*N+ne*A),e[14]=n[2]+A-(oe*L+R*N+At*A),e[15]=1,e}function ap(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,l=r+r,c=n*s,u=i*s,m=i*o,d=r*s,f=r*o,g=r*l,v=a*s,p=a*o,w=a*l;return e[0]=1-m-g,e[1]=u+w,e[2]=d-p,e[3]=0,e[4]=u-w,e[5]=1-c-g,e[6]=f+v,e[7]=0,e[8]=d+p,e[9]=f-v,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function sp(e,t,n,i,r,a,s){var o=1/(n-t),l=1/(r-i),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]=(r+i)*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 mu(e,t,n,i,r){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,r!=null&&r!==1/0){var s=1/(i-r);e[10]=(r+i)*s,e[14]=2*r*i*s}else e[10]=-1,e[14]=-2*i;return e}var op=mu;function cp(e,t,n,i,r){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,r!=null&&r!==1/0){var s=1/(i-r);e[10]=r*s,e[14]=r*i*s}else e[10]=-1,e[14]=-i;return e}function lp(e,t,n,i){var r=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/(r+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]=(r-a)*c*.5,e[10]=i/(n-i),e[11]=-1,e[12]=0,e[13]=0,e[14]=i*n/(n-i),e[15]=0,e}function hu(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),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]=(r+i)*l,e[14]=(s+a)*c,e[15]=1,e}var up=hu;function dp(e,t,n,i,r,a,s){var o=1/(t-n),l=1/(i-r),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]=(r+i)*l,e[14]=a*c,e[15]=1,e}function mp(e,t,n,i){var r,a,s,o,l,c,u,m,d,f,g=t[0],v=t[1],p=t[2],w=i[0],x=i[1],k=i[2],y=n[0],E=n[1],T=n[2];return Math.abs(g-y)<de&&Math.abs(v-E)<de&&Math.abs(p-T)<de?cu(e):(u=g-y,m=v-E,d=p-T,f=1/Math.sqrt(u*u+m*m+d*d),u*=f,m*=f,d*=f,r=x*d-k*m,a=k*u-w*d,s=w*m-x*u,f=Math.sqrt(r*r+a*a+s*s),f?(f=1/f,r*=f,a*=f,s*=f):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,f=Math.sqrt(o*o+l*l+c*c),f?(f=1/f,o*=f,l*=f,c*=f):(o=0,l=0,c=0),e[0]=r,e[1]=o,e[2]=u,e[3]=0,e[4]=a,e[5]=l,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*g+a*v+s*p),e[13]=-(o*g+l*v+c*p),e[14]=-(u*g+m*v+d*p),e[15]=1,e)}function hp(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],l=i[1],c=i[2],u=r-n[0],m=a-n[1],d=s-n[2],f=u*u+m*m+d*d;f>0&&(f=1/Math.sqrt(f),u*=f,m*=f,d*=f);var g=l*d-c*m,v=c*u-o*d,p=o*m-l*u;return f=g*g+v*v+p*p,f>0&&(f=1/Math.sqrt(f),g*=f,v*=f,p*=f),e[0]=g,e[1]=v,e[2]=p,e[3]=0,e[4]=m*p-d*v,e[5]=d*g-u*p,e[6]=u*v-m*g,e[7]=0,e[8]=u,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function fp(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 _p(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 gp(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 fu(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 pp(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 vp(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e[3]=t[3]+n[3]*i,e[4]=t[4]+n[4]*i,e[5]=t[5]+n[5]*i,e[6]=t[6]+n[6]*i,e[7]=t[7]+n[7]*i,e[8]=t[8]+n[8]*i,e[9]=t[9]+n[9]*i,e[10]=t[10]+n[10]*i,e[11]=t[11]+n[11]*i,e[12]=t[12]+n[12]*i,e[13]=t[13]+n[13]*i,e[14]=t[14]+n[14]*i,e[15]=t[15]+n[15]*i,e}function yp(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 wp(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],m=e[9],d=e[10],f=e[11],g=e[12],v=e[13],p=e[14],w=e[15],x=t[0],k=t[1],y=t[2],E=t[3],T=t[4],b=t[5],L=t[6],N=t[7],A=t[8],O=t[9],X=t[10],oe=t[11],Q=t[12],Re=t[13],R=t[14],G=t[15];return Math.abs(n-x)<=de*Math.max(1,Math.abs(n),Math.abs(x))&&Math.abs(i-k)<=de*Math.max(1,Math.abs(i),Math.abs(k))&&Math.abs(r-y)<=de*Math.max(1,Math.abs(r),Math.abs(y))&&Math.abs(a-E)<=de*Math.max(1,Math.abs(a),Math.abs(E))&&Math.abs(s-T)<=de*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-b)<=de*Math.max(1,Math.abs(o),Math.abs(b))&&Math.abs(l-L)<=de*Math.max(1,Math.abs(l),Math.abs(L))&&Math.abs(c-N)<=de*Math.max(1,Math.abs(c),Math.abs(N))&&Math.abs(u-A)<=de*Math.max(1,Math.abs(u),Math.abs(A))&&Math.abs(m-O)<=de*Math.max(1,Math.abs(m),Math.abs(O))&&Math.abs(d-X)<=de*Math.max(1,Math.abs(d),Math.abs(X))&&Math.abs(f-oe)<=de*Math.max(1,Math.abs(f),Math.abs(oe))&&Math.abs(g-Q)<=de*Math.max(1,Math.abs(g),Math.abs(Q))&&Math.abs(v-Re)<=de*Math.max(1,Math.abs(v),Math.abs(Re))&&Math.abs(p-R)<=de*Math.max(1,Math.abs(p),Math.abs(R))&&Math.abs(w-G)<=de*Math.max(1,Math.abs(w),Math.abs(G))}var Ap=lu,Sp=fu;var _e={};Rs(_e,{add:()=>Tp,angle:()=>jp,bezier:()=>Hp,ceil:()=>Mp,clone:()=>kp,copy:()=>bp,create:()=>_u,cross:()=>Fp,dist:()=>rv,distance:()=>wu,div:()=>iv,divide:()=>yu,dot:()=>zs,equals:()=>ev,exactEquals:()=>Qp,floor:()=>Rp,forEach:()=>cv,fromValues:()=>Ep,hermite:()=>Gp,inverse:()=>Pp,len:()=>sv,length:()=>gu,lerp:()=>Up,max:()=>zp,min:()=>Lp,mul:()=>nv,multiply:()=>vu,negate:()=>Cp,normalize:()=>Dp,random:()=>Vp,rotateX:()=>Xp,rotateY:()=>Yp,rotateZ:()=>qp,round:()=>Np,scale:()=>Op,scaleAndAdd:()=>Ip,set:()=>xp,slerp:()=>Bp,sqrDist:()=>av,sqrLen:()=>ov,squaredDistance:()=>Au,squaredLength:()=>Su,str:()=>Jp,sub:()=>tv,subtract:()=>pu,transformMat3:()=>Kp,transformMat4:()=>Wp,transformQuat:()=>$p,zero:()=>Zp});function _u(){var e=new Ze(3);return Ze!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function kp(e){var t=new Ze(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function gu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Ep(e,t,n){var i=new Ze(3);return i[0]=e,i[1]=t,i[2]=n,i}function bp(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function xp(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Tp(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function pu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function vu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function yu(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Mp(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Rp(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Lp(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 zp(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 Np(e,t){return e[0]=Mr(t[0]),e[1]=Mr(t[1]),e[2]=Mr(t[2]),e}function Op(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Ip(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function wu(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function Au(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function Su(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Cp(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Pp(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Dp(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;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 zs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Fp(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function Up(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Bp(e,t,n,i){var r=Math.acos(Math.min(Math.max(zs(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/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 Gp(e,t,n,i,r,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+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function Hp(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function Vp(e,t){t=t===void 0?1:t;var n=Ls()*2*Math.PI,i=Ls()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function Wp(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function Kp(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function $p(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function Xp(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function Yp(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function qp(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function jp(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&zs(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function Zp(e){return e[0]=0,e[1]=0,e[2]=0,e}function Jp(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Qp(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ev(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=de*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=de*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=de*Math.max(1,Math.abs(r),Math.abs(o))}var tv=pu,nv=vu,iv=yu,rv=wu,av=Au,sv=gu,ov=Su,cv=(function(){var e=_u();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;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 lv=Object.defineProperty,dd=(e,t)=>{for(var n in t)lv(e,n,{get:t[n],enumerable:!0})};var rC=Math.PI/180;var uv=Math.PI/180,aC=180/Math.PI,gi=uv,Ys=[[-.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 mt=1,Gt=2;var so=8,oo=16,dv=32;var mv=16384;var Kr=65536,md=1<<17,hv=1<<18,fv=1<<19,_v=1<<20,gv=1<<21,pv=1<<22,vv=1<<23,sC=1<<24,$r=1<<25,yv=1<<26,oC=1<<27,cC=1<<28,lC=1<<29,Xr=1<<30,uC=1<<31;var dC=1<<25,mC=1<<28,hC=1<<29,fC=1<<30,_C=1<<31,gC=mt|Gt,pC=mt|Kr|Gt|$r|Xr,vC=mt|Kr|Gt,yC=mt|md|Gt|$r|Xr,wC=dv|so|oo,AC=mt|oo|so,wv=mt|$r|Xr|Gt|yv,SC=hv|fv|_v|gv|pv|vv,kC=mt|so|oo|$r|Xr,EC=mt|Kr|Gt,bC=mt|Gt,xC=mt|Kr|Gt|md,TC=wv|mv,MC=Number.MAX_SAFE_INTEGER-1;var hd=256,Av=256,Sv=8192,kv=2048,Ev=512,bv=256,xv=hd*2,Tv=256,Ns=32;var fd=(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.HealthBarName=55]="HealthBarName",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+Sv]="Sounds",e[e.Images=e.Sounds+kv]="Images",e[e.Lights=e.Images+Ev]="Lights",e[e.ShadowLights=e.Lights+Av]="ShadowLights",e[e.Items=e.ShadowLights+Tv]="Items",e[e.PlayerSkins=e.Items+bv]="PlayerSkins",e[e.General=e.PlayerSkins+hd]="General",e[e.WheelWeapons=e.General+xv]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ns]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ns]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ns]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(fd||{}),RC=fd.MaxConfigStrings;var Mv={};dd(Mv,{addReplayFrame:()=>Nv,createReplaySession:()=>zv,deserializeReplay:()=>Lv,serializeReplay:()=>Rv});function Rv(e){return JSON.stringify(e,null,2)}function Lv(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 zv(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Nv(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var J=(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))(J||{}),H=(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))(H||{}),Ov=12,Iv=9,LC=Math.ceil(Ov*Iv/16),Cv=23,Pv=2,zC=Math.ceil(Cv*Pv/16),Dv={};dd(Dv,{U_ANGLE1:()=>Wv,U_ANGLE2:()=>Kv,U_ANGLE3:()=>$v,U_EFFECTS:()=>qv,U_EVENT:()=>Jv,U_FRAME:()=>Xv,U_MODEL:()=>Uv,U_MODEL2:()=>ey,U_MODEL3:()=>ty,U_MODEL4:()=>ny,U_MOREBITS:()=>Qv,U_NUMBER:()=>Fv,U_ORIGIN1:()=>Gv,U_ORIGIN2:()=>Hv,U_ORIGIN3:()=>Vv,U_REMOVE:()=>iy,U_RENDERFX:()=>jv,U_SKIN:()=>Yv,U_SOLID:()=>Zv,U_SOUND:()=>Bv});var Fv=1,Uv=2,Bv=4,Gv=8,Hv=16,Vv=32,Wv=64,Kv=128,$v=256,Xv=512,Yv=1024,qv=2048,jv=4096,Zv=8192,Jv=16384,Qv=32768,ey=1,ty=2,ny=4,iy=32768,qs=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=Ys[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ry=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 i=0;i<Ys.length;i++){let r=Ys[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},ki=class Oe{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ry(Oe.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Oe.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Oe.MAX_MSGLEN&&(r=Oe.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Oe.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,v=this.outgoingReliableSequence&1;g!==v&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Oe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let v=this.incomingReliableSequence&1;if(u===v){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,v=new Uint8Array(g);return v.set(d,0),v.set(f,d.length),v}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Oe.MAX_MSGLEN-Oe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Oe.MAX_MSGLEN-Oe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Oe.MAX_MSGLEN-Oe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Oe.MAX_MSGLEN-Oe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};ki.MAX_MSGLEN=1400;ki.FRAGMENT_SIZE=1024;ki.PACKET_HEADER=10;ki.HEADER_OVERHEAD=ki.PACKET_HEADER+2;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||{}),NC=Object.keys(_d).length/2;function ay(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let i=0;i<8;i+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var OC=ay();var IC=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 sy=19,CC=8+sy*8;var js=4,Os=7*js,PC=[{index:0,size:3,type:5126,stride:Os,offset:0},{index:1,size:2,type:5126,stride:Os,offset:3*js},{index:2,size:2,type:5126,stride:Os,offset:5*js}];var gd=32;var DC=`#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 = ${hd};
10
+ const int MAX_DLIGHTS = ${gd};
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 IC=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 CC=`#version 300 es
117
+ }`;var FC=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 UC=`#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 = ${hd};
130
+ const int MAX_DLIGHTS = ${gd};
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 fd=class{constructor(){this._position=_e.create(),this._angles=_e.create(),this._bobAngles=_e.create(),this._bobOffset=_e.create(),this._kickAngles=_e.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=me.create(),this._projectionMatrix=me.create(),this._viewProjectionMatrix=me.create(),this._dirty=!0}get position(){return this._position}set position(e){_e.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){_e.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){_e.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){_e.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){_e.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=me.create();return me.perspective(t,e*gi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*gi,this._aspect,this._near,this._far);let e=me.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],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*gi,a=n*gi,s=i*gi,o=me.create();me.identity(o),me.rotateZ(o,o,-a),me.rotateY(o,o,-r),me.rotateX(o,o,-s);let l=me.create();me.multiply(l,e,o);let c=_e.add(_e.create(),this._position,this._bobOffset),u=_e.negate(_e.create(),c),m=_e.create();_e.transformMat4(m,u,o);let d=_e.fromValues(m[1]||0,m[2]||0,m[0]||0);me.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var ry=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 Xs(t)}}reset(){this.offset=0}getOffset(){return this.offset}},ay=4,wu=0,Au=1,sy=2;function On(e){let t=e.length;for(;--t>=0;)e[t]=0}var oy=0,_d=1,cy=2,ly=3,uy=258,so=29,Ni=256,ki=Ni+1+so,Ln=30,oo=19,gd=2*ki+1,nn=15,Ns=16,dy=7,co=256,vd=16,pd=17,yd=18,qs=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]),Or=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]),my=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),wd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),hy=512,St=new Array((ki+2)*2);On(St);var wi=new Array(Ln*2);On(wi);var xi=new Array(hy);On(xi);var bi=new Array(uy-ly+1);On(bi);var lo=new Array(so);On(lo);var Ir=new Array(Ln);On(Ir);function Os(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var Ad,Sd,Ed;function Is(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var kd=e=>e<256?xi[e]:xi[256+(e>>>7)],Ti=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Be=(e,t,n)=>{e.bi_valid>Ns-n?(e.bi_buf|=t<<e.bi_valid&65535,Ti(e,e.bi_buf),e.bi_buf=t>>Ns-e.bi_valid,e.bi_valid+=n-Ns):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},ot=(e,t,n)=>{Be(e,n[t*2],n[t*2+1])},xd=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},fy=e=>{e.bi_valid===16?(Ti(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)},_y=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=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,m,d,f,g,p=0;for(d=0;d<=nn;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<gd;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,p++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,f=0,u>=o&&(f=s[u-o]),g=n[u*2],e.opt_len+=g*(d+f),a&&(e.static_len+=g*(r[u*2+1]+f)));if(p!==0){do{for(d=l-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[l]--,p-=2}while(p>0);for(d=l;d!==0;d--)for(u=e.bl_count[d];u!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),u--)}},bd=(e,t,n)=>{let i=new Array(nn+1),r=0,a,s;for(a=1;a<=nn;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=xd(i[o]++,o))}},gy=()=>{let e,t,n,i,r,a=new Array(nn+1);for(n=0,i=0;i<so-1;i++)for(lo[i]=n,e=0;e<1<<qs[i];e++)bi[n++]=i;for(bi[n-1]=i,r=0,i=0;i<16;i++)for(Ir[i]=r,e=0;e<1<<Or[i];e++)xi[r++]=i;for(r>>=7;i<Ln;i++)for(Ir[i]=r<<7,e=0;e<1<<Or[i]-7;e++)xi[256+r++]=i;for(t=0;t<=nn;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(bd(St,ki+1,a),e=0;e<Ln;e++)wi[e*2+1]=5,wi[e*2]=xd(e,5);Ad=new Os(St,qs,Ni+1,ki,nn),Sd=new Os(wi,Or,0,Ln,nn),Ed=new Os(new Array(0),my,0,oo,dy)},Td=e=>{let t;for(t=0;t<ki;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Ln;t++)e.dyn_dtree[t*2]=0;for(t=0;t<oo;t++)e.bl_tree[t*2]=0;e.dyn_ltree[co*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Md=e=>{e.bi_valid>8?Ti(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},Su=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},Cs=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&Su(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!Su(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},Eu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?ot(e,r,t):(s=bi[r],ot(e,s+Ni+1,t),o=qs[s],o!==0&&(r-=lo[s],Be(e,r,o)),i--,s=kd(i),ot(e,s,n),o=Or[s],o!==0&&(i-=Ir[s],Be(e,i,o)));while(a<e.sym_next);ot(e,co,t)},js=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=gd,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--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Cs(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Cs(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++,Cs(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],_y(e,t),bd(n,l,e.bl_count)},ku=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[vd*2]++):o<=10?e.bl_tree[pd*2]++:e.bl_tree[yd*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},xu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)){if(o<c)do ot(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(ot(e,a,e.bl_tree),o--),ot(e,vd,e.bl_tree),Be(e,o-3,2)):o<=10?(ot(e,pd,e.bl_tree),Be(e,o-3,3)):(ot(e,yd,e.bl_tree),Be(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},vy=e=>{let t;for(ku(e,e.dyn_ltree,e.l_desc.max_code),ku(e,e.dyn_dtree,e.d_desc.max_code),js(e,e.bl_desc),t=oo-1;t>=3&&e.bl_tree[wd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},py=(e,t,n,i)=>{let r;for(Be(e,t-257,5),Be(e,n-1,5),Be(e,i-4,4),r=0;r<i;r++)Be(e,e.bl_tree[wd[r]*2+1],3);xu(e,e.dyn_ltree,t-1),xu(e,e.dyn_dtree,n-1)},yy=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return wu;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Au;for(n=32;n<Ni;n++)if(e.dyn_ltree[n*2]!==0)return Au;return wu},bu=!1,wy=e=>{bu||(gy(),bu=!0),e.l_desc=new Is(e.dyn_ltree,Ad),e.d_desc=new Is(e.dyn_dtree,Sd),e.bl_desc=new Is(e.bl_tree,Ed),e.bi_buf=0,e.bi_valid=0,Td(e)},Rd=(e,t,n,i)=>{Be(e,(oy<<1)+(i?1:0),3),Md(e),Ti(e,n),Ti(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Ay=e=>{Be(e,_d<<1,3),ot(e,co,St),fy(e)},Sy=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===sy&&(e.strm.data_type=yy(e)),js(e,e.l_desc),js(e,e.d_desc),s=vy(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Rd(e,t,n,i):e.strategy===ay||a===r?(Be(e,(_d<<1)+(i?1:0),3),Eu(e,St,wi)):(Be(e,(cy<<1)+(i?1:0),3),py(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),Eu(e,e.dyn_ltree,e.dyn_dtree)),Td(e),i&&Md(e)},Ey=(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[(bi[n]+Ni+1)*2]++,e.dyn_dtree[kd(t)*2]++),e.sym_next===e.sym_end),ky=wy,xy=Rd,by=Sy,Ty=Ey,My=Ay,Ry={_tr_init:ky,_tr_stored_block:xy,_tr_flush_block:by,_tr_tally:Ty,_tr_align:My},Ly=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Mi=Ly,zy=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Ny=new Uint32Array(zy()),Oy=(e,t,n,i)=>{let r=Ny,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Te=Oy,sn={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"},ln={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:Iy,_tr_stored_block:Zs,_tr_flush_block:Cy,_tr_tally:Pt,_tr_align:Py}=Ry,{Z_NO_FLUSH:Dt,Z_PARTIAL_FLUSH:Dy,Z_FULL_FLUSH:Fy,Z_FINISH:Ze,Z_BLOCK:Tu,Z_OK:ze,Z_STREAM_END:Mu,Z_STREAM_ERROR:ct,Z_DATA_ERROR:Uy,Z_BUF_ERROR:Ps,Z_DEFAULT_COMPRESSION:By,Z_FILTERED:Gy,Z_HUFFMAN_ONLY:Mr,Z_RLE:Hy,Z_FIXED:Vy,Z_DEFAULT_STRATEGY:Wy,Z_UNKNOWN:Ky,Z_DEFLATED:Xr}=ln,$y=9,Xy=15,Yy=8,qy=29,jy=256,Js=jy+1+qy,Zy=30,Jy=19,Qy=2*Js+1,ew=15,te=3,Ct=258,lt=Ct+te+1,tw=32,zn=42,uo=57,Qs=69,eo=73,to=91,no=103,rn=113,pi=666,Oe=1,In=2,on=3,Cn=4,nw=3,an=(e,t)=>(e.msg=sn[t],t),Ru=e=>e*2-(e>4?9:0),It=e=>{let t=e.length;for(;--t>=0;)e[t]=0},iw=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},rw=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Ft=rw,Ve=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))},We=(e,t)=>{Cy(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Ve(e.strm)},ae=(e,t)=>{e.pending_buf[e.pending++]=t},vi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},io=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Mi(e.adler,t,r,n):e.state.wrap===2&&(e.adler=Te(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Ld=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-lt?e.strstart-(e.w_size-lt):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+Ct,f=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(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]===c[++r]&&i<d);if(a=Ct-(d-i),i=d-Ct,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],g=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Nn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-lt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),iw(e),i+=t),e.strm.avail_in===0)break;if(n=io(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=te)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Ft(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Ft(e,e.ins_h,e.window[r+te-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<te)););}while(e.lookahead<lt&&e.strm.avail_in!==0)},zd=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==Ze||t===Dt||i!==r+e.strm.avail_in)))break;s=t===Ze&&i===r+e.strm.avail_in?1:0,Zs(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Ve(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(io(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}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?Cn:t!==Dt&&t!==Ze&&e.strm.avail_in===0&&e.strstart===e.block_start?In:(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&&(io(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,r=e.strstart-e.block_start,(r>=n||(r||t===Ze)&&t!==Dt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Ze&&e.strm.avail_in===0&&i===r?1:0,Zs(e,e.block_start,i,s),e.block_start+=i,Ve(e.strm)),s?on:Oe)},Ds=(e,t)=>{let n,i;for(;;){if(e.lookahead<lt){if(Nn(e),e.lookahead<lt&&t===Dt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Ft(e,e.ins_h,e.window[e.strstart+te-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-lt&&(e.match_length=Ld(e,n)),e.match_length>=te)if(i=Pt(e,e.strstart-e.match_start,e.match_length-te),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=te){e.match_length--;do e.strstart++,e.ins_h=Ft(e,e.ins_h,e.window[e.strstart+te-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=Ft(e,e.ins_h,e.window[e.strstart+1]);else i=Pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(We(e,!1),e.strm.avail_out===0))return Oe}return e.insert=e.strstart<te-1?e.strstart:te-1,t===Ze?(We(e,!0),e.strm.avail_out===0?on:Cn):e.sym_next&&(We(e,!1),e.strm.avail_out===0)?Oe:In},Tn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<lt){if(Nn(e),e.lookahead<lt&&t===Dt)return Oe;if(e.lookahead===0)break}if(n=0,e.lookahead>=te&&(e.ins_h=Ft(e,e.ins_h,e.window[e.strstart+te-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=te-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-lt&&(e.match_length=Ld(e,n),e.match_length<=5&&(e.strategy===Gy||e.match_length===te&&e.strstart-e.match_start>4096)&&(e.match_length=te-1)),e.prev_length>=te&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-te,i=Pt(e,e.strstart-1-e.prev_match,e.prev_length-te),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Ft(e,e.ins_h,e.window[e.strstart+te-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=te-1,e.strstart++,i&&(We(e,!1),e.strm.avail_out===0))return Oe}else if(e.match_available){if(i=Pt(e,0,e.window[e.strstart-1]),i&&We(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Oe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Pt(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<te-1?e.strstart:te-1,t===Ze?(We(e,!0),e.strm.avail_out===0?on:Cn):e.sym_next&&(We(e,!1),e.strm.avail_out===0)?Oe:In},aw=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Ct){if(Nn(e),e.lookahead<=Ct&&t===Dt)return Oe;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=te&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+Ct;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=Ct-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=te?(n=Pt(e,1,e.match_length-te),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&&(We(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===Ze?(We(e,!0),e.strm.avail_out===0?on:Cn):e.sym_next&&(We(e,!1),e.strm.avail_out===0)?Oe:In},sw=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Nn(e),e.lookahead===0)){if(t===Dt)return Oe;break}if(e.match_length=0,n=Pt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(We(e,!1),e.strm.avail_out===0))return Oe}return e.insert=0,t===Ze?(We(e,!0),e.strm.avail_out===0?on:Cn):e.sym_next&&(We(e,!1),e.strm.avail_out===0)?Oe:In};function st(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var yi=[new st(0,0,0,0,zd),new st(4,4,8,4,Ds),new st(4,5,16,8,Ds),new st(4,6,32,32,Ds),new st(4,4,16,16,Tn),new st(8,16,32,32,Tn),new st(8,16,128,128,Tn),new st(8,32,128,256,Tn),new st(32,128,258,1024,Tn),new st(32,258,258,4096,Tn)],ow=e=>{e.window_size=2*e.w_size,It(e.head),e.max_lazy_match=yi[e.level].max_lazy,e.good_match=yi[e.level].good_length,e.nice_match=yi[e.level].nice_length,e.max_chain_length=yi[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=te-1,e.match_available=0,e.ins_h=0};function cw(){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=Xr,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(Qy*2),this.dyn_dtree=new Uint16Array((2*Zy+1)*2),this.bl_tree=new Uint16Array((2*Jy+1)*2),It(this.dyn_ltree),It(this.dyn_dtree),It(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(ew+1),this.heap=new Uint16Array(2*Js+1),It(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*Js+1),It(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 Oi=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==zn&&t.status!==uo&&t.status!==Qs&&t.status!==eo&&t.status!==to&&t.status!==no&&t.status!==rn&&t.status!==pi?1:0},Nd=e=>{if(Oi(e))return an(e,ct);e.total_in=e.total_out=0,e.data_type=Ky;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?uo:t.wrap?zn:rn,e.adler=t.wrap===2?0:1,t.last_flush=-2,Iy(t),ze},Od=e=>{let t=Nd(e);return t===ze&&ow(e.state),t},lw=(e,t)=>Oi(e)||e.state.wrap!==2?ct:(e.state.gzhead=t,ze),Id=(e,t,n,i,r,a)=>{if(!e)return ct;let s=1;if(t===By&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>$y||n!==Xr||i<8||i>15||t<0||t>9||a<0||a>Vy||i===8&&s!==1)return an(e,ct);i===8&&(i=9);let o=new cw;return e.state=o,o.strm=e,o.status=zn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+te-1)/te),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<<r+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,Od(e)},uw=(e,t)=>Id(e,t,Xr,Xy,Yy,Wy),dw=(e,t)=>{if(Oi(e)||t>Tu||t<0)return e?an(e,ct):ct;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===pi&&t!==Ze)return an(e,e.avail_out===0?Ps:ct);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(Ve(e),e.avail_out===0)return n.last_flush=-1,ze}else if(e.avail_in===0&&Ru(t)<=Ru(i)&&t!==Ze)return an(e,Ps);if(n.status===pi&&e.avail_in!==0)return an(e,Ps);if(n.status===zn&&n.wrap===0&&(n.status=rn),n.status===zn){let r=Xr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Mr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=tw),r+=31-r%31,vi(n,r),n.strstart!==0&&(vi(n,e.adler>>>16),vi(n,e.adler&65535)),e.adler=1,n.status=rn,Ve(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===uo){if(e.adler=0,ae(n,31),ae(n,139),ae(n,8),n.gzhead)ae(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)),ae(n,n.gzhead.time&255),ae(n,n.gzhead.time>>8&255),ae(n,n.gzhead.time>>16&255),ae(n,n.gzhead.time>>24&255),ae(n,n.level===9?2:n.strategy>=Mr||n.level<2?4:0),ae(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ae(n,n.gzhead.extra.length&255),ae(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Te(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Qs;else if(ae(n,0),ae(n,0),ae(n,0),ae(n,0),ae(n,0),ae(n,n.level===9?2:n.strategy>=Mr||n.level<2?4:0),ae(n,nw),n.status=rn,Ve(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===Qs){if(n.gzhead.extra){let r=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>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,Ve(e),n.pending!==0)return n.last_flush=-1,ze;r=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>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=eo}if(n.status===eo){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),Ve(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,ae(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=to}if(n.status===to){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r)),Ve(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,ae(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Te(e.adler,n.pending_buf,n.pending-r,r))}n.status=no}if(n.status===no){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Ve(e),n.pending!==0))return n.last_flush=-1,ze;ae(n,e.adler&255),ae(n,e.adler>>8&255),e.adler=0}if(n.status=rn,Ve(e),n.pending!==0)return n.last_flush=-1,ze}if(e.avail_in!==0||n.lookahead!==0||t!==Dt&&n.status!==pi){let r=n.level===0?zd(n,t):n.strategy===Mr?sw(n,t):n.strategy===Hy?aw(n,t):yi[n.level].func(n,t);if((r===on||r===Cn)&&(n.status=pi),r===Oe||r===on)return e.avail_out===0&&(n.last_flush=-1),ze;if(r===In&&(t===Dy?Py(n):t!==Tu&&(Zs(n,0,0,!1),t===Fy&&(It(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),Ve(e),e.avail_out===0))return n.last_flush=-1,ze}return t!==Ze?ze:n.wrap<=0?Mu:(n.wrap===2?(ae(n,e.adler&255),ae(n,e.adler>>8&255),ae(n,e.adler>>16&255),ae(n,e.adler>>24&255),ae(n,e.total_in&255),ae(n,e.total_in>>8&255),ae(n,e.total_in>>16&255),ae(n,e.total_in>>24&255)):(vi(n,e.adler>>>16),vi(n,e.adler&65535)),Ve(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ze:Mu)},mw=e=>{if(Oi(e))return ct;let t=e.state.status;return e.state=null,t===rn?an(e,Uy):ze},hw=(e,t)=>{let n=t.length;if(Oi(e))return ct;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==zn||i.lookahead)return ct;if(r===1&&(e.adler=Mi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(It(i.head),i.strstart=0,i.block_start=0,i.insert=0);let l=new Uint8Array(i.w_size);l.set(t.subarray(n-i.w_size,n),0),t=l,n=i.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,Nn(i);i.lookahead>=te;){let l=i.strstart,c=i.lookahead-(te-1);do i.ins_h=Ft(i,i.ins_h,i.window[l+te-1]),i.prev[l&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=l,l++;while(--c);i.strstart=l,i.lookahead=te-1,Nn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=te-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,ze},fw=uw,_w=Id,gw=Od,vw=Nd,pw=lw,yw=dw,ww=mw,Aw=hw,Sw="pako deflate (from Nodeca project)",Ai={deflateInit:fw,deflateInit2:_w,deflateReset:gw,deflateResetKeep:vw,deflateSetHeader:pw,deflate:yw,deflateEnd:ww,deflateSetDictionary:Aw,deflateInfo:Sw},Ew=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),kw=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 i in n)Ew(n,i)&&(e[i]=n[i])}}return e},xw=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},Yr={assign:kw,flattenChunks:xw},Cd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Cd=!1}var Ri=new Uint8Array(256);for(let e=0;e<256;e++)Ri[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ri[254]=Ri[254]=1;var bw=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),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},Tw=(e,t)=>{if(t<65534&&e.subarray&&Cd)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},Mw=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=Ri[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return Tw(a,r)},Rw=(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+Ri[e[n]]>t?n:t},Li={string2buf:bw,buf2string:Mw,utf8border:Rw};function Lw(){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 Pd=Lw,Dd=Object.prototype.toString,{Z_NO_FLUSH:zw,Z_SYNC_FLUSH:Nw,Z_FULL_FLUSH:Ow,Z_FINISH:Iw,Z_OK:Cr,Z_STREAM_END:Cw,Z_DEFAULT_COMPRESSION:Pw,Z_DEFAULT_STRATEGY:Dw,Z_DEFLATED:Fw}=ln;function Ii(e){this.options=Yr.assign({level:Pw,method:Fw,chunkSize:16384,windowBits:15,memLevel:8,strategy:Dw},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 Pd,this.strm.avail_out=0;let n=Ai.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Cr)throw new Error(sn[n]);if(t.header&&Ai.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Li.string2buf(t.dictionary):Dd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Ai.deflateSetDictionary(this.strm,i),n!==Cr)throw new Error(sn[n]);this._dict_set=!0}}Ii.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Iw:zw,typeof e=="string"?n.input=Li.string2buf(e):Dd.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(i),n.next_out=0,n.avail_out=i),(a===Nw||a===Ow)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Ai.deflate(n,a),r===Cw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Ai.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Cr;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};Ii.prototype.onData=function(e){this.chunks.push(e)};Ii.prototype.onEnd=function(e){e===Cr&&(this.result=Yr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function mo(e,t){let n=new Ii(t);if(n.push(e,!0),n.err)throw n.msg||sn[n.err];return n.result}function Uw(e,t){return t=t||{},t.raw=!0,mo(e,t)}function Bw(e,t){return t=t||{},t.gzip=!0,mo(e,t)}var Gw=Ii,Hw=mo,Vw=Uw,Ww=Bw,Kw=ln,$w={Deflate:Gw,deflate:Hw,deflateRaw:Vw,gzip:Ww,constants:Kw},Rr=16209,Xw=16191,Yw=function(t,n){let i,r,a,s,o,l,c,u,m,d,f,g,p,v,w,M,E,y,k,b,T,O,x,S,z=t.state;i=t.next_in,x=t.input,r=i+(t.avail_in-5),a=t.next_out,S=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=z.dmax,c=z.wsize,u=z.whave,m=z.wnext,d=z.window,f=z.hold,g=z.bits,p=z.lencode,v=z.distcode,w=(1<<z.lenbits)-1,M=(1<<z.distbits)-1;e:do{g<15&&(f+=x[i++]<<g,g+=8,f+=x[i++]<<g,g+=8),E=p[f&w];t:for(;;){if(y=E>>>24,f>>>=y,g-=y,y=E>>>16&255,y===0)S[a++]=E&65535;else if(y&16){k=E&65535,y&=15,y&&(g<y&&(f+=x[i++]<<g,g+=8),k+=f&(1<<y)-1,f>>>=y,g-=y),g<15&&(f+=x[i++]<<g,g+=8,f+=x[i++]<<g,g+=8),E=v[f&M];n:for(;;){if(y=E>>>24,f>>>=y,g-=y,y=E>>>16&255,y&16){if(b=E&65535,y&=15,g<y&&(f+=x[i++]<<g,g+=8,g<y&&(f+=x[i++]<<g,g+=8)),b+=f&(1<<y)-1,b>l){t.msg="invalid distance too far back",z.mode=Rr;break e}if(f>>>=y,g-=y,y=a-s,b>y){if(y=b-y,y>u&&z.sane){t.msg="invalid distance too far back",z.mode=Rr;break e}if(T=0,O=d,m===0){if(T+=c-y,y<k){k-=y;do S[a++]=d[T++];while(--y);T=a-b,O=S}}else if(m<y){if(T+=c+m-y,y-=m,y<k){k-=y;do S[a++]=d[T++];while(--y);if(T=0,m<k){y=m,k-=y;do S[a++]=d[T++];while(--y);T=a-b,O=S}}}else if(T+=m-y,y<k){k-=y;do S[a++]=d[T++];while(--y);T=a-b,O=S}for(;k>2;)S[a++]=O[T++],S[a++]=O[T++],S[a++]=O[T++],k-=3;k&&(S[a++]=O[T++],k>1&&(S[a++]=O[T++]))}else{T=a-b;do S[a++]=S[T++],S[a++]=S[T++],S[a++]=S[T++],k-=3;while(k>2);k&&(S[a++]=S[T++],k>1&&(S[a++]=S[T++]))}}else if((y&64)===0){E=v[(E&65535)+(f&(1<<y)-1)];continue n}else{t.msg="invalid distance code",z.mode=Rr;break e}break}}else if((y&64)===0){E=p[(E&65535)+(f&(1<<y)-1)];continue t}else if(y&32){z.mode=Xw;break e}else{t.msg="invalid literal/length code",z.mode=Rr;break e}break}}while(i<r&&a<o);k=g>>3,i-=k,g-=k<<3,f&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),z.hold=f,z.bits=g},Mn=15,Lu=852,zu=592,Nu=0,Fs=1,Ou=2,qw=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]),jw=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]),Zw=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]),Jw=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]),Qw=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,f=0,g=0,p=0,v=0,w=0,M=0,E,y,k,b,T,O=null,x,S=new Uint16Array(Mn+1),z=new Uint16Array(Mn+1),J=null,ce,Q,R;for(c=0;c<=Mn;c++)S[c]=0;for(u=0;u<i;u++)S[t[n+u]]++;for(f=l,d=Mn;d>=1&&S[d]===0;d--);if(f>d&&(f=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&S[m]===0;m++);for(f<m&&(f=m),v=1,c=1;c<=Mn;c++)if(v<<=1,v-=S[c],v<0)return-1;if(v>0&&(e===Nu||d!==1))return-1;for(z[1]=0,c=1;c<Mn;c++)z[c+1]=z[c]+S[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[z[t[n+u]]++]=u);if(e===Nu?(O=J=s,x=20):e===Fs?(O=qw,J=jw,x=257):(O=Zw,J=Jw,x=0),M=0,u=0,c=m,T=a,g=f,p=0,k=-1,w=1<<f,b=w-1,e===Fs&&w>Lu||e===Ou&&w>zu)return 1;for(;;){ce=c-p,s[u]+1<x?(Q=0,R=s[u]):s[u]>=x?(Q=J[s[u]-x],R=O[s[u]-x]):(Q=96,R=0),E=1<<c-p,y=1<<g,m=y;do y-=E,r[T+(M>>p)+y]=ce<<24|Q<<16|R|0;while(y!==0);for(E=1<<c-1;M&E;)E>>=1;if(E!==0?(M&=E-1,M+=E):M=0,u++,--S[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>f&&(M&b)!==k){for(p===0&&(p=f),T+=m,g=c-p,v=1<<g;g+p<d&&(v-=S[g+p],!(v<=0));)g++,v<<=1;if(w+=1<<g,e===Fs&&w>Lu||e===Ou&&w>zu)return 1;k=M&b,r[k]=f<<24|g<<16|T-a|0}}return M!==0&&(r[T+M]=c-p<<24|64<<16|0),o.bits=f,0},Si=Qw,eA=0,Fd=1,Ud=2,{Z_FINISH:Iu,Z_BLOCK:tA,Z_TREES:Lr,Z_OK:cn,Z_STREAM_END:nA,Z_NEED_DICT:iA,Z_STREAM_ERROR:Je,Z_DATA_ERROR:Bd,Z_MEM_ERROR:Gd,Z_BUF_ERROR:rA,Z_DEFLATED:Cu}=ln,qr=16180,Pu=16181,Du=16182,Fu=16183,Uu=16184,Bu=16185,Gu=16186,Hu=16187,Vu=16188,Wu=16189,Pr=16190,At=16191,Us=16192,Ku=16193,Bs=16194,$u=16195,Xu=16196,Yu=16197,qu=16198,zr=16199,Nr=16200,ju=16201,Zu=16202,Ju=16203,Qu=16204,ed=16205,Gs=16206,td=16207,nd=16208,ge=16209,Hd=16210,Vd=16211,aA=852,sA=592,oA=15,cA=oA,id=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function lA(){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 un=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<qr||t.mode>Vd?1:0},Wd=e=>{if(un(e))return Je;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=qr,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(aA),t.distcode=t.distdyn=new Int32Array(sA),t.sane=1,t.back=-1,cn},Kd=e=>{if(un(e))return Je;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Wd(e)},$d=(e,t)=>{let n;if(un(e))return Je;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Je:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Kd(e))},Xd=(e,t)=>{if(!e)return Je;let n=new lA;e.state=n,n.strm=e,n.window=null,n.mode=qr;let i=$d(e,t);return i!==cn&&(e.state=null),i},uA=e=>Xd(e,cA),rd=!0,Hs,Vs,dA=e=>{if(rd){Hs=new Int32Array(512),Vs=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(Si(Fd,e.lens,0,288,Hs,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Si(Ud,e.lens,0,32,Vs,0,e.work,{bits:5}),rd=!1}e.lencode=Hs,e.lenbits=9,e.distcode=Vs,e.distbits=5},Yd=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},mA=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,f,g,p,v=0,w,M,E,y,k,b,T,O,x=new Uint8Array(4),S,z,J=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(un(e)||!e.output||!e.input&&e.avail_in!==0)return Je;n=e.state,n.mode===At&&(n.mode=Us),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,m=o,d=l,O=cn;e:for(;;)switch(n.mode){case qr:if(n.wrap===0){n.mode=Us;break}for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,x[0]=c&255,x[1]=c>>>8&255,n.check=Te(n.check,x,2,0),c=0,u=0,n.mode=Pu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ge;break}if((c&15)!==Cu){e.msg="unknown compression method",n.mode=ge;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=ge;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Wu:At,c=0,u=0;break;case Pu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==Cu){e.msg="unknown compression method",n.mode=ge;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ge;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(x[0]=c&255,x[1]=c>>>8&255,n.check=Te(n.check,x,2,0)),c=0,u=0,n.mode=Du;case Du:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(x[0]=c&255,x[1]=c>>>8&255,x[2]=c>>>16&255,x[3]=c>>>24&255,n.check=Te(n.check,x,4,0)),c=0,u=0,n.mode=Fu;case Fu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(x[0]=c&255,x[1]=c>>>8&255,n.check=Te(n.check,x,2,0)),c=0,u=0,n.mode=Uu;case Uu:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(x[0]=c&255,x[1]=c>>>8&255,n.check=Te(n.check,x,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Bu;case Bu:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(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(i.subarray(a,a+f),T)),n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=Gu;case Gu:if(n.flags&2048){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.name+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Hu;case Hu:if(n.flags&4096){if(o===0)break e;f=0;do T=i[a+f++],n.head&&T&&n.length<65536&&(n.head.comment+=String.fromCharCode(T));while(T&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Te(n.check,i,f,a)),o-=f,a+=f,T)break e}else n.head&&(n.head.comment=null);n.mode=Vu;case Vu:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;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 Wu:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=id(c),c=0,u=0,n.mode=Pr;case Pr: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,iA;e.adler=n.check=1,n.mode=At;case At:if(t===tA||t===Lr)break e;case Us:if(n.last){c>>>=u&7,u-=u&7,n.mode=Gs;break}for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Ku;break;case 1:if(dA(n),n.mode=zr,t===Lr){c>>>=2,u-=2;break e}break;case 2:n.mode=Xu;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,u-=2;break;case Ku:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,u=0,n.mode=Bs,t===Lr)break e;case Bs:n.mode=$u;case $u:if(f=n.length,f){if(f>o&&(f=o),f>l&&(f=l),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=At;break;case Xu:for(;u<14;){if(o===0)break e;o--,c+=i[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=ge;break}n.have=0,n.mode=Yu;case Yu:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[J[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[J[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,S={bits:n.lenbits},O=Si(eA,n.lens,0,19,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=qu;case qu:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,M=v>>>16&255,E=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(E<16)c>>>=w,u-=w,n.lens[n.have++]=E;else{if(E===16){for(z=w+2;u<z;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}T=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(E===17){for(z=w+3;u<z;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,T=0,f=3+(c&7),c>>>=3,u-=3}else{for(z=w+7;u<z;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,T=0,f=11+(c&127),c>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;f--;)n.lens[n.have++]=T}}if(n.mode===ge)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ge;break}if(n.lenbits=9,S={bits:n.lenbits},O=Si(Fd,n.lens,0,n.nlen,n.lencode,0,n.work,S),n.lenbits=S.bits,O){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,S={bits:n.distbits},O=Si(Ud,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,S),n.distbits=S.bits,O){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=zr,t===Lr)break e;case zr:n.mode=Nr;case Nr: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,Yw(e,d),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===At&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],w=v>>>24,M=v>>>16&255,E=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(M&&(M&240)===0){for(y=w,k=M,b=E;v=n.lencode[b+((c&(1<<y+k)-1)>>y)],w=v>>>24,M=v>>>16&255,E=v&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,n.length=E,M===0){n.mode=ed;break}if(M&32){n.back=-1,n.mode=At;break}if(M&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=M&15,n.mode=ju;case ju:if(n.extra){for(z=n.extra;u<z;){if(o===0)break e;o--,c+=i[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=Zu;case Zu:for(;v=n.distcode[c&(1<<n.distbits)-1],w=v>>>24,M=v>>>16&255,E=v&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((M&240)===0){for(y=w,k=M,b=E;v=n.distcode[b+((c&(1<<y+k)-1)>>y)],w=v>>>24,M=v>>>16&255,E=v&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,M&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=E,n.extra=M&15,n.mode=Ju;case Ju:if(n.extra){for(z=n.extra;u<z;){if(o===0)break e;o--,c+=i[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=ge;break}n.mode=Qu;case Qu:if(l===0)break e;if(f=d-l,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}f>n.wnext?(f-=n.wnext,g=n.wsize-f):g=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,g=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=p[g++];while(--f);n.length===0&&(n.mode=Nr);break;case ed:if(l===0)break e;r[s++]=n.length,l--,n.mode=Nr;break;case Gs:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[a++]<<u,u+=8}if(d-=l,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,s-d):Mi(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:id(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,u=0}n.mode=td;case td:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,u=0}n.mode=nd;case nd:O=nA;break e;case ge:O=Bd;break e;case Hd:return Gd;case Vd:default:return Je}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||d!==e.avail_out&&n.mode<ge&&(n.mode<Gs||t!==Iu))&&Yd(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Te(n.check,r,d,e.next_out-d):Mi(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===At?128:0)+(n.mode===zr||n.mode===Bs?256:0),(m===0&&d===0||t===Iu)&&O===cn&&(O=rA),O},hA=e=>{if(un(e))return Je;let t=e.state;return t.window&&(t.window=null),e.state=null,cn},fA=(e,t)=>{if(un(e))return Je;let n=e.state;return(n.wrap&2)===0?Je:(n.head=t,t.done=!1,cn)},_A=(e,t)=>{let n=t.length,i,r,a;return un(e)||(i=e.state,i.wrap!==0&&i.mode!==Pr)?Je:i.mode===Pr&&(r=1,r=Mi(r,t,n,0),r!==i.check)?Bd:(a=Yd(e,t,n,n),a?(i.mode=Hd,Gd):(i.havedict=1,cn))},gA=Kd,vA=$d,pA=Wd,yA=uA,wA=Xd,AA=mA,SA=hA,EA=fA,kA=_A,xA="pako inflate (from Nodeca project)",Et={inflateReset:gA,inflateReset2:vA,inflateResetKeep:pA,inflateInit:yA,inflateInit2:wA,inflate:AA,inflateEnd:SA,inflateGetHeader:EA,inflateSetDictionary:kA,inflateInfo:xA};function bA(){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 TA=bA,qd=Object.prototype.toString,{Z_NO_FLUSH:MA,Z_FINISH:RA,Z_OK:zi,Z_STREAM_END:Ws,Z_NEED_DICT:Ks,Z_STREAM_ERROR:LA,Z_DATA_ERROR:ad,Z_MEM_ERROR:zA}=ln;function Ci(e){this.options=Yr.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 Pd,this.strm.avail_out=0;let n=Et.inflateInit2(this.strm,t.windowBits);if(n!==zi)throw new Error(sn[n]);if(this.header=new TA,Et.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Li.string2buf(t.dictionary):qd.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Et.inflateSetDictionary(this.strm,t.dictionary),n!==zi)))throw new Error(sn[n])}Ci.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?RA:MA,qd.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(i),n.next_out=0,n.avail_out=i),a=Et.inflate(n,s),a===Ks&&r&&(a=Et.inflateSetDictionary(n,r),a===zi?a=Et.inflate(n,s):a===ad&&(a=Ks));n.avail_in>0&&a===Ws&&n.state.wrap>0&&e[n.next_in]!==0;)Et.inflateReset(n),a=Et.inflate(n,s);switch(a){case LA:case ad:case Ks:case zA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===Ws))if(this.options.to==="string"){let l=Li.utf8border(n.output,n.next_out),c=n.next_out-l,u=Li.buf2string(n.output,l);n.next_out=c,n.avail_out=i-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===zi&&o===0)){if(a===Ws)return a=Et.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Ci.prototype.onData=function(e){this.chunks.push(e)};Ci.prototype.onEnd=function(e){e===zi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Yr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function ho(e,t){let n=new Ci(t);if(n.push(e),n.err)throw n.msg||sn[n.err];return n.result}function NA(e,t){return t=t||{},t.raw=!0,ho(e,t)}var OA=Ci,IA=ho,CA=NA,PA=ho,DA=ln,FA={Inflate:OA,inflate:IA,inflateRaw:CA,ungzip:PA,constants:DA},{Deflate:UA,deflate:BA,deflateRaw:GA,gzip:HA}=$w,{Inflate:VA,inflate:WA,inflateRaw:KA,ungzip:$A}=FA,XA=UA,YA=BA,qA=GA,jA=HA,ZA=VA,JA=WA,QA=KA,eS=$A,tS=ln,sd={Deflate:XA,deflate:YA,deflateRaw:qA,gzip:jA,Inflate:ZA,inflate:JA,inflateRaw:QA,ungzip:eS,constants:tS},Dr=2023,fo=1,_o=2,go=4,vo=8,po=16,yo=32,jd=64,nS=128,iS=256,wo=512,Ao=1024,So=2048,Fr=4096,Eo=8192,Ur=16384,rS=32768,Br=65536,ko=1<<17,Gr=1<<18,Hr=1<<19,xo=1<<20,bo=1<<21,To=1<<22,aS=1<<23,Mo=1<<24,Vr=1<<25,Ro=1<<26,Lo=1<<27,zo=1<<28,No=1<<29,Oo=1<<30,sS=-2147483648,Io=1,Co=2,Po=4,oS=1,cS=2,lS=128,Rn=()=>({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}),od=()=>({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}),Do=class Zd{constructor(t,n){this.protocolVersion=0,this.isDemo=oS,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)?Z.serverdata:this.protocolVersion===Dr?t:this.protocolVersion===34||this.protocolVersion===25?t<=Z.frame?t:t===22?Z.playerinfo:t===23?Z.packetentities:Z.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 Z.bad:return;case Z.nop:break;case Z.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case Z.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case Z.print:this.parsePrint();break;case Z.serverdata:this.parseServerData();break;case Z.configstring:this.parseConfigString();break;case Z.spawnbaseline:this.parseSpawnBaseline();break;case Z.centerprint:this.parseCenterPrint();break;case Z.download:this.parseDownload();break;case Z.frame:this.parseFrame();break;case Z.packetentities:this.parsePacketEntities(!1);break;case Z.deltapacketentities:this.parsePacketEntities(!0);break;case Z.playerinfo:this.parsePlayerState();break;case Z.stufftext:this.parseStuffText();break;case Z.layout:this.parseLayout();break;case Z.inventory:this.parseInventory();break;case Z.sound:this.parseSound();break;case Z.muzzleflash:this.parseMuzzleFlash();break;case Z.muzzleflash2:this.parseMuzzleFlash2();break;case Z.temp_entity:this.parseTempEntity();break;case Z.splitclient:this.parseSplitClient();break;case Z.configblast:this.parseConfigBlast();break;case Z.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case Z.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case Z.damage:this.parseDamage();break;case Z.locprint:this.parseLocPrint();break;case Z.fog:this.parseFog();break;case Z.waitingforplayers:this.parseWaitingForPlayers();break;case Z.bot_chat:this.parseBotChat();break;case Z.poi:this.parsePoi();break;case Z.help_path:this.parseHelpPath();break;case Z.muzzleflash3:this.parseMuzzleFlash3();break;case Z.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.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===Dr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=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,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}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(),i=this.stream.readData(t);try{let r=sd.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Xs(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=sd.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new Xs(r.buffer),s=new Zd(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}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(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),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(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=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,i,r,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 i=this.stream.readByte();t|=i<<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 i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,l=(r&64)!==0,c=(r&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},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,l,c;switch(t){case G.EXPLOSION1:case G.EXPLOSION2:case G.ROCKET_EXPLOSION:case G.GRENADE_EXPLOSION:case G.ROCKET_EXPLOSION_WATER:case G.GRENADE_EXPLOSION_WATER:case G.BFG_EXPLOSION:case G.BFG_BIGEXPLOSION:case G.BOSSTPORT:case G.PLASMA_EXPLOSION:case G.PLAIN_EXPLOSION:case G.CHAINFIST_SMOKE:case G.TRACKER_EXPLOSION:case G.TELEPORT_EFFECT:case G.DBALL_GOAL:case G.NUKEBLAST:case G.WIDOWSPLASH:case G.EXPLOSION1_BIG:case G.EXPLOSION1_NP:this.stream.readPos(n);break;case G.GUNSHOT:case G.BLOOD:case G.BLASTER:case G.SHOTGUN:case G.SPARKS:case G.BULLET_SPARKS:case G.SCREEN_SPARKS:case G.SHIELD_SPARKS:case G.BLASTER2:case G.FLECHETTE:case G.MOREBLOOD:case G.ELECTRIC_SPARKS:case G.HEATBEAM_SPARKS:case G.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case G.SPLASH:case G.LASER_SPARKS:case G.WELDING_SPARKS:case G.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case G.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case G.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case G.RAILTRAIL:case G.BUBBLETRAIL:case G.BFG_LASER:case G.DEBUGTRAIL:case G.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case G.PARASITE_ATTACK:case G.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case G.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case G.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case G.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case G.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case G.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case G.WIDOWBEAMOUT:this.stream.readShort();case G.HEATBEAM:case G.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Rn();this.parseDelta(Rn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==Z.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState(),l=this.stream.readByte();if(l=this.translateCommand(l),l!==Z.packetentities)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${l} (translated)`);let c=this.collectPacketEntities();if(this.isDemo===lS){let u=this.stream.readByte();for(let m=0;m<u;m++)this.stream.readByte()}this.isDemo===cS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:c}})}parsePlayerState(){let t=od(),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 i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=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:od(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Rn();this.parseDelta(Rn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&nS&&(t|=this.stream.readByte()<<8),t&rS&&(t|=this.stream.readByte()<<16),t&aS&&(t|=this.stream.readByte()<<24);let n=0;t&sS&&(n=this.stream.readByte());let i;return t&iS?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,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=i,n.bits=r,n.bitsHigh=a,r&So&&(n.modelindex=this.stream.readByte()),r&xo&&(n.modelindex2=this.stream.readByte()),r&bo&&(n.modelindex3=this.stream.readByte()),r&To&&(n.modelindex4=this.stream.readByte()),r&po&&(n.frame=this.stream.readByte()),r&ko&&(n.frame=this.stream.readShort()),r&Br&&r&Vr?n.skinnum=this.stream.readLong():r&Br?n.skinnum=this.stream.readByte():r&Vr&&(n.skinnum=this.stream.readShort()),r&Ur&&r&Hr?n.effects=this.stream.readLong():r&Ur?n.effects=this.stream.readByte():r&Hr&&(n.effects=this.stream.readShort()),r&Fr&&r&Gr?n.renderfx=this.stream.readLong():r&Fr?n.renderfx=this.stream.readByte():r&Gr&&(n.renderfx=this.stream.readShort()),r&fo&&(n.origin.x=this.stream.readCoord()),r&_o&&(n.origin.y=this.stream.readCoord()),r&wo&&(n.origin.z=this.stream.readCoord()),r&Ao&&(n.angles.x=this.stream.readAngle()),r&go&&(n.angles.y=this.stream.readAngle()),r&vo&&(n.angles.z=this.stream.readAngle()),r&Mo&&this.stream.readPos(n.old_origin),r&Ro&&(n.sound=this.stream.readByte()),r&yo?n.event=this.stream.readByte():n.event=0,r&Lo&&(n.solid=this.stream.readShort()),r&Eo&&(n.alpha=this.stream.readByte()/255),r&zo&&(n.scale=this.stream.readFloat()),r&No&&(n.instanceBits=this.stream.readLong()),r&Oo&&(n.loopVolume=this.stream.readByte()/255),a&Io&&(n.loopAttenuation=this.stream.readByte()/255),a&Co&&(n.owner=this.stream.readShort()),a&Po&&(n.oldFrame=this.stream.readShort())}};var Jd=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 ry(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}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration}}stepForward(){this.reader&&this.processNextFrame()}stepBackward(){console.warn("stepBackward not implemented")}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.state=3,!1;let e=this.reader.readNextBlock();if(!e)return this.state=3,!1;let t=new Do(e.data,this.handler);return t.setProtocolVersion(this.currentProtocolVersion),t.parseMessage(),this.currentProtocolVersion=t.getProtocolVersion(),!0}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var uS=Object.defineProperty,Qd=(e,t)=>{for(var n in t)uS(e,n,{get:t[n],enumerable:!0})},Bt={x:0,y:0,z:0};var VC=Math.PI/180;function jr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function em(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function Un(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Di(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function dS(e){return Di(e,e)}function dn(e){return Math.sqrt(dS(e))}function tm(e){let t=dn(e);return t===0?e:Un(e,1/t)}var nm=0,im=1,rm=2,mS=Math.PI/180,WC=180/Math.PI;function Fo(e,t){switch(t){case nm:return e.x;case im:return e.y;case rm:default:return e.z}}function Uo(e){return e*mS}function Dn(e){let t=e%360;return t<0?360+t:t}function Jr(e){let t=Uo(Fo(e,im)),n=Uo(Fo(e,nm)),i=Uo(Fo(e,rm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}var Pn=[[-.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 dt=1,Gt=2;var Ho=8,Vo=16,hS=32;var fS=16384;var Qr=65536,am=1<<17,_S=1<<18,gS=1<<19,vS=1<<20,pS=1<<21,yS=1<<22,wS=1<<23,KC=1<<24,ea=1<<25,AS=1<<26,$C=1<<27,XC=1<<28,YC=1<<29,ta=1<<30,qC=1<<31;var jC=1<<25,ZC=1<<28,JC=1<<29,QC=1<<30,e7=1<<31;var t7=dt|Gt,n7=dt|Qr|Gt|ea|ta,i7=dt|Qr|Gt,r7=dt|am|Gt|ea|ta,a7=hS|Ho|Vo,s7=dt|Vo|Ho,SS=dt|ea|ta|Gt|AS,o7=_S|gS|vS|pS|yS|wS,c7=dt|Ho|Vo|ea|ta,l7=dt|Qr|Gt,u7=dt|Gt,d7=dt|Qr|Gt|am,m7=SS|fS;var h7=Number.MAX_SAFE_INTEGER-1;var Fi=(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))(Fi||{});var sm=256;var ES=256,Ui=8192,Bi=2048,Gi=512,kS=256,xS=sm*2,bS=256,Bo=32;var we=(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.HealthBarName=55]="HealthBarName",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+Ui]="Sounds",e[e.Images=e.Sounds+Bi]="Images",e[e.Lights=e.Images+Gi]="Lights",e[e.ShadowLights=e.Lights+ES]="ShadowLights",e[e.Items=e.ShadowLights+bS]="Items",e[e.PlayerSkins=e.Items+kS]="PlayerSkins",e[e.General=e.PlayerSkins+sm]="General",e[e.WheelWeapons=e.General+xS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Bo]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Bo]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Bo]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(we||{}),f7=we.MaxConfigStrings;var TS={};Qd(TS,{addReplayFrame:()=>zS,createReplaySession:()=>LS,deserializeReplay:()=>RS,serializeReplay:()=>MS});function MS(e){return JSON.stringify(e,null,2)}function RS(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 LS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function zS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Hi=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Hi||{});var kt=(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))(kt||{});function Bn(e,t){return(e&t)!==0}var na=(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))(na||{}),mt=(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))(mt||{});function NS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=dn(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return Un(t,f)}function OS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Di(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function IS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=dn(a);if(s>r){let o=r/s;a=Un(a,o),s=r}return{wishdir:s===0?a:tm(a),wishspeed:s}}function CS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=jr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=jr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=jr(a,{x:0,y:0,z:-60}):a=jr(a,{x:0,y:0,z:10});let s=dn(a);if(s>r){let o=r/s;a=Un(a,o),s=r}return s*=.5,{wishdir:s===0?a:tm(a),wishspeed:s}}function PS(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function DS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function Wo(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=PS(n,i),r={...r,x:DS(r.x)});let a=Jr(r);return{viewangles:r,...a}}var om=200,cm=200,lm=200,um=140,dm=150,mm=3;function FS(e){let t=Dn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function hm(e,t){return{x:FS(e.x+t.x),y:Dn(e.y+t.y),z:Dn(e.z+t.z)}}function fm(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var mn=(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))(mn||{});var _m=64;var gm=0,vm=1,pm=2,ym=3,wm=4,Am=5,Sm=6,Em=7,km=8;var xm=11,bm=12,Tm=13;function US(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function Mm(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(US(e,t,a)&o)>>>s}var Vi=(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))(Vi||{}),Ce=(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))(Ce||{}),Rm=12,Lm=9,_7=Math.ceil(Rm*Lm/16),zm=23,Nm=2,g7=Math.ceil(zm*Nm/16),BS={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 Om(e,t){return t<0||t>=Rm?0:Mm(e,34,t,Lm)}function ia(e,t){let n;return typeof t=="number"?n=t:n=BS[t],n===void 0||n<0||n>=zm?0:Mm(e,41,n,Nm)}function Im(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 GS={};Qd(GS,{U_ANGLE1:()=>YS,U_ANGLE2:()=>qS,U_ANGLE3:()=>jS,U_EFFECTS:()=>QS,U_EVENT:()=>n2,U_FRAME:()=>ZS,U_MODEL:()=>VS,U_MODEL2:()=>r2,U_MODEL3:()=>a2,U_MODEL4:()=>s2,U_MOREBITS:()=>i2,U_NUMBER:()=>HS,U_ORIGIN1:()=>KS,U_ORIGIN2:()=>$S,U_ORIGIN3:()=>XS,U_REMOVE:()=>o2,U_RENDERFX:()=>e2,U_SKIN:()=>JS,U_SOLID:()=>t2,U_SOUND:()=>WS});var HS=1,VS=2,WS=4,KS=8,$S=16,XS=32,YS=64,qS=128,jS=256,ZS=512,JS=1024,QS=2048,e2=4096,t2=8192,n2=16384,i2=32768,r2=1,a2=2,s2=4,o2=32768,Pi=.025,Go=33554432,Zr={None:0,Feet:1,Waist:2,Under:3},c2=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},l2=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Go))return{...e,waterLevel:Zr.None};let s=Zr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Go){s=Zr.Waist;let c=e.origin.z+22;n.z=c,t(n)&Go&&(s=Zr.Under)}return{...e,waterLevel:s}},Ko=(e,t,n,i)=>{let r={...e};r=c2(r,n),r=l2(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Jr(u),f=NS({velocity:s,frametime:Pi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?CS({forward:m,right:d,cmd:t,maxSpeed:320}):IS({forward:m,right:d,cmd:t,maxSpeed:320}),p=OS({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Pi}),v=n(a,{x:a.x+p.x*Pi,y:a.y+p.y*Pi,z:a.z+p.z*Pi});return{...r,origin:v.endpos,velocity:p}},Cm=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=Pn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},$o=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 i=0;i<Pn.length;i++){let r=Pn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Wi=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 i=0,r=-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*Pn[s][0]+t*Pn[s][1]+n*Pn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},Fn=class Ie{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new $o(Ie.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Ie.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Ie.MAX_MSGLEN&&(r=Ie.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Ie.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ie.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ie.MAX_MSGLEN-Ie.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};Fn.MAX_MSGLEN=1400;Fn.FRAGMENT_SIZE=1024;Fn.PACKET_HEADER=10;Fn.HEADER_OVERHEAD=Fn.PACKET_HEADER+2;var Pm=Fn;var Dm=(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))(Dm||{}),v7=Object.keys(Dm).length/2;var ra=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Fm={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var u2=Object.defineProperty,d2=(e,t)=>{for(var n in t)u2(e,n,{get:t[n],enumerable:!0})},sa=null,aa=[1,1,1,1],Um=["ch1","ch2","ch3"],Xo=[null,null,null],m2=e=>{for(let t=0;t<Um.length;t++){let n=Um[t];try{Xo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{Xo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
- `)}}}sa=Xo[0]},h2=(e,t,n)=>{if(sa){let i=e.Draw_GetPicSize(sa),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,sa,{x:aa[0],y:aa[1],z:aa[2]},aa[3])}},Km=new Map,f2=["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"],_2=e=>{for(let t of f2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Km.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
- `)}},g2=new Map,v2=["d_left","d_right","d_up","d_down"],p2=e=>{for(let t of v2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);g2.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
- `)}},y2=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Bm=3e3,Gm=5e3,Hm=4,w2=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Bm}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Gm}),this.notifyMessages.length>Hm&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Bm}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Gm}),this.notifyMessages.length>Hm&&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 i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,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 i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},A2=3e3,S2=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:A2}}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)}},E2=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},k2=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=Km.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},Yo=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=r[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))}},x2=(e,t,n,i,r,a)=>{let s=t.stats[Ce.STAT_HEALTH]||0,o=t.stats[Ce.STAT_ARMOR]||0,l=t.stats[Ce.STAT_AMMO]||0,c=t.stats[Ce.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(Yo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),Yo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),Yo(e,a.AMMO_X,a.AMMO_Y,l,n,i)),c>0){let m=e.get_configstring(we.Images+c);if(m){let d=e.Draw_RegisterPic(m);d&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,d)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Ce.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(we.Images+m);if(d){let f=e.Draw_RegisterPic(d);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},qo=640,Gn=480,b2=(e,t)=>{let n=e/qo,i=t/Gn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Gn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Gn-450)*r,AMMO_X:e-(qo-540)*r,AMMO_Y:t-(Gn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Gn-450)*r,POWERUP_X:e-(qo-610)*r,POWERUP_Y:t-(Gn-450)*r,scale:r}},xe=null,ec=[],$m=0,tc=new w2,Xm=new S2;function T2(e){xe=e}function M2(){if(xe){ec.length=0;for(let e=0;e<10;e++)try{let t=xe.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);ec.push(t),e===0&&($m=xe.Draw_GetPicSize(t).width)}catch{xe.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
- `)}m2(xe),_2(xe),p2(xe)}}function R2(e,t,n,i,r,a,s){if(!xe){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=xe.CL_ClientTime(),l=b2(n.width,n.height);if(E2(xe,s,n.width,n.height),x2(xe,s,ec,$m,o,l),k2(xe,s,n.width,n.height),y2(xe,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
- `),u=n.height/2-c.length*10;for(let m of c)xe.SCR_DrawCenterString(u,m),u+=16}tc.drawCenterPrint(xe,o,l),tc.drawNotifications(xe,o),Xm.drawSubtitles(xe,o),h2(xe,n.width,n.height)}function ca(){return tc}function L2(){return Xm}function z2(e,t,n){t>=we.Models&&t<we.Models+Ui?e.RegisterModel(n):t>=we.Sounds&&t<we.Sounds+Bi?e.RegisterSound(n):t>=we.Images&&t<we.Images+Gi&&e.Draw_RegisterPic(n)}var jo=1e-6,oa=typeof Float32Array<"u"?Float32Array:Array,Vm=Math.random;function Zo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var N2={};d2(N2,{add:()=>D2,angle:()=>s5,bezier:()=>J2,ceil:()=>F2,clone:()=>O2,copy:()=>C2,create:()=>Ym,cross:()=>Y2,dist:()=>f5,distance:()=>Qm,div:()=>h5,divide:()=>Jm,dot:()=>ic,equals:()=>u5,exactEquals:()=>l5,floor:()=>U2,forEach:()=>p5,fromValues:()=>I2,hermite:()=>Z2,inverse:()=>$2,len:()=>g5,length:()=>qm,lerp:()=>q2,max:()=>G2,min:()=>B2,mul:()=>m5,multiply:()=>Zm,negate:()=>K2,normalize:()=>X2,random:()=>Q2,rotateX:()=>i5,rotateY:()=>r5,rotateZ:()=>a5,round:()=>H2,scale:()=>V2,scaleAndAdd:()=>W2,set:()=>P2,slerp:()=>j2,sqrDist:()=>_5,sqrLen:()=>v5,squaredDistance:()=>e0,squaredLength:()=>t0,str:()=>c5,sub:()=>d5,subtract:()=>jm,transformMat3:()=>t5,transformMat4:()=>e5,transformQuat:()=>n5,zero:()=>o5});function Ym(){var e=new oa(3);return oa!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function O2(e){var t=new oa(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function qm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function I2(e,t,n){var i=new oa(3);return i[0]=e,i[1]=t,i[2]=n,i}function C2(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function P2(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function D2(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function jm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Zm(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Jm(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function F2(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function U2(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function B2(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 G2(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 H2(e,t){return e[0]=Zo(t[0]),e[1]=Zo(t[1]),e[2]=Zo(t[2]),e}function V2(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function W2(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function Qm(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function e0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function t0(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function K2(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function $2(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function X2(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;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 ic(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Y2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function q2(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function j2(e,t,n,i){var r=Math.acos(Math.min(Math.max(ic(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/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 Z2(e,t,n,i,r,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+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function J2(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function Q2(e,t){t=t===void 0?1:t;var n=Vm()*2*Math.PI,i=Vm()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function e5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function t5(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function n5(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function i5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function r5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function a5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function s5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&ic(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function o5(e){return e[0]=0,e[1]=0,e[2]=0,e}function c5(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function l5(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function u5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=jo*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=jo*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=jo*Math.max(1,Math.abs(r),Math.abs(o))}var d5=jm,m5=Zm,h5=Jm,f5=Qm,_5=e0,g5=qm,v5=t0,p5=(function(){var e=Ym();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;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 y5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function w5(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 A5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function S5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=A5(t,i,r),s=e+a,l=Bn(n,kt.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var la=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...y5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=Jr(Wo({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Bt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Bn(e.pmFlags,kt.OnGround),s=S5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=Di(e.velocity,n)*this.settings.runPitch,l=Di(e.velocity,i),c=l<0?-1:1,m=Math.abs(l)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Bn(e.pmFlags,kt.Ducked)&&a&&(d*=6,f*=6),o+=Math.min(d,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,w=0,M=0,E=0;if(this.kick&&this.kick.remainingMs>0){let T=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=T*this.kick.pitch,v+=T*this.kick.roll,this.kick.origin&&(w+=T*this.kick.origin.x,M+=T*this.kick.origin.y,E+=T*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let y={x:o+p,y:0,z:m+v},k={x:w,y:M,z:g+E},b={angles:y,offset:w5(k),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=b,b}},E5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},k5=800,He={x:0,y:0,z:0},x5=64;function xt(){return{origin:He,velocity:He,viewAngles:He,onGround:!1,pmFlags:kt.OnGround,pmType:na.Normal,waterLevel:Hi.None,gravity:k5,deltaAngles:He,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:He,kick_origin:He,gunoffset:He,gunangles:He,gunindex:0,pm_time:0,pm_type:na.Normal,pm_flags:kt.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 Jo(e){return e?{...xt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:He,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:xt()}function Ge(e,t,n){return e+(t-e)*n}function Qo(e,t,n){let i=Dn(t-e);return i>180&&(i-=360),Dn(e+i*n)}function hn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Ge(e.origin.x,t.origin.x,i),y:Ge(e.origin.y,t.origin.y,i),z:Ge(e.origin.z,t.origin.z,i)},velocity:{x:Ge(e.velocity.x,t.velocity.x,i),y:Ge(e.velocity.y,t.velocity.y,i),z:Ge(e.velocity.z,t.velocity.z,i)},viewAngles:{x:Qo(e.viewAngles.x,t.viewAngles.x,i),y:Qo(e.viewAngles.y,t.viewAngles.y,i),z:Qo(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Ge(e.damageAlpha,t.damageAlpha,i),blend:[Ge(e.blend[0],t.blend[0],i),Ge(e.blend[1],t.blend[1],i),Ge(e.blend[2],t.blend[2],i),Ge(e.blend[3],t.blend[3],i)],health:Ge(e.health||0,t.health||0,i),armor:Ge(e.armor||0,t.armor||0,i),ammo:Ge(e.ammo||0,t.ammo||0,i)}}function Wm(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons,angles:t.angles},s=Ko(e,a,i,r),{viewangles:o}=Wo({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??He});return{...s,viewAngles:o}}var ua=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:xt()},this.commands=[],this.predicted=xt(),this.predictionError=He,this.settings={...E5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??xt()}setAuthoritative(e){let t=Jo(e.state);if(e.frame<=this.baseFrame.frame)return this.predicted;let n,i=this.commands.filter(r=>r.sequence<=e.frame&&r.sequence>this.baseFrame.frame);if(i.length>0||this.baseFrame.frame===e.frame){let r=Jo(this.baseFrame.state);for(let a of i)r=Wm(r,a,this.settings,this.trace,this.pointContents);n=r}if(n){let r=em(n.origin,t.origin),a=dn(r);a>10?this.predictionError=He:a>.1?this.predictionError=r:this.predictionError=He}else this.predictionError=He;return this.baseFrame={...e,state:t},this.commands=this.commands.filter(r=>r.sequence>e.frame),this.recompute()}getPredictionError(){return this.predictionError}decayError(e){let t=dn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=Un(this.predictionError,i)}}enqueueCommand(e){return this.commands.push(e),this.commands.length>x5&&this.commands.shift(),this.recompute()}getCommand(e){return this.commands.find(t=>t.sequence===e)}getPredictedState(){return this.predicted}recompute(){let e=Jo(this.baseFrame.state);for(let t of this.commands)e=Wm(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},Ae=null,nc=null;function b5(){if(!Ae){console.error("CGame Init: cgame imports not set");return}Ae.Com_Print(`===== CGame Initialization =====
175
- `),T2(Ae),nc=Ae.Cvar_Get("cg_predict","1",0),Ae.Cvar_Get("cg_showmiss","0",0),Ae.Com_Print(`CGame initialized
176
- `)}function T5(){Ae&&Ae.Com_Print(`CGame shutdown
177
- `),Ae=null}function M5(e,t,n,i,r,a,s){R2(e,t,n,i,r,a,s)}function R5(){M2()}function L5(e){return 0}function z5(e){return e.stats[Ce.STAT_ACTIVE_WHEEL_WEAPON]??0}function N5(e){let t=[],n=e.stats[Ce.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Ce.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<ra.length;a++)r&1<<a&&t.push(a);return t}function O5(e,t){if(t<0||t>=ra.length)return 0;let n=ra[t],i=Fm[n];return i===null?-1:Om(e.stats,i)}function I5(e){let t=0,n=Object.values(Vi);for(let i of n)ia(e.stats,i)>0&&t++;return t}function C5(e){return e.stats[Ce.STAT_HIT_MARKER]??0}function P5(e){let t=e;if(!t||!t.s||!t.cmd||!Ae||nc&&nc.value===0)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return Ae.PM_Trace(a,s,o||c,l||c)},i=a=>{let s={x:0,y:0,z:0};return Ae.PM_Trace(a,a,s,s).contents||0},r=Ko(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function D5(e,t){Ae&&z2(Ae,e,t)}function F5(e,t,n){if(!Ae)return;ca().setCenterPrint(e,Ae.CL_ClientTime())}function U5(e,t,n){if(!Ae)return;ca().addNotification(t,n,Ae.CL_ClientTime())}function B5(e){ca().clearNotifications()}function G5(e){ca().clearCenterPrint()}function H5(e,t){if(!Ae)return;L2().addSubtitle(e,Ae.CL_ClientTime())}function V5(e){return{x:0,y:0,z:0}}function W5(e){return null}function n0(e){return Ae=e,{Init:b5,Shutdown:T5,DrawHUD:M5,TouchPics:R5,LayoutFlags:L5,GetActiveWeaponWheelWeapon:z5,GetOwnedWeaponWheelWeapons:N5,GetWeaponWheelAmmoCount:O5,GetPowerupWheelCount:I5,GetHitMarkerDamage:C5,Pmove:P5,ParseConfigString:D5,ParseCenterPrint:F5,NotifyMessage:U5,ShowSubtitle:H5,ClearNotify:B5,ClearCenterprint:G5,GetMonsterFlashOffset:V5,GetExtension:W5}}function i0(e,t){let n=new Map,i=new Set,r=()=>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_Get:(a,s,o)=>{if(!e.host||!e.host.cvars)return{value:parseInt(s)||0};let l=e.host.cvars.get(a);return l||(l=e.host.cvars.register({name:a,defaultValue:s,flags:o})),{get value(){return l.number}}},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)||i.has(a)||(i.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)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.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)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,m=n.get(u);m&&r()?.drawPic(a,s,m,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.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);r()?.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,Ht=0;var Ki=!0,$i=["ch1","ch2","ch3"],Vn=[null,null,null],r0=async(e,t)=>{for(let n=0;n<$i.length;n++){let i=$i[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);Vn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");Vn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Hn=Vn[0]};var a0=()=>{if(Ki?(Ht++,Ht>=$i.length&&(Ki=!1,Ht=0)):(Ki=!0,Ht=0),Ki){if(Hn=Vn[Ht],!Hn){let e=!1;for(let t=0;t<$i.length;t++){let n=(Ht+t)%$i.length;if(Vn[n]){Ht=n,Hn=Vn[n],e=!0;break}}e||(Hn=null)}}else Hn=null;return Ki?Ht:-1};var K5=Object.defineProperty,$5=Object.getOwnPropertyNames,pn=(e,t)=>function(){return e&&(t=(0,e[$5(e)[0]])(e=0)),t},X5=(e,t)=>{for(var n in t)K5(e,n,{get:t[n],enumerable:!0})};function ti(e){return{x:e.x,y:e.y,z:e.z}}function U(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 D(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function ka(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Y5(e){return ka(e,e)}function Fe(e){return Math.sqrt(Y5(e))}function B(e){let t=Fe(e);return t===0?e:D(e,1/t)}function q5(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 j5(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function ji(e,t){switch(t){case xa:return e.x;case ba:return e.y;case Rc:default:return e.z}}function ga(e){return e*kh}function fc(e){return e*xh}function _c(e){let t=e%360;return t<0?360+t:t}function j(e){let t=ga(ji(e,ba)),n=ga(ji(e,xa)),i=ga(ji(e,Rc)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}function rr(e){let t=ji(e,xa),n=ji(e,ba);if(t===0)return n===0?0:n>0?90:270;let i=fc(Math.atan2(n,t));return i<0?i+360:i}function ni(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=fc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=fc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function ar(e){return new Lc(e)}function Z5(e){return JSON.stringify(e,null,2)}function J5(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 Q5(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function eE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function tE(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Fe(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return D(t,f)}function nE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=ka(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function iE(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Fe(a);if(s>r){let o=r/s;a=D(a,o),s=r}return{wishdir:s===0?a:B(a),wishspeed:s}}function rE(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=U(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=U(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=U(a,{x:0,y:0,z:-60}):a=U(a,{x:0,y:0,z:10});let s=Fe(a);if(s>r){let o=r/s;a=D(a,o),s=r}return s*=.5,{wishdir:s===0?a:B(a),wishspeed:s}}var s0,rc,W,aE,sE,xa,ba,Rc,kh,xh,ac,Qe,o0,c0,l0,u0,da,d0,Lc,De,bt,oE,ma,ha,m0,cE,lE,h0,uE,Xi,sc,f0,_0,g0,v0,p0,y0,dE,Xt,Ji,mE,hE,fE,gn,_E,gE,vE,pE,yE,wE,AE,SE,EE,kE,xE,bE,TE,ME,zc,RE,LE,Yt,bh,zE,Lt,NE,OE,IE,CE,PE,DE,FE,w0,oc,A0,S0,E0,k0,x0,b0,T0,fa,cc,UE,M0,R0,BE,re,ye,Th,Mh,Rh,Lh,zh,Nh,Oh,Ih,Ch,Ph,ie,L0,z0,N0,GE,O0,I0,HE,VE,C0,P0,D0,F0,U0,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,j0,Z0,J0,Q0,eh,th,nh,Wn,_a,Yi,ih,rh,WE,ah,Kn,H,I,KE,he,$E,sh,XE,YE,F=pn({"../shared/dist/esm/index.js"(){"use strict";s0=Object.defineProperty,rc=(e,t)=>{for(var n in t)s0(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0},aE=.1,sE=Math.PI/180,xa=0,ba=1,Rc=2,kh=Math.PI/180,xh=180/Math.PI,ac=[[-.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]],Qe=624,o0=397,c0=2567483615,l0=2147483648,u0=2147483647,da=4294967296,d0=class{constructor(e=5489){this.state=new Uint32Array(Qe),this.index=Qe,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Qe;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=Qe}nextUint32(){this.index>=Qe&&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<Qe;e++){let t=this.state[e]&l0|this.state[(e+1)%Qe]&u0,n=this.state[(e+o0)%Qe]^t>>>1;(t&1)!==0&&(n^=c0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Qe)throw new Error(`Expected ${Qe} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Lc=class{constructor(e={}){this.mt=new d0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/da}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,i=da-da%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%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)}},De=1,bt=2,oE=4,ma=8,ha=16,m0=32,cE=64,lE=8192,h0=16384,uE=32768,Xi=65536,sc=1<<17,f0=1<<18,_0=1<<19,g0=1<<20,v0=1<<21,p0=1<<22,y0=1<<23,dE=1<<24,Xt=1<<25,Ji=1<<26,mE=1<<27,hE=1<<28,fE=1<<29,gn=1<<30,_E=1<<31,gE=1,vE=2,pE=4,yE=8,wE=16,AE=32,SE=64,EE=128,kE=1<<25,xE=1<<28,bE=1<<29,TE=1<<30,ME=1<<31,zc=De|bt,RE=De|Xi|bt|Xt|gn,LE=De|Xi|bt,Yt=De|sc|bt|Xt|gn,bh=m0|ma|ha,zE=De|ha|ma,Lt=De|Xt|gn|bt|Ji,NE=f0|_0|g0|v0|p0|y0,OE=De|ma|ha|Xt|gn,IE=De|Xi|bt,CE=De|bt,PE=De|Xi|bt|sc,DE=Lt|h0,FE=Number.MAX_SAFE_INTEGER-1,w0=(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))(w0||{}),oc=256,A0=256,S0=8192,E0=2048,k0=512,x0=256,b0=oc*2,T0=256,fa=32,cc=(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.HealthBarName=55]="HealthBarName",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+S0]="Sounds",e[e.Images=e.Sounds+E0]="Images",e[e.Lights=e.Images+k0]="Lights",e[e.ShadowLights=e.Lights+A0]="ShadowLights",e[e.Items=e.ShadowLights+T0]="Items",e[e.PlayerSkins=e.Items+x0]="PlayerSkins",e[e.General=e.PlayerSkins+oc]="General",e[e.WheelWeapons=e.General+b0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+fa]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+fa]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+fa]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(cc||{}),UE=cc.MaxConfigStrings,M0={},rc(M0,{addReplayFrame:()=>eE,createReplaySession:()=>Q5,deserializeReplay:()=>J5,serializeReplay:()=>Z5}),R0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(R0||{}),BE=1080,re=(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))(re||{}),ye=(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))(ye||{}),Th=0,Mh=1,Rh=2,Lh=3,zh=6,Nh=7,Oh=8,Ih=11,Ch=12,Ph=13,ie=(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))(ie||{}),L0=(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))(L0||{}),z0=12,N0=9,GE=Math.ceil(z0*N0/16),O0=23,I0=2,HE=Math.ceil(O0*I0/16),VE={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},C0=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(C0||{}),P0={},rc(P0,{U_ANGLE1:()=>V0,U_ANGLE2:()=>W0,U_ANGLE3:()=>K0,U_EFFECTS:()=>Y0,U_EVENT:()=>Z0,U_FRAME:()=>$0,U_MODEL:()=>F0,U_MODEL2:()=>Q0,U_MODEL3:()=>eh,U_MODEL4:()=>th,U_MOREBITS:()=>J0,U_NUMBER:()=>D0,U_ORIGIN1:()=>B0,U_ORIGIN2:()=>G0,U_ORIGIN3:()=>H0,U_REMOVE:()=>nh,U_RENDERFX:()=>q0,U_SKIN:()=>X0,U_SOLID:()=>j0,U_SOUND:()=>U0}),D0=1,F0=2,U0=4,B0=8,G0=16,H0=32,V0=64,W0=128,K0=256,$0=512,X0=1024,Y0=2048,q0=4096,j0=8192,Z0=16384,J0=32768,Q0=1,eh=2,th=4,nh=32768,Wn=.025,_a=33554432,Yi={None:0,Feet:1,Waist:2,Under:3},ih=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},rh=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&_a))return{...e,waterLevel:Yi.None};let s=Yi.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&_a){s=Yi.Waist;let c=e.origin.z+22;n.z=c,t(n)&_a&&(s=Yi.Under)}return{...e,waterLevel:s}},WE=(e,t,n,i)=>{let r={...e};r=ih(r,n),r=rh(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=j(u),f=tE({velocity:s,frametime:Wn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?rE({forward:m,right:d,cmd:t,maxSpeed:320}):iE({forward:m,right:d,cmd:t,maxSpeed:320}),p=nE({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Wn}),v=n(a,{x:a.x+p.x*Wn,y:a.y+p.y*Wn,z:a.z+p.z*Wn});return{...r,origin:v.endpos,velocity:p}},ah=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 i=0;i<ac.length;i++){let r=ac[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Kn=class Pe{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ah(Pe.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Pe.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Pe.MAX_MSGLEN&&(r=Pe.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Pe.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,p=this.outgoingReliableSequence&1;g!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Pe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let p=this.incomingReliableSequence&1;if(u===p){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,p=new Uint8Array(g);return p.set(d,0),p.set(f,d.length),p}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Pe.MAX_MSGLEN-Pe.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},Kn.MAX_MSGLEN=1400,Kn.FRAGMENT_SIZE=1024,Kn.PACKET_HEADER=10,Kn.HEADER_OVERHEAD=Kn.PACKET_HEADER+2,H=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(H||{}),I=(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))(I||{}),KE=Object.keys(I).length/2,he=(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))(he||{}),$E=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],sh=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(sh||{}),XE=1,YE=2}});var qE,yn=pn({"src/inventory/ammo.ts"(){"use strict";F(),qE={[he.Shells]:{id:he.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[he.Bullets]:{id:he.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[he.Rockets]:{id:he.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[he.Grenades]:{id:he.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[he.Cells]:{id:he.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[he.Slugs]:{id:he.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[he.MagSlugs]:{id:he.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[he.Flechettes]:{id:he.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[he.Disruptor]:{id:he.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[he.Tesla]:{id:he.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[he.Trap]:{id:he.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[he.Prox]:{id:he.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function qt(e,t){return(e&t)!==0}var oh,Dh=pn({"src/combat/damageFlags.ts"(){"use strict";oh=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(oh||{})}});function jE(e,t,n){if(e<=0||qt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Fh[n.armorType],r=qt(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function ZE(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(qt(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=j(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},l=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&l>0){let v={x:o.x/l,y:o.y/l,z:o.z/l};if(v.x*s.x+v.y*s.y+v.z*s.z<=.3)return{saved:0,remainingCells:r.cellCount}}let c=a.ctfMode??!1,u=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*u;qt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/u;qt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let g=Math.max(u,f),p=Math.max(0,r.cellCount-g);return{saved:d,remainingCells:p}}var vn,Fh,Uh=pn({"src/combat/armor.ts"(){"use strict";F(),Dh(),vn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(vn||{}),Fh={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 Bh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ke,Jt=pn({"src/inventory/playerInventory.ts"(){"use strict";yn(),F(),Uh(),ke=(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))(ke||{})}});function Gh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ch,Hh=pn({"src/combat/weapons/state.ts"(){"use strict";ch=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(ch||{})}}),Vh={};X5(Vh,{ChangeWeapon:()=>QE,NoAmmoWeaponChange:()=>ek,setInstantSwitch:()=>JE,switchToBestWeapon:()=>Wh});function JE(e){Ta=e}function QE(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Bh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,Ta){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function ek(e){e.client&&Wh(e)}function Wh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(H.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=H.BFG10K:t.ownedWeapons.has(H.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=H.RocketLauncher:t.ownedWeapons.has(H.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=H.Railgun:t.ownedWeapons.has(H.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=H.Chaingun:t.ownedWeapons.has(H.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=H.SuperShotgun:t.ownedWeapons.has(H.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=H.Machinegun:t.ownedWeapons.has(H.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=H.Shotgun:n=H.Blaster,n&&n!==t.currentWeapon&&(Bh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,Ta&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var Ta,tk=pn({"src/combat/weapons/switching.ts"(){"use strict";Jt(),yn(),Ta=!1}});F();Jt();yn();var nk={...W};var L7=Object.freeze({aiflags:0,last_sighting:nk,trail_time:0,pausetime:0});var Nc=[{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:"spawn_count",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:"last_move_time",type:"float",save:!0},{name:"damage_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}];F();F();F();F();var ik=20,rk=440,ak=940,lc=32,sk=1<<24,pa=1;F();F();function lh(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 Qt(e,t){let n=lh(e),i=lh(t),r=j5(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function ok(e){return e<=ik?"melee":e<=rk?"near":e<=ak?"mid":"far"}function Qi(e,t){let{forward:n}=j(e.angles),i=B(P(t.origin,e.origin)),r=ka(i,n);return(e.spawnflags&pa)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function wn(e,t,n,i){if((t.flags&sk)!==0)return!1;let r={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=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}F();function ck(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=rr(n)}function Kh(e){e.angles.y=_c(e.ideal_yaw)}function lk(e,t,n){e.enemy&&(e.goalentity=e.enemy,ck(e,e.enemy),Kh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function uk(e,t,n,i){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 r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){lk(e,t,n);return}let a=i?.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 dk(e,t,n,i){let r=Qt(e,t),a=ok(r);return a==="far"||t.light_level<=5||!wn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Qi(e,t):a==="mid"?Qi(e,t):!0}function mk(e,t,n,i,r){if((e.spawnflags&pa)!==0){if(!wn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Fe(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=rr(a),Kh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function hk(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&pa)===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&pa)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function fk(e){return(e.flags&lc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&lc)!==0:!!(e.enemy&&(e.enemy.flags&lc)!==0)}function Oc(e,t,n,i,r={}){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}=hk(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(fk(a))return!1;if(s){if(!mk(e,a,t,r,i))return!1}else{if(!dk(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return uk(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var uc=18;function $h(e,t){if(t===0)return{x:0,y:0,z:0};let n=ga(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ma(e,t,n){let i=$h(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ii(e,t){let n=_c(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=_c(n+a)}function _(e,t){Ma(e,e.angles.y,t)}function Ra(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=rr(n)}function L(e,t,n){Oc(e,n.targetAwareness,n,n.trace)||ii(e,t)}function N(e,t,n,i){if(!Oc(e,i.targetAwareness,i,i.trace)&&(Ra(e,e.goalentity),ii(e,n),t!==0&&Ma(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&Qt(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function se(e,t,n){t!==0&&Ma(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&ii(e,n)}function oe(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Oc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&Ra(e,e.enemy??e.goalentity),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Xh(e,e.angles.y,t,i)}function _k(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&Ra(e,t),ii(e,i),n!==0&&Ma(e,e.angles.y,n)}function ue(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&Ra(e,e.enemy),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Xh(e,e.angles.y,t,i)}function uh(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},i=t.trace(e.origin,e.mins,e.maxs,n,e,Yt);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&bh?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function dh(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},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Yt).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,Yt).fraction<1))return!0;return!1}function Xh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=$h(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,Yt).fraction===1){let v={...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&&!dh(e,i)?(e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,!1):((e.flags&3)===0&&uh(e,i),!0)}if((e.flags&3)!==0)return!1;let o={...e.origin},l={...e.origin,z:e.origin.z+uc},c=i.trace(e.origin,e.mins,e.maxs,l,e,Yt);if(c.startsolid||c.allsolid)return!1;let u={x:l.x+r.x,y:l.y+r.y,z:l.z};if(i.trace(l,e.mins,e.maxs,u,e,Yt).fraction<1)return!1;let d={x:u.x,y:u.y,z:u.z-uc},f={x:d.x,y:d.y,z:d.z-uc},g=i.trace(u,e.mins,e.maxs,d,e,Yt);if(g.startsolid||g.allsolid)return!1;let p=g.endpos;return e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,dh(e,i)?(uh(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}F();F();var gk=Nc.filter(e=>e.save||e.type==="callback"),z7=new Map(gk.map(e=>[e.name,e]));F();F();Uh();Dh();F();function vk(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function pk(e,t,n,i,r){if(qt(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=B(n),c=D(o,(t===e?1600:500)*i/s);return e.velocity=U(e.velocity,c),c}function yk(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=ZE(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=jE(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function mh(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 fe(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=vk(n,u),f=s*d,g=o*d;if(!qt(l,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let v=pk(e,n,i,g,l),[w,M,E,y,k]=yk(e,r,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(w=e.health+100,M=0,E=0),e.powerArmor&&y!==void 0&&(e.powerArmor.cellCount=y),e.regularArmor&&(e.regularArmor.armorCount=k??e.regularArmor.armorCount);let b=w;b>0&&(e.health-=b,m&&!qt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,re.temp_entity,ye.BLOOD,r,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,r,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:M,asave:E,knocked:v,killed:T,remainingCells:y,remainingArmor:k}}function Ic(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=mh(t),f=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!f(g,t))continue;let p=g.mins&&g.maxs?q5(d,U(g.origin,g.mins),U(g.origin,g.maxs)):mh(g),v=P(d,p),w=Fe(v);if(a>0&&w>a)continue;let M=i-.5*w;if(M<=0)continue;let E=g===n?M*.5:M,y=B(P(g.origin,d)),k=fe(g,t,n,y,p,y,E,E,s|1,o,l,u);m.push({target:g,result:k,appliedDamage:E})}return m}var N7=ar();F();F();F();function Yh(e,t,n,i,r,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:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&fe(u,c,c.owner,c.velocity,c.origin,m?m.normal:W,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);Ic(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,re.temp_entity,ye.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function Cc(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.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);Ic(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,re.temp_entity,ye.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,m,d)=>{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 sr(e,t,n,i,r,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:i.x*a,y:i.y*a,z:i.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,m)=>{if(c!==l.owner){if(c&&c.takedamage)fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=ye.BLASTER;s===58&&(d=ye.BLUEHYPERBLASTER),e.multicast(l.origin,1,re.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function wk(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.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){fe(l,o,o.owner,o.velocity,o.origin,c?c.normal:W,r,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,re.temp_entity,ye.WELDING_SPARKS,o.origin,W,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,re.temp_entity,ye.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,re.temp_entity,ye.WELDING_SPARKS,o.origin,W,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function Ak(e,t,n,i,r,a){sr(e,t,n,i,r,a,58)}function Sk(e,t,n,i){let r={...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,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},l=16,c=[],u=[],m={...r};try{for(let f=0;f<l;f++){let g=e.trace(m,null,null,o,t,De|Xt|gn|Ji);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&fe(g.ent,t,t.owner,s,g.endpos,W,i,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,m={...g.endpos}}let d=e.trace(r,null,null,o,t,De);e.multicast(t.origin,2,re.temp_entity,ye.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function Ek(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,zc).fraction<1||Sk(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function kk(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 i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=P(e.origin,r),s=Fe(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&fe(i,e,e.owner,e.velocity,r,W,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 qh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.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=r,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,m)=>{if(c===l.owner)return;c&&c.takedamage&&fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Ic(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,re.temp_entity,ye.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=W,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(f,g)=>kk(f,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>Ek(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}F();var O7=1/40;yn();Jt();Hh();Jt();var xk=1;Jt();Hh();Jt();yn();F();F();var bk=22;function _t(e,t,n,i,r,a){let s=ti(t.origin),o={...s,z:s.z+(t.viewheight??bk)},l=D(i,n.x),c=D(r,n.y),u=D(a,n.z),m=U(U(U(o,l),c),u),d=e.trace(o,null,null,m,t,zc);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var Tk=7,Mk=18,Rk=36,Lk=39,zk=5,Nk=28,Ok=52,Ik=57,Ck=3,Pk=23,Dk=52,Fk=61,Uk=4,Bk=21,Gk=52,Hk=61,Vk=3,Wk=18,Kk=51,$k=56,Xk=3,Yk=12,qk=34,jk=38,Zk=5,Jk=9,Qk=28,ex=32,tx=8,nx=32,ix=54,rx=58,ax=5,sx=16,ox=36,cx=39,lx=4,ux=8,dx=52,mx=55;var hx=46,fx=53;var _x=109,gx=117;var vx=1;var jt=ar();function gt(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function vt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=vx,t?(e.frame=_x-1,e.client.anim_end=gx):(e.frame=hx-1,e.client.anim_end=fx)}function jh(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},l=e.trace(n,null,null,o,t,0);l.ent&&l.ent.takedamage?fe(l.ent,t,t,W,l.endpos,l.plane?l.plane.normal:W,r,a,16,s,e.time,e.multicast):l.plane&&e.multicast(l.endpos,1,re.temp_entity,ye.GUNSHOT,l.endpos,l.plane.normal)}function gc(e,t,n,i,r,a,s,o,l,c,u,m){for(let d=0;d<s;d++){let f=U(D(r,jt.crandom()*c),D(a,jt.crandom()*u)),g=U(i,f),p={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?fe(v.ent,t,t,W,v.endpos,v.plane?v.plane.normal:W,o,l,16,m,e.time,e.multicast):v.plane&&jt.frandom()>.9&&e.multicast(v.endpos,1,re.temp_entity,ye.GUNSHOT,v.endpos,v.plane.normal)}}function px(e,t,n,i,r,a){let s={...n},o={...n},l={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,u=0,m=l;for(;u<16;){u++;let d=e.trace(o,null,null,l,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&fe(d.ent,t,t,W,d.endpos,d.plane?d.plane.normal:W,r,a,4,11,e.time,e.multicast),c=d.ent,o=d.endpos,!d.ent||d.ent===e.entities.world))break}e.multicast(s,2,re.temp_entity,ye.RAILTRAIL,s,m)}function yx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<1)return;n.ammo.counts[I.Shells]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Rh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);gc(e,t,s,i,r,a,12,4,1,500,500,2)}function wx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<2)return;n.ammo.counts[I.Shells]-=2,e.multicast(t.origin,1,re.muzzleflash,t.index,Ih),gt(t,-4,0,-4),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:l,up:c}=j({...t.angles,y:t.angles.y-5});gc(e,t,s,o,l,c,10,6,1,700,700,3);let{forward:u,right:m,up:d}=j({...t.angles,y:t.angles.y+5});gc(e,t,s,u,m,d,10,6,1,700,700,3)}function Ax(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Bullets]<1)return;n.ammo.counts[I.Bullets]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Mh),gt(t,-1,jt.crandom()*.5,0),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);jh(e,t,s,i,8,1,4)}function Sx(e,t){if(!t.client)return;let n=t.client.inventory,i=Gh(t.client.weaponStates,H.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[I.Bullets]<a&&(a=n.ammo.counts[I.Bullets]),a===0)return;n.ammo.counts[I.Bullets]-=a;let s=e.deathmatch?6:8,o=1;gt(t,-.5,jt.crandom()*(.5+a*.15),0),vt(t);let{forward:l,right:c,up:u}=j(t.angles),m=_t(e,t,{x:8,y:8,z:-8},l,c,u);for(let f=0;f<a;f++){let g=U(D(c,jt.crandom()*4),D(u,jt.crandom()*4)),p=U(l,g);jh(e,t,m,p,s,o,5)}let d=Lh+a-1;e.multicast(t.origin,1,re.muzzleflash,t.index,d)}function Ex(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Slugs]<1)return;n.ammo.counts[I.Slugs]--,e.multicast(t.origin,1,re.muzzleflash,t.index,zh),gt(t,-3,0,-3),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,l=e.deathmatch?200:225;px(e,t,s,i,o,l)}function kx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Cells]<1)return;n.ammo.counts[I.Cells]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Ph),gt(t,-.5,0,0),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;sr(e.entities,t,s,i,o,1e3,10)}function xx(e,t){if(!t.client)return;e.multicast(t.origin,1,re.muzzleflash,t.index,Th),gt(t,-.5,0,0),vt(t);let{forward:n,right:i,up:r}=j(t.angles),a=_t(e,t,{x:8,y:8,z:-8},n,i,r);sr(e.entities,t,a,n,15,1500,1)}function bx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Rockets]<1)return;n.ammo.counts[I.Rockets]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Nh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Yh(e.entities,t,s,i,o,120,650)}function Tx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Grenades]<1)return;n.ammo.counts[I.Grenades]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Oh),gt(t,-2,0,-2),vt(t);let{forward:i,right:r,up:a}=j(t.angles),s=_t(e,t,{x:8,y:8,z:-8},i,r,a);Cc(e.entities,t,s,i,120,600)}function Mx(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[I.Cells]<50)return;n.ammo.counts[I.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,re.muzzleflash,t.index,Ch),gt(t,-5,0,-2),vt(t);let{forward:s,right:o,up:l}=j(t.angles),c=_t(e,t,{x:8,y:8,z:-8},s,o,l),u=e.deathmatch?200:500;qh(e.entities,t,c,s,u,400,200)}}function Wt(e){let t=.1;return e.client?.inventory.powerups.has(ie.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(ie.QuadFire)&&(t*=.25),t}function zt(e,t,n,i,r,a,s,o,l){if(!e.client)return;let c=e.client,u=l.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=u&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>u)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=u+Wt(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+Wt(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=u+Wt(e);return}Promise.resolve().then(()=>(tk(),Vh)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=u+Wt(e),a){for(let m of a)if(c.gun_frame===m&&jt.frandom()<.9375)return}return}c.gun_frame=n+1,c.weapon_think_time=u+Wt(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=u+Wt(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+Wt(e);return}}}function Pc(e,t,n,i,r,a,s,o){if(!e.client)return;let l=e.client,c=t+1;l.weaponstate===3?(l.gun_frame===n||l.gun_frame===i?l.gun_frame=c:l.gun_frame++,s&&s(e),l.buttons&1||(l.gun_frame=i+1,l.weaponstate=0),l.weapon_think_time=o.timeSeconds+Wt(e)):zt(e,t,n,i,r,a,null,s,o)}var Rx=[38,43,51,61];function Lx(e,t){let n=Gh(e.client.weaponStates,H.Chaingun);!(e.client.buttons&xk)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Pc(e,Uk,Bk,Gk,Hk,Rx,i=>Sx(t.game,i),t)}var zx=[22,28,34],Nx=[8];function Ox(e,t){zt(e,Tk,Mk,Rk,Lk,zx,Nx,n=>yx(t.game,n),t)}var Ix=[29,42,57],Cx=[22,28];function Px(e,t){zt(e,zk,Nk,Ok,Ik,Ix,Cx,n=>wx(t.game,n),t)}var Dx=[23,45],Fx=[4,5,30,31];function Ux(e,t){zt(e,Ck,Pk,Dk,Fk,Dx,Fx,n=>Ax(t.game,n),t)}var Bx=[25,33],Gx=[4];function Hx(e,t){zt(e,Xk,Yk,qk,jk,Bx,Gx,n=>bx(t.game,n),t)}function Vx(e,t){Pc(e,Zk,Jk,Qk,ex,null,n=>kx(t.game,n),t)}var Wx=[56],Kx=[4];function $x(e,t){zt(e,Vk,Wk,Kk,$k,Wx,Kx,n=>Ex(t.game,n),t)}var Xx=[39,45,50,54],Yx=[9,22];function qx(e,t){zt(e,tx,nx,ix,rx,Xx,Yx,n=>Mx(t.game,n),t)}var jx=[34,51,59],Zx=[6];function Jx(e,t){zt(e,ax,sx,ox,cx,jx,Zx,n=>Tx(t.game,n),t)}var Qx=[19,32],eb=[5];function tb(e,t){zt(e,lx,ux,dx,mx,Qx,eb,n=>xx(t.game,n),t)}F();function nb(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}var ib=24;function rb(e,t){if(!e.inUse||!e.takedamage||e===t.self)return!1;let n=(c,u,m)=>({x:Math.max(u.x,Math.min(c.x,m.x)),y:Math.max(u.y,Math.min(c.y,m.y)),z:Math.max(u.z,Math.min(c.z,m.z))}),i=n(t.start,{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}),r=n(i,{x:t.self.origin.x+t.self.mins.x,y:t.self.origin.y+t.self.mins.y,z:t.self.origin.z+t.self.mins.z},{x:t.self.origin.x+t.self.maxs.x,y:t.self.origin.y+t.self.maxs.y,z:t.self.origin.z+t.self.maxs.z}),a=P(i,r),s=Fe(a);if(s>t.reach)return!1;let o={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},l=B(P(o,t.start));return!(ka(l,t.aim)<.7&&s>1)}function ab(e,t,n,i,r,a,s,o){let l={x:r,y:r,z:r},c={x:t.origin.x+t.mins.x-r,y:t.origin.y+t.mins.y-r,z:t.origin.z+t.mins.z-r},u={x:t.origin.x+t.maxs.x+r,y:t.origin.y+t.maxs.y+r,z:t.origin.z+t.maxs.z+r},m=e.entities.findInBox(c,u),d={self:t,start:n,aim:i,reach:r},f=!1,g=(p,v,w)=>({x:Math.max(v.x,Math.min(p.x,w.x)),y:Math.max(v.y,Math.min(p.y,w.y)),z:Math.max(v.z,Math.min(p.z,w.z))});for(let p of m){if(!rb(p,d))continue;let v={x:p.origin.x+p.mins.x,y:p.origin.y+p.mins.y,z:p.origin.z+p.mins.z},w={x:p.origin.x+p.maxs.x,y:p.origin.y+p.maxs.y,z:p.origin.z+p.maxs.z},M=g(n,v,w);fe(p,t,t,i,M,D(i,-1),a,s/2,8,o,e.time,e.multicast),f=!0}return f}function sb(e,t){let n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a=t.client?t.client.v_angle:t.angles,s=j(a||{x:0,y:0,z:0}),o={x:8,y:8,z:-4},l={x:t.origin.x+t.viewheight*0+s.forward.x*o.x+s.right.x*o.y+s.up.x*o.z,y:t.origin.y+t.viewheight*0+s.forward.y*o.x+s.right.y*o.y+s.up.y*o.z,z:t.origin.z+t.viewheight*1+s.forward.z*o.x+s.right.z*o.y+s.up.z*o.z};e.multicast(l,1,re.temp_entity,ye.CHAINFIST_SMOKE,l)}function ob(e,t,n,i,r,a){let s=7;e.deathmatch&&(s=15),t.client&&t.client.quad_time&&t.client.quad_time>e.time&&(s*=4);let o=ab(e,t,r,a,ib,s,100,41);nb(t,-.5,0,0)}function cb(e,t){let n=t.game;if(Pc(e,4,32,57,60,[],a=>{let s=a.client?a.client.v_angle:a.angles,l=j(s||{x:0,y:0,z:0}).forward,c={x:a.origin.x,y:a.origin.y,z:a.origin.z+(a.viewheight||0)},u=a.client?a.client.inventory:{ammo:{counts:[]}};if(ob(n,a,u,{},c,l),a.client){let d=a.client;d.buttons&1?d.gun_frame===12?d.gun_frame=14:d.gun_frame===22?d.gun_frame=24:d.gun_frame>=32&&(d.gun_frame=7):(d.gun_frame===13||d.gun_frame===23||d.gun_frame>=32)&&(d.gun_frame=33)}},t),e.client){let a=e.client.gun_frame;(a===42||a===51)&&Math.random()<.125&&Math.random()<.4&&sb(n,e)}}var I7={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:H.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:tb},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:H.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Ox},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:H.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Px},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:H.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ux},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:H.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Lx},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:H.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:H.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Jx},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:H.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:Hx},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:H.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Vx},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:H.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:$x},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:H.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:qx},weapon_chainfist:{type:"weapon",id:"weapon_chainfist",name:"Chainfist",weaponId:H.ChainFist,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.1,think:cb},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:H.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:H.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:H.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:H.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:H.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};yn();yn();F();F();var $e=ar(),$t=0;function Zh(e){let t=100*$e.crandom(),n=100*$e.crandom(),i=200+100*$e.frandom();return e<50?(t*=.7,n*=.7,i*=.7):(t*=1.2,n*=1.2,i*=1.2),{x:t,y:n,z:i}}function Jh(e){let{x:t,y:n,z:i}=e.velocity;t<-300?t=-300:t>300&&(t=300),n<-300?n=-300:n>300&&(n=300),i<200?i=200:i>500&&(i=500),e.velocity={x:t,y:n,z:i}}function Qh(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function fn(e,t,n,i,r=$t){let a=e.spawn();a.classname="gib",a.origin={x:t.x+$e.crandom()*20,y:t.y+$e.crandom()*20,z:t.z+$e.crandom()*20};let s=i||"models/objects/gibs/sm_meat/tris.md2";a.modelindex=e.modelIndex(s),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},a.solid=0,a.takedamage=!0,a.die=(c,u,m,d,f,g)=>{e.free(c)},a.clipmask=1;let o=1;r===$t?(a.movetype=7,a.touch=(c,u,m,d)=>Qh(c,u,m,d,e),o=.5):(a.movetype=9,o=1);let l=Zh(n);return a.velocity={x:l.x*o,y:l.y*o,z:l.z*o},Jh(a),a.avelocity={x:$e.frandom()*600,y:$e.frandom()*600,z:$e.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+$e.frandom()*10),e.finalizeSpawn(a),a}function lb(e,t,n){let i=e.spawn(),r;$e.irandom(2)===1?(r="models/objects/gibs/head2/tris.md2",i.skin=1):(r="models/objects/gibs/skull/tris.md2",i.skin=0),i.frame=0,i.modelindex=e.modelIndex(r),i.mins={x:-16,y:-16,z:0},i.maxs={x:16,y:16,z:16},i.origin={x:t.x,y:t.y,z:t.z+32},i.solid=0,i.takedamage=!0,i.die=(o,l,c,u,m,d)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,l,c,u)=>Qh(o,l,c,u,e);let s=Zh(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},Jh(i),i.avelocity={x:0,y:$e.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+$e.frandom()*10),e.finalizeSpawn(i),i}function ef(e,t,n){if(typeof n=="number"){let i=n;fn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",$t),fn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",$t),fn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",$t),fn(e,t,i,"models/objects/gibs/sm_meat/tris.md2",$t),fn(e,t,i,"models/objects/gibs/meat/tris.md2",$t),fn(e,t,i,"models/objects/gibs/bone/tris.md2",$t),lb(e,t,i)}else{let i=n;for(let r of i)for(let a=0;a<r.count;a++)fn(e,t,0,r.model,r.flags)}}F();function ub(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 i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function db(e,t){ub(e,t),e.nextthink=t.timeSeconds+.1}var La=.1,Zi=80;var tf=ar();function mb(){return tf.frandom()}function nf(e,t){return Math.floor(tf.frandom()*(t-e+1)+e)}function jn(e,t,n){L(e,La,n)}function et(e,t,n){N(e,t,La,n)}function $n(e,t,n){oe(e,t,La,n)}function pe(e,t,n){ue(e,t,La,n)}function q(e,t,n){_(e,t)}var er={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 rt(e,t){t.sound(e,2,er.footstep,1,1,0)}function ya(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function hb(e,t){}var Dc,rf,fb,af,_b,gb,vb,pb,yb,sf,wb;function Ab(e,t){ya(e,Dc)}function Sb(e,t){e.monsterinfo.aiflags&1||e.enemy||mb()>.15||(ya(e,rf),t.sound(e,1,er.idle,1,2,0))}var Eb=[{ai:jn,dist:0,think:Sb},{ai:jn,dist:0},{ai:jn,dist:0},{ai:jn,dist:0},{ai:jn,dist:0}];Dc={firstframe:0,lastframe:4,frames:Eb,endfunc:null};var kb=Array.from({length:20},()=>({ai:jn,dist:0}));rf={firstframe:5,lastframe:24,frames:kb,endfunc:Ab};var xb=[{ai:et,dist:9.1},{ai:et,dist:6.3},{ai:et,dist:4.9},{ai:et,dist:6.7,think:rt},{ai:et,dist:6},{ai:et,dist:8.2},{ai:et,dist:7.2},{ai:et,dist:6.1},{ai:et,dist:4.9},{ai:et,dist:4.7,think:rt},{ai:et,dist:4.7}];fb={firstframe:25,lastframe:35,frames:xb,endfunc:null};var bb=[{ai:$n,dist:21},{ai:$n,dist:11,think:rt},{ai:$n,dist:21},{ai:$n,dist:25,think:hb},{ai:$n,dist:18,think:rt},{ai:$n,dist:19}];af={firstframe:36,lastframe:41,frames:bb,endfunc:null};function or(e,t){e.monsterinfo.aiflags&1?ya(e,Dc):ya(e,af)}function of(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=j(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*Zi,y:a.y+s.y*Zi,z:a.z+s.z*Zi},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function Tb(e,t){of(e,{x:Zi,y:0,z:-24},nf(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function cf(e,t){t.sound(e,1,er.punch,1,1,0)}var Mb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:cf},{ai:pe,dist:0,think:Tb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];_b={firstframe:67,lastframe:74,frames:Mb,endfunc:or};function Rb(e,t){of(e,{x:Zi,y:0,z:-4},nf(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Lb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:rt},{ai:pe,dist:0},{ai:pe,dist:0,think:cf},{ai:pe,dist:0},{ai:pe,dist:0,think:Rb},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];gb={firstframe:75,lastframe:86,frames:Lb,endfunc:or};function zb(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);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/i);if(c<=0)continue;let u=Math.max(1,n*c*c),m=r*c*c,d=B(P(o.origin,e.origin));fe(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Fc(e,t){t.sound(e,1,er.thud,1,1,0),t.sound(e,2,er.explod,.75,1,0);let{forward:n,right:i}=j(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,re.temp_entity,ye.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},zb(e,e,8,165,300,t)}function Nb(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Fc(e,r))}function Uc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Ob(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)*1.95,a=B({x:n.x,y:n.y,z:0}),s=ni(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*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,m)=>{Nb(l,c,u,m,t),l.groundentity&&(l.frame=104,Fc(l,t),l.touch=void 0)},Uc(e,t)}function Ib(e,t){if(Uc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Fc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Cb=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:q,dist:0,think:Ob},{ai:q,dist:0,think:Uc},{ai:q,dist:0,think:Ib},{ai:q,dist:0,think:rt},{ai:q,dist:0},{ai:q,dist:0,think:rt},{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},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:rt}];vb={firstframe:87,lastframe:109,frames:Cb,endfunc:or};var Pb=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];pb={firstframe:149,lastframe:152,frames:Pb,endfunc:or};var Db=Array.from({length:20},(e,t)=>({ai:q,dist:0,think:t%5===4?rt:void 0}));yb={firstframe:153,lastframe:172,frames:Db,endfunc:or};function lf(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=sf.lastframe,e.nextthink=-1,e.deadflag=2}var Fb=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:rt},{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}];sf={firstframe:173,lastframe:185,frames:Fb,endfunc:lf};var Ub=[{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:rt},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0}];wb={firstframe:186,lastframe:193,frames:Ub,endfunc:lf};F();function hh(){return 2*Math.random()-1}function wa(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let f=ni(n),{right:g,up:p}=j(f),v=hh()*a,w=hh()*s;u={x:n.x+g.x*v+p.x*w,y:n.y+g.y*v+p.y*w,z:n.z+g.z*v+p.z*w},u=B(u)}let m=U(t,D(u,8192)),d=l.trace(t,m,W,W,e,Lt);!d.ent||d.fraction===1||fe(d.ent,e,e,u,d.endpos,d.plane?.normal||W,i,r,18,c,l.timeSeconds)}var Zt=wa;function Bb(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Zt(e,t,n,i,r,a,s,l,c,u)}function pt(e,t,n,i,r,a,s,o,l=1){sr(o,e,t,n,i,r,l)}function Gb(e,t,n,i,r,a,s,o){Ak(o,e,t,n,i,r)}function Hb(e,t,n,i,r,a,s,o){wk(o,e,t,n,i,r)}function Vb(e,t,n,i,r,a,s){Cc(s,e,t,n,i,r)}function cr(e,t,n,i,r,a,s){Yh(s,e,t,n,i,120,r)}function uf(e,t,n,i,r,a,s,o,l){qh(l,e,t,n,i,r,s)}function df(e,t,n,i,r,a,s){let o=U(t,D(n,8192)),l=s.trace(t,o,W,W,e,Lt);s.multicast(t,2,re.temp_entity,ye.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&fe(l.ent,e,e,n,l.endpos,W,i,r,6,11,s.timeSeconds)}function lr(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=j(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=U(s,D(a,o)),c=r.trace(s,l,W,W,e,Lt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=B(P(c.endpos,s));return fe(c.ent,e,e,u,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds),!0}return!1}function Wb(e,t,n,i,r,a,s,o){cr(e,t,n,i,r,a,o)}function fh(e,t){let n={...e.origin},i=U(n,D(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,W,W,e,De|Xt|gn|Ji);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&fe(c.ent,e,e.owner,e.movedir,c.endpos,W,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,re.temp_entity,ye.LASER_SPARKS,10,c.endpos,c.plane?.normal||W,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,r={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function Kb(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function vc(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.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?Kb(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),fh(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),fh(a,r)}F();var Bc=.1,$b={x:0,y:30,z:-15},Xb={x:0,y:15,z:0},Yb={x:0,y:-15,z:0},qb={x:0,y:-30,z:-15},jb={x:30,y:20,z:0},Zb={x:30,y:-20,z:0};function Jb(e,t,n){L(e,Bc,n)}function Qb(e,t,n){N(e,t,Bc,n)}function za(e,t,n){ue(e,t,Bc,n)}function Gc(e,t,n){_(e,t)}var Hc,mf,hf,e6,ff,_f,t6,n6,i6,gf;function r6(e){e.monsterinfo.current_move=Hc}function a6(e){e.monsterinfo.current_move=mf}function ur(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hf:e.monsterinfo.current_move=Hc}function vf(e){e.monsterinfo.current_move=ff}function s6(e){e.enemy&&Qi(e,e.enemy)&&Math.random()<=.7?vf(e):e.monsterinfo.current_move=_f}function pc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function o6(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=pc(e,jb),i=B(P(e.enemy.origin,n));Zt(e,n,i,6,4,.1,.05,0,t,4);let r=pc(e,Zb),a=B(P(e.enemy.origin,r));Zt(e,r,a,6,4,.1,.05,0,t,4)}function c6(e,t){if(!e.enemy)return;let n=[$b,Xb,Yb,qb],i=n[Math.floor(Math.random()*n.length)],r=pc(e,i),a=B(P(e.enemy.origin,r));cr(e,r,a,50,500,0,t)}function l6(e){e.monsterinfo.nextframe=gf.lastframe,e.nextthink=-1}var pf=Array.from({length:20},()=>({ai:Qb,dist:10}));mf={firstframe:0,lastframe:19,frames:pf,endfunc:a6};hf={firstframe:0,lastframe:19,frames:pf,endfunc:ur};var u6=Array.from({length:21},()=>({ai:Jb,dist:0}));Hc={firstframe:29,lastframe:49,frames:u6,endfunc:r6};var d6=Array.from({length:9},(e,t)=>({ai:za,dist:2,think:t===8?vf:null}));e6={firstframe:50,lastframe:58,frames:d6,endfunc:null};var m6=Array.from({length:6},()=>({ai:za,dist:2,think:o6}));ff={firstframe:59,lastframe:64,frames:m6,endfunc:s6};var h6=Array.from({length:4},()=>({ai:za,dist:2}));_f={firstframe:65,lastframe:68,frames:h6,endfunc:ur};var f6=Array.from({length:21},(e,t)=>({ai:za,dist:2,think:t===12?c6:null}));t6={firstframe:69,lastframe:89,frames:f6,endfunc:ur};var _6=Array.from({length:18},()=>({ai:Gc,dist:0}));n6={firstframe:90,lastframe:107,frames:_6,endfunc:ur};var g6=Array.from({length:4},()=>({ai:Gc,dist:0}));i6={firstframe:108,lastframe:111,frames:g6,endfunc:ur};var v6=Array.from({length:49},()=>({ai:Gc,dist:0}));gf={firstframe:112,lastframe:160,frames:v6,endfunc:l6};F();var Na=.1,Vc=80,Oa=Math.random;function yf(e,t,n){L(e,Na,n)}function tt(e,t,n){N(e,t,Na,n)}function nt(e,t,n){oe(e,t,Na,n)}function C(e,t,n){ue(e,t,Na,n)}function X(e,t,n){_(e,t)}var Wc,p6,y6,wf,Af,w6,A6,S6,E6,k6,x6,b6,T6,M6;function Sf(e){e.monsterinfo.current_move=Wc}function en(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Wc:e.monsterinfo.current_move=wf}function R6(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function L6(e,t){let n={x:Vc,y:e.maxs.x,z:8};lr(e,n,15+Math.floor(Oa()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function z6(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function N6(e,t){let n={x:Vc,y:e.mins.x,z:8};lr(e,n,15+Math.floor(Oa()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Ef(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function kf(e,t){lr(e,{x:Vc,y:0,z:8},10+Math.floor(Oa()*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 xf(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Af)}function _h(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,re.temp_entity,ye.PARASITE_ATTACK,e,i,r);let s=P(i,r);fe(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=j(e.angles).forward;e.enemy.velocity=D(o,-1200)}var gh=[{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}],vh=[{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 O6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=gh.length)&&(s=0);let o=gh[s],l=U(n.origin,D(r,o.x));l=U(l,D(i,o.y)),l=U(l,D(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function I6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s=n.frame-0;(s<0||s>=vh.length)&&(s=0);let o=vh[s],l=U(n.origin,D(r,o.x));l=U(l,D(i,o.y)),l=U(l,D(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function ht(e,t){vc(e,1,!1,O6,t),vc(e,1,!0,I6,t)}function C6(e){Oa()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function P6(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function D6(e){}function F6(e){e.monsterinfo.aiflags&=-17}var U6=Array.from({length:30},()=>({ai:yf,dist:0}));Wc={firstframe:162,lastframe:191,frames:U6,endfunc:Sf};var B6=Array.from({length:30},()=>({ai:yf,dist:0}));p6={firstframe:192,lastframe:221,frames:B6,endfunc:Sf};var G6=[{ai:tt,dist:7},{ai:tt,dist:2},{ai:tt,dist:3},{ai:tt,dist:3},{ai:tt,dist:1},{ai:tt,dist:0},{ai:tt,dist:0},{ai:tt,dist:9},{ai:tt,dist:-4},{ai:tt,dist:-1},{ai:tt,dist:2}];y6={firstframe:0,lastframe:10,frames:G6,endfunc:null};var H6=[{ai:nt,dist:9},{ai:nt,dist:2},{ai:nt,dist:3},{ai:nt,dist:3},{ai:nt,dist:1},{ai:nt,dist:0},{ai:nt,dist:0},{ai:nt,dist:10},{ai:nt,dist:-4},{ai:nt,dist:-1},{ai:nt,dist:2}];wf={firstframe:0,lastframe:10,frames:H6,endfunc:null};var V6=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:R6},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:L6},{ai:C,dist:0},{ai:C,dist:6,think:z6},{ai:C,dist:1},{ai:C,dist:2,think:N6},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];Af={firstframe:53,lastframe:70,frames:V6,endfunc:en};var W6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:Ef},{ai:C,dist:0},{ai:C,dist:13,think:kf},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:xf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];w6={firstframe:71,lastframe:87,frames:W6,endfunc:en};var K6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:Ef},{ai:C,dist:0,think:_h},{ai:C,dist:13},{ai:C,dist:0,think:kf},{ai:C,dist:2},{ai:C,dist:0,think:_h},{ai:C,dist:-9,think:xf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];A6={firstframe:71,lastframe:87,frames:K6,endfunc:en};var $6=[{ai:C,dist:9,think:ht},{ai:C,dist:2,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:3,think:ht},{ai:C,dist:1,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:0,think:ht},{ai:C,dist:10,think:ht},{ai:C,dist:-4,think:ht},{ai:C,dist:-1,think:ht},{ai:C,dist:2,think:C6}];S6={firstframe:0,lastframe:10,frames:$6,endfunc:en};var X6=[{ai:X,dist:-6},{ai:X,dist:-2},{ai:X,dist:-6},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:0},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:7},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:-1}];E6={firstframe:88,lastframe:108,frames:X6,endfunc:en};var Y6=[{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:3},{ai:X,dist:1},{ai:X,dist:-2}];k6={firstframe:109,lastframe:116,frames:Y6,endfunc:en};var q6=[{ai:X,dist:-2},{ai:X,dist:2},{ai:X,dist:1},{ai:X,dist:3},{ai:X,dist:0},{ai:X,dist:-4}];x6={firstframe:117,lastframe:122,frames:q6,endfunc:en};var j6=Array.from({length:18},()=>({ai:X,dist:0}));b6={firstframe:123,lastframe:140,frames:j6,endfunc:bf};var Z6=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:9},{ai:X,dist:0}];T6={firstframe:141,lastframe:145,frames:Z6,endfunc:bf};var J6=[{ai:X,dist:0},{ai:X,dist:-2,think:P6},{ai:X,dist:17,think:D6},{ai:X,dist:-3},{ai:X,dist:-1,think:F6},{ai:X,dist:-5},{ai:X,dist:-6},{ai:X,dist:-6}];M6={firstframe:146,lastframe:153,frames:J6,endfunc:en};function bf(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}F();var Ia=.1,Q6=80,ri=Math.random;function Tf(e,t,n){L(e,Ia,n)}function e3(e,t,n){N(e,t,Ia,n)}function t3(e,t,n){oe(e,t,Ia,n)}function Y(e,t,n){ue(e,t,Ia,n)}function ai(e,t,n){_(e,t)}var Kc,Mf,Rf,n3,$c,yc,i3,Xc,Lf,r3,a3,s3,o3,c3,l3,zf;function Nf(e){e.monsterinfo.current_move=Kc}function u3(e){e.monsterinfo.current_move=Mf}function An(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Kc;return}e.monsterinfo.current_move=Rf}function d3(e){e.monsterinfo.aiflags&4||e.enemy||ri()<=.3&&(e.monsterinfo.current_move=zf)}function m3(e,t){ri()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function h3(e,t){let n={x:Q6,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),lr(e,n,10+Math.floor(ri()*6),100,t)}function f3(e,t){let{forward:n,right:i}=j(e.angles),r={x:0,y:20,z:40},a=U(e.origin,D(n,r.x)),s=D(i,r.y),o=U(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=W;if(u&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=P(m,l);!u&&e.enemy&&(ri()<.33||l.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-l.z});let f=B(d);e.skin>1?Wb(e,l,f,50,c,0,.075,t):cr(e,l,f,50,c,0,t)}function _3(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=ni(n).y}}function g3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function v3(e){e.monsterinfo.current_move=$c}function p3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=yc;return}if(e.enemy&&e.enemy.health>0&&ri()<=.6){e.monsterinfo.current_move=$c;return}e.monsterinfo.current_move=yc}function y3(e){if(e.enemy&&e.enemy.health>0&&ri()<=.9){e.monsterinfo.current_move=Xc;return}e.monsterinfo.current_move=Lf}function w3(e){e.monsterinfo.current_move=Xc}var A3=Array.from({length:30},(e,t)=>({ai:Tf,dist:0,think:t===8?(n,i)=>m3(n,i):null}));zf={firstframe:201,lastframe:230,frames:A3,endfunc:Nf};var S3=Array.from({length:30},(e,t)=>({ai:Tf,dist:0,think:t===29?d3:null}));Kc={firstframe:101,lastframe:130,frames:S3,endfunc:Nf};var E3=Array.from({length:10},()=>({ai:e3,dist:6}));Mf={firstframe:171,lastframe:180,frames:E3,endfunc:u3};var k3=Array.from({length:10},()=>({ai:t3,dist:12}));Rf={firstframe:171,lastframe:180,frames:k3,endfunc:An};var x3=Array.from({length:5},()=>({ai,dist:0}));r3={firstframe:90,lastframe:94,frames:x3,endfunc:An};var b3=Array.from({length:5},()=>({ai,dist:0}));a3={firstframe:95,lastframe:99,frames:b3,endfunc:An};var T3=Array.from({length:21},()=>({ai,dist:0}));s3={firstframe:100,lastframe:120,frames:T3,endfunc:An};var M3=Array.from({length:12},()=>({ai,dist:0}));o3={firstframe:48,lastframe:59,frames:M3,endfunc:Of};var R3=Array.from({length:23},()=>({ai,dist:0}));c3={firstframe:60,lastframe:82,frames:R3,endfunc:Of};function Of(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var L3=[{ai:Y,dist:0,think:_3},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:4},{ai:Y,dist:0},{ai:Y,dist:-3},{ai:Y,dist:3},{ai:Y,dist:5},{ai:Y,dist:7},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:v3}];n3={firstframe:0,lastframe:12,frames:L3,endfunc:null};var z3=[{ai:Y,dist:19,think:f3},{ai:Y,dist:-6},{ai:Y,dist:-5},{ai:Y,dist:-2},{ai:Y,dist:-7},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:10,think:g3},{ai:Y,dist:4},{ai:Y,dist:5},{ai:Y,dist:6},{ai:Y,dist:6},{ai:Y,dist:4},{ai:Y,dist:3,think:p3}];$c={firstframe:13,lastframe:26,frames:z3,endfunc:null};var N3=[{ai:Y,dist:-3},{ai:Y,dist:0},{ai:Y,dist:-6},{ai:Y,dist:-4},{ai:Y,dist:-2}];yc={firstframe:27,lastframe:31,frames:N3,endfunc:An};var O3=[{ai:Y,dist:1},{ai:Y,dist:8},{ai:Y,dist:3}];i3={firstframe:32,lastframe:34,frames:O3,endfunc:w3};var I3=[{ai:Y,dist:1},{ai:Y,dist:7,think:h3},{ai:Y,dist:-7},{ai:Y,dist:1},{ai:Y,dist:-1},{ai:Y,dist:1},{ai:Y,dist:0},{ai:Y,dist:1},{ai:Y,dist:-2,think:y3}];Xc={firstframe:35,lastframe:43,frames:I3,endfunc:null};var C3=[{ai:Y,dist:-6},{ai:Y,dist:-1},{ai:Y,dist:-6},{ai:Y,dist:0}];Lf={firstframe:44,lastframe:47,frames:C3,endfunc:An};var P3=Array.from({length:7},()=>({ai,dist:0}));l3={firstframe:83,lastframe:89,frames:P3,endfunc:An};var Ca=.1,D3=80,F3=24;function U3(e,t,n){L(e,Ca,n)}function B3(e,t,n){N(e,t,Ca,n)}function If(e,t,n){oe(e,t,Ca,n)}function Se(e,t,n){ue(e,t,Ca,n)}function Yc(e,t,n){_(e,t)}var G3,H3,Cf,Pf,V3,W3,K3,$3;function X3(e){e.monsterinfo.current_move=Pf}function qc(e){e.monsterinfo.current_move=Cf}function ph(e,t){lr(e,{x:D3,y:0,z:0},5,0,t)}function Y3(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var q3=[{ai:U3,dist:0}];G3={firstframe:41,lastframe:41,frames:q3,endfunc:null};var j3=Array.from({length:24},()=>({ai:If,dist:F3}));Pf={firstframe:70,lastframe:93,frames:j3,endfunc:null};var Z3=Array.from({length:6},()=>({ai:If,dist:8}));Cf={firstframe:65,lastframe:70,frames:Z3,endfunc:X3};var J3=Array.from({length:24},()=>({ai:B3,dist:4}));H3={firstframe:41,lastframe:64,frames:J3,endfunc:null};var Q3=Array.from({length:5},()=>({ai:Yc,dist:0}));W3={firstframe:99,lastframe:103,frames:Q3,endfunc:qc};var e8=Array.from({length:5},()=>({ai:Yc,dist:0}));K3={firstframe:94,lastframe:98,frames:e8,endfunc:qc};var t8=[{ai:Se,dist:0,think:Y3},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:ph},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:ph},{ai:Se,dist:0}];V3={firstframe:0,lastframe:19,frames:t8,endfunc:qc};function n8(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var i8=Array.from({length:56},()=>({ai:Yc,dist:0}));$3={firstframe:104,lastframe:159,frames:i8,endfunc:n8};F();var Pa=.1;function r8(e,t,n){L(e,Pa,n)}function a8(e,t,n){N(e,t,Pa,n)}function s8(e,t,n){oe(e,t,Pa,n)}function o8(e,t,n){ue(e,t,Pa,n)}function Df(e,t,n){_(e,t)}var jc,Ff,Uf,c8,l8,Bf;function u8(e){e.monsterinfo.current_move=jc}function d8(e){e.monsterinfo.current_move=Ff}function Zc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Uf:e.monsterinfo.current_move=jc}function m8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function h8(e){e.monsterinfo.nextframe=Bf.lastframe,e.nextthink=-1}var f8=Array.from({length:46},()=>({ai:r8,dist:0}));jc={firstframe:0,lastframe:45,frames:f8,endfunc:u8};var _8=Array.from({length:46},()=>({ai:a8,dist:5}));Ff={firstframe:0,lastframe:45,frames:_8,endfunc:d8};var g8=Array.from({length:46},()=>({ai:s8,dist:10}));Uf={firstframe:0,lastframe:45,frames:g8,endfunc:Zc};var v8=Array.from({length:20},(e,t)=>({ai:o8,dist:0,think:t===10?m8:null}));c8={firstframe:46,lastframe:65,frames:v8,endfunc:Zc};var p8=Array.from({length:6},()=>({ai:Df,dist:0}));l8={firstframe:66,lastframe:71,frames:p8,endfunc:Zc};var y8=Array.from({length:10},()=>({ai:Df,dist:0}));Bf={firstframe:84,lastframe:93,frames:y8,endfunc:h8};F();var Da=.1;function w8(e,t,n){L(e,Da,n)}function A8(e,t,n){N(e,t,Da,n)}function S8(e,t,n){oe(e,t,Da,n)}function E8(e,t,n){ue(e,t,Da,n)}function Gf(e,t,n){_(e,t)}var Jc,Hf,Vf,k8,x8,Wf;function b8(e){e.monsterinfo.current_move=Jc}function T8(e){e.monsterinfo.current_move=Hf}function Qc(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vf:e.monsterinfo.current_move=Jc}function M8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function R8(e,t){if(!e.enemy)return;let n=5+Math.random()*5;Qt(e,e.enemy)<=80&&Qi(e,e.enemy)&&fe(e.enemy,e,e,B(P(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function L8(e){e.monsterinfo.nextframe=Wf.lastframe,e.nextthink=-1}var z8=Array.from({length:46},()=>({ai:w8,dist:0}));Jc={firstframe:0,lastframe:45,frames:z8,endfunc:b8};var N8=Array.from({length:46},()=>({ai:A8,dist:5}));Hf={firstframe:0,lastframe:45,frames:N8,endfunc:T8};var O8=Array.from({length:46},()=>({ai:S8,dist:10}));Vf={firstframe:0,lastframe:45,frames:O8,endfunc:Qc};var I8=Array.from({length:20},(e,t)=>({ai:E8,dist:0,think:t===10?M8:t===12?R8:null}));k8={firstframe:46,lastframe:65,frames:I8,endfunc:Qc};var C8=Array.from({length:6},()=>({ai:Gf,dist:0}));x8={firstframe:66,lastframe:71,frames:C8,endfunc:Qc};var P8=Array.from({length:10},()=>({ai:Gf,dist:0}));Wf={firstframe:84,lastframe:93,frames:P8,endfunc:L8};F();var Fa=.1;function D8(e,t,n){L(e,Fa,n)}function F8(e,t,n){N(e,t,Fa,n)}function U8(e,t,n){oe(e,t,Fa,n)}function Kf(e,t,n){ue(e,t,Fa,n)}function $f(e,t,n){_(e,t)}var el,Xf,Yf,B8,G8,H8,qf;function V8(e){e.monsterinfo.current_move=el}function W8(e){e.monsterinfo.current_move=Xf}function Ua(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Yf:e.monsterinfo.current_move=el}function K8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function $8(e,t){if(!e.enemy||!Qi(e,e.enemy))return;let n=Qt(e,e.enemy);if(K8(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,i));fe(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function X8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,n));df(e,n,i,50,100,0,t)}function Y8(e){e.monsterinfo.nextframe=qf.lastframe,e.nextthink=-1}var q8=Array.from({length:30},()=>({ai:D8,dist:0}));el={firstframe:0,lastframe:29,frames:q8,endfunc:V8};var j8=Array.from({length:40},()=>({ai:F8,dist:3}));Xf={firstframe:30,lastframe:69,frames:j8,endfunc:W8};var Z8=Array.from({length:20},()=>({ai:U8,dist:12}));Yf={firstframe:70,lastframe:89,frames:Z8,endfunc:Ua};var J8=Array.from({length:10},(e,t)=>({ai:Kf,dist:0,think:t===5?$8:null}));B8={firstframe:90,lastframe:99,frames:J8,endfunc:Ua};var Q8=Array.from({length:12},(e,t)=>({ai:Kf,dist:0,think:t===6?X8:null}));G8={firstframe:100,lastframe:111,frames:Q8,endfunc:Ua};var eT=Array.from({length:6},()=>({ai:$f,dist:0}));H8={firstframe:112,lastframe:117,frames:eT,endfunc:Ua};var tT=Array.from({length:12},()=>({ai:$f,dist:0}));qf={firstframe:118,lastframe:129,frames:tT,endfunc:Y8};F();var Ba=.1;function jf(e,t,n){L(e,Ba,n)}function nT(e,t,n){N(e,t,Ba,n)}function Zf(e,t,n){oe(e,t,Ba,n)}function Ga(e,t,n){ue(e,t,Ba,n)}function Ee(e,t,n){_(e,t)}var tl,Jf,iT,Qf,rT,aT,sT,nl,e1,oT,cT,lT,t1,uT,n1;function dT(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function mT(e){e.monsterinfo.current_move=tl}function hT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=Jf)}function Sn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=tl:e.monsterinfo.current_move=Qf}function fT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function _T(e,t){e.monsterinfo.current_move=nl}function gT(e,t){if(e.enemy&&e.enemy.health>0&&wn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=nl;return}e.monsterinfo.current_move=e1}function vT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=B(P(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Zt(e,n,i,r,a,300,500,0,t,5)}function i1(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Cc(t,e,n,i,r,a)}function pT(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&i1(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function yT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function wT(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function AT(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),r=600,a=B({x:n.x,y:n.y,z:0}),s=ni(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*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function ST(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 ET(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=n1)}var kT=Array.from({length:30},(e,t)=>({ai:jf,dist:0,think:t===29?hT:null}));tl={firstframe:0,lastframe:29,frames:kT,endfunc:null};var xT=Array.from({length:40},(e,t)=>({ai:jf,dist:0,think:t===7?dT:null}));Jf={firstframe:30,lastframe:69,frames:xT,endfunc:mT};var bT=[0,3,4,5,7,2,6,4,2,7,5,7,4],TT=bT.map(e=>({ai:nT,dist:e}));iT={firstframe:76,lastframe:88,frames:TT,endfunc:null};var MT=[26,9,9,9,15,10,13,6],RT=MT.map((e,t)=>({ai:Zf,dist:e,think:t%4===0?ET:null}));Qf={firstframe:94,lastframe:101,frames:RT,endfunc:null};var LT=[32,15,10,18,8,20],zT=LT.map(e=>({ai:Zf,dist:e}));rT={firstframe:102,lastframe:107,frames:zT,endfunc:null};var NT=Array.from({length:21},(e,t)=>({ai:Ga,dist:0,think:[4,7,10,13].includes(t)?i1:null}));sT={firstframe:108,lastframe:128,frames:NT,endfunc:Sn};var OT=Array.from({length:7},(e,t)=>({ai:Ga,dist:0,think:t===0?fT:null}));aT={firstframe:137,lastframe:143,frames:OT,endfunc:_T};var IT=Array.from({length:8},()=>({ai:Ga,dist:0,think:vT}));nl={firstframe:144,lastframe:151,frames:IT,endfunc:gT};var CT=Array.from({length:7},()=>({ai:Ga,dist:0}));e1={firstframe:152,lastframe:158,frames:CT,endfunc:Sn};var PT=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],DT=PT.map(e=>({ai:Ee,dist:e}));oT={firstframe:159,lastframe:176,frames:DT,endfunc:Sn};var FT=[-2,11,6,2,-1,-7,-2,-7],UT=FT.map(e=>({ai:Ee,dist:e}));cT={firstframe:177,lastframe:184,frames:UT,endfunc:Sn};var BT=[-3,1,1,0,1],GT=BT.map(e=>({ai:Ee,dist:e}));lT={firstframe:185,lastframe:189,frames:GT,endfunc:Sn};var HT=[0,0,0,-7,-3,-5,8,6,0,0,0],VT=HT.map(e=>({ai:Ee,dist:e}));function WT(e){e.monsterinfo.nextframe=t1.lastframe,e.nextthink=-1,e.solid=0}t1={firstframe:190,lastframe:200,frames:VT,endfunc:WT};var KT=[{ai:Ee,dist:1,think:pT},{ai:Ee,dist:1},{ai:Ee,dist:1,think:yT},{ai:Ee,dist:0},{ai:Ee,dist:-1},{ai:Ee,dist:-1},{ai:Ee,dist:0,think:wT},{ai:Ee,dist:-1}];uT={firstframe:201,lastframe:208,frames:KT,endfunc:Sn};var $T=[{ai:Ee,dist:0,think:AT},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0,think:ST},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];n1={firstframe:209,lastframe:216,frames:$T,endfunc:Sn};F();var Ha=.1;function XT(e,t,n){L(e,Ha,n)}function YT(e,t,n){N(e,t,Ha,n)}function qT(e,t,n){oe(e,t,Ha,n)}function jT(e,t,n){ue(e,t,Ha,n)}function r1(e,t,n){_(e,t)}var il,a1,s1,ZT,JT,o1;function QT(e){e.monsterinfo.current_move=il}function eM(e){e.monsterinfo.current_move=a1}function rl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=s1:e.monsterinfo.current_move=il}function tM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function nM(e){e.monsterinfo.nextframe=o1.lastframe,e.nextthink=-1}var iM=Array.from({length:46},()=>({ai:XT,dist:0}));il={firstframe:0,lastframe:45,frames:iM,endfunc:QT};var rM=Array.from({length:46},()=>({ai:YT,dist:5}));a1={firstframe:0,lastframe:45,frames:rM,endfunc:eM};var aM=Array.from({length:46},()=>({ai:qT,dist:10}));s1={firstframe:0,lastframe:45,frames:aM,endfunc:rl};var sM=Array.from({length:20},(e,t)=>({ai:jT,dist:0,think:t===10?tM:null}));ZT={firstframe:46,lastframe:65,frames:sM,endfunc:rl};var oM=Array.from({length:6},()=>({ai:r1,dist:0}));JT={firstframe:66,lastframe:71,frames:oM,endfunc:rl};var cM=Array.from({length:10},()=>({ai:r1,dist:0}));o1={firstframe:84,lastframe:93,frames:cM,endfunc:nM};F();var Va=.1;function lM(e,t,n){L(e,Va,n)}function uM(e,t,n){N(e,t,Va,n)}function dM(e,t,n){oe(e,t,Va,n)}function mM(e,t,n){ue(e,t,Va,n)}function c1(e,t,n){_(e,t)}var al,l1,u1,hM,fM,d1;function _M(e){e.monsterinfo.current_move=al}function gM(e){e.monsterinfo.current_move=l1}function sl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=u1:e.monsterinfo.current_move=al}function vM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));pt(e,n,i,5,1e3,0,0,t,1)}function pM(e){e.monsterinfo.nextframe=d1.lastframe,e.nextthink=-1}var yM=Array.from({length:46},()=>({ai:lM,dist:0}));al={firstframe:0,lastframe:45,frames:yM,endfunc:_M};var wM=Array.from({length:46},()=>({ai:uM,dist:5}));l1={firstframe:0,lastframe:45,frames:wM,endfunc:gM};var AM=Array.from({length:46},()=>({ai:dM,dist:10}));u1={firstframe:0,lastframe:45,frames:AM,endfunc:sl};var SM=Array.from({length:20},(e,t)=>({ai:mM,dist:0,think:t===10?vM:null}));hM={firstframe:46,lastframe:65,frames:SM,endfunc:sl};var EM=Array.from({length:6},()=>({ai:c1,dist:0}));fM={firstframe:66,lastframe:71,frames:EM,endfunc:sl};var kM=Array.from({length:10},()=>({ai:c1,dist:0}));d1={firstframe:84,lastframe:93,frames:kM,endfunc:pM};F();var Wa=.1;function xM(e,t,n){L(e,Wa,n)}function bM(e,t,n){N(e,t,Wa,n)}function TM(e,t,n){oe(e,t,Wa,n)}function MM(e,t,n){ue(e,t,Wa,n)}function ol(e,t,n){_(e,t)}var cl,m1,h1,RM,LM,f1,zM;function NM(e){e.monsterinfo.current_move=cl}function OM(e){e.monsterinfo.current_move=m1}function Ka(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=h1:e.monsterinfo.current_move=cl}function IM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=B(P(i,n));Zt(e,n,r,5,2,.05,.05,0,t,4)}var CM=Array.from({length:22},()=>({ai:xM,dist:0}));cl={firstframe:0,lastframe:21,frames:CM,endfunc:NM};var PM=Array.from({length:15},()=>({ai:bM,dist:4}));m1={firstframe:22,lastframe:36,frames:PM,endfunc:OM};var DM=Array.from({length:8},()=>({ai:TM,dist:12}));h1={firstframe:37,lastframe:44,frames:DM,endfunc:Ka};var FM=Array.from({length:15},(e,t)=>({ai:MM,dist:0,think:t>=5&&t<=7?IM:null}));RM={firstframe:45,lastframe:59,frames:FM,endfunc:Ka};var UM=Array.from({length:10},()=>({ai:ol,dist:0}));LM={firstframe:60,lastframe:69,frames:UM,endfunc:Ka};var BM=Array.from({length:20},()=>({ai:ol,dist:0}));function GM(e){e.monsterinfo.nextframe=f1.lastframe,e.nextthink=-1}f1={firstframe:70,lastframe:89,frames:BM,endfunc:GM};var HM=Array.from({length:5},()=>({ai:ol,dist:0}));zM={firstframe:90,lastframe:94,frames:HM,endfunc:Ka};F();var dr=.1,VM={x:30,y:28,z:24},WM={x:26,y:16,z:24},KM={x:26,y:-14,z:24};function $M(e,t,n){L(e,dr,n)}function XM(e,t,n){N(e,t,dr,n)}function YM(e,t,n){oe(e,t,dr,n)}function _1(e,t,n){ue(e,t,dr,n)}function si(e,t,n){_(e,t)}var ll,g1,v1,p1,ul,y1,w1,A1,S1,dl,wc;function E1(e){e.monsterinfo.current_move=ll}function k1(e){e.monsterinfo.current_move=g1}function Nt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=v1:e.monsterinfo.current_move=ll}function qM(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=p1:t<=.6?e.monsterinfo.current_move=ul:e.monsterinfo.current_move=y1}function ml(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function jM(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=ml(e,VM),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));uf(e,n,r,50,300,100,300,0,t)}function ZM(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=ml(e,KM),i=B(P(e.pos1,n));df(e,n,i,50,100,0,t)}function JM(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function QM(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=ml(e,WM),i=(e.monsterinfo.nextframe||0)-ul.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...ni(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=j(c).forward}else{let{forward:s}=j(e.angles);a=s}pt(e,n,a,15,1e3,0,0,t,1)}function e4(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=w1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=A1):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=S1)))}function t4(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 n4(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=t4,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=j(e.angles),r=D(i,120),a=D(n,-120);e.velocity=U(U(e.velocity,r),a),e.origin=U(e.origin,D(n,-10)),e.angles={...e.angles,x:90},e.avelocity=W,t.linkentity(e)}function i4(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,n4(n,t)}function r4(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),i4(e,t),e.monsterinfo.current_move=dl,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function a4(e){e.monsterinfo.nextframe=dl.lastframe,e.nextthink=-1}var s4=Array.from({length:60},()=>({ai:$M,dist:0}));ll={firstframe:0,lastframe:59,frames:s4,endfunc:E1};var o4=Array.from({length:10},()=>({ai:XM,dist:8}));g1={firstframe:60,lastframe:69,frames:o4,endfunc:k1};var c4=Array.from({length:10},()=>({ai:YM,dist:8}));v1={firstframe:60,lastframe:69,frames:c4,endfunc:Nt};var l4=Array.from({length:8},(e,t)=>({ai:_1,dist:0,think:t===3?jM:null}));p1={firstframe:70,lastframe:77,frames:l4,endfunc:Nt};var u4=Array.from({length:26},(e,t)=>({ai:si,dist:0,think:t>=4&&t<=20?QM:null}));ul={firstframe:78,lastframe:103,frames:u4,endfunc:Nt};var d4=Array.from({length:16},(e,t)=>({ai:_1,dist:0,think:t===7?JM:t===8?ZM:null}));y1={firstframe:104,lastframe:119,frames:d4,endfunc:Nt};var m4=Array.from({length:4},()=>({ai:si,dist:0}));w1={firstframe:120,lastframe:123,frames:m4,endfunc:Nt};var h4=Array.from({length:4},()=>({ai:si,dist:0}));A1={firstframe:124,lastframe:127,frames:h4,endfunc:Nt};var f4=Array.from({length:27},()=>({ai:si,dist:0}));S1={firstframe:128,lastframe:154,frames:f4,endfunc:Nt};var _4=Array.from({length:95},()=>({ai:si,dist:0}));dl={firstframe:155,lastframe:249,frames:_4,endfunc:a4};var g4=Array.from({length:13},()=>({ai:si,dist:0}));wc={firstframe:250,lastframe:262,frames:g4,endfunc:Nt};function v4(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,i,r,a)=>e4(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){ef(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,r4(n,t.entities)},e.monsterinfo.stand=E1,e.monsterinfo.walk=k1,e.monsterinfo.run=Nt,e.monsterinfo.attack=qM,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=wc},e.think=db,e.monsterinfo.current_move=wc,e.nextthink=e.timestamp+dr}F();var $a=.1,p4={x:40,y:-20,z:20},y4={x:40,y:20,z:20},w4={x:30,y:0,z:40};function A4(e,t,n){L(e,$a,n)}function S4(e,t,n){N(e,t,$a,n)}function E4(e,t,n){oe(e,t,$a,n)}function hl(e,t,n){ue(e,t,$a,n)}function mr(e,t,n){_(e,t)}var fl,x1,b1,_l,Ac,k4,x4,b4,T4,T1;function M4(e){e.monsterinfo.current_move=fl}function R4(e){e.monsterinfo.current_move=x1}function oi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=b1:e.monsterinfo.current_move=fl}function L4(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&wn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=_l:e.monsterinfo.current_move=Ac}function Sc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function z4(e,t){if(!e.enemy)return;let n=Sc(e,y4),i=B(P(e.enemy.origin,n));wa(e,n,i,6,4,.05,.05,0,t,4);let r=Sc(e,p4),a=B(P(e.enemy.origin,r));wa(e,r,a,6,4,.05,.05,0,t,4)}function N4(e,t){if(!e.enemy)return;let n=Sc(e,w4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));uf(e,n,r,50,300,100,200,0,t)}function O4(e){e.monsterinfo.nextframe=T1.lastframe,e.nextthink=-1}function I4(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,v4(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:rr(r)};let a=B(r),s=D(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 C4=Array.from({length:51},()=>({ai:A4,dist:0}));fl={firstframe:0,lastframe:50,frames:C4,endfunc:M4};var P4=Array.from({length:14},()=>({ai:S4,dist:10}));x1={firstframe:51,lastframe:64,frames:P4,endfunc:R4};var D4=Array.from({length:14},()=>({ai:E4,dist:10}));b1={firstframe:51,lastframe:64,frames:D4,endfunc:oi};var F4=Array.from({length:8},()=>({ai:hl,dist:0})),U4={firstframe:65,lastframe:72,frames:F4,endfunc:null},B4=Array.from({length:6},()=>({ai:hl,dist:0,think:z4}));_l={firstframe:73,lastframe:78,frames:B4,endfunc:L4};U4.endfunc=e=>{e.monsterinfo.current_move=_l};var G4=Array.from({length:4},()=>({ai:mr,dist:0}));Ac={firstframe:79,lastframe:82,frames:G4,endfunc:oi};var H4=Array.from({length:13},(e,t)=>({ai:hl,dist:0,think:t===6?N4:null}));k4={firstframe:83,lastframe:95,frames:H4,endfunc:oi};var V4=Array.from({length:3},()=>({ai:mr,dist:0}));x4={firstframe:96,lastframe:98,frames:V4,endfunc:oi};var W4=Array.from({length:3},()=>({ai:mr,dist:0}));b4={firstframe:99,lastframe:101,frames:W4,endfunc:oi};var K4=Array.from({length:25},()=>({ai:mr,dist:0}));T4={firstframe:102,lastframe:126,frames:K4,endfunc:oi};var $4=Array.from({length:50},(e,t)=>({ai:mr,dist:0,think:t===49?((n,i)=>{}):t===48?I4:null}));T1={firstframe:127,lastframe:176,frames:$4,endfunc:O4};var gl=.1,Xa=4,M1=8,Ya=16,X4=32,vl=64,Y4=0,q4=39,j4=40,Z4=58,J4=59,R1=64,Q4=93,eR=95,pl=99,L1=159,z1=160,N1=172,O1=173,I1=198,tR=199,nR=209,iR=210,rR=226,yl=227,wl=235,C1=236,Aa=244,aR=245,sR=251,oR=252,cR=266,lR=267,uR=281,P1,D1,F1,U1,B1,hr,G1,H1,V1,W1,dR,mR,K1,$1,hR,fR,Al,X1,_R="insane/insane11.wav",gR="insane/insane5.wav",vR="insane/insane7.wav",yh=["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 Ec(e,t){t.sound(e,2,_R,1,1,0)}function pR(e,t){(e.spawnflags&vl)===0&&t.sound(e,2,gR,1,1,0)}function Sl(e,t){e.spawnflags&vl||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,vR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function tn(e,t){if(!(e.spawnflags&vl)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=yh[Math.floor(Math.random()*yh.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function Ye(e,t){}function Y1(e,t){e.spawnflags&X4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=F1:e.monsterinfo.current_move=B1)}function yR(e,t){e.spawnflags&Xa&&e.spawnflags&Ya||Math.random()<.5&&(e.monsterinfo.current_move=U1)}function El(e,t){e.monsterinfo.current_move=hr}function q1(e,t){Math.random()<.8?e.monsterinfo.current_move=Al:e.monsterinfo.current_move=X1}function kl(e,t){e.spawnflags&M1?(e.monsterinfo.current_move=Al,e.monsterinfo.aiflags|=1):e.spawnflags&Xa&&e.spawnflags&Ya?e.monsterinfo.current_move=hr:Math.random()<.5?e.monsterinfo.current_move=P1:e.monsterinfo.current_move=D1}function xl(e,t){if(e.spawnflags&Ya&&e.frame===Aa){e.monsterinfo.current_move=hr;return}e.spawnflags&Xa?e.monsterinfo.current_move=K1:Math.random()<=.5?e.monsterinfo.current_move=G1:e.monsterinfo.current_move=V1}function fr(e,t){if(e.spawnflags&Ya&&e.frame===Aa){e.monsterinfo.current_move=hr;return}let n=e.frame;e.spawnflags&Xa||n>=C1&&n<=Aa||n>=yl&&n<=wl||n>=pl&&n<=L1?e.monsterinfo.current_move=$1:Math.random()<=.5?e.monsterinfo.current_move=H1:e.monsterinfo.current_move=W1}function j1(e,t){e.spawnflags&M1?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 h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,gl,a)},dist:t}}var wR=[h(L),h(L),h(L),h(L),h(L),h(L,0,Y1)];P1={firstframe:J4,lastframe:R1,frames:wR,endfunc:kl};var AR=[h(L,0,pR),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L),h(L,0,Y1)];D1={firstframe:R1,lastframe:Q4,frames:AR,endfunc:kl};var SR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,Sl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,2.7),h(_,4.1),h(_,6),h(_,7.6),h(_,3.6),h(_),h(_),h(_,0,Ec),h(_),h(_),h(_),h(_),h(_),h(_,0,Ec),h(_),h(_),h(_),h(_),h(_),h(_)];F1={firstframe:Y4,lastframe:q4,frames:SR,endfunc:El};var ER=[h(_,-.7),h(_,-1.2),h(_,-1.5),h(_,-4.5),h(_,-3.5),h(_,-.2),h(_),h(_,-1.3),h(_,-3),h(_,-2),h(_),h(_),h(_),h(_,-3.3),h(_,-1.6),h(_,-.3),h(_),h(_),h(_)];U1={firstframe:j4,lastframe:Z4,frames:ER,endfunc:kl};var kR=[h(_,.2),h(_,11.5),h(_,5.1),h(_,7.1),h(_)];B1={firstframe:eR,lastframe:pl,frames:kR,endfunc:El};var xR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,-1.7),h(_,-1.6),h(_),h(_),h(_),h(_,0,Ec),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,Sl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,.5),h(_),h(_,-.2,tn),h(_),h(_,.2),h(_,.4),h(_,.6),h(_,.8),h(_,.7),h(_,0,yR)];hr={firstframe:pl,lastframe:L1,frames:xR,endfunc:El};var kc=[h(N,0,tn),h(N,2.5),h(N,3.5),h(N,1.7),h(N,2.3),h(N,2.4),h(N,2.2,Ye),h(N,4.2),h(N,5.6),h(N,3.3),h(N,2.4),h(N,.9),h(N,0,Ye)];G1={firstframe:z1,lastframe:N1,frames:kc,endfunc:xl};H1={firstframe:z1,lastframe:N1,frames:kc.map(e=>({ai:(t,n,i)=>{e.ai===kc[0].ai&&tn(t,i),oe(t,n,gl,i)},dist:e.dist})),endfunc:fr};var xc=[h(N,0,tn),h(N,3.4),h(N,3.6),h(N,2.9),h(N,2.2),h(N,2.6,Ye),h(N),h(N,.7),h(N,4.8),h(N,5.3),h(N,1.1),h(N,2,Ye),h(N,.5),h(N),h(N),h(N,4.9),h(N,6.7),h(N,3.8),h(N,2,Ye),h(N,.2),h(N),h(N,3.4),h(N,6.4),h(N,5),h(N,1.8,Ye),h(N)];V1={firstframe:O1,lastframe:I1,frames:xc,endfunc:xl};W1={firstframe:O1,lastframe:I1,frames:xc.map(e=>({ai:(t,n,i)=>{e.ai===xc[0].ai&&tn(t,i),oe(t,n,gl,i)},dist:e.dist})),endfunc:fr};var bR=[h(_),h(_),h(_),h(_),h(_,0,Ye),h(_),h(_),h(_),h(_),h(_),h(_,0,Ye)];dR={firstframe:tR,lastframe:nR,frames:bR,endfunc:fr};var TR=[h(_),h(_),h(_),h(_),h(_,0,Ye),h(_),h(_),h(_),h(_),h(_),h(_,0,Ye),h(_),h(_,0,Ye),h(_),h(_),h(_),h(_)];mR={firstframe:iR,lastframe:rR,frames:TR,endfunc:j1};var Z1=[h(N,0,tn),h(N,1.5),h(N,2.1),h(N,3.6),h(N,2,Ye),h(N,.9),h(N,3),h(N,3.4),h(N,2.4,Ye)];K1={firstframe:yl,lastframe:wl,frames:Z1,endfunc:xl};$1={firstframe:yl,lastframe:wl,frames:Z1,endfunc:fr};var MR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];hR={firstframe:C1,lastframe:Aa,frames:MR,endfunc:fr};var RR=[h(_),h(_),h(_),h(_),h(_,0,tn),h(_),h(_)];fR={firstframe:aR,lastframe:sR,frames:RR,endfunc:j1};var LR=[h(_,0,Sl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];Al={firstframe:oR,lastframe:cR,frames:LR,endfunc:q1};var zR=[h(_,0,tn),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];X1={firstframe:lR,lastframe:uR,frames:zR,endfunc:q1};F();F();var NR=.1,OR=0;var bc=0,J1=39,IR=40,CR=47,PR=48,DR=53,FR=54,UR=56,BR=57,GR=59,HR=60,VR=62,WR=63,KR=76,$R=77,XR=93,YR=94,qR=100,jR=101,ZR=113,JR=114,QR=117,Q1,e_,t_,eL,tL,nL,iL,rL,aL,sL,oL;function A(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,NR,a)},dist:t}}function wh(e,t){e.monsterinfo.current_move=Q1,t.timeSeconds<1&&(e.frame=bc+Math.floor(Math.random()*(J1-bc+1)))}function cL(e,t){e.monsterinfo.current_move=e_}function ci(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?cL(e,t):wh(e,t);return}if(e.monsterinfo.aiflags&1){wh(e,t);return}e.monsterinfo.current_move=t_}function lL(e,t){let n={x:0,y:0,z:0},r=j(e.angles).forward,a=ti(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,D(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=ti(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=B(s)}else s=r;Zt(e,a,s,3,4,0,0,OR,t)}function n_(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 uL(e,t){lL(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var dL=[A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L),A(L)];Q1={firstframe:bc,lastframe:J1,frames:dL,endfunc:null};var mL=[A(N),A(N,6),A(N,10),A(N,3),A(N,2),A(N,7),A(N,10),A(N,1)];e_={firstframe:IR,lastframe:CR,frames:mL,endfunc:null};var hL=[A(oe,4),A(oe,15),A(oe,15),A(oe,8),A(oe,20),A(oe,15)];t_={firstframe:PR,lastframe:DR,frames:hL,endfunc:null};var fL=[A(_,-5),A(_,4),A(_,1)];eL={firstframe:FR,lastframe:UR,frames:fL,endfunc:ci};var _L=[A(_,-4),A(_,4),A(_)];tL={firstframe:BR,lastframe:GR,frames:_L,endfunc:ci};var gL=[A(_,-1),A(_,1),A(_,0)];nL={firstframe:HR,lastframe:VR,frames:gL,endfunc:ci};var vL=[A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se)];iL={firstframe:WR,lastframe:KR,frames:vL,endfunc:ci};var pL=[A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se),A(se)];rL={firstframe:$R,lastframe:XR,frames:pL,endfunc:ci};var yL=[A(_),A(_),A(_,-13),A(_,14),A(_,3),A(_,-2),A(_,1)];aL={firstframe:YR,lastframe:qR,frames:yL,endfunc:n_};var wL=[A(_),A(_,7),A(_,-6),A(_,-5),A(_,1),A(_),A(_,-1),A(_,-2),A(_,-1),A(_,-9),A(_,-13),A(_,-13),A(_)];sL={firstframe:jR,lastframe:ZR,frames:wL,endfunc:n_};var AL=[A(ue,-2,uL),A(ue,-2),A(ue,3),A(ue,2)];oL={firstframe:JR,lastframe:QR,frames:AL,endfunc:ci};F();F();var tr=.1;function SL(e,t,n){if(e.classname==="monster_medic"&&s_(e,n)){e.monsterinfo.current_move=_r;return}L(e,tr,n)}function EL(e,t,n){N(e,t,tr,n)}function kL(e,t,n){e.classname==="monster_medic"&&s_(e,n)?e.monsterinfo.current_move=_r:oe(e,t,tr,n)}function ft(e,t,n){ue(e,t,tr,n)}function bl(e,t,n){_(e,t)}var Tl,i_,_r,xL,r_,bL,TL,a_;function ML(e){e.monsterinfo.current_move=Tl}function RL(e){e.monsterinfo.current_move=i_}function gr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&Qt(e,e.enemy)<80){e.monsterinfo.current_move=r_;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=_r:e.monsterinfo.current_move=Tl}function LL(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},i=B(P(e.enemy.origin,n));pt(e,n,i,2,1e3,0,0,t,10)}function Kt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(Qt(e,e.enemy)>400){e.monsterinfo.current_move=_r;return}let i=j(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=U(e.origin,U(D(r,o.x),U(D(a,o.y),D(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,re.temp_entity,{te:ye.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function zL(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Kt(e,t)}function NL(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(Qt(e,n)>400){e.enemy=null;return}if(!i)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 r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function s_(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,l,c,u)=>{let m=t.trace(a,s,o,l,c,u);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!wn(e,a,r))return;let s=Qt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function OL(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=j(e.angles),s=D(a.forward,64),o=U(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,De|Xt|Ji);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},r(u,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),u.enemy=e.enemy,t.multicast(l,1,re.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function IL(e){e.monsterinfo.nextframe=a_.lastframe,e.nextthink=-1}var CL=Array.from({length:30},()=>({ai:SL,dist:0}));Tl={firstframe:0,lastframe:29,frames:CL,endfunc:ML};var PL=Array.from({length:40},()=>({ai:EL,dist:3}));i_={firstframe:30,lastframe:69,frames:PL,endfunc:RL};var DL=Array.from({length:20},()=>({ai:kL,dist:12}));_r={firstframe:70,lastframe:89,frames:DL,endfunc:gr};var FL=Array.from({length:16},(e,t)=>({ai:ft,dist:0,think:t>=4&&t<=13?LL:null}));xL={firstframe:90,lastframe:105,frames:FL,endfunc:gr};var UL=[{ai:ft,dist:0,think:zL},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:Kt},{ai:ft,dist:0,think:NL}];r_={firstframe:106,lastframe:114,frames:UL,endfunc:gr};var BL=Array.from({length:6},()=>({ai:bl,dist:0}));TL={firstframe:116,lastframe:121,frames:BL,endfunc:gr};var GL=Array.from({length:23},(e,t)=>({ai:bl,dist:0,think:t===11?OL:null}));bL={firstframe:122,lastframe:144,frames:GL,endfunc:gr};var HL=Array.from({length:30},()=>({ai:bl,dist:0}));a_={firstframe:161,lastframe:190,frames:HL,endfunc:IL};F();var vr=.1;function K(e,t,n){L(e,vr,n)}function Ke(e,t,n){N(e,t,vr,n)}function Xn(e,t,n){oe(e,t,vr,n)}function Vt(e,t,n){ue(e,t,vr,n)}function le(e,t,n){_(e,t)}function dc(e,t,n){_k(e,null,t,vr)}var o_,c_,Sa,VL,WL,KL,$L,l_,u_;function XL(e){e.monsterinfo.current_move=c_}function YL(e){e.monsterinfo.current_move=o_}function li(e){e.monsterinfo.current_move=Sa}function d_(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=P(e.enemy.origin,e.origin);if(Fe(i)>100)return;let a=B(i);fe(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function qL(e,t){d_(e,30,t)}function Ah(e,t){d_(e,30,t)}function Zn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Sa),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Sa)}function jL(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,B(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function ZL(e,t){let n=j(e.angles).forward;e.movetype=7,e.touch=jL,e.velocity=U(D(n,300),{x:0,y:0,z:300}),e.velocity=U(D(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function JL(e){e.monsterinfo.nextframe=l_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var QL=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];o_={firstframe:0,lastframe:50,frames:QL,endfunc:YL};var ez=[{ai:Ke,dist:3},{ai:Ke,dist:1},{ai:Ke,dist:5},{ai:Ke,dist:10},{ai:Ke,dist:13},{ai:Ke,dist:12},{ai:Ke,dist:0},{ai:Ke,dist:0},{ai:Ke,dist:5},{ai:Ke,dist:6},{ai:Ke,dist:16},{ai:Ke,dist:15},{ai:Ke,dist:6}];c_={firstframe:51,lastframe:63,frames:ez,endfunc:XL};var tz=[{ai:Xn,dist:20},{ai:Xn,dist:15},{ai:Xn,dist:35},{ai:Xn,dist:20},{ai:Xn,dist:10},{ai:Xn,dist:20}];Sa={firstframe:64,lastframe:69,frames:tz,endfunc:li};var nz=[{ai:Vt,dist:0},{ai:Vt,dist:0},{ai:Vt,dist:0,think:Ah},{ai:Vt,dist:0},{ai:Vt,dist:0,think:qL},{ai:Vt,dist:0},{ai:Vt,dist:0,think:Ah},{ai:Vt,dist:0}];VL={firstframe:70,lastframe:77,frames:nz,endfunc:li};var iz=[{ai:dc,dist:0},{ai:dc,dist:0},{ai:dc,dist:0,think:ZL},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn}];u_={firstframe:93,lastframe:100,frames:iz,endfunc:li};u_.frames[3].ai=(e,t,n)=>{Zn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var rz=[{ai:le,dist:4},{ai:le,dist:-3},{ai:le,dist:-8},{ai:le,dist:2},{ai:le,dist:5}];WL={firstframe:78,lastframe:82,frames:rz,endfunc:li};var az=[{ai:le,dist:-24},{ai:le,dist:11},{ai:le,dist:5},{ai:le,dist:-2}];KL={firstframe:83,lastframe:86,frames:az,endfunc:li};var sz=[{ai:le,dist:11},{ai:le,dist:0},{ai:le,dist:-2},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];$L={firstframe:87,lastframe:92,frames:sz,endfunc:li};var oz=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];l_={firstframe:101,lastframe:109,frames:oz,endfunc:JL};F();var qa=.1,cz=()=>Math.random();function ne(e,t,n){L(e,qa,n)}function Tt(e,t,n){N(e,t,qa,n)}function Mt(e,t,n){oe(e,t,qa,n)}function Me(e,t,n){ue(e,t,qa,n)}function Re(e,t,n){_(e,t)}var Ml,m_,h_,lz,uz,f_,__,dz,mz,Rl,g_;function hz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function fz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Yn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Tc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function _z(e){e.monsterinfo.current_move=Rl}function gz(e){cz()<=.8?e.monsterinfo.current_move=Rl:e.monsterinfo.current_move=g_}function v_(e){e.monsterinfo.current_move=Ml}function Ll(e){e.monsterinfo.current_move=m_}function p_(e){e.monsterinfo.current_move=__}function y_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Ml:e.monsterinfo.current_move=h_}function mc(e,t){let n=P(t,e);if(Fe(n)>256)return!1;let a=ni(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function it(e,t){if(!e.enemy)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=U(e.origin,U(D(i,s.x),U(D(r,s.y),D(a,s.z)))),l=ti(e.enemy.origin);if(!mc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!mc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!mc(o,l)))||t.trace(o,l,W,W,e,Lt).ent!==e.enemy)return;let u=2,m=e.frame;m===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,re.temp_entity,{te:ye.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=B(P(o,l));fe(e.enemy,e,e,d,e.enemy.origin,W,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 vz(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 pz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn},{ai:ne,dist:0},{ai:ne,dist:0,think:Yn}];Ml={firstframe:83,lastframe:99,frames:pz,endfunc:v_};var yz=[{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];mz={firstframe:100,lastframe:103,frames:yz,endfunc:_z};var wz=[{ai:ne,dist:0,think:Tc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0,think:Tc},{ai:ne,dist:0},{ai:ne,dist:0}];Rl={firstframe:104,lastframe:109,frames:wz,endfunc:gz};var Az=[{ai:ne,dist:0,think:Tc},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0},{ai:ne,dist:0}];g_={firstframe:110,lastframe:117,frames:Az,endfunc:v_};var Sz=[{ai:Mt,dist:0},{ai:Mt,dist:30}];__={firstframe:68,lastframe:69,frames:Sz,endfunc:y_};var Ez=[{ai:Mt,dist:30},{ai:Mt,dist:30},{ai:Mt,dist:22},{ai:Mt,dist:19},{ai:Mt,dist:24},{ai:Mt,dist:28},{ai:Mt,dist:25}];h_={firstframe:70,lastframe:76,frames:Ez,endfunc:y_};var kz=[{ai:Tt,dist:0},{ai:Tt,dist:30,think:Ll}];dz={firstframe:68,lastframe:69,frames:kz,endfunc:Ll};var xz=[{ai:Tt,dist:30},{ai:Tt,dist:30},{ai:Tt,dist:22},{ai:Tt,dist:19},{ai:Tt,dist:24},{ai:Tt,dist:28},{ai:Tt,dist:25}];m_={firstframe:70,lastframe:76,frames:xz,endfunc:Ll};var bz=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:6},{ai:Re,dist:16},{ai:Re,dist:-6},{ai:Re,dist:-7},{ai:Re,dist:0}];uz={firstframe:57,lastframe:67,frames:bz,endfunc:p_};var Tz=[{ai:Me,dist:0,think:hz},{ai:Me,dist:0},{ai:Me,dist:15,think:it},{ai:Me,dist:0,think:it},{ai:Me,dist:0,think:it},{ai:Me,dist:0,think:it},{ai:Me,dist:0,think:it},{ai:Me,dist:-2,think:it},{ai:Me,dist:-2,think:it},{ai:Me,dist:-3,think:it},{ai:Me,dist:-2,think:it},{ai:Me,dist:0,think:it},{ai:Me,dist:-1,think:it},{ai:Me,dist:0,think:fz},{ai:Me,dist:-2},{ai:Me,dist:-2},{ai:Me,dist:-3},{ai:Me,dist:0}];lz={firstframe:39,lastframe:56,frames:Tz,endfunc:p_};var Mz=[{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0},{ai:Re,dist:0}];f_={firstframe:32,lastframe:38,frames:Mz,endfunc:vz};F();var ja=.1;var Rz=2,Lz=4;function zz(e,t,n){L(e,ja,n)}function Nz(e,t,n){N(e,t,ja,n)}function Oz(e,t,n){oe(e,t,ja,n)}function w_(e,t,n){ue(e,t,ja,n)}function A_(e,t,n){_(e,t)}var zl,S_,E_,Iz,Cz,Pz,k_;function Dz(e){e.monsterinfo.current_move=zl}function Fz(e){e.monsterinfo.current_move=S_}function Za(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=E_:e.monsterinfo.current_move=zl}function pr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function yr(e,t){if(!e.enemy){let{forward:i}=j(e.angles);return i}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 Uz(e,t){if(!e.enemy)return;let n=pr(e),i=yr(e,n);pt(e,n,i,5,600,0,0,t,1)}function Bz(e,t){if(!e.enemy)return;let n=pr(e),i=yr(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Bb(e,n,i,r,a,o,l,s,0,t,3)}function Gz(e,t){if(!e.enemy)return;let n=pr(e),i=yr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Zt(e,n,i,r,a,s,o,0,t,4)}function Hz(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=j(n.angles),s={...n.origin};s=U(s,D(i,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 Vz(e,t){if(!e.enemy)return;let n=pr(e),i=yr(e,n);Hb(e,n,i,5,600,0,0,t)}function Wz(e,t){if(!e.enemy)return;let n=pr(e),i=yr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Gb(e,n,i,r,a,0,0,t)}function Kz(e,t){e.enemy&&vc(e,1,!1,Hz,t)}function $z(e,t){e.count<2?Vz(e,t):e.count<4?Wz(e,t):Kz(e,t)}function x_(e,t){if(e.style===1){$z(e,t);return}e.spawnflags&Rz?Bz(e,t):e.spawnflags&Lz?Gz(e,t):Uz(e,t)}var Xz=Array.from({length:30},()=>({ai:zz,dist:0}));zl={firstframe:0,lastframe:29,frames:Xz,endfunc:Dz};var Yz=Array.from({length:40},()=>({ai:Nz,dist:2}));S_={firstframe:30,lastframe:69,frames:Yz,endfunc:Fz};var qz=Array.from({length:20},()=>({ai:Oz,dist:10}));E_={firstframe:70,lastframe:89,frames:qz,endfunc:Za};var jz=Array.from({length:10},(e,t)=>({ai:w_,dist:0,think:t===5?x_:null}));Iz={firstframe:90,lastframe:99,frames:jz,endfunc:Za};var Zz=Array.from({length:10},(e,t)=>({ai:w_,dist:0,think:t>=4&&t<=8?x_:null}));Cz={firstframe:90,lastframe:99,frames:Zz,endfunc:Za};var Jz=Array.from({length:6},()=>({ai:A_,dist:0}));Pz={firstframe:100,lastframe:105,frames:Jz,endfunc:Za};var Qz=Array.from({length:10},()=>({ai:A_,dist:0}));function eN(e){e.monsterinfo.nextframe=k_.lastframe,e.nextthink=-1}k_={firstframe:106,lastframe:115,frames:Qz,endfunc:eN};F();var b_=.1,tN={x:30,y:30,z:40},nN={x:30,y:-30,z:40},iN={x:20,y:0,z:70};function rN(e,t,n){L(e,b_,n)}function aN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ol:e.monsterinfo.current_move=Ja}function Nl(e,t,n){ue(e,t,b_,n)}function wr(e,t,n){_(e,t)}var Ja,Ol,sN,oN,T_,M_,cN,lN,uN,R_;function dN(e){e.monsterinfo.current_move=Ja}function En(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ol:e.monsterinfo.current_move=Ja}function Il(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function mN(e,t){if(!e.enemy)return;let n=Il(e,nN),i=B(P(e.enemy.origin,n));cr(e,n,i,50,650,0,t)}function hN(e,t){if(!e.enemy)return;let n=Il(e,iN),i=B(P(e.enemy.origin,n));Vb(e,n,i,50,600,0,t)}function fN(e,t){if(!e.enemy)return;let n=Il(e,tN),i=B(P(e.enemy.origin,n));wa(e,n,i,6,4,.05,.05,0,t,4)}function _N(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&wn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=T_:e.monsterinfo.current_move=M_}function gN(e){e.monsterinfo.nextframe=R_.lastframe,e.nextthink=-1}var vN=Array.from({length:60},()=>({ai:rN,dist:0}));Ja={firstframe:0,lastframe:59,frames:vN,endfunc:dN};var pN=Array.from({length:18},()=>({ai:aN,dist:12}));Ol={firstframe:60,lastframe:77,frames:pN,endfunc:En};var yN=Array.from({length:4},()=>({ai:wr,dist:0}));uN={firstframe:78,lastframe:81,frames:yN,endfunc:En};var wN=Array.from({length:4},()=>({ai:wr,dist:0}));lN={firstframe:82,lastframe:85,frames:wN,endfunc:En};var AN=Array.from({length:4},()=>({ai:wr,dist:0}));cN={firstframe:86,lastframe:89,frames:AN,endfunc:En};var SN=Array.from({length:24},()=>({ai:wr,dist:0}));R_={firstframe:90,lastframe:113,frames:SN,endfunc:gN};var EN=Array.from({length:6},(e,t)=>({ai:Nl,dist:0,think:t===0||t===3?hN:null}));oN={firstframe:114,lastframe:119,frames:EN,endfunc:En};var kN=Array.from({length:27},(e,t)=>({ai:Nl,dist:0,think:t===7||t===10||t===13?mN:null}));sN={firstframe:120,lastframe:146,frames:kN,endfunc:En};var xN=Array.from({length:6},()=>({ai:Nl,dist:0,think:fN}));T_={firstframe:147,lastframe:152,frames:xN,endfunc:_N};var bN=Array.from({length:14},()=>({ai:wr,dist:0}));M_={firstframe:153,lastframe:166,frames:bN,endfunc:En};F();var Cl=.1;function L_(e,t,n,i,r){let a=r.trace(t,n,W,W,e,Lt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return B(P(n,t));let s=U(n,D(i,-20)),o=r.trace(t,s,W,W,e,Lt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return B(P(s,t));let l=U(n,D(i,20)),c=r.trace(t,l,W,W,e,Lt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?B(P(l,t)):null}function z_(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=rr(n)}}function TN(e,t,n){L(e,Cl,n)}function MN(e,t,n){N(e,t,Cl,n)}function RN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dl:e.monsterinfo.current_move=Qa}function Pl(e,t,n){ue(e,t,Cl,n)}function N_(e,t,n){_(e,t)}var Qa,O_,Dl,LN,zN,NN,ON,I_;function IN(e){e.monsterinfo.current_move=Qa}function CN(e){e.monsterinfo.current_move=O_}function Ar(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dl:e.monsterinfo.current_move=Qa}function PN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=L_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));pt(e,n,i,30,1e3,0,0,t,1)}function DN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,n));Zt(e,n,i,20,2,.05,.05,0,t,4)}function FN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=j(o),c=e.monsterinfo.blind_fire_target,u=L_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));cr(e,n,i,50,650,0,t)}function UN(e){e.monsterinfo.nextframe=I_.lastframe,e.nextthink=-1}function BN(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Ar(e)}var GN=Array.from({length:30},()=>({ai:TN,dist:0}));Qa={firstframe:0,lastframe:29,frames:GN,endfunc:IN};var HN=Array.from({length:16},()=>({ai:MN,dist:5}));O_={firstframe:30,lastframe:45,frames:HN,endfunc:CN};var VN=Array.from({length:16},()=>({ai:RN,dist:10}));Dl={firstframe:46,lastframe:61,frames:VN,endfunc:Ar};var WN=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=z_:t>5&&t<12&&(n=PN),{ai:Pl,dist:0,think:n}});LN={firstframe:62,lastframe:77,frames:WN,endfunc:Ar};var KN=Array.from({length:20},(e,t)=>({ai:Pl,dist:0,think:t%2===0&&t>5?DN:null}));zN={firstframe:78,lastframe:97,frames:KN,endfunc:Ar};var $N=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=z_:(t===8||t===12||t===16)&&(n=FN),{ai:Pl,dist:0,think:n}});NN={firstframe:98,lastframe:115,frames:$N,endfunc:BN};var XN=Array.from({length:6},()=>({ai:N_,dist:0}));ON={firstframe:116,lastframe:121,frames:XN,endfunc:Ar};var YN=Array.from({length:16},()=>({ai:N_,dist:0}));I_={firstframe:122,lastframe:137,frames:YN,endfunc:UN};F();var Fl=.1;function qN(e,t,n){L(e,Fl,n)}function Ul(e,t,n){oe(e,t,Fl,n)}function jN(e,t,n){ue(e,t,Fl,n)}var Bl,C_,ZN,JN,P_;function QN(e){e.monsterinfo.current_move=Bl}function Gl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=C_:e.monsterinfo.current_move=Bl}function eO(e,t){if(!e.enemy)return;let n=j(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),pt(e,i,r,2,1e3,1,0,t)}var tO=Array.from({length:1},()=>({ai:qN,dist:0}));Bl={firstframe:0,lastframe:0,frames:tO,endfunc:QN};var nO=Array.from({length:1},()=>({ai:Ul,dist:0}));C_={firstframe:0,lastframe:0,frames:nO,endfunc:Gl};var iO=Array.from({length:8},(e,t)=>({ai:jN,dist:0,think:t===4?eO:void 0}));ZN={firstframe:1,lastframe:8,frames:iO,endfunc:Gl};var rO=Array.from({length:2},()=>({ai:Ul,dist:0}));JN={firstframe:9,lastframe:10,frames:rO,endfunc:Gl};var aO=Array.from({length:4},()=>({ai:Ul,dist:0}));function sO(e){e.monsterinfo.nextframe=P_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}P_={firstframe:11,lastframe:14,frames:aO,endfunc:sO};F();var es=.1;var nr=()=>Math.random(),ts=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ui(e,t,n){L(e,es,n)}function qn(e,t,n){N(e,t,es,n)}function Xe(e,t,n){oe(e,t,es,n)}function $(e,t,n){ue(e,t,es,n)}function Ue(e,t,n){_(e,t)}var Hl,D_,F_,ns,Vl,oO,U_,cO,B_,G_,H_,V_,W_,lO,uO,dO,mO,hO,fO,_O,gO,vO,pO,is=2,K_=80,yO=100;var wO=8;var Wl=32;function di(e,t){!(e.spawnflags&Wl)&&e.waterlevel>=is&&OO(e)}function AO(e){e.waterlevel>=is?(e.flags|=2,e.monsterinfo.current_move=D_):e.monsterinfo.current_move!==Vl&&(e.monsterinfo.current_move=Hl)}function $_(e){e.flags|=2,e.monsterinfo.current_move=F_}function rs(e,t){if(!e.enemy)return;let n=ts(5,10),i=100,r=P(e.enemy.origin,e.origin);Fe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Kl(e,t){if(!e.enemy)return;let n=ts(5,10),i=100,r=P(e.enemy.origin,e.origin);Fe(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function $l(e,t){if(!e.enemy)return;let n=5,i=K_,r=P(e.enemy.origin,e.origin);Fe(r)<=i&&fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,0,0,0,t.timeSeconds)}function SO(e){e.monsterinfo.current_move=Vl}function X_(e){nr()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function Y_(e,t){let n=ts(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function q_(e,t){if(e.spawnflags&wO){let n=nr();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=ts(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function Ot(e){!(e.spawnflags&Wl)&&e.waterlevel>=is?e.monsterinfo.current_move=ns:e.monsterinfo.current_move=G_}function EO(e){!(e.spawnflags&Wl)&&e.waterlevel>=is?e.monsterinfo.current_move=ns:e.monsterinfo.current_move=B_}function j_(e){if(!e.enemy||e.enemy.health<=0)return;Fe(P(e.enemy.origin,e.origin))<=K_&&(e.frame===114?e.monsterinfo.current_move=V_:e.frame===123&&(e.monsterinfo.current_move=H_))}function kO(e,t,n,i,r,a){let s=sr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function xO(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=U(e.origin,U(D(i,s.x),U(D(r,s.y),D(a,s.z))));o.z+=2;let l=ti(e.enemy.origin);l.z+=e.enemy.viewheight||0;let c=B(P(l,o));kO(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function bO(e){if(nr()>.8&&e.health<e.max_health){e.monsterinfo.current_move=U_;return}if(e.enemy&&e.enemy.health>0){let t=Fe(P(e.enemy.origin,e.origin));nr()>.7&&t<=yO&&(e.monsterinfo.current_move=W_)}}function TO(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function MO(e,t){let i=j(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=U(D(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=TO}function RO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=W;return}}function _n(e){e.groundentity&&(e.velocity=W)}function LO(e,t){}function as(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function Z_(e,t){ef(t,e.origin,20),e.deadflag=2}function zO(e,t){nr()>.9&&Z_(e,t)}function NO(e){e.maxs.z=0}function OO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=ns,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var J_=Array(38).fill({ai:ui,dist:0});J_[38]={ai:ui,dist:0,think:di};Hl={firstframe:0,lastframe:38,frames:J_,endfunc:null};var IO=Array(32).fill({ai:ui,dist:14});D_={firstframe:39,lastframe:70,frames:IO,endfunc:null};var CO=Array(32).fill({ai:Xe,dist:14});F_={firstframe:39,lastframe:70,frames:CO,endfunc:$_};var ss=Array(32).fill({ai:Xe,dist:14});ss[8]={ai:Xe,dist:18,think:rs};ss[14]={ai:Xe,dist:24,think:Kl};ss[20]={ai:Xe,dist:22,think:$l};ns={firstframe:39,lastframe:70,frames:ss,endfunc:$_};var Xl=Array(32).fill({ai:ui,dist:0});Xl[0]={ai:ui,dist:0,think:q_};Xl[31]={ai:ui,dist:0,think:X_};oO={firstframe:71,lastframe:102,frames:Xl,endfunc:AO};var os=Array(32).fill({ai:Ue,dist:0});os[0]={ai:Ue,dist:0,think:q_};os[31]={ai:Ue,dist:0,think:X_};U_={firstframe:71,lastframe:102,frames:os,endfunc:e=>WO(e,Hl)};Vl={firstframe:71,lastframe:102,frames:os,endfunc:SO};var PO=[{ai:qn,dist:3.8,think:di},{ai:qn,dist:19.6},{ai:qn,dist:25.5},{ai:qn,dist:34.6,think:Y_},{ai:qn,dist:27.3},{ai:qn,dist:28.4}];cO={firstframe:103,lastframe:108,frames:PO,endfunc:null};var DO=[{ai:Xe,dist:3.8,think:di},{ai:Xe,dist:19.6},{ai:Xe,dist:25.5},{ai:Xe,dist:34.6,think:Y_},{ai:Xe,dist:27.3},{ai:Xe,dist:28.4}];B_={firstframe:103,lastframe:108,frames:DO,endfunc:null};var FO=[{ai:Xe,dist:.2},{ai:Xe,dist:19.7}];G_={firstframe:0,lastframe:1,frames:FO,endfunc:EO};var UO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:xO},{ai:$,dist:0,think:bO}];W_={firstframe:133,lastframe:139,frames:UO,endfunc:Ot};var BO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:rs},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:j_}];H_={firstframe:109,lastframe:117,frames:BO,endfunc:Ot};var GO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:rs},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Kl},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:j_}];V_={firstframe:118,lastframe:126,frames:GO,endfunc:Ot};var Q_=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:MO},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:RO},{ai:$,dist:12.3,think:_n},{ai:$,dist:20.1,think:_n},{ai:$,dist:-1,think:_n},{ai:$,dist:2.5,think:_n},{ai:$,dist:.5,think:_n},{ai:$,dist:1.8,think:_n},{ai:$,dist:1.2,think:_n},{ai:$,dist:-.4,think:di}];lO={firstframe:140,lastframe:158,frames:Q_,endfunc:Ot};uO={firstframe:140,lastframe:158,frames:Q_,endfunc:Ot};var mi=Array(21).fill({ai:$,dist:16});mi[0]={ai:$,dist:16,think:LO};mi[4]={ai:$,dist:16,think:$l};mi[9]={ai:$,dist:16,think:$l};mi[13]={ai:$,dist:16,think:rs};mi[18]={ai:$,dist:16,think:Kl};dO={firstframe:159,lastframe:179,frames:mi,endfunc:Ot};var HO=Array(6).fill({ai:Ue,dist:0});mO={firstframe:180,lastframe:185,frames:HO,endfunc:Ot};var eg=Array(11).fill({ai:Ue,dist:0});eg[10]={ai:Ue,dist:0,think:di};hO={firstframe:186,lastframe:196,frames:eg,endfunc:Ot};var tg=Array(13).fill({ai:Ue,dist:0});tg[12]={ai:Ue,dist:0,think:di};fO={firstframe:197,lastframe:209,frames:tg,endfunc:Ot};var ng=Array(10).fill({ai:Ue,dist:0});ng[5]={ai:Ue,dist:-7,think:NO};_O={firstframe:210,lastframe:219,frames:ng,endfunc:as};var ig=Array(7).fill({ai:Ue,dist:0});ig[5]={ai:Ue,dist:-7,think:zO};gO={firstframe:220,lastframe:226,frames:ig,endfunc:as};var rg=Array(35).fill({ai:Ue,dist:0});rg[34]={ai:Ue,dist:0,think:Z_};vO={firstframe:227,lastframe:261,frames:rg,endfunc:as};var VO=Array(45).fill({ai:Ue,dist:0});pO={firstframe:262,lastframe:306,frames:VO,endfunc:as};function WO(e,t){e.monsterinfo.current_move=t}F();var Yl=.1,KO=()=>Math.random(),Sh=()=>Math.random();function $O(e,t,n){N(e,t,Yl,n)}function XO(e,t,n){oe(e,t,Yl,n)}function cs(e,t,n){ue(e,t,Yl,n)}function at(e,t,n){_(e,t)}var ir,YO,ql,ag,sg,qO,jO,ZO,JO,QO,eI,tI,nI=1;function iI(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&wn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function rI(e,t){if(e.enemy)return;let n=iI(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,Sr(e),void 0):KO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function aI(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=ql;return}let n=j(e.angles),i=U(e.origin,U(D(n.forward,0),U(D(n.right,0),D(n.up,0)))),r=ti(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=B(P(r,i));pt(e,i,a,15,1e3,nI,0,t)}function sI(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=ir,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=ir,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function oI(e,t){if(Sh()>.8){let n=Sh();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function Sr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=ir:e.monsterinfo.current_move=ql}function cI(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=sg:e.monsterinfo.current_move=ag}function jl(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=ir)}var og=Array(19).fill({ai:at,dist:0});og[18]={ai:at,dist:0,think:rI};ir={firstframe:58,lastframe:76,frames:og,endfunc:null};var lI=[{ai:$O,dist:5}];YO={firstframe:0,lastframe:0,frames:lI,endfunc:null};var uI=[{ai:XO,dist:10}];ql={firstframe:0,lastframe:0,frames:uI,endfunc:null};var cg=Array(31).fill({ai:cs,dist:0});cg[20]={ai:cs,dist:0,think:aI};ag={firstframe:121,lastframe:151,frames:cg,endfunc:Sr};var dI=Array(6).fill({ai:cs,dist:0,think:sI});sg={firstframe:115,lastframe:120,frames:dI,endfunc:null};var lg=Array(10).fill({ai:at,dist:0});lg[9]={ai:at,dist:0,think:jl};qO={firstframe:77,lastframe:86,frames:lg,endfunc:null};var ug=Array(7).fill({ai:at,dist:0,think:oI});ug[6]={ai:at,dist:0,think:jl};jO={firstframe:87,lastframe:93,frames:ug,endfunc:null};var dg=Array(7).fill({ai:at,dist:-2});dg[6]={ai:at,dist:-2,think:jl};ZO={firstframe:94,lastframe:100,frames:dg,endfunc:null};var mI=[{ai:cs,dist:0}];JO={firstframe:0,lastframe:0,frames:mI,endfunc:cI};var hI=[{ai:at,dist:-1}];QO={firstframe:0,lastframe:0,frames:hI,endfunc:Sr};var fI=Array(8).fill({ai:at,dist:0});eI={firstframe:107,lastframe:114,frames:fI,endfunc:Sr};var _I=Array(6).fill({ai:at,dist:0});tI={firstframe:101,lastframe:106,frames:_I,endfunc:Sr};F();F();var Zl=.1;function gI(e,t,n){L(e,Zl,n)}function vI(e,t,n){N(e,t,Zl,n)}function pI(e,t,n){oe(e,t,Zl,n)}var C7=Array.from({length:1},()=>({ai:gI,dist:0})),P7=Array.from({length:1},()=>({ai:vI,dist:5})),D7=Array.from({length:1},()=>({ai:pI,dist:10}));var F7=new Map(Nc.map(e=>[e.name,e]));F();var yI=2166136261,wI=16777619;function mg(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,wI)>>>0;return n>>>0}function Jn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return mg(e,r)}function Mc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return mg(e,n)}var hc=2,AI=1;function qe(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ve(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Qn(e,t,n){return e===void 0?n:ve(e,t)}function Ea(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function va(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ve(n,`${t} element`);return e}function SI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=qe(e,"level");return{frameNumber:Qn(t.frameNumber,"level.frameNumber",0),timeSeconds:Qn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Qn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Qn(t.deltaSeconds,"level.deltaSeconds",0)}}function EI(e){if(e===void 0)return new Lc().getState();let t=qe(e,"rng"),n=qe(t.mt,"rng.mt"),i=va(n.state,"rng.mt.state");return{mt:{index:ve(n.index,"rng.mt.index"),state:i}}}function kI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=qe(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(i.entityIndex,`thinks[${n}].entityIndex`)}})}function xI(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=qe(e,"awareness"),n=(i,r)=>i===null?null:ve(i,r);return{frameNumber:ve(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ve(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ve(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ve(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function bI(e){if(e===void 0)return{};let t=qe(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=qe(r,i),s={};for(let[o,l]of Object.entries(a))s[o]=ve(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ve(a,`${i}[0]`),ve(s,`${i}[1]`),ve(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function TI(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=qe(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:bI(i.fields)}})}function MI(e){let t=qe(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:va(t.activeOrder,"pool.activeOrder"),freeList:va(t.freeList,"pool.freeList"),pendingFree:va(t.pendingFree,"pool.pendingFree")}}function RI(e){let t=qe(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:MI(t.pool),entities:TI(t.entities),thinks:kI(t.thinks),awareness:xI(t.awareness),crossLevelFlags:Qn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Qn(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function LI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=qe(t,`cvars[${n}]`);return{name:Ea(i.name,`cvars[${n}].name`),value:Ea(i.value,`cvars[${n}].value`),flags:ve(i.flags,`cvars[${n}].flags`)}})}function zI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Ea(t,`configstrings[${n}]`))}function NI(e){return e===void 0?{}:qe(e,"gameState")}function Rt(e,t){if(t==null)return e;if(typeof t=="number")return Jn(e,t);if(typeof t=="string")return Mc(e,t);if(typeof t=="boolean")return Jn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Rt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=Mc(n,r),n=Rt(n,t[r]);return n}return e}function OI(e){let t=yI;return t=Jn(t,e.version),t=Jn(t,e.timestamp),t=Mc(t,e.map),t=Jn(t,e.difficulty),t=Jn(t,e.playtimeSeconds),t=Rt(t,e.gameState),t=Rt(t,e.level),t=Rt(t,e.rng),t=Rt(t,e.entities),t=Rt(t,e.cvars),t=Rt(t,e.configstrings),e.player&&(t=Rt(t,e.player)),t>>>0}function hg(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=qe(i,"save"),a=r.version??hc,s=ve(a,"version");if(s<AI)throw new Error(`Unsupported save version ${s}`);if(s>hc&&!n)throw new Error(`Save version ${s} is newer than supported ${hc}`);let o={version:s,timestamp:ve(r.timestamp,"timestamp"),map:Ea(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(r.playtimeSeconds,"playtimeSeconds"),gameState:NI(r.gameState),level:SI(r.level),rng:EI(r.rng),entities:RI(r.entities),cvars:LI(r.cvars),configstrings:zI(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ve(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=OI(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}F();var U7=new Set(Nc.filter(e=>e.save).map(e=>e.name));var Eh=globalThis.TextEncoder;function ei(e){return hg({...e},{allowNewerVersion:!0})}function II(e){return Eh?new Eh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var CI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:ei(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:ei(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:ei(e.save)}))}},PI=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((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(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:ei(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:ei(t.save)}))}},Jl=class qi{constructor(t={}){let{dbName:n=qi.DEFAULT_DB_NAME,storeName:i=qi.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new PI(r,n,i):this.adapter=new CI}async save(t,n,i={}){let r=ei(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:II(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return hg(i.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,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(qi.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(qi.QUICK_SLOT,t)}};Jl.DEFAULT_DB_NAME="quake2ts-saves";Jl.DEFAULT_STORE="saves";Jl.QUICK_SLOT="quicksave";F();Jt();F();F();var B7=ar();F();Jt();var G7=[{id:ie.QuadDamage,priority:1},{id:ie.Invulnerability,priority:2},{id:ie.EnviroSuit,priority:3},{id:ie.Rebreather,priority:4},{id:ie.Silencer,priority:5}];F();F();var DI=new Map,FI=["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"],fg=async(e,t)=>{for(let n of FI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);DI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var UI=new Map,BI=["d_left","d_right","d_up","d_down"],_g=async(e,t)=>{for(let n of BI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);UI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Ql=[],GI=0,gg=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);Ql.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Ql.length>0&&(GI=Ql[0].width),await r0(e,t),await fg(e,t),await _g(e,t)};var eu=[{type:"null"},{type:"armor",id:vn.BODY},{type:"armor",id:vn.COMBAT},{type:"armor",id:vn.JACKET},{type:"armor",id:vn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:H.Grapple},{type:"weapon",id:H.Blaster},{type:"weapon",id:H.ChainFist},{type:"weapon",id:H.Shotgun},{type:"weapon",id:H.SuperShotgun},{type:"weapon",id:H.Machinegun},{type:"weapon",id:H.EtfRifle},{type:"weapon",id:H.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:H.GrenadeLauncher},{type:"weapon",id:H.ProxLauncher},{type:"weapon",id:H.RocketLauncher},{type:"weapon",id:H.HyperBlaster},{type:"weapon",id:H.IonRipper},{type:"weapon",id:H.PlasmaBeam},{type:"weapon",id:H.Railgun},{type:"weapon",id:H.Phalanx},{type:"weapon",id:H.BFG10K},{type:"weapon",id:H.Disruptor},{type:"ammo",id:I.Shells},{type:"ammo",id:I.Bullets},{type:"ammo",id:I.Cells},{type:"ammo",id:I.Rockets},{type:"ammo",id:I.Slugs},{type:"ammo",id:I.MagSlugs},{type:"ammo",id:I.Flechettes},{type:"ammo",id:I.Prox},{type:"ammo",id:I.Nuke},{type:"ammo",id:I.Rounds},{type:"powerup",id:ie.QuadDamage},{type:"powerup",id:ie.QuadFire},{type:"powerup",id:ie.Invulnerability},{type:"powerup",id:ie.Invisibility},{type:"powerup",id:ie.Silencer},{type:"powerup",id:ie.Rebreather},{type:"powerup",id:ie.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ie.Bandolier},{type:"powerup",id:ie.AmmoPack},{type:"powerup",id:ie.IRGoggles},{type:"powerup",id:ie.DoubleDamage},{type:"powerup",id:ie.SphereVengeance},{type:"powerup",id:ie.SphereHunter},{type:"powerup",id:ie.SphereDefender},{type:"powerup",id:ie.Doppelganger},{type:"powerup",id:ie.TagToken},{type:"key",id:ke.DataCD},{type:"key",id:ke.PowerCube},{type:"key",id:ke.ExplosiveCharges},{type:"key",id:ke.Yellow},{type:"key",id:ke.PowerCore},{type:"key",id:ke.Pyramid},{type:"key",id:ke.DataSpinner},{type:"key",id:ke.Pass},{type:"key",id:ke.Blue},{type:"key",id:ke.Red},{type:"key",id:ke.Green},{type:"key",id:ke.CommanderHead},{type:"key",id:ke.Airstrike},{type:"key",id:ke.NukeContainer},{type:"key",id:ke.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ke.RedFlag},{type:"key",id:ke.BlueFlag},{type:"powerup",id:ie.TechResistance},{type:"powerup",id:ie.TechStrength},{type:"powerup",id:ie.TechHaste},{type:"powerup",id:ie.TechRegeneration},{type:"powerup",id:ie.Flashlight},{type:"powerup",id:ie.Compass}];function hi(e,t,n){return e+(t-e)*n}function tu(e,t,n){return hi(e,t,n)}function ls(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=l.modelIndex??l.modelindex,m=l.skinNum??l.skinnum;if(u===void 0)continue;let d=i.getModelName(u);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let g={x:hi(c.origin.x,l.origin.x,n),y:hi(c.origin.y,l.origin.y,n),z:hi(c.origin.z,l.origin.z,n)},p={x:tu(c.angles.x,l.angles.x,n),y:tu(c.angles.y,l.angles.y,n),z:tu(c.angles.z,l.angles.z,n)},v=l.frame,w=c.frame,M=c.scale!==void 0?c.scale:1,E=l.scale!==void 0?l.scale:1,y=hi(M,E,n),k=J=>J===void 0||J===0?255:J,b=k(c.alpha),T=k(l.alpha),x=hi(b,T,n)/255,S=me.create();me.translate(S,S,[g.x,g.y,g.z]),me.rotateZ(S,S,p.z*Math.PI/180),me.rotateY(S,S,p.y*Math.PI/180),me.rotateX(S,S,p.x*Math.PI/180),me.scale(S,S,[y,y,y]);let z=m!==void 0&&m>0?i.getImageName(m):void 0;f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,skin:z,alpha:x}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:v,lerp:n},transform:S,alpha:x})}return a}var HI=32768,us=class{constructor(t,n){this.configstrings=new Array(HI).fill("");this.entities=new Map;this.previousEntities=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,i,r,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=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.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&jd){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Rn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&So&&(t.modelindex=n.modelindex),i&xo&&(t.modelindex2=n.modelindex2),i&bo&&(t.modelindex3=n.modelindex3),i&To&&(t.modelindex4=n.modelindex4),i&po&&(t.frame=n.frame),i&ko&&(t.frame=n.frame),(i&Br||i&Vr)&&(t.skinnum=n.skinnum),(i&Ur||i&Hr)&&(t.effects=n.effects),(i&Fr||i&Gr)&&(t.renderfx=n.renderfx),i&fo&&(t.origin.x=n.origin.x),i&_o&&(t.origin.y=n.origin.y),i&wo&&(t.origin.z=n.origin.z),i&Ao&&(t.angles.x=n.angles.x),i&go&&(t.angles.y=n.angles.y),i&vo&&(t.angles.z=n.angles.z),i&Mo&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&Ro&&(t.sound=n.sound),i&yo&&(t.event=n.event),i&Lo&&(t.solid=n.solid),i&Eo&&(t.alpha=n.alpha),i&zo&&(t.scale=n.scale),i&No&&(t.instanceBits=n.instanceBits),i&Oo&&(t.loopVolume=n.loopVolume),r&Io&&(t.loopAttenuation=n.loopAttenuation),r&Co&&(t.owner=n.owner),r&Po&&(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,i,r,a,s,o){if(!this.imports?.engine.audio)return;let l=i??1,c=r??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,i,r,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 r=0,a=0,s=0,o=Bt,c=ia(this.stats,Vi.QuadDamage)?4:1;switch(n){case pm:r=-2,o={x:-2,y:0,z:0};break;case xm:r=-4,o={x:-4,y:0,z:0};break;case vm:r=-1,a=Math.random()-.5;break;case ym:case wm:case Am:r=-.5,a=Math.random()-.5;break;case Sm:r=-3,o={x:-3,y:0,z:0};break;case Em:case km:r=-2,o={x:-2,y:0,z:0};break;case bm:r=-5,o={x:-2,y:0,z:0};break;case Tm:case gm:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*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,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}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,i){}convertFrameToPredictionState(t){let n=t.playerState,i={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>=eu.length)break;let u=eu[l];switch(u.type){case"weapon":i.ownedWeapons.add(u.id);break;case"ammo":i.ammo.counts[u.id]||(i.ammo.counts[u.id]=0),i.ammo.counts[u.id]=c;break;case"armor":i.armor={armorType:u.id,armorCount:c};break;case"powerup":i.powerups.set(u.id,c);break;case"key":i.keys.add(u.id);break;case"health":break;case"item":i.items.add(u.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Hi.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,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:Bt,kick_origin:Bt,gunoffset:Bt,gunangles:Bt,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 xt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return hn(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return hn(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return ls(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var fi=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=we.Models&&t<we.Models+Ui){let i=t-we.Models;this.models[i]=n}else if(t>=we.Sounds&&t<we.Sounds+Bi){let i=t-we.Sounds;this.sounds[i]=n}else if(t>=we.Images&&t<we.Images+Gi){let i=t-we.Images;this.images[i]=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 ds=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}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 ms=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;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(i=>{n.push({label:`${i.name} - ${i.map} (${vg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),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(i=>{n.push({label:`${i.name} - ${i.map} (${vg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),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 vg(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var hs=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 i=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 i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Er=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 i=parseFloat(n);isNaN(i)||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 i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||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 i=parseFloat(n);isNaN(i)||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 i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var fs=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.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 _s=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}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 gs=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function pg(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,l=r.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((u,m)=>{let d=c+40+m*o,f=u.label;if(u.type==="input"&&u.getValue){if(f+=`: ${u.getValue()}`,m===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(m===t.selectedIndex){let w=f.replace(/\^[0-9]/g,"").length*8,M=(n-w)/2;e.drawString(M-16,d,"\r")}e.drawCenterString(d,f)})}var kr=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Fi.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var vs=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(i){console.warn("Failed to write to localStorage",i)}}};var ps=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,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*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 ys=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,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-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 ws=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,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var As=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}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 Ss=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.prediction=null;this.driver=new As,this.options=t,this.netchan=new Pm,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}setPrediction(t){this.prediction=t}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();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>_m&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new $o;i.writeByte(mn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Im(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new Cm(i.buffer);this.parser=new Do(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Wi;t.writeByte(mn.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new Wi;n.writeByte(mn.stringcmd);let i=`\\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 ${Dr} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new Wi;o.writeByte(mn.stringcmd),o.writeString("new");let l=this.netchan.transmit(o.getData());this.driver.send(l),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 Wi;t.writeByte(mn.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){if(t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame),this.prediction&&t.playerState){let n=t.playerState,i={...xt(),origin:{x:n.origin.x,y:n.origin.y,z:n.origin.z},velocity:{x:n.velocity.x,y:n.velocity.y,z:n.velocity.z},viewAngles:{x:n.viewangles.x,y:n.viewangles.y,z:n.viewangles.z},deltaAngles:{x:n.delta_angles.x,y:n.delta_angles.y,z:n.delta_angles.z},pmFlags:n.pm_flags,pmType:n.pm_type,gravity:n.gravity,health:n.stats[0]},r={frame:t.serverFrame,timeMs:0,state:i};this.prediction.setAuthoritative(r)}}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var VI=[{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"}],kn=class{constructor(t=VI){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 yg(){return new kn}function nu(e){return e}function xr(e){return e.trim().toLowerCase()}var WI=250,iu=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 i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},Es=(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))(Es||{}),KI={"+attack":mt.Attack,"+use":mt.Use,"+holster":mt.Holster,"+jump":mt.Jump,"+crouch":mt.Crouch},$I=new Map(Object.values(Es).map(e=>[xr(e),e]));function XI(e){return $I.get(xr(e))}function br(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var _i=class{constructor(t={},n=new kn){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.sequence=0;this.bindings=n,this.forwardSpeed=t.forwardSpeed??om,this.sideSpeed=t.sideSpeed??cm,this.upSpeed=t.upSpeed??lm,this.yawSpeed=t.yawSpeed??um,this.pitchSpeed=t.pitchSpeed??dm,this.sensitivity=t.sensitivity??mm,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=br()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=br()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=br()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=br()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,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=br(),i){this.pollGamepads(n),this.applyTouchState(n);let r=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)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let z=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+z*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let z=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+z*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let z=this.sampleMouseDelta(),J=fm(z,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+J.x,y:u.y+J.y,z:0}}let m=hm(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),M=this.sample("+speed",t,n),E=this.sample("+jump",t,n),y=this.sample("+crouch",t,n),k=this.runByDefault?M.active?.5:1:M.active?1:.5,b=this.forwardSpeed*(d.fraction-f.fraction)*k,T=this.sideSpeed*(p.fraction-g.fraction)*k,O=this.upSpeed*(v.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*k,T+=this.sideSpeed*this.gamepadMove.x*k),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*k,T+=this.sideSpeed*this.touchMove.x*k),this.jumpAddsUpMove&&E.fraction>0&&(O+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&y.fraction>0&&(O-=this.upSpeed*y.fraction),b=this.clampMove(b,this.forwardSpeed),T=this.clampMove(T,this.sideSpeed),O=this.clampMove(O,this.upSpeed);let x=this.collectButtonBits(t,n),S=Math.min(Math.max(Math.round(t),1),WI);return(this.anyPressed||x!==mt.None)&&(x|=mt.Any),this.anyPressed=!1,this.sequence++,{msec:S,buttons:x,angles:{...this.viewAngles},forwardmove:b,sidemove:T,upmove:O,serverFrame:i,sequence:this.sequence,lightlevel:0,impulse:0}}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 i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.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=r.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,l);u&&i.add(m);let d=this.gamepadButtons.get(m)??!1;u!==d&&(this.applyCommand(this.bindings.getBinding(m),u,m,t),this.gamepadButtons.set(m,u))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!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[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=XI(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&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 i=mt.None;for(let[r,a]of Object.entries(KI)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new iu,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,i){return this.lookupButton(t).sample(n,i)}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 ks=class{constructor(t,n=new _i(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var xs={x:0,y:0,z:0},wg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(wg||{});function YI(e){let t=R=>{let V={x:0,y:0,z:0};return e.engine.trace(R,R,V,V).contents||0},n=new ua(e.engine.trace,t),i=new la,r=new Jd,a=new us(e);a.setView(i);let s=!1,o=null,l=0,c=new hs,u=new ps,m=new ys,d=new ws,f=new kr(new vs),g,p,v=new fi,w,M=0,E=!1,k=i0(e,{get tickRate(){return 10},get frameTimeMs(){return w?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return v},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return E}}),b=n0(k),T=new Ss({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 J}}),O=new gs(c,T);a.setCallbacks({onCenterPrint:R=>b.ParseCenterPrint(R,0,!1),onPrint:(R,V)=>b.NotifyMessage(0,V,!1),onConfigString:(R,V)=>{v.set(R,V),b.ParseConfigString(R,V)},onServerData:(R,V)=>{V&&V>0?r.setFrameDuration(1e3/V):r.setFrameDuration(100)}}),r.setHandler(a);let x,S,z,J=90,ce=!1;if(e.host){p=new Er(c,e.host),g=new _s(c,p,e.host);let R=new Map;if(e.host.cvars){for(let V of e.host.cvars.list())R.set(V.name,{value:V.string,setValue:ee=>e.host.cvars.setValue(V.name,ee)});f.loadCvars(R)}}if(e.host?.commands&&(e.host.commands.register("playdemo",R=>{if(R.length<1){console.log("usage: playdemo <filename>");return}let V=R[0];console.log(`playdemo: ${V}`),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 R=a0();console.log(`Crosshair changed to index ${R}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{ce=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{ce=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{c.isActive()?c.closeAll():g&&c.pushMenu(g.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",R=>{if(R.length<1){console.log("usage: connect <address>");return}let V=R[0];console.log(`Connecting to ${V}...`),T.connect(V).catch(ee=>{console.error("Failed to connect:",ee),m.show("Connection Failed",ee instanceof Error?ee.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{T.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Fi.Archive,onChange:V=>{let ee=V.number;isNaN(ee)||(J=Math.max(1,Math.min(179,ee)))},description:"Field of view"});let R=e.host.cvars.get("fov");if(R){let V=R.number;isNaN(V)||(J=Math.max(1,Math.min(179,V)))}}return{loadingScreen:u,errorDialog:m,init(R){this.Init(R)},Init(R){w=R,R?.state&&n.setAuthoritative(R),b.Init(),e.engine.assets&&e.engine.renderer&&(u.start(100,"Loading assets..."),gg(e.engine.renderer,e.engine.assets).then(()=>{u.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(c.isActive()||document.body.requestPointerLock?.())})},predict(R){return c.isActive(),T.isConnected()&&T.sendCommand(R),n.enqueueCommand(R)},handleInput(R,V){if(!c.isActive())return!1;if(!V)return!0;let ee=R.toLowerCase();return ee==="arrowup"||ee==="w"?c.handleInput("up"):ee==="arrowdown"||ee==="s"?c.handleInput("down"):ee==="arrowleft"||ee==="a"?c.handleInput("left"):ee==="arrowright"||ee==="d"?c.handleInput("right"):ee==="enter"||ee===" "?c.handleInput("select"):ee==="escape"?c.getState().activeMenu?.parent?c.handleInput("back"):!1:R.length===1?c.handleInput("char",R):R==="Backspace"?c.handleInput("left"):!0},toggleMenu(){if(c.isActive()){if(c.closeAll(),e.host?.cvars){let R=e.host.cvars.list().map(V=>({name:V.name,value:V.string,flags:V.flags}));f.saveCvars(R)}}else g&&c.pushMenu(g.createPauseMenu())},createMainMenu(R,V,ee,yt,be){let Le=new ms(c,V,ee,yt,be),wt=p;if(!wt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");wt=new Er(c,e.host)}let xn=e.engine.assets,Ag={findByExtension:bn=>xn?xn.listFiles(bn):[]},Sg=new fs(c,Ag,bn=>{console.log(`Starting map: ${bn}`),e.host?.commands.execute(`map ${bn}`)}),Eg=new ds(c,Le,{...R,optionsFactory:wt,mapsFactory:Sg,multiplayerFactory:O,onSetDifficulty:bn=>{e.host?.cvars&&e.host.cvars.setValue("skill",bn.toString())}});return{menuSystem:c,factory:Eg}},render(R){let V=[];if(s){let be=R.nowMs,Le=M>0?Math.max(0,be-M):0;M=be,r.update(Le),x=a.getPredictionState(r.getCurrentTime())}else M=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),w=R.latest),R.previous?.state&&R.latest?.state?(x=hn(R.previous.state,R.latest.state,R.alpha),R.latest.state.packetEntities&&R.previous.state.packetEntities&&(V=ls(R.latest.state.packetEntities,R.previous.state.packetEntities,R.alpha,v,e))):x=R.latest?.state??R.previous?.state??n.getPredictedState();let ee=R.latest&&R.previous?Math.max(0,R.latest.timeMs-R.previous.timeMs):0;S=i.sample(x,ee);let yt={};if(x){let{origin:be,viewAngles:Le}=x;z=new fd,z.position=_e.fromValues(be.x,be.y,be.z);let wt=S?.offset??{x:0,y:0,z:0};_e.add(z.position,z.position,[wt.x,wt.y,wt.z]);let xn=S?.angles??{x:0,y:0,z:0};z.angles=_e.fromValues(Le.x+xn.x,Le.y+xn.y,Le.z+xn.z),z.fov=ce?40:J,z.aspect=4/3,e.engine.renderer&&(z.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&z){let be;if(e.engine.assets){let Le=v.getModelName(1);if(Le){let wt=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:z,world:be,dlights:[]},V)}if(e.engine.renderer&&x&&x.client){let be=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},Le=R.latest?.timeMs??0;this.DrawHUD(be,Le)}return yt},DrawHUD(R,V){if(!e.engine.renderer)return;let ee=e.engine.renderer,yt=ee.width,be=ee.height;if(x&&x.client){let Le={origin:x.origin,velocity:x.velocity,viewAngles:x.viewAngles,onGround:Bn(x.pmFlags,kt.OnGround),waterLevel:x.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:x.damageAlpha??0,damageIndicators:x.damageIndicators??[],blend:x.blend??[0,0,0,0],pickupIcon:x.pickupIcon,centerPrint:void 0,notify:void 0,stats:x.stats?[...x.stats]:new Array(32).fill(0),kick_angles:xs,kick_origin:xs,gunoffset:xs,gunangles:xs,gunindex:0,pm_type:x.pm_type??0,pm_time:x.pm_time??0,pm_flags:x.pmFlags,gun_frame:x.gun_frame??0,rdflags:x.rdflags??0,fov:x.fov??90};Le.stats[Ce.STAT_HEALTH]=x.health??0,Le.stats[Ce.STAT_AMMO]=x.ammo??0,Le.stats[Ce.STAT_ARMOR]=x.armor??0,ee.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:yt,height:be},{x:0,y:0,width:yt,height:be},1,0,Le),ee.end2D()}c.isActive()&&pg(e.engine.renderer,c.getState(),e.engine.renderer.width,e.engine.renderer.height),x&&x.client&&d.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,x.client),m.render(e.engine.renderer),u.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),w=void 0,x=void 0,e.host?.cvars){let R=e.host.cvars.list().map(V=>({name:V.name,value:V.string,flags:V.flags}));f.saveCvars(R)}},get prediction(){return n},get lastRendered(){return x},get view(){return i},get lastView(){return S},get camera(){return z},demoPlayback:r,get isDemoPlaying(){return s},get currentDemoName(){return o},get mode(){return l},startDemoPlayback(R,V){r.loadDemo(R),r.setHandler(a),s=!0,o=V,l=1,M=0,v.clear()},stopDemoPlayback(){r.stop(),s=!1,o=null,l=0},ParseCenterPrint(R){b.ParseCenterPrint(R,0,!1)},ParseNotify(R){b.NotifyMessage(0,R,!1)},showSubtitle(R,V){b.ShowSubtitle(R,V)},ParseConfigString(R,V){v.set(R,V),b.ParseConfigString(R,V)},demoHandler:a,multiplayer:T,configStrings:v}}return Mg(qI);})();
169
+ }`;var pd=class{constructor(){this._position=_e.create(),this._angles=_e.create(),this._bobAngles=_e.create(),this._bobOffset=_e.create(),this._kickAngles=_e.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=me.create(),this._projectionMatrix=me.create(),this._viewProjectionMatrix=me.create(),this._dirty=!0}get position(){return this._position}set position(e){_e.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){_e.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){_e.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){_e.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){_e.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=me.create();return me.perspective(t,e*gi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*gi,this._aspect,this._near,this._far);let e=me.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],i=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,r=t*gi,a=n*gi,s=i*gi,o=me.create();me.identity(o),me.rotateZ(o,o,-a),me.rotateY(o,o,-r),me.rotateX(o,o,-s);let l=me.create();me.multiply(l,e,o);let c=_e.add(_e.create(),this._position,this._bobOffset),u=_e.negate(_e.create(),c),m=_e.create();_e.transformMat4(m,u,o);let d=_e.fromValues(m[1]||0,m[2]||0,m[0]||0);me.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],me.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var oy=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 qs(t)}}reset(){this.offset=0}getOffset(){return this.offset}},cy=4,ku=0,Eu=1,ly=2;function On(e){let t=e.length;for(;--t>=0;)e[t]=0}var uy=0,vd=1,dy=2,my=3,hy=258,co=29,Ni=256,Ei=Ni+1+co,Ln=30,lo=19,yd=2*Ei+1,rn=15,Is=16,fy=7,uo=256,wd=16,Ad=17,Sd=18,Zs=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]),Ir=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]),_y=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),kd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gy=512,Et=new Array((Ei+2)*2);On(Et);var wi=new Array(Ln*2);On(wi);var bi=new Array(gy);On(bi);var xi=new Array(hy-my+1);On(xi);var mo=new Array(co);On(mo);var Cr=new Array(Ln);On(Cr);function Cs(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}var Ed,bd,xd;function Ps(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var Td=e=>e<256?bi[e]:bi[256+(e>>>7)],Ti=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ge=(e,t,n)=>{e.bi_valid>Is-n?(e.bi_buf|=t<<e.bi_valid&65535,Ti(e,e.bi_buf),e.bi_buf=t>>Is-e.bi_valid,e.bi_valid+=n-Is):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},lt=(e,t,n)=>{Ge(e,n[t*2],n[t*2+1])},Md=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},py=e=>{e.bi_valid===16?(Ti(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)},vy=(e,t)=>{let n=t.dyn_tree,i=t.max_code,r=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,m,d,f,g,v=0;for(d=0;d<=rn;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<yd;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,v++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,f=0,u>=o&&(f=s[u-o]),g=n[u*2],e.opt_len+=g*(d+f),a&&(e.static_len+=g*(r[u*2+1]+f)));if(v!==0){do{for(d=l-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[l]--,v-=2}while(v>0);for(d=l;d!==0;d--)for(u=e.bl_count[d];u!==0;)m=e.heap[--c],!(m>i)&&(n[m*2+1]!==d&&(e.opt_len+=(d-n[m*2+1])*n[m*2],n[m*2+1]=d),u--)}},Rd=(e,t,n)=>{let i=new Array(rn+1),r=0,a,s;for(a=1;a<=rn;a++)r=r+n[a-1]<<1,i[a]=r;for(s=0;s<=t;s++){let o=e[s*2+1];o!==0&&(e[s*2]=Md(i[o]++,o))}},yy=()=>{let e,t,n,i,r,a=new Array(rn+1);for(n=0,i=0;i<co-1;i++)for(mo[i]=n,e=0;e<1<<Zs[i];e++)xi[n++]=i;for(xi[n-1]=i,r=0,i=0;i<16;i++)for(Cr[i]=r,e=0;e<1<<Ir[i];e++)bi[r++]=i;for(r>>=7;i<Ln;i++)for(Cr[i]=r<<7,e=0;e<1<<Ir[i]-7;e++)bi[256+r++]=i;for(t=0;t<=rn;t++)a[t]=0;for(e=0;e<=143;)Et[e*2+1]=8,e++,a[8]++;for(;e<=255;)Et[e*2+1]=9,e++,a[9]++;for(;e<=279;)Et[e*2+1]=7,e++,a[7]++;for(;e<=287;)Et[e*2+1]=8,e++,a[8]++;for(Rd(Et,Ei+1,a),e=0;e<Ln;e++)wi[e*2+1]=5,wi[e*2]=Md(e,5);Ed=new Cs(Et,Zs,Ni+1,Ei,rn),bd=new Cs(wi,Ir,0,Ln,rn),xd=new Cs(new Array(0),_y,0,lo,fy)},Ld=e=>{let t;for(t=0;t<Ei;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Ln;t++)e.dyn_dtree[t*2]=0;for(t=0;t<lo;t++)e.bl_tree[t*2]=0;e.dyn_ltree[uo*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},zd=e=>{e.bi_valid>8?Ti(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},bu=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},Ds=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&bu(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!bu(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},xu=(e,t,n)=>{let i,r,a=0,s,o;if(e.sym_next!==0)do i=e.pending_buf[e.sym_buf+a++]&255,i+=(e.pending_buf[e.sym_buf+a++]&255)<<8,r=e.pending_buf[e.sym_buf+a++],i===0?lt(e,r,t):(s=xi[r],lt(e,s+Ni+1,t),o=Zs[s],o!==0&&(r-=mo[s],Ge(e,r,o)),i--,s=Td(i),lt(e,s,n),o=Ir[s],o!==0&&(i-=Cr[s],Ge(e,i,o)));while(a<e.sym_next);lt(e,uo,t)},Js=(e,t)=>{let n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,a=t.stat_desc.elems,s,o,l=-1,c;for(e.heap_len=0,e.heap_max=yd,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--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=l,s=e.heap_len>>1;s>=1;s--)Ds(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Ds(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++,Ds(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],vy(e,t),Rd(n,l,e.bl_count)},Tu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[wd*2]++):o<=10?e.bl_tree[Ad*2]++:e.bl_tree[Sd*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},Mu=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,l=7,c=4;for(s===0&&(l=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<l&&a===s)){if(o<c)do lt(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(lt(e,a,e.bl_tree),o--),lt(e,wd,e.bl_tree),Ge(e,o-3,2)):o<=10?(lt(e,Ad,e.bl_tree),Ge(e,o-3,3)):(lt(e,Sd,e.bl_tree),Ge(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},wy=e=>{let t;for(Tu(e,e.dyn_ltree,e.l_desc.max_code),Tu(e,e.dyn_dtree,e.d_desc.max_code),Js(e,e.bl_desc),t=lo-1;t>=3&&e.bl_tree[kd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},Ay=(e,t,n,i)=>{let r;for(Ge(e,t-257,5),Ge(e,n-1,5),Ge(e,i-4,4),r=0;r<i;r++)Ge(e,e.bl_tree[kd[r]*2+1],3);Mu(e,e.dyn_ltree,t-1),Mu(e,e.dyn_dtree,n-1)},Sy=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return ku;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return Eu;for(n=32;n<Ni;n++)if(e.dyn_ltree[n*2]!==0)return Eu;return ku},Ru=!1,ky=e=>{Ru||(yy(),Ru=!0),e.l_desc=new Ps(e.dyn_ltree,Ed),e.d_desc=new Ps(e.dyn_dtree,bd),e.bl_desc=new Ps(e.bl_tree,xd),e.bi_buf=0,e.bi_valid=0,Ld(e)},Nd=(e,t,n,i)=>{Ge(e,(uy<<1)+(i?1:0),3),zd(e),Ti(e,n),Ti(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Ey=e=>{Ge(e,vd<<1,3),lt(e,uo,Et),py(e)},by=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===ly&&(e.strm.data_type=Sy(e)),Js(e,e.l_desc),Js(e,e.d_desc),s=wy(e),r=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=r&&(r=a)):r=a=n+5,n+4<=r&&t!==-1?Nd(e,t,n,i):e.strategy===cy||a===r?(Ge(e,(vd<<1)+(i?1:0),3),xu(e,Et,wi)):(Ge(e,(dy<<1)+(i?1:0),3),Ay(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),xu(e,e.dyn_ltree,e.dyn_dtree)),Ld(e),i&&zd(e)},xy=(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[(xi[n]+Ni+1)*2]++,e.dyn_dtree[Td(t)*2]++),e.sym_next===e.sym_end),Ty=ky,My=Nd,Ry=by,Ly=xy,zy=Ey,Ny={_tr_init:Ty,_tr_stored_block:My,_tr_flush_block:Ry,_tr_tally:Ly,_tr_align:zy},Oy=(e,t,n,i)=>{let r=e&65535|0,a=e>>>16&65535|0,s=0;for(;n!==0;){s=n>2e3?2e3:n,n-=s;do r=r+t[i++]|0,a=a+r|0;while(--s);r%=65521,a%=65521}return r|a<<16|0},Mi=Oy,Iy=()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=e&1?3988292384^e>>>1:e>>>1;t[n]=e}return t},Cy=new Uint32Array(Iy()),Py=(e,t,n,i)=>{let r=Cy,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},xe=Py,on={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"},un={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:Dy,_tr_stored_block:Qs,_tr_flush_block:Fy,_tr_tally:Ft,_tr_align:Uy}=Ny,{Z_NO_FLUSH:Ut,Z_PARTIAL_FLUSH:By,Z_FULL_FLUSH:Gy,Z_FINISH:Je,Z_BLOCK:Lu,Z_OK:ze,Z_STREAM_END:zu,Z_STREAM_ERROR:ut,Z_DATA_ERROR:Hy,Z_BUF_ERROR:Fs,Z_DEFAULT_COMPRESSION:Vy,Z_FILTERED:Wy,Z_HUFFMAN_ONLY:Rr,Z_RLE:Ky,Z_FIXED:$y,Z_DEFAULT_STRATEGY:Xy,Z_UNKNOWN:Yy,Z_DEFLATED:Yr}=un,qy=9,jy=15,Zy=8,Jy=29,Qy=256,eo=Qy+1+Jy,ew=30,tw=19,nw=2*eo+1,iw=15,ee=3,Dt=258,dt=Dt+ee+1,rw=32,zn=42,ho=57,to=69,no=73,io=91,ro=103,an=113,vi=666,Ie=1,In=2,cn=3,Cn=4,aw=3,sn=(e,t)=>(e.msg=on[t],t),Nu=e=>e*2-(e>4?9:0),Pt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},sw=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do n=e.head[--i],e.head[i]=n>=r?n-r:0;while(--t);t=r,i=t;do n=e.prev[--i],e.prev[i]=n>=r?n-r:0;while(--t)},ow=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Bt=ow,We=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))},Ke=(e,t)=>{Fy(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,We(e.strm)},ae=(e,t)=>{e.pending_buf[e.pending++]=t},pi=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},ao=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),r===0?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),e.state.wrap===1?e.adler=Mi(e.adler,t,r,n):e.state.wrap===2&&(e.adler=xe(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},Od=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-dt?e.strstart-(e.w_size-dt):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+Dt,f=c[i+s-1],g=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==g||c[r+s-1]!==f||c[r]!==c[i]||c[++r]!==c[i+1])){i+=2,r++;do;while(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]===c[++r]&&i<d);if(a=Dt-(d-i),i=d-Dt,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],g=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Nn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-dt)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),sw(e),i+=t),e.strm.avail_in===0)break;if(n=ao(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=ee)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Bt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Bt(e,e.ins_h,e.window[r+ee-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<ee)););}while(e.lookahead<dt&&e.strm.avail_in!==0)},Id=(e,t)=>{let n=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,i,r,a,s=0,o=e.strm.avail_in;do{if(i=65535,a=e.bi_valid+42>>3,e.strm.avail_out<a||(a=e.strm.avail_out-a,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>a&&(i=a),i<n&&(i===0&&t!==Je||t===Ut||i!==r+e.strm.avail_in)))break;s=t===Je&&i===r+e.strm.avail_in?1:0,Qs(e,0,0,s),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,We(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(ao(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}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?Cn:t!==Ut&&t!==Je&&e.strm.avail_in===0&&e.strstart===e.block_start?In:(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&&(ao(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,r=e.strstart-e.block_start,(r>=n||(r||t===Je)&&t!==Ut&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Je&&e.strm.avail_in===0&&i===r?1:0,Qs(e,e.block_start,i,s),e.block_start+=i,We(e.strm)),s?cn:Ie)},Us=(e,t)=>{let n,i;for(;;){if(e.lookahead<dt){if(Nn(e),e.lookahead<dt&&t===Ut)return Ie;if(e.lookahead===0)break}if(n=0,e.lookahead>=ee&&(e.ins_h=Bt(e,e.ins_h,e.window[e.strstart+ee-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-dt&&(e.match_length=Od(e,n)),e.match_length>=ee)if(i=Ft(e,e.strstart-e.match_start,e.match_length-ee),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ee){e.match_length--;do e.strstart++,e.ins_h=Bt(e,e.ins_h,e.window[e.strstart+ee-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=Bt(e,e.ins_h,e.window[e.strstart+1]);else i=Ft(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ke(e,!1),e.strm.avail_out===0))return Ie}return e.insert=e.strstart<ee-1?e.strstart:ee-1,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Cn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Ie:In},Tn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<dt){if(Nn(e),e.lookahead<dt&&t===Ut)return Ie;if(e.lookahead===0)break}if(n=0,e.lookahead>=ee&&(e.ins_h=Bt(e,e.ins_h,e.window[e.strstart+ee-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=ee-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-dt&&(e.match_length=Od(e,n),e.match_length<=5&&(e.strategy===Wy||e.match_length===ee&&e.strstart-e.match_start>4096)&&(e.match_length=ee-1)),e.prev_length>=ee&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-ee,i=Ft(e,e.strstart-1-e.prev_match,e.prev_length-ee),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Bt(e,e.ins_h,e.window[e.strstart+ee-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=ee-1,e.strstart++,i&&(Ke(e,!1),e.strm.avail_out===0))return Ie}else if(e.match_available){if(i=Ft(e,0,e.window[e.strstart-1]),i&&Ke(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Ie}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Ft(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<ee-1?e.strstart:ee-1,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Cn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Ie:In},cw=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Dt){if(Nn(e),e.lookahead<=Dt&&t===Ut)return Ie;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ee&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+Dt;do;while(i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&i===s[++r]&&r<a);e.match_length=Dt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ee?(n=Ft(e,1,e.match_length-ee),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Ft(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ke(e,!1),e.strm.avail_out===0))return Ie}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Cn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Ie:In},lw=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Nn(e),e.lookahead===0)){if(t===Ut)return Ie;break}if(e.match_length=0,n=Ft(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ke(e,!1),e.strm.avail_out===0))return Ie}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Cn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Ie:In};function ct(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}var yi=[new ct(0,0,0,0,Id),new ct(4,4,8,4,Us),new ct(4,5,16,8,Us),new ct(4,6,32,32,Us),new ct(4,4,16,16,Tn),new ct(8,16,32,32,Tn),new ct(8,16,128,128,Tn),new ct(8,32,128,256,Tn),new ct(32,128,258,1024,Tn),new ct(32,258,258,4096,Tn)],uw=e=>{e.window_size=2*e.w_size,Pt(e.head),e.max_lazy_match=yi[e.level].max_lazy,e.good_match=yi[e.level].good_length,e.nice_match=yi[e.level].nice_length,e.max_chain_length=yi[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ee-1,e.match_available=0,e.ins_h=0};function dw(){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=Yr,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(nw*2),this.dyn_dtree=new Uint16Array((2*ew+1)*2),this.bl_tree=new Uint16Array((2*tw+1)*2),Pt(this.dyn_ltree),Pt(this.dyn_dtree),Pt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(iw+1),this.heap=new Uint16Array(2*eo+1),Pt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*eo+1),Pt(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 Oi=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==zn&&t.status!==ho&&t.status!==to&&t.status!==no&&t.status!==io&&t.status!==ro&&t.status!==an&&t.status!==vi?1:0},Cd=e=>{if(Oi(e))return sn(e,ut);e.total_in=e.total_out=0,e.data_type=Yy;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?ho:t.wrap?zn:an,e.adler=t.wrap===2?0:1,t.last_flush=-2,Dy(t),ze},Pd=e=>{let t=Cd(e);return t===ze&&uw(e.state),t},mw=(e,t)=>Oi(e)||e.state.wrap!==2?ut:(e.state.gzhead=t,ze),Dd=(e,t,n,i,r,a)=>{if(!e)return ut;let s=1;if(t===Vy&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>qy||n!==Yr||i<8||i>15||t<0||t>9||a<0||a>$y||i===8&&s!==1)return sn(e,ut);i===8&&(i=9);let o=new dw;return e.state=o,o.strm=e,o.status=zn,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=r+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+ee-1)/ee),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<<r+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,Pd(e)},hw=(e,t)=>Dd(e,t,Yr,jy,Zy,Xy),fw=(e,t)=>{if(Oi(e)||t>Lu||t<0)return e?sn(e,ut):ut;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===vi&&t!==Je)return sn(e,e.avail_out===0?Fs:ut);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(We(e),e.avail_out===0)return n.last_flush=-1,ze}else if(e.avail_in===0&&Nu(t)<=Nu(i)&&t!==Je)return sn(e,Fs);if(n.status===vi&&e.avail_in!==0)return sn(e,Fs);if(n.status===zn&&n.wrap===0&&(n.status=an),n.status===zn){let r=Yr+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Rr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=rw),r+=31-r%31,pi(n,r),n.strstart!==0&&(pi(n,e.adler>>>16),pi(n,e.adler&65535)),e.adler=1,n.status=an,We(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===ho){if(e.adler=0,ae(n,31),ae(n,139),ae(n,8),n.gzhead)ae(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)),ae(n,n.gzhead.time&255),ae(n,n.gzhead.time>>8&255),ae(n,n.gzhead.time>>16&255),ae(n,n.gzhead.time>>24&255),ae(n,n.level===9?2:n.strategy>=Rr||n.level<2?4:0),ae(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ae(n,n.gzhead.extra.length&255),ae(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=xe(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=to;else if(ae(n,0),ae(n,0),ae(n,0),ae(n,0),ae(n,0),ae(n,n.level===9?2:n.strategy>=Rr||n.level<2?4:0),ae(n,aw),n.status=an,We(e),n.pending!==0)return n.last_flush=-1,ze}if(n.status===to){if(n.gzhead.extra){let r=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>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,We(e),n.pending!==0)return n.last_flush=-1,ze;r=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>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=no}if(n.status===no){if(n.gzhead.name){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),We(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,ae(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=io}if(n.status===io){if(n.gzhead.comment){let r=n.pending,a;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r)),We(e),n.pending!==0)return n.last_flush=-1,ze;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,ae(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=xe(e.adler,n.pending_buf,n.pending-r,r))}n.status=ro}if(n.status===ro){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(We(e),n.pending!==0))return n.last_flush=-1,ze;ae(n,e.adler&255),ae(n,e.adler>>8&255),e.adler=0}if(n.status=an,We(e),n.pending!==0)return n.last_flush=-1,ze}if(e.avail_in!==0||n.lookahead!==0||t!==Ut&&n.status!==vi){let r=n.level===0?Id(n,t):n.strategy===Rr?lw(n,t):n.strategy===Ky?cw(n,t):yi[n.level].func(n,t);if((r===cn||r===Cn)&&(n.status=vi),r===Ie||r===cn)return e.avail_out===0&&(n.last_flush=-1),ze;if(r===In&&(t===By?Uy(n):t!==Lu&&(Qs(n,0,0,!1),t===Gy&&(Pt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),We(e),e.avail_out===0))return n.last_flush=-1,ze}return t!==Je?ze:n.wrap<=0?zu:(n.wrap===2?(ae(n,e.adler&255),ae(n,e.adler>>8&255),ae(n,e.adler>>16&255),ae(n,e.adler>>24&255),ae(n,e.total_in&255),ae(n,e.total_in>>8&255),ae(n,e.total_in>>16&255),ae(n,e.total_in>>24&255)):(pi(n,e.adler>>>16),pi(n,e.adler&65535)),We(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ze:zu)},_w=e=>{if(Oi(e))return ut;let t=e.state.status;return e.state=null,t===an?sn(e,Hy):ze},gw=(e,t)=>{let n=t.length;if(Oi(e))return ut;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==zn||i.lookahead)return ut;if(r===1&&(e.adler=Mi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Pt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let l=new Uint8Array(i.w_size);l.set(t.subarray(n-i.w_size,n),0),t=l,n=i.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,Nn(i);i.lookahead>=ee;){let l=i.strstart,c=i.lookahead-(ee-1);do i.ins_h=Bt(i,i.ins_h,i.window[l+ee-1]),i.prev[l&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=l,l++;while(--c);i.strstart=l,i.lookahead=ee-1,Nn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=ee-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,ze},pw=hw,vw=Dd,yw=Pd,ww=Cd,Aw=mw,Sw=fw,kw=_w,Ew=gw,bw="pako deflate (from Nodeca project)",Ai={deflateInit:pw,deflateInit2:vw,deflateReset:yw,deflateResetKeep:ww,deflateSetHeader:Aw,deflate:Sw,deflateEnd:kw,deflateSetDictionary:Ew,deflateInfo:bw},xw=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Tw=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 i in n)xw(n,i)&&(e[i]=n[i])}}return e},Mw=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;let n=new Uint8Array(t);for(let i=0,r=0,a=e.length;i<a;i++){let s=e[i];n.set(s,r),r+=s.length}return n},qr={assign:Tw,flattenChunks:Mw},Fd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Fd=!1}var Ri=new Uint8Array(256);for(let e=0;e<256;e++)Ri[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ri[254]=Ri[254]=1;var Rw=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let t,n,i,r,a,s=e.length,o=0;for(r=0;r<s;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),o+=n<128?1:n<2048?2:n<65536?3:4;for(t=new Uint8Array(o),a=0,r=0;a<o;r++)n=e.charCodeAt(r),(n&64512)===55296&&r+1<s&&(i=e.charCodeAt(r+1),(i&64512)===56320&&(n=65536+(n-55296<<10)+(i-56320),r++)),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},Lw=(e,t)=>{if(t<65534&&e.subarray&&Fd)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i<t;i++)n+=String.fromCharCode(e[i]);return n},zw=(e,t)=>{let n=t||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,t));let i,r,a=new Array(n*2);for(r=0,i=0;i<n;){let s=e[i++];if(s<128){a[r++]=s;continue}let o=Ri[s];if(o>4){a[r++]=65533,i+=o-1;continue}for(s&=o===2?31:o===3?15:7;o>1&&i<n;)s=s<<6|e[i++]&63,o--;if(o>1){a[r++]=65533;continue}s<65536?a[r++]=s:(s-=65536,a[r++]=55296|s>>10&1023,a[r++]=56320|s&1023)}return Lw(a,r)},Nw=(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+Ri[e[n]]>t?n:t},Li={string2buf:Rw,buf2string:zw,utf8border:Nw};function Ow(){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 Ud=Ow,Bd=Object.prototype.toString,{Z_NO_FLUSH:Iw,Z_SYNC_FLUSH:Cw,Z_FULL_FLUSH:Pw,Z_FINISH:Dw,Z_OK:Pr,Z_STREAM_END:Fw,Z_DEFAULT_COMPRESSION:Uw,Z_DEFAULT_STRATEGY:Bw,Z_DEFLATED:Gw}=un;function Ii(e){this.options=qr.assign({level:Uw,method:Gw,chunkSize:16384,windowBits:15,memLevel:8,strategy:Bw},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 Ud,this.strm.avail_out=0;let n=Ai.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Pr)throw new Error(on[n]);if(t.header&&Ai.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Li.string2buf(t.dictionary):Bd.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Ai.deflateSetDictionary(this.strm,i),n!==Pr)throw new Error(on[n]);this._dict_set=!0}}Ii.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r,a;if(this.ended)return!1;for(t===~~t?a=t:a=t===!0?Dw:Iw,typeof e=="string"?n.input=Li.string2buf(e):Bd.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(i),n.next_out=0,n.avail_out=i),(a===Cw||a===Pw)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Ai.deflate(n,a),r===Fw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Ai.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Pr;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};Ii.prototype.onData=function(e){this.chunks.push(e)};Ii.prototype.onEnd=function(e){e===Pr&&(this.result=qr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function fo(e,t){let n=new Ii(t);if(n.push(e,!0),n.err)throw n.msg||on[n.err];return n.result}function Hw(e,t){return t=t||{},t.raw=!0,fo(e,t)}function Vw(e,t){return t=t||{},t.gzip=!0,fo(e,t)}var Ww=Ii,Kw=fo,$w=Hw,Xw=Vw,Yw=un,qw={Deflate:Ww,deflate:Kw,deflateRaw:$w,gzip:Xw,constants:Yw},Lr=16209,jw=16191,Zw=function(t,n){let i,r,a,s,o,l,c,u,m,d,f,g,v,p,w,x,k,y,E,T,b,L,N,A,O=t.state;i=t.next_in,N=t.input,r=i+(t.avail_in-5),a=t.next_out,A=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=O.dmax,c=O.wsize,u=O.whave,m=O.wnext,d=O.window,f=O.hold,g=O.bits,v=O.lencode,p=O.distcode,w=(1<<O.lenbits)-1,x=(1<<O.distbits)-1;e:do{g<15&&(f+=N[i++]<<g,g+=8,f+=N[i++]<<g,g+=8),k=v[f&w];t:for(;;){if(y=k>>>24,f>>>=y,g-=y,y=k>>>16&255,y===0)A[a++]=k&65535;else if(y&16){E=k&65535,y&=15,y&&(g<y&&(f+=N[i++]<<g,g+=8),E+=f&(1<<y)-1,f>>>=y,g-=y),g<15&&(f+=N[i++]<<g,g+=8,f+=N[i++]<<g,g+=8),k=p[f&x];n:for(;;){if(y=k>>>24,f>>>=y,g-=y,y=k>>>16&255,y&16){if(T=k&65535,y&=15,g<y&&(f+=N[i++]<<g,g+=8,g<y&&(f+=N[i++]<<g,g+=8)),T+=f&(1<<y)-1,T>l){t.msg="invalid distance too far back",O.mode=Lr;break e}if(f>>>=y,g-=y,y=a-s,T>y){if(y=T-y,y>u&&O.sane){t.msg="invalid distance too far back",O.mode=Lr;break e}if(b=0,L=d,m===0){if(b+=c-y,y<E){E-=y;do A[a++]=d[b++];while(--y);b=a-T,L=A}}else if(m<y){if(b+=c+m-y,y-=m,y<E){E-=y;do A[a++]=d[b++];while(--y);if(b=0,m<E){y=m,E-=y;do A[a++]=d[b++];while(--y);b=a-T,L=A}}}else if(b+=m-y,y<E){E-=y;do A[a++]=d[b++];while(--y);b=a-T,L=A}for(;E>2;)A[a++]=L[b++],A[a++]=L[b++],A[a++]=L[b++],E-=3;E&&(A[a++]=L[b++],E>1&&(A[a++]=L[b++]))}else{b=a-T;do A[a++]=A[b++],A[a++]=A[b++],A[a++]=A[b++],E-=3;while(E>2);E&&(A[a++]=A[b++],E>1&&(A[a++]=A[b++]))}}else if((y&64)===0){k=p[(k&65535)+(f&(1<<y)-1)];continue n}else{t.msg="invalid distance code",O.mode=Lr;break e}break}}else if((y&64)===0){k=v[(k&65535)+(f&(1<<y)-1)];continue t}else if(y&32){O.mode=jw;break e}else{t.msg="invalid literal/length code",O.mode=Lr;break e}break}}while(i<r&&a<o);E=g>>3,i-=E,g-=E<<3,f&=(1<<g)-1,t.next_in=i,t.next_out=a,t.avail_in=i<r?5+(r-i):5-(i-r),t.avail_out=a<o?257+(o-a):257-(a-o),O.hold=f,O.bits=g},Mn=15,Ou=852,Iu=592,Cu=0,Bs=1,Pu=2,Jw=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]),Qw=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]),eA=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]),tA=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]),nA=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,f=0,g=0,v=0,p=0,w=0,x=0,k,y,E,T,b,L=null,N,A=new Uint16Array(Mn+1),O=new Uint16Array(Mn+1),X=null,oe,Q,Re;for(c=0;c<=Mn;c++)A[c]=0;for(u=0;u<i;u++)A[t[n+u]]++;for(f=l,d=Mn;d>=1&&A[d]===0;d--);if(f>d&&(f=d),d===0)return r[a++]=1<<24|64<<16|0,r[a++]=1<<24|64<<16|0,o.bits=1,0;for(m=1;m<d&&A[m]===0;m++);for(f<m&&(f=m),p=1,c=1;c<=Mn;c++)if(p<<=1,p-=A[c],p<0)return-1;if(p>0&&(e===Cu||d!==1))return-1;for(O[1]=0,c=1;c<Mn;c++)O[c+1]=O[c]+A[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[O[t[n+u]]++]=u);if(e===Cu?(L=X=s,N=20):e===Bs?(L=Jw,X=Qw,N=257):(L=eA,X=tA,N=0),x=0,u=0,c=m,b=a,g=f,v=0,E=-1,w=1<<f,T=w-1,e===Bs&&w>Ou||e===Pu&&w>Iu)return 1;for(;;){oe=c-v,s[u]+1<N?(Q=0,Re=s[u]):s[u]>=N?(Q=X[s[u]-N],Re=L[s[u]-N]):(Q=96,Re=0),k=1<<c-v,y=1<<g,m=y;do y-=k,r[b+(x>>v)+y]=oe<<24|Q<<16|Re|0;while(y!==0);for(k=1<<c-1;x&k;)k>>=1;if(k!==0?(x&=k-1,x+=k):x=0,u++,--A[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>f&&(x&T)!==E){for(v===0&&(v=f),b+=m,g=c-v,p=1<<g;g+v<d&&(p-=A[g+v],!(p<=0));)g++,p<<=1;if(w+=1<<g,e===Bs&&w>Ou||e===Pu&&w>Iu)return 1;E=x&T,r[E]=f<<24|g<<16|b-a|0}}return x!==0&&(r[b+x]=c-v<<24|64<<16|0),o.bits=f,0},Si=nA,iA=0,Gd=1,Hd=2,{Z_FINISH:Du,Z_BLOCK:rA,Z_TREES:zr,Z_OK:ln,Z_STREAM_END:aA,Z_NEED_DICT:sA,Z_STREAM_ERROR:Qe,Z_DATA_ERROR:Vd,Z_MEM_ERROR:Wd,Z_BUF_ERROR:oA,Z_DEFLATED:Fu}=un,jr=16180,Uu=16181,Bu=16182,Gu=16183,Hu=16184,Vu=16185,Wu=16186,Ku=16187,$u=16188,Xu=16189,Dr=16190,kt=16191,Gs=16192,Yu=16193,Hs=16194,qu=16195,ju=16196,Zu=16197,Ju=16198,Nr=16199,Or=16200,Qu=16201,ed=16202,td=16203,nd=16204,id=16205,Vs=16206,rd=16207,ad=16208,ge=16209,Kd=16210,$d=16211,cA=852,lA=592,uA=15,dA=uA,sd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function mA(){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 dn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<jr||t.mode>$d?1:0},Xd=e=>{if(dn(e))return Qe;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=jr,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(cA),t.distcode=t.distdyn=new Int32Array(lA),t.sane=1,t.back=-1,ln},Yd=e=>{if(dn(e))return Qe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Xd(e)},qd=(e,t)=>{let n;if(dn(e))return Qe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Qe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Yd(e))},jd=(e,t)=>{if(!e)return Qe;let n=new mA;e.state=n,n.strm=e,n.window=null,n.mode=jr;let i=qd(e,t);return i!==ln&&(e.state=null),i},hA=e=>jd(e,dA),od=!0,Ws,Ks,fA=e=>{if(od){Ws=new Int32Array(512),Ks=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(Si(Gd,e.lens,0,288,Ws,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Si(Hd,e.lens,0,32,Ks,0,e.work,{bits:5}),od=!1}e.lencode=Ws,e.lenbits=9,e.distcode=Ks,e.distbits=5},Zd=(e,t,n,i)=>{let r,a=e.state;return a.window===null&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new Uint8Array(a.wsize)),i>=a.wsize?(a.window.set(t.subarray(n-a.wsize,n),0),a.wnext=0,a.whave=a.wsize):(r=a.wsize-a.wnext,r>i&&(r=i),a.window.set(t.subarray(n-i,n-i+r),a.wnext),i-=r,i?(a.window.set(t.subarray(n-i,n),0),a.wnext=i,a.whave=a.wsize):(a.wnext+=r,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=r))),0},_A=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,f,g,v,p=0,w,x,k,y,E,T,b,L,N=new Uint8Array(4),A,O,X=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(dn(e)||!e.output||!e.input&&e.avail_in!==0)return Qe;n=e.state,n.mode===kt&&(n.mode=Gs),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,m=o,d=l,L=ln;e:for(;;)switch(n.mode){case jr:if(n.wrap===0){n.mode=Gs;break}for(;u<16;){if(o===0)break e;o--,c+=i[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=xe(n.check,N,2,0),c=0,u=0,n.mode=Uu;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=ge;break}if((c&15)!==Fu){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,u-=4,b=(c&15)+8,n.wbits===0&&(n.wbits=b),b>15||b>n.wbits){e.msg="invalid window size",n.mode=ge;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?Xu:kt,c=0,u=0;break;case Uu:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==Fu){e.msg="unknown compression method",n.mode=ge;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=ge;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=xe(n.check,N,2,0)),c=0,u=0,n.mode=Bu;case Bu:for(;u<32;){if(o===0)break e;o--,c+=i[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=xe(n.check,N,4,0)),c=0,u=0,n.mode=Gu;case Gu:for(;u<16;){if(o===0)break e;o--,c+=i[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=xe(n.check,N,2,0)),c=0,u=0,n.mode=Hu;case Hu:if(n.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[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=xe(n.check,N,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Vu;case Vu:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(b=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+f),b)),n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=Wu;case Wu:if(n.flags&2048){if(o===0)break e;f=0;do b=i[a+f++],n.head&&b&&n.length<65536&&(n.head.name+=String.fromCharCode(b));while(b&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,b)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Ku;case Ku:if(n.flags&4096){if(o===0)break e;f=0;do b=i[a+f++],n.head&&b&&n.length<65536&&(n.head.comment+=String.fromCharCode(b));while(b&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,b)break e}else n.head&&(n.head.comment=null);n.mode=$u;case $u:if(n.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=ge;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=kt;break;case Xu:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=sd(c),c=0,u=0,n.mode=Dr;case Dr: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,sA;e.adler=n.check=1,n.mode=kt;case kt:if(t===rA||t===zr)break e;case Gs:if(n.last){c>>>=u&7,u-=u&7,n.mode=Vs;break}for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}switch(n.last=c&1,c>>>=1,u-=1,c&3){case 0:n.mode=Yu;break;case 1:if(fA(n),n.mode=Nr,t===zr){c>>>=2,u-=2;break e}break;case 2:n.mode=ju;break;case 3:e.msg="invalid block type",n.mode=ge}c>>>=2,u-=2;break;case Yu:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=ge;break}if(n.length=c&65535,c=0,u=0,n.mode=Hs,t===zr)break e;case Hs:n.mode=qu;case qu:if(f=n.length,f){if(f>o&&(f=o),f>l&&(f=l),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,l-=f,s+=f,n.length-=f;break}n.mode=kt;break;case ju:for(;u<14;){if(o===0)break e;o--,c+=i[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=ge;break}n.have=0,n.mode=Zu;case Zu:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[X[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[X[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,A={bits:n.lenbits},L=Si(iA,n.lens,0,19,n.lencode,0,n.work,A),n.lenbits=A.bits,L){e.msg="invalid code lengths set",n.mode=ge;break}n.have=0,n.mode=Ju;case Ju:for(;n.have<n.nlen+n.ndist;){for(;p=n.lencode[c&(1<<n.lenbits)-1],w=p>>>24,x=p>>>16&255,k=p&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(k<16)c>>>=w,u-=w,n.lens[n.have++]=k;else{if(k===16){for(O=w+2;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=w,u-=w,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}b=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(k===17){for(O=w+3;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,b=0,f=3+(c&7),c>>>=3,u-=3}else{for(O=w+7;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,b=0,f=11+(c&127),c>>>=7,u-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=ge;break}for(;f--;)n.lens[n.have++]=b}}if(n.mode===ge)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=ge;break}if(n.lenbits=9,A={bits:n.lenbits},L=Si(Gd,n.lens,0,n.nlen,n.lencode,0,n.work,A),n.lenbits=A.bits,L){e.msg="invalid literal/lengths set",n.mode=ge;break}if(n.distbits=6,n.distcode=n.distdyn,A={bits:n.distbits},L=Si(Hd,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,A),n.distbits=A.bits,L){e.msg="invalid distances set",n.mode=ge;break}if(n.mode=Nr,t===zr)break e;case Nr:n.mode=Or;case Or: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,Zw(e,d),s=e.next_out,r=e.output,l=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,u=n.bits,n.mode===kt&&(n.back=-1);break}for(n.back=0;p=n.lencode[c&(1<<n.lenbits)-1],w=p>>>24,x=p>>>16&255,k=p&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(x&&(x&240)===0){for(y=w,E=x,T=k;p=n.lencode[T+((c&(1<<y+E)-1)>>y)],w=p>>>24,x=p>>>16&255,k=p&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,n.length=k,x===0){n.mode=id;break}if(x&32){n.back=-1,n.mode=kt;break}if(x&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=x&15,n.mode=Qu;case Qu:if(n.extra){for(O=n.extra;u<O;){if(o===0)break e;o--,c+=i[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=ed;case ed:for(;p=n.distcode[c&(1<<n.distbits)-1],w=p>>>24,x=p>>>16&255,k=p&65535,!(w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((x&240)===0){for(y=w,E=x,T=k;p=n.distcode[T+((c&(1<<y+E)-1)>>y)],w=p>>>24,x=p>>>16&255,k=p&65535,!(y+w<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,n.back+=y}if(c>>>=w,u-=w,n.back+=w,x&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=k,n.extra=x&15,n.mode=td;case td:if(n.extra){for(O=n.extra;u<O;){if(o===0)break e;o--,c+=i[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=ge;break}n.mode=nd;case nd:if(l===0)break e;if(f=d-l,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=ge;break}f>n.wnext?(f-=n.wnext,g=n.wsize-f):g=n.wnext-f,f>n.length&&(f=n.length),v=n.window}else v=r,g=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=v[g++];while(--f);n.length===0&&(n.mode=Or);break;case id:if(l===0)break e;r[s++]=n.length,l--,n.mode=Or;break;case Vs:if(n.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[a++]<<u,u+=8}if(d-=l,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?xe(n.check,r,d,s-d):Mi(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:sd(c))!==n.check){e.msg="incorrect data check",n.mode=ge;break}c=0,u=0}n.mode=rd;case rd:if(n.wrap&&n.flags){for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=ge;break}c=0,u=0}n.mode=ad;case ad:L=aA;break e;case ge:L=Vd;break e;case Kd:return Wd;case $d:default:return Qe}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||d!==e.avail_out&&n.mode<ge&&(n.mode<Vs||t!==Du))&&Zd(e,e.output,e.next_out,d-e.avail_out),m-=e.avail_in,d-=e.avail_out,e.total_in+=m,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?xe(n.check,r,d,e.next_out-d):Mi(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===kt?128:0)+(n.mode===Nr||n.mode===Hs?256:0),(m===0&&d===0||t===Du)&&L===ln&&(L=oA),L},gA=e=>{if(dn(e))return Qe;let t=e.state;return t.window&&(t.window=null),e.state=null,ln},pA=(e,t)=>{if(dn(e))return Qe;let n=e.state;return(n.wrap&2)===0?Qe:(n.head=t,t.done=!1,ln)},vA=(e,t)=>{let n=t.length,i,r,a;return dn(e)||(i=e.state,i.wrap!==0&&i.mode!==Dr)?Qe:i.mode===Dr&&(r=1,r=Mi(r,t,n,0),r!==i.check)?Vd:(a=Zd(e,t,n,n),a?(i.mode=Kd,Wd):(i.havedict=1,ln))},yA=Yd,wA=qd,AA=Xd,SA=hA,kA=jd,EA=_A,bA=gA,xA=pA,TA=vA,MA="pako inflate (from Nodeca project)",bt={inflateReset:yA,inflateReset2:wA,inflateResetKeep:AA,inflateInit:SA,inflateInit2:kA,inflate:EA,inflateEnd:bA,inflateGetHeader:xA,inflateSetDictionary:TA,inflateInfo:MA};function RA(){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 LA=RA,Jd=Object.prototype.toString,{Z_NO_FLUSH:zA,Z_FINISH:NA,Z_OK:zi,Z_STREAM_END:$s,Z_NEED_DICT:Xs,Z_STREAM_ERROR:OA,Z_DATA_ERROR:cd,Z_MEM_ERROR:IA}=un;function Ci(e){this.options=qr.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 Ud,this.strm.avail_out=0;let n=bt.inflateInit2(this.strm,t.windowBits);if(n!==zi)throw new Error(on[n]);if(this.header=new LA,bt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Li.string2buf(t.dictionary):Jd.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=bt.inflateSetDictionary(this.strm,t.dictionary),n!==zi)))throw new Error(on[n])}Ci.prototype.push=function(e,t){let n=this.strm,i=this.options.chunkSize,r=this.options.dictionary,a,s,o;if(this.ended)return!1;for(t===~~t?s=t:s=t===!0?NA:zA,Jd.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(i),n.next_out=0,n.avail_out=i),a=bt.inflate(n,s),a===Xs&&r&&(a=bt.inflateSetDictionary(n,r),a===zi?a=bt.inflate(n,s):a===cd&&(a=Xs));n.avail_in>0&&a===$s&&n.state.wrap>0&&e[n.next_in]!==0;)bt.inflateReset(n),a=bt.inflate(n,s);switch(a){case OA:case cd:case Xs:case IA:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===$s))if(this.options.to==="string"){let l=Li.utf8border(n.output,n.next_out),c=n.next_out-l,u=Li.buf2string(n.output,l);n.next_out=c,n.avail_out=i-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===zi&&o===0)){if(a===$s)return a=bt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Ci.prototype.onData=function(e){this.chunks.push(e)};Ci.prototype.onEnd=function(e){e===zi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=qr.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function _o(e,t){let n=new Ci(t);if(n.push(e),n.err)throw n.msg||on[n.err];return n.result}function CA(e,t){return t=t||{},t.raw=!0,_o(e,t)}var PA=Ci,DA=_o,FA=CA,UA=_o,BA=un,GA={Inflate:PA,inflate:DA,inflateRaw:FA,ungzip:UA,constants:BA},{Deflate:HA,deflate:VA,deflateRaw:WA,gzip:KA}=qw,{Inflate:$A,inflate:XA,inflateRaw:YA,ungzip:qA}=GA,jA=HA,ZA=VA,JA=WA,QA=KA,eS=$A,tS=XA,nS=YA,iS=qA,rS=un,ld={Deflate:jA,deflate:ZA,deflateRaw:JA,gzip:QA,Inflate:eS,inflate:tS,inflateRaw:nS,ungzip:iS,constants:rS},Fr=2023,go=1,po=2,vo=4,yo=8,wo=16,Ao=32,Qd=64,aS=128,sS=256,So=512,ko=1024,Eo=2048,Ur=4096,bo=8192,Br=16384,oS=32768,Gr=65536,xo=1<<17,Hr=1<<18,Vr=1<<19,To=1<<20,Mo=1<<21,Ro=1<<22,cS=1<<23,Lo=1<<24,Wr=1<<25,zo=1<<26,No=1<<27,Oo=1<<28,Io=1<<29,Co=1<<30,lS=-2147483648,Po=1,Do=2,Fo=4,uS=1,dS=2,mS=128,Rn=()=>({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}),ud=()=>({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}),Uo=class em{constructor(t,n){this.protocolVersion=0,this.isDemo=uS,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)?J.serverdata:this.protocolVersion===Fr?t:this.protocolVersion===34||this.protocolVersion===25?t<=J.frame?t:t===22?J.playerinfo:t===23?J.packetentities:J.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 J.bad:return;case J.nop:break;case J.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case J.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case J.print:this.parsePrint();break;case J.serverdata:this.parseServerData();break;case J.configstring:this.parseConfigString();break;case J.spawnbaseline:this.parseSpawnBaseline();break;case J.centerprint:this.parseCenterPrint();break;case J.download:this.parseDownload();break;case J.frame:this.parseFrame();break;case J.packetentities:this.parsePacketEntities(!1);break;case J.deltapacketentities:this.parsePacketEntities(!0);break;case J.playerinfo:this.parsePlayerState();break;case J.stufftext:this.parseStuffText();break;case J.layout:this.parseLayout();break;case J.inventory:this.parseInventory();break;case J.sound:this.parseSound();break;case J.muzzleflash:this.parseMuzzleFlash();break;case J.muzzleflash2:this.parseMuzzleFlash2();break;case J.temp_entity:this.parseTempEntity();break;case J.splitclient:this.parseSplitClient();break;case J.configblast:this.parseConfigBlast();break;case J.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case J.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case J.damage:this.parseDamage();break;case J.locprint:this.parseLocPrint();break;case J.fog:this.parseFog();break;case J.waitingforplayers:this.parseWaitingForPlayers();break;case J.bot_chat:this.parseBotChat();break;case J.poi:this.parsePoi();break;case J.help_path:this.parseHelpPath();break;case J.muzzleflash3:this.parseMuzzleFlash3();break;case J.achievement:this.parseAchievement();break;default:console.warn(`Unknown server command: ${n} (translated: ${t}) at offset ${this.stream.getPosition()-1}`);return}}catch(i){console.warn(`Error parsing command ${t}: ${i.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===Fr){let t=this.stream.readLong(),n=this.stream.readByte();this.isDemo=n;let i=this.stream.readByte(),r=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,r,a,s,i,n):console.log(`Server Data (Rerelease): Protocol ${this.protocolVersion}, Level ${s}, Tick ${i}`)}else{let t=this.stream.readLong();this.isDemo=this.stream.readByte();let n=0,i=this.stream.readString(),r=this.stream.readShort(),a=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,t,n,i,r,a):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${a}, GameDir ${i}`)}}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(),i=this.stream.readData(t);try{let r=ld.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new qs(r.buffer);for(;a.hasMore();){let s=a.readUShort(),o=a.readString();this.handler&&this.handler.onConfigString(s,o)}}catch(r){console.error("svc_configblast: Failed to decompress data",r)}}parseSpawnBaselineBlast(){let t=this.stream.readShort(),n=this.stream.readShort(),i=this.stream.readData(t);try{let r=ld.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new qs(r.buffer),s=new em(a,this.handler);for(;a.hasMore();)s.parseSpawnBaseline()}catch(r){console.error("svc_spawnbaselineblast: Failed to decompress data",r)}}parseLocPrint(){let t=this.stream.readByte(),n=this.stream.readString(),i=this.stream.readByte(),r=[];for(let a=0;a<i;a++)r.push(this.stream.readString());this.handler&&this.handler.onLocPrint&&this.handler.onLocPrint(t,n,r)}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(),i=this.stream.readString();this.handler&&this.handler.onBotChat&&this.handler.onBotChat(i)}parsePoi(){let t=this.stream.readUShort(),n=this.stream.readUShort(),i={x:0,y:0,z:0};this.stream.readPos(i);let r=this.stream.readUShort(),a=this.stream.readByte(),s=this.stream.readByte();this.handler&&this.handler.onPoi&&this.handler.onPoi(s,i)}parseHelpPath(){let t=this.stream.readByte(),n={x:0,y:0,z:0};this.stream.readPos(n);let i={x:0,y:0,z:0};this.stream.readDir(i),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(),i;t>0&&(i=this.stream.readData(t)),this.handler&&this.handler.onDownload(t,n,i)}parseInventory(){let n=new Array(256);for(let i=0;i<256;i++)n[i]=this.stream.readShort();this.handler&&this.handler.onInventory(n)}parseSound(){let t=this.stream.readByte(),n=this.stream.readByte(),i,r,a,s,o;if(t&1&&(i=this.stream.readByte()),t&2&&(r=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,i,r,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 i=this.stream.readByte();t|=i<<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 i=0;i<t;i++){let r=this.stream.readByte(),a={x:0,y:0,z:0};this.stream.readDir(a);let s=r&31,o=(r&32)!==0,l=(r&64)!==0,c=(r&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},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a,s,o,l,c;switch(t){case H.EXPLOSION1:case H.EXPLOSION2:case H.ROCKET_EXPLOSION:case H.GRENADE_EXPLOSION:case H.ROCKET_EXPLOSION_WATER:case H.GRENADE_EXPLOSION_WATER:case H.BFG_EXPLOSION:case H.BFG_BIGEXPLOSION:case H.BOSSTPORT:case H.PLASMA_EXPLOSION:case H.PLAIN_EXPLOSION:case H.CHAINFIST_SMOKE:case H.TRACKER_EXPLOSION:case H.TELEPORT_EFFECT:case H.DBALL_GOAL:case H.NUKEBLAST:case H.WIDOWSPLASH:case H.EXPLOSION1_BIG:case H.EXPLOSION1_NP:this.stream.readPos(n);break;case H.GUNSHOT:case H.BLOOD:case H.BLASTER:case H.SHOTGUN:case H.SPARKS:case H.BULLET_SPARKS:case H.SCREEN_SPARKS:case H.SHIELD_SPARKS:case H.BLASTER2:case H.FLECHETTE:case H.MOREBLOOD:case H.ELECTRIC_SPARKS:case H.HEATBEAM_SPARKS:case H.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case H.SPLASH:case H.LASER_SPARKS:case H.WELDING_SPARKS:case H.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case H.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case H.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case H.RAILTRAIL:case H.BUBBLETRAIL:case H.BFG_LASER:case H.DEBUGTRAIL:case H.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case H.PARASITE_ATTACK:case H.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case H.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case H.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case H.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case H.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case H.STEAM:let u=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case H.WIDOWBEAMOUT:this.stream.readShort();case H.HEATBEAM:case H.MONSTER_HEATBEAM:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(t,n,i,r,a,s,o,l,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Rn();this.parseDelta(Rn(),n,t.number,t.bits,t.bitsHigh),this.handler&&this.handler.onSpawnBaseline(n)}parseFrame(){let t=this.stream.readLong(),n=this.stream.readLong(),i=this.stream.readByte(),r=this.stream.readByte(),a=this.stream.readData(r),s=this.stream.readByte();if(s=this.translateCommand(s),s!==J.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState(),l=this.stream.readByte();if(l=this.translateCommand(l),l!==J.packetentities)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${l} (translated)`);let c=this.collectPacketEntities();if(this.isDemo===mS){let u=this.stream.readByte();for(let m=0;m<u;m++)this.stream.readByte()}this.isDemo===dS&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!0,entities:c}})}parsePlayerState(){let t=ud(),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 i=this.stream.readLong();for(let r=0;r<32;r++)i&1<<r&&(t.stats[r]=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:ud(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Rn();this.parseDelta(Rn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&aS&&(t|=this.stream.readByte()<<8),t&oS&&(t|=this.stream.readByte()<<16),t&cS&&(t|=this.stream.readByte()<<24);let n=0;t&lS&&(n=this.stream.readByte());let i;return t&sS?i=this.stream.readShort():i=this.stream.readByte(),{number:i,bits:t,bitsHigh:n}}parseDelta(t,n,i,r,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=i,n.bits=r,n.bitsHigh=a,r&Eo&&(n.modelindex=this.stream.readByte()),r&To&&(n.modelindex2=this.stream.readByte()),r&Mo&&(n.modelindex3=this.stream.readByte()),r&Ro&&(n.modelindex4=this.stream.readByte()),r&wo&&(n.frame=this.stream.readByte()),r&xo&&(n.frame=this.stream.readShort()),r&Gr&&r&Wr?n.skinnum=this.stream.readLong():r&Gr?n.skinnum=this.stream.readByte():r&Wr&&(n.skinnum=this.stream.readShort()),r&Br&&r&Vr?n.effects=this.stream.readLong():r&Br?n.effects=this.stream.readByte():r&Vr&&(n.effects=this.stream.readShort()),r&Ur&&r&Hr?n.renderfx=this.stream.readLong():r&Ur?n.renderfx=this.stream.readByte():r&Hr&&(n.renderfx=this.stream.readShort()),r&go&&(n.origin.x=this.stream.readCoord()),r&po&&(n.origin.y=this.stream.readCoord()),r&So&&(n.origin.z=this.stream.readCoord()),r&ko&&(n.angles.x=this.stream.readAngle()),r&vo&&(n.angles.y=this.stream.readAngle()),r&yo&&(n.angles.z=this.stream.readAngle()),r&Lo&&this.stream.readPos(n.old_origin),r&zo&&(n.sound=this.stream.readByte()),r&Ao?n.event=this.stream.readByte():n.event=0,r&No&&(n.solid=this.stream.readShort()),r&bo&&(n.alpha=this.stream.readByte()/255),r&Oo&&(n.scale=this.stream.readFloat()),r&Io&&(n.instanceBits=this.stream.readLong()),r&Co&&(n.loopVolume=this.stream.readByte()/255),a&Po&&(n.loopAttenuation=this.stream.readByte()/255),a&Do&&(n.owner=this.stream.readShort()),a&Fo&&(n.oldFrame=this.stream.readShort())}},Pi=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(Pi||{}),tm=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 oy(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}setSpeed(e){this.playbackSpeed=Math.max(.1,Math.min(e,16))}getSpeed(){return this.playbackSpeed}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.processNextFrame())return;this.accumulatedTime-=this.frameDuration}}stepForward(){this.reader&&this.processNextFrame()}stepBackward(){console.warn("stepBackward not implemented")}processNextFrame(){if(!this.reader||!this.reader.hasMore())return this.state=3,!1;let e=this.reader.readNextBlock();if(!e)return this.state=3,!1;let t=new Uo(e.data,this.handler);return t.setProtocolVersion(this.currentProtocolVersion),t.parseMessage(),this.currentProtocolVersion=t.getProtocolVersion(),!0}getState(){return this.state}getCurrentTime(){return this.accumulatedTime}};var hS=Object.defineProperty,nm=(e,t)=>{for(var n in t)hS(e,n,{get:t[n],enumerable:!0})},Ht={x:0,y:0,z:0};var XC=Math.PI/180;function Zr(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function im(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function Un(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Fi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function fS(e){return Fi(e,e)}function mn(e){return Math.sqrt(fS(e))}function rm(e){let t=mn(e);return t===0?e:Un(e,1/t)}var am=0,sm=1,om=2,_S=Math.PI/180,YC=180/Math.PI;function Bo(e,t){switch(t){case am:return e.x;case sm:return e.y;case om:default:return e.z}}function Go(e){return e*_S}function Dn(e){let t=e%360;return t<0?360+t:t}function Qr(e){let t=Go(Bo(e,sm)),n=Go(Bo(e,am)),i=Go(Bo(e,om)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}var Pn=[[-.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 ht=1,Vt=2;var Wo=8,Ko=16,gS=32;var pS=16384;var ea=65536,cm=1<<17,vS=1<<18,yS=1<<19,wS=1<<20,AS=1<<21,SS=1<<22,kS=1<<23,qC=1<<24,ta=1<<25,ES=1<<26,jC=1<<27,ZC=1<<28,JC=1<<29,na=1<<30,QC=1<<31;var e7=1<<25,t7=1<<28,n7=1<<29,i7=1<<30,r7=1<<31;var a7=ht|Vt,s7=ht|ea|Vt|ta|na,o7=ht|ea|Vt,c7=ht|cm|Vt|ta|na,l7=gS|Wo|Ko,u7=ht|Ko|Wo,bS=ht|ta|na|Vt|ES,d7=vS|yS|wS|AS|SS|kS,m7=ht|Wo|Ko|ta|na,h7=ht|ea|Vt,f7=ht|Vt,_7=ht|ea|Vt|cm,g7=bS|pS;var p7=Number.MAX_SAFE_INTEGER-1;var Ui=(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))(Ui||{});var lm=256;var xS=256,Bi=8192,Gi=2048,Hi=512,TS=256,MS=lm*2,RS=256,Ho=32;var we=(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.HealthBarName=55]="HealthBarName",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+Bi]="Sounds",e[e.Images=e.Sounds+Gi]="Images",e[e.Lights=e.Images+Hi]="Lights",e[e.ShadowLights=e.Lights+xS]="ShadowLights",e[e.Items=e.ShadowLights+RS]="Items",e[e.PlayerSkins=e.Items+TS]="PlayerSkins",e[e.General=e.PlayerSkins+lm]="General",e[e.WheelWeapons=e.General+MS]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ho]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ho]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ho]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(we||{}),v7=we.MaxConfigStrings;var LS={};nm(LS,{addReplayFrame:()=>IS,createReplaySession:()=>OS,deserializeReplay:()=>NS,serializeReplay:()=>zS});function zS(e){return JSON.stringify(e,null,2)}function NS(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 OS(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function IS(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var Vi=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(Vi||{});var xt=(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))(xt||{});function Bn(e,t){return(e&t)!==0}var ia=(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))(ia||{}),ft=(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))(ft||{});function CS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=mn(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return Un(t,f)}function PS(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Fi(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function DS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=mn(a);if(s>r){let o=r/s;a=Un(a,o),s=r}return{wishdir:s===0?a:rm(a),wishspeed:s}}function FS(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=Zr(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Zr(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=Zr(a,{x:0,y:0,z:-60}):a=Zr(a,{x:0,y:0,z:10});let s=mn(a);if(s>r){let o=r/s;a=Un(a,o),s=r}return s*=.5,{wishdir:s===0?a:rm(a),wishspeed:s}}function US(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function BS(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function $o(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=US(n,i),r={...r,x:BS(r.x)});let a=Qr(r);return{viewangles:r,...a}}var um=200,dm=200,mm=200,hm=140,fm=150,_m=3;function GS(e){let t=Dn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function gm(e,t){return{x:GS(e.x+t.x),y:Dn(e.y+t.y),z:Dn(e.z+t.z)}}function pm(e,t){let n=t.sensitivityX??t.sensitivity,i=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*i,y:e.deltaX*n,z:0}}var hn=(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))(hn||{});var vm=64;var ym=0,wm=1,Am=2,Sm=3,km=4,Em=5,bm=6,xm=7,Tm=8;var Mm=11,Rm=12,Lm=13;function HS(e,t,n){let i=Math.floor(n/2),r=n%2!==0,a=t+i,s=e[a]||0;if(r){let o=e[a+1]||0,l=s>>>8&255;return(o&255)<<8|l}else return s&65535}function zm(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(HS(e,t,a)&o)>>>s}var Wi=(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))(Wi||{}),Pe=(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))(Pe||{}),Nm=12,Om=9,y7=Math.ceil(Nm*Om/16),Im=23,Cm=2,w7=Math.ceil(Im*Cm/16),VS={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 Pm(e,t){return t<0||t>=Nm?0:zm(e,34,t,Om)}function ra(e,t){let n;return typeof t=="number"?n=t:n=VS[t],n===void 0||n<0||n>=Im?0:zm(e,41,n,Cm)}function Dm(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 WS={};nm(WS,{U_ANGLE1:()=>ZS,U_ANGLE2:()=>JS,U_ANGLE3:()=>QS,U_EFFECTS:()=>n2,U_EVENT:()=>a2,U_FRAME:()=>e2,U_MODEL:()=>$S,U_MODEL2:()=>o2,U_MODEL3:()=>c2,U_MODEL4:()=>l2,U_MOREBITS:()=>s2,U_NUMBER:()=>KS,U_ORIGIN1:()=>YS,U_ORIGIN2:()=>qS,U_ORIGIN3:()=>jS,U_REMOVE:()=>u2,U_RENDERFX:()=>i2,U_SKIN:()=>t2,U_SOLID:()=>r2,U_SOUND:()=>XS});var KS=1,$S=2,XS=4,YS=8,qS=16,jS=32,ZS=64,JS=128,QS=256,e2=512,t2=1024,n2=2048,i2=4096,r2=8192,a2=16384,s2=32768,o2=1,c2=2,l2=4,u2=32768,Di=.025,Vo=33554432,Jr={None:0,Feet:1,Waist:2,Under:3},d2=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},m2=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Vo))return{...e,waterLevel:Jr.None};let s=Jr.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Vo){s=Jr.Waist;let c=e.origin.z+22;n.z=c,t(n)&Vo&&(s=Jr.Under)}return{...e,waterLevel:s}},Xo=(e,t,n,i)=>{let r={...e};r=d2(r,n),r=m2(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Qr(u),f=CS({velocity:s,frametime:Di,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?FS({forward:m,right:d,cmd:t,maxSpeed:320}):DS({forward:m,right:d,cmd:t,maxSpeed:320}),v=PS({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Di}),p=n(a,{x:a.x+v.x*Di,y:a.y+v.y*Di,z:a.z+v.z*Di});return{...r,origin:p.endpos,velocity:v}},Fm=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=Pn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Yo=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 i=0;i<Pn.length;i++){let r=Pn[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Ki=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 i=0,r=-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*Pn[s][0]+t*Pn[s][1]+n*Pn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},Fn=class Ce{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Yo(Ce.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=Ce.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>Ce.MAX_MSGLEN&&(r=Ce.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<Ce.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,v=this.outgoingReliableSequence&1;g!==v&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=Ce.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let v=this.incomingReliableSequence&1;if(u===v){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,v=new Uint8Array(g);return v.set(d,0),v.set(f,d.length),v}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>Ce.MAX_MSGLEN-Ce.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ce.MAX_MSGLEN-Ce.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ce.MAX_MSGLEN-Ce.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>Ce.MAX_MSGLEN-Ce.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}};Fn.MAX_MSGLEN=1400;Fn.FRAGMENT_SIZE=1024;Fn.PACKET_HEADER=10;Fn.HEADER_OVERHEAD=Fn.PACKET_HEADER+2;var Um=Fn;var Bm=(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))(Bm||{}),A7=Object.keys(Bm).length/2;var aa=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Gm={blaster:null,shotgun:1,supershotgun:1,machinegun:0,chaingun:0,grenades:3,grenadelauncher:3,rocketlauncher:2,hyperblaster:4,railgun:5,bfg10k:4,grapple:null,chainfist:null,etf_rifle:8,prox_launcher:11,ionripper:4,plasmabeam:4,phalanx:6,disruptor:10,trap:7};var h2=Object.defineProperty,f2=(e,t)=>{for(var n in t)h2(e,n,{get:t[n],enumerable:!0})},oa=null,sa=[1,1,1,1],Hm=["ch1","ch2","ch3"],qo=[null,null,null],_2=e=>{for(let t=0;t<Hm.length;t++){let n=Hm[t];try{qo[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{qo[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
+ `)}}}oa=qo[0]},g2=(e,t,n)=>{if(oa){let i=e.Draw_GetPicSize(oa),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,oa,{x:sa[0],y:sa[1],z:sa[2]},sa[3])}},Ym=new Map,p2=["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"],v2=e=>{for(let t of p2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Ym.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
+ `)}},y2=new Map,w2=["d_left","d_right","d_up","d_down"],A2=e=>{for(let t of w2)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);y2.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
+ `)}},S2=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Vm=3e3,Wm=5e3,Km=4,k2=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Vm}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Wm}),this.notifyMessages.length>Km&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Vm}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Wm}),this.notifyMessages.length>Km&&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 i=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(i,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 i of this.notifyMessages)e.SCR_DrawFontString(10,n,i.text),n+=10}},E2=3e3,b2=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:E2}}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)}},x2=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},T2=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=Ym.get(t.pickupIcon);if(r){let a=e.Draw_GetPicSize(r),s=n-a.width-10,o=i-a.height-10;e.SCR_DrawPic(s,o,r)}},jo=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let l=0;l<o.length;l++){let c=parseInt(o[l]),u=r[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))}},M2=(e,t,n,i,r,a)=>{let s=t.stats[Pe.STAT_HEALTH]||0,o=t.stats[Pe.STAT_ARMOR]||0,l=t.stats[Pe.STAT_AMMO]||0,c=t.stats[Pe.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(jo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),jo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),jo(e,a.AMMO_X,a.AMMO_Y,l,n,i)),c>0){let m=e.get_configstring(we.Images+c);if(m){let d=e.Draw_RegisterPic(m);d&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,d)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Pe.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(we.Images+m);if(d){let f=e.Draw_RegisterPic(d);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},Zo=640,Gn=480,R2=(e,t)=>{let n=e/Zo,i=t/Gn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Gn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Gn-450)*r,AMMO_X:e-(Zo-540)*r,AMMO_Y:t-(Gn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Gn-450)*r,POWERUP_X:e-(Zo-610)*r,POWERUP_Y:t-(Gn-450)*r,scale:r}},be=null,nc=[],qm=0,ic=new k2,jm=new b2;function L2(e){be=e}function z2(){if(be){nc.length=0;for(let e=0;e<10;e++)try{let t=be.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);nc.push(t),e===0&&(qm=be.Draw_GetPicSize(t).width)}catch{be.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
+ `)}_2(be),v2(be),A2(be)}}function N2(e,t,n,i,r,a,s){if(!be){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=be.CL_ClientTime(),l=R2(n.width,n.height);if(x2(be,s,n.width,n.height),M2(be,s,nc,qm,o,l),T2(be,s,n.width,n.height),S2(be,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
+ `),u=n.height/2-c.length*10;for(let m of c)be.SCR_DrawCenterString(u,m),u+=16}ic.drawCenterPrint(be,o,l),ic.drawNotifications(be,o),jm.drawSubtitles(be,o),g2(be,n.width,n.height)}function la(){return ic}function O2(){return jm}function I2(e,t,n){t>=we.Models&&t<we.Models+Bi?e.RegisterModel(n):t>=we.Sounds&&t<we.Sounds+Gi?e.RegisterSound(n):t>=we.Images&&t<we.Images+Hi&&e.Draw_RegisterPic(n)}var Jo=1e-6,ca=typeof Float32Array<"u"?Float32Array:Array,$m=Math.random;function Qo(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var C2={};f2(C2,{add:()=>B2,angle:()=>l5,bezier:()=>t5,ceil:()=>G2,clone:()=>P2,copy:()=>F2,create:()=>Zm,cross:()=>Z2,dist:()=>p5,distance:()=>n0,div:()=>g5,divide:()=>t0,dot:()=>ac,equals:()=>h5,exactEquals:()=>m5,floor:()=>H2,forEach:()=>A5,fromValues:()=>D2,hermite:()=>e5,inverse:()=>q2,len:()=>y5,length:()=>Jm,lerp:()=>J2,max:()=>W2,min:()=>V2,mul:()=>_5,multiply:()=>e0,negate:()=>Y2,normalize:()=>j2,random:()=>n5,rotateX:()=>s5,rotateY:()=>o5,rotateZ:()=>c5,round:()=>K2,scale:()=>$2,scaleAndAdd:()=>X2,set:()=>U2,slerp:()=>Q2,sqrDist:()=>v5,sqrLen:()=>w5,squaredDistance:()=>i0,squaredLength:()=>r0,str:()=>d5,sub:()=>f5,subtract:()=>Qm,transformMat3:()=>r5,transformMat4:()=>i5,transformQuat:()=>a5,zero:()=>u5});function Zm(){var e=new ca(3);return ca!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function P2(e){var t=new ca(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Jm(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function D2(e,t,n){var i=new ca(3);return i[0]=e,i[1]=t,i[2]=n,i}function F2(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function U2(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function B2(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Qm(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function e0(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function t0(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function G2(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function H2(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function V2(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 W2(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 K2(e,t){return e[0]=Qo(t[0]),e[1]=Qo(t[1]),e[2]=Qo(t[2]),e}function $2(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function X2(e,t,n,i){return e[0]=t[0]+n[0]*i,e[1]=t[1]+n[1]*i,e[2]=t[2]+n[2]*i,e}function n0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return Math.sqrt(n*n+i*i+r*r)}function i0(e,t){var n=t[0]-e[0],i=t[1]-e[1],r=t[2]-e[2];return n*n+i*i+r*r}function r0(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Y2(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function q2(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function j2(e,t){var n=t[0],i=t[1],r=t[2],a=n*n+i*i+r*r;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 ac(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Z2(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],l=n[2];return e[0]=r*l-a*o,e[1]=a*s-i*l,e[2]=i*o-r*s,e}function J2(e,t,n,i){var r=t[0],a=t[1],s=t[2];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=s+i*(n[2]-s),e}function Q2(e,t,n,i){var r=Math.acos(Math.min(Math.max(ac(t,n),-1),1)),a=Math.sin(r),s=Math.sin((1-i)*r)/a,o=Math.sin(i*r)/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 e5(e,t,n,i,r,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+i[0]*c+r[0]*u,e[1]=t[1]*o+n[1]*l+i[1]*c+r[1]*u,e[2]=t[2]*o+n[2]*l+i[2]*c+r[2]*u,e}function t5(e,t,n,i,r,a){var s=1-a,o=s*s,l=a*a,c=o*s,u=3*a*o,m=3*l*s,d=l*a;return e[0]=t[0]*c+n[0]*u+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*u+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*u+i[2]*m+r[2]*d,e}function n5(e,t){t=t===void 0?1:t;var n=$m()*2*Math.PI,i=$m()*2-1,r=Math.sqrt(1-i*i)*t;return e[0]=Math.cos(n)*r,e[1]=Math.sin(n)*r,e[2]=i*t,e}function i5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[3]*i+n[7]*r+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*i+n[4]*r+n[8]*a+n[12])/s,e[1]=(n[1]*i+n[5]*r+n[9]*a+n[13])/s,e[2]=(n[2]*i+n[6]*r+n[10]*a+n[14])/s,e}function r5(e,t,n){var i=t[0],r=t[1],a=t[2];return e[0]=i*n[0]+r*n[3]+a*n[6],e[1]=i*n[1]+r*n[4]+a*n[7],e[2]=i*n[2]+r*n[5]+a*n[8],e}function a5(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],l=t[1],c=t[2],u=r*c-a*l,m=a*o-i*c,d=i*l-r*o;return u=u+u,m=m+m,d=d+d,e[0]=o+s*u+r*d-a*m,e[1]=l+s*m+a*u-i*d,e[2]=c+s*d+i*m-r*u,e}function s5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0],a[1]=r[1]*Math.cos(i)-r[2]*Math.sin(i),a[2]=r[1]*Math.sin(i)+r[2]*Math.cos(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function o5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[2]*Math.sin(i)+r[0]*Math.cos(i),a[1]=r[1],a[2]=r[2]*Math.cos(i)-r[0]*Math.sin(i),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function c5(e,t,n,i){var r=[],a=[];return r[0]=t[0]-n[0],r[1]=t[1]-n[1],r[2]=t[2]-n[2],a[0]=r[0]*Math.cos(i)-r[1]*Math.sin(i),a[1]=r[0]*Math.sin(i)+r[1]*Math.cos(i),a[2]=r[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function l5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],l=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=l&&ac(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function u5(e){return e[0]=0,e[1]=0,e[2]=0,e}function d5(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function m5(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function h5(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=Jo*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=Jo*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=Jo*Math.max(1,Math.abs(r),Math.abs(o))}var f5=Qm,_5=e0,g5=t0,p5=n0,v5=i0,y5=Jm,w5=r0,A5=(function(){var e=Zm();return function(t,n,i,r,a,s){var o,l;for(n||(n=3),i||(i=0),r?l=Math.min(r*n+i,t.length):l=t.length,o=i;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 S5={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function k5(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 E5(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function b5(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=E5(t,i,r),s=e+a,l=Bn(n,xt.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(l),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(l*Math.PI))}}var ua=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...S5,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:i}=Qr($o({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Ht}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Bn(e.pmFlags,xt.OnGround),s=b5(this.bobTime,r,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=Fi(e.velocity,n)*this.settings.runPitch,l=Fi(e.velocity,i),c=l<0?-1:1,m=Math.abs(l)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Bn(e.pmFlags,xt.Ducked)&&a&&(d*=6,f*=6),o+=Math.min(d,this.settings.maxBobAngle),f=Math.min(f,this.settings.maxBobAngle),this.bobCycle&1&&(f=-f),m+=f;let g=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),v=0,p=0,w=0,x=0,k=0;if(this.kick&&this.kick.remainingMs>0){let b=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));v+=b*this.kick.pitch,p+=b*this.kick.roll,this.kick.origin&&(w+=b*this.kick.origin.x,x+=b*this.kick.origin.y,k+=b*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let y={x:o+v,y:0,z:m+p},E={x:w,y:x,z:g+k},T={angles:y,offset:k5(E),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},x5={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},T5=800,Ve={x:0,y:0,z:0},M5=64;function Tt(){return{origin:Ve,velocity:Ve,viewAngles:Ve,onGround:!1,pmFlags:xt.OnGround,pmType:ia.Normal,waterLevel:Vi.None,gravity:T5,deltaAngles:Ve,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:Ve,kick_origin:Ve,gunoffset:Ve,gunangles:Ve,gunindex:0,pm_time:0,pm_type:ia.Normal,pm_flags:xt.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 ec(e){return e?{...Tt(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Ve,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Tt()}function He(e,t,n){return e+(t-e)*n}function tc(e,t,n){let i=Dn(t-e);return i>180&&(i-=360),Dn(e+i*n)}function fn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:He(e.origin.x,t.origin.x,i),y:He(e.origin.y,t.origin.y,i),z:He(e.origin.z,t.origin.z,i)},velocity:{x:He(e.velocity.x,t.velocity.x,i),y:He(e.velocity.y,t.velocity.y,i),z:He(e.velocity.z,t.velocity.z,i)},viewAngles:{x:tc(e.viewAngles.x,t.viewAngles.x,i),y:tc(e.viewAngles.y,t.viewAngles.y,i),z:tc(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:He(e.damageAlpha,t.damageAlpha,i),blend:[He(e.blend[0],t.blend[0],i),He(e.blend[1],t.blend[1],i),He(e.blend[2],t.blend[2],i),He(e.blend[3],t.blend[3],i)],health:He(e.health||0,t.health||0,i),armor:He(e.armor||0,t.armor||0,i),ammo:He(e.ammo||0,t.ammo||0,i)}}function Xm(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons,angles:t.angles},s=Xo(e,a,i,r),{viewangles:o}=$o({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Ve});return{...s,viewAngles:o}}var da=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Tt()},this.commands=[],this.predicted=Tt(),this.predictionError=Ve,this.settings={...x5,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Tt()}setAuthoritative(e){let t=ec(e.state);if(e.frame<=this.baseFrame.frame)return this.predicted;let n,i=this.commands.filter(r=>r.sequence<=e.frame&&r.sequence>this.baseFrame.frame);if(i.length>0||this.baseFrame.frame===e.frame){let r=ec(this.baseFrame.state);for(let a of i)r=Xm(r,a,this.settings,this.trace,this.pointContents);n=r}if(n){let r=im(n.origin,t.origin),a=mn(r);a>10?this.predictionError=Ve:a>.1?this.predictionError=r:this.predictionError=Ve}else this.predictionError=Ve;return this.baseFrame={...e,state:t},this.commands=this.commands.filter(r=>r.sequence>e.frame),this.recompute()}getPredictionError(){return this.predictionError}decayError(e){let t=mn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=Un(this.predictionError,i)}}enqueueCommand(e){return this.commands.push(e),this.commands.length>M5&&this.commands.shift(),this.recompute()}getCommand(e){return this.commands.find(t=>t.sequence===e)}getPredictedState(){return this.predicted}recompute(){let e=ec(this.baseFrame.state);for(let t of this.commands)e=Xm(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},Ae=null,rc=null;function R5(){if(!Ae){console.error("CGame Init: cgame imports not set");return}Ae.Com_Print(`===== CGame Initialization =====
175
+ `),L2(Ae),rc=Ae.Cvar_Get("cg_predict","1",0),Ae.Cvar_Get("cg_showmiss","0",0),Ae.Com_Print(`CGame initialized
176
+ `)}function L5(){Ae&&Ae.Com_Print(`CGame shutdown
177
+ `),Ae=null}function z5(e,t,n,i,r,a,s){N2(e,t,n,i,r,a,s)}function N5(){z2()}function O5(e){return 0}function I5(e){return e.stats[Pe.STAT_ACTIVE_WHEEL_WEAPON]??0}function C5(e){let t=[],n=e.stats[Pe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Pe.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<aa.length;a++)r&1<<a&&t.push(a);return t}function P5(e,t){if(t<0||t>=aa.length)return 0;let n=aa[t],i=Gm[n];return i===null?-1:Pm(e.stats,i)}function D5(e){let t=0,n=Object.values(Wi);for(let i of n)ra(e.stats,i)>0&&t++;return t}function F5(e){return e.stats[Pe.STAT_HIT_MARKER]??0}function U5(e){let t=e;if(!t||!t.s||!t.cmd||!Ae||rc&&rc.value===0)return;let n=(a,s,o,l)=>{let c={x:0,y:0,z:0};return Ae.PM_Trace(a,s,o||c,l||c)},i=a=>{let s={x:0,y:0,z:0};return Ae.PM_Trace(a,a,s,s).contents||0},r=Xo(t.s,t.cmd,n,i);t.s.origin=r.origin,t.s.velocity=r.velocity,t.s.onGround=r.onGround,t.s.waterLevel=r.waterLevel}function B5(e,t){Ae&&I2(Ae,e,t)}function G5(e,t,n){if(!Ae)return;la().setCenterPrint(e,Ae.CL_ClientTime())}function H5(e,t,n){if(!Ae)return;la().addNotification(t,n,Ae.CL_ClientTime())}function V5(e){la().clearNotifications()}function W5(e){la().clearCenterPrint()}function K5(e,t){if(!Ae)return;O2().addSubtitle(e,Ae.CL_ClientTime())}function $5(e){return{x:0,y:0,z:0}}function X5(e){return null}function a0(e){return Ae=e,{Init:R5,Shutdown:L5,DrawHUD:z5,TouchPics:N5,LayoutFlags:O5,GetActiveWeaponWheelWeapon:I5,GetOwnedWeaponWheelWeapons:C5,GetWeaponWheelAmmoCount:P5,GetPowerupWheelCount:D5,GetHitMarkerDamage:F5,Pmove:U5,ParseConfigString:B5,ParseCenterPrint:G5,NotifyMessage:H5,ShowSubtitle:K5,ClearNotify:V5,ClearCenterprint:W5,GetMonsterFlashOffset:$5,GetExtension:X5}}function s0(e,t){let n=new Map,i=new Set,r=()=>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_Get:(a,s,o)=>{if(!e.host||!e.host.cvars)return{value:parseInt(s)||0};let l=e.host.cvars.get(a);return l||(l=e.host.cvars.register({name:a,defaultValue:s,flags:o})),{get value(){return l.number}}},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)||i.has(a)||(i.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)}i.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),i.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)=>{r()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let l=o,c=n.get(l);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,l,c)=>{let u=o,m=n.get(u);m&&r()?.drawPic(a,s,m,[l.x,l.y,l.z,c])},SCR_DrawFontString:(a,s,o)=>{r()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{r()?.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);r()?.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,Wt=0;var $i=!0,Xi=["ch1","ch2","ch3"],Vn=[null,null,null],o0=async(e,t)=>{for(let n=0;n<Xi.length;n++){let i=Xi[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);Vn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");Vn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Hn=Vn[0]};var c0=()=>{if($i?(Wt++,Wt>=Xi.length&&($i=!1,Wt=0)):($i=!0,Wt=0),$i){if(Hn=Vn[Wt],!Hn){let e=!1;for(let t=0;t<Xi.length;t++){let n=(Wt+t)%Xi.length;if(Vn[n]){Wt=n,Hn=Vn[n],e=!0;break}}e||(Hn=null)}}else Hn=null;return $i?Wt:-1};var Y5=Object.defineProperty,q5=Object.getOwnPropertyNames,vn=(e,t)=>function(){return e&&(t=(0,e[q5(e)[0]])(e=0)),t},j5=(e,t)=>{for(var n in t)Y5(e,n,{get:t[n],enumerable:!0})};function ti(e){return{x:e.x,y:e.y,z:e.z}}function U(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 D(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function ba(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Z5(e){return ba(e,e)}function Ue(e){return Math.sqrt(Z5(e))}function B(e){let t=Ue(e);return t===0?e:D(e,1/t)}function J5(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 Q5(e,t,n,i){let r=0;if(t.x<n.x){let a=t.x-n.x;r+=a*a}else if(e.x>i.x){let a=e.x-i.x;r+=a*a}if(t.y<n.y){let a=t.y-n.y;r+=a*a}else if(e.y>i.y){let a=e.y-i.y;r+=a*a}if(t.z<n.z){let a=t.z-n.z;r+=a*a}else if(e.z>i.z){let a=e.z-i.z;r+=a*a}return r}function Zi(e,t){switch(t){case xa:return e.x;case Ta:return e.y;case Nc:default:return e.z}}function pa(e){return e*Th}function gc(e){return e*Mh}function pc(e){let t=e%360;return t<0?360+t:t}function Z(e){let t=pa(Zi(e,Ta)),n=pa(Zi(e,xa)),i=pa(Zi(e,Nc)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u={x:o*a,y:o*r,z:-s},m={x:-l*s*a-c*-r,y:-l*s*r-c*a,z:-l*o},d={x:c*s*a-l*-r,y:c*s*r-l*a,z:c*o};return{forward:u,right:m,up:d}}function ar(e){let t=Zi(e,xa),n=Zi(e,Ta);if(t===0)return n===0?0:n>0?90:270;let i=gc(Math.atan2(n,t));return i<0?i+360:i}function ni(e){let t=e.x,n=e.y,i=e.z;if(n===0&&t===0)return{x:i>0?-90:-270,y:0,z:0};let r;t?r=gc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=gc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function sr(e){return new Oc(e)}function ek(e){return JSON.stringify(e,null,2)}function tk(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 nk(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function ik(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function rk(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Ue(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let g=u<l?l:u;m+=g*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let f=d/u;return D(t,f)}function ak(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=ba(t,n),o=i-s;if(o<=0)return t;let l=r*a*i;return l>o&&(l=o),{x:t.x+n.x*l,y:t.y+n.y*l,z:t.z+n.z*l}}function sk(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:0},s=Ue(a);if(s>r){let o=r/s;a=D(a,o),s=r}return{wishdir:s===0?a:B(a),wishspeed:s}}function ok(e){let{forward:t,right:n,cmd:i,maxSpeed:r}=e,a={x:t.x*i.forwardmove+n.x*i.sidemove,y:t.y*i.forwardmove+n.y*i.sidemove,z:t.z*i.forwardmove+n.z*i.sidemove};i.upmove>10?a=U(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=U(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=U(a,{x:0,y:0,z:-60}):a=U(a,{x:0,y:0,z:10});let s=Ue(a);if(s>r){let o=r/s;a=D(a,o),s=r}return s*=.5,{wishdir:s===0?a:B(a),wishspeed:s}}var l0,sc,W,ck,lk,xa,Ta,Nc,Th,Mh,oc,et,u0,d0,m0,h0,ma,f0,Oc,Fe,Mt,uk,ha,fa,_0,dk,mk,g0,hk,Yi,cc,p0,v0,y0,w0,A0,S0,fk,Yt,Qi,_k,gk,pk,gn,vk,yk,wk,Ak,Sk,kk,Ek,bk,xk,Tk,Mk,Rk,Lk,zk,Ic,Nk,Ok,qt,Rh,Ik,Nt,Ck,Pk,Dk,Fk,Uk,Bk,Gk,k0,lc,E0,b0,x0,T0,M0,R0,L0,_a,uc,Hk,z0,N0,Vk,re,ye,Lh,zh,Nh,Oh,Ih,Ch,Ph,Dh,Fh,Uh,ie,O0,I0,C0,Wk,P0,D0,Kk,$k,F0,U0,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,j0,Z0,J0,Q0,eh,th,nh,ih,rh,ah,Wn,ga,qi,sh,oh,Xk,ch,Kn,V,I,Yk,he,qk,lh,jk,Zk,F=vn({"../shared/dist/esm/index.js"(){"use strict";l0=Object.defineProperty,sc=(e,t)=>{for(var n in t)l0(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0},ck=.1,lk=Math.PI/180,xa=0,Ta=1,Nc=2,Th=Math.PI/180,Mh=180/Math.PI,oc=[[-.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]],et=624,u0=397,d0=2567483615,m0=2147483648,h0=2147483647,ma=4294967296,f0=class{constructor(e=5489){this.state=new Uint32Array(et),this.index=et,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<et;t++){let n=this.state[t-1]^this.state[t-1]>>>30,i=Math.imul(n>>>0,1812433253)+t;this.state[t]=i>>>0}this.index=et}nextUint32(){this.index>=et&&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<et;e++){let t=this.state[e]&m0|this.state[(e+1)%et]&h0,n=this.state[(e+u0)%et]^t>>>1;(t&1)!==0&&(n^=d0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==et)throw new Error(`Expected ${et} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},Oc=class{constructor(e={}){this.mt=new f0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ma}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,i=ma-ma%n,r;do r=this.mt.nextUint32();while(r>=i);return e+r%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)}},Fe=1,Mt=2,uk=4,ha=8,fa=16,_0=32,dk=64,mk=8192,g0=16384,hk=32768,Yi=65536,cc=1<<17,p0=1<<18,v0=1<<19,y0=1<<20,w0=1<<21,A0=1<<22,S0=1<<23,fk=1<<24,Yt=1<<25,Qi=1<<26,_k=1<<27,gk=1<<28,pk=1<<29,gn=1<<30,vk=1<<31,yk=1,wk=2,Ak=4,Sk=8,kk=16,Ek=32,bk=64,xk=128,Tk=1<<25,Mk=1<<28,Rk=1<<29,Lk=1<<30,zk=1<<31,Ic=Fe|Mt,Nk=Fe|Yi|Mt|Yt|gn,Ok=Fe|Yi|Mt,qt=Fe|cc|Mt|Yt|gn,Rh=_0|ha|fa,Ik=Fe|fa|ha,Nt=Fe|Yt|gn|Mt|Qi,Ck=p0|v0|y0|w0|A0|S0,Pk=Fe|ha|fa|Yt|gn,Dk=Fe|Yi|Mt,Fk=Fe|Mt,Uk=Fe|Yi|Mt|cc,Bk=Nt|g0,Gk=Number.MAX_SAFE_INTEGER-1,k0=(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))(k0||{}),lc=256,E0=256,b0=8192,x0=2048,T0=512,M0=256,R0=lc*2,L0=256,_a=32,uc=(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.HealthBarName=55]="HealthBarName",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+b0]="Sounds",e[e.Images=e.Sounds+x0]="Images",e[e.Lights=e.Images+T0]="Lights",e[e.ShadowLights=e.Lights+E0]="ShadowLights",e[e.Items=e.ShadowLights+L0]="Items",e[e.PlayerSkins=e.Items+M0]="PlayerSkins",e[e.General=e.PlayerSkins+lc]="General",e[e.WheelWeapons=e.General+R0]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+_a]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+_a]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+_a]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(uc||{}),Hk=uc.MaxConfigStrings,z0={},sc(z0,{addReplayFrame:()=>ik,createReplaySession:()=>nk,deserializeReplay:()=>tk,serializeReplay:()=>ek}),N0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(N0||{}),Vk=1080,re=(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))(re||{}),ye=(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))(ye||{}),Lh=0,zh=1,Nh=2,Oh=3,Ih=6,Ch=7,Ph=8,Dh=11,Fh=12,Uh=13,ie=(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))(ie||{}),O0=(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))(O0||{}),I0=12,C0=9,Wk=Math.ceil(I0*C0/16),P0=23,D0=2,Kk=Math.ceil(P0*D0/16),$k={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},F0=(e=>(e[e.MinLight=1]="MinLight",e[e.ViewerModel=2]="ViewerModel",e[e.WeaponModel=4]="WeaponModel",e[e.FullBright=8]="FullBright",e[e.DepthHack=16]="DepthHack",e[e.Translucent=32]="Translucent",e[e.FrameLerp=64]="FrameLerp",e[e.Beam=128]="Beam",e[e.CustomLight=256]="CustomLight",e[e.Glow=512]="Glow",e[e.ShellRed=1024]="ShellRed",e[e.ShellGreen=2048]="ShellGreen",e[e.ShellBlue=4096]="ShellBlue",e[e.IrVisible=32768]="IrVisible",e[e.ShellDouble=65536]="ShellDouble",e[e.ShellHalfDam=131072]="ShellHalfDam",e[e.MinLightPlus=262144]="MinLightPlus",e[e.ExtraLight=524288]="ExtraLight",e[e.BeamLightning=1048576]="BeamLightning",e))(F0||{}),U0={},sc(U0,{U_ANGLE1:()=>$0,U_ANGLE2:()=>X0,U_ANGLE3:()=>Y0,U_EFFECTS:()=>Z0,U_EVENT:()=>eh,U_FRAME:()=>q0,U_MODEL:()=>G0,U_MODEL2:()=>nh,U_MODEL3:()=>ih,U_MODEL4:()=>rh,U_MOREBITS:()=>th,U_NUMBER:()=>B0,U_ORIGIN1:()=>V0,U_ORIGIN2:()=>W0,U_ORIGIN3:()=>K0,U_REMOVE:()=>ah,U_RENDERFX:()=>J0,U_SKIN:()=>j0,U_SOLID:()=>Q0,U_SOUND:()=>H0}),B0=1,G0=2,H0=4,V0=8,W0=16,K0=32,$0=64,X0=128,Y0=256,q0=512,j0=1024,Z0=2048,J0=4096,Q0=8192,eh=16384,th=32768,nh=1,ih=2,rh=4,ah=32768,Wn=.025,ga=33554432,qi={None:0,Feet:1,Waist:2,Under:3},sh=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},oh=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&ga))return{...e,waterLevel:qi.None};let s=qi.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&ga){s=qi.Waist;let c=e.origin.z+22;n.z=c,t(n)&ga&&(s=qi.Under)}return{...e,waterLevel:s}},Xk=(e,t,n,i)=>{let r={...e};r=sh(r,n),r=oh(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:l,viewAngles:c}=r,u=l>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=Z(u),f=rk({velocity:s,frametime:Wn,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),g=l>=2?ok({forward:m,right:d,cmd:t,maxSpeed:320}):sk({forward:m,right:d,cmd:t,maxSpeed:320}),v=ak({velocity:f,wishdir:g.wishdir,wishspeed:g.wishspeed,accel:o||l>=2?10:1,frametime:Wn}),p=n(a,{x:a.x+v.x*Wn,y:a.y+v.y*Wn,z:a.z+v.z*Wn});return{...r,origin:p.endpos,velocity:v}},ch=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 i=0;i<oc.length;i++){let r=oc[i],a=e.x*r[0]+e.y*r[1]+e.z*r[2];a>t&&(t=a,n=i)}this.writeByte(n)}getData(){return this.buffer.slice(0,this.offset)}getBuffer(){return this.buffer}getOffset(){return this.offset}reset(){this.offset=0}},Kn=class De{constructor(){this.qport=0,this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ch(De.MAX_MSGLEN);let t=Date.now();this.lastReceived=t,this.lastSent=t,this.qport=Math.floor(Math.random()*65536)}setup(t,n=null){this.qport=t,this.remoteAddress=n,this.reset()}reset(){this.incomingSequence=0,this.outgoingSequence=0,this.incomingAcknowledged=0,this.incomingReliableAcknowledged=!1,this.incomingReliableSequence=0,this.outgoingReliableSequence=0,this.reliableLength=0,this.reliableMessage.reset(),this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=De.PACKET_HEADER,i=this.reliableLength>0?this.reliableLength+2:0,r=t?t.length:0;n+i+r>De.MAX_MSGLEN&&(r=De.MAX_MSGLEN-n-i,r<0&&(r=0));let a=new ArrayBuffer(n+i+r),s=new DataView(a),o=new Uint8Array(a),l=this.outgoingSequence;this.reliableLength>0&&(l|=2147483648,(this.outgoingReliableSequence&1)!==0&&(l|=1073741824)),s.setUint32(0,l,!0);let c=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(c|=2147483648),s.setUint32(4,c,!0),s.setUint16(8,this.qport,!0);let u=n;if(this.reliableLength>0){s.setUint16(u,this.reliableLength,!0),u+=2;let d=this.reliableMessage.getBuffer().subarray(0,this.reliableLength);o.set(d,u),u+=this.reliableLength}if(t&&r>0){let m=t.slice(0,r);o.set(m,u)}return o}process(t){if(t.length<De.PACKET_HEADER)return null;this.lastReceived=Date.now();let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=n.getUint32(0,!0),r=n.getUint32(4,!0),a=n.getUint16(8,!0);if(this.qport!==a)return null;let s=i&1073741823;if((s-this.incomingSequence|0)<=0)return null;this.incomingSequence=s;let o=r&2147483647,l=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let g=l?1:0,v=this.outgoingReliableSequence&1;g!==v&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1)}let c=(i&2147483648)!==0,u=(i&1073741824)!==0?1:0,m=De.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let g=n.getUint16(m,!0);m+=2;let v=this.incomingReliableSequence&1;if(u===v){if(this.incomingReliableSequence++,m+g>t.byteLength)return null;d=t.slice(m,m+g)}m+=g}let f=t.slice(m);if(d&&d.length>0){let g=d.length+f.length,v=new Uint8Array(g);return v.set(d,0),v.set(f,d.length),v}return f||new Uint8Array(0)}canSendReliable(){return this.reliableLength===0}writeReliableByte(t){if(this.reliableLength+1>De.MAX_MSGLEN-De.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>De.MAX_MSGLEN-De.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>De.MAX_MSGLEN-De.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeLong(t),this.reliableLength+=4}writeReliableString(t){let n=t.length+1;if(this.reliableLength+n>De.MAX_MSGLEN-De.HEADER_OVERHEAD)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeString(t),this.reliableLength+=n}getReliableData(){return this.reliableLength===0?new Uint8Array(0):this.reliableMessage.getBuffer().subarray(0,this.reliableLength)}needsKeepalive(t){return t-this.lastSent>1e3}isTimedOut(t,n=3e4){return t-this.lastReceived>n}},Kn.MAX_MSGLEN=1400,Kn.FRAGMENT_SIZE=1024,Kn.PACKET_HEADER=10,Kn.HEADER_OVERHEAD=Kn.PACKET_HEADER+2,V=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="supershotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="grenades",e.GrenadeLauncher="grenadelauncher",e.RocketLauncher="rocketlauncher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e.Trap="trap",e))(V||{}),I=(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))(I||{}),Yk=Object.keys(I).length/2,he=(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))(he||{}),qk=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],lh=(e=>(e[e.Auto=0]="Auto",e[e.Weapon=1]="Weapon",e[e.Voice=2]="Voice",e[e.Item=3]="Item",e[e.Body=4]="Body",e[e.Aux=5]="Aux",e[e.Footstep=6]="Footstep",e[e.Aux3=7]="Aux3",e[e.NoPhsAdd=8]="NoPhsAdd",e[e.Reliable=16]="Reliable",e[e.ForcePos=32]="ForcePos",e))(lh||{}),jk=1,Zk=2}});var Jk,yn=vn({"src/inventory/ammo.ts"(){"use strict";F(),Jk={[he.Shells]:{id:he.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[he.Bullets]:{id:he.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[he.Rockets]:{id:he.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[he.Grenades]:{id:he.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[he.Cells]:{id:he.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[he.Slugs]:{id:he.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[he.MagSlugs]:{id:he.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[he.Flechettes]:{id:he.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[he.Disruptor]:{id:he.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[he.Tesla]:{id:he.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[he.Trap]:{id:he.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[he.Prox]:{id:he.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function jt(e,t){return(e&t)!==0}var uh,Bh=vn({"src/combat/damageFlags.ts"(){"use strict";uh=(e=>(e[e.NONE=0]="NONE",e[e.RADIUS=1]="RADIUS",e[e.NO_ARMOR=2]="NO_ARMOR",e[e.ENERGY=4]="ENERGY",e[e.NO_KNOCKBACK=8]="NO_KNOCKBACK",e[e.BULLET=16]="BULLET",e[e.NO_PROTECTION=32]="NO_PROTECTION",e[e.DESTROY_ARMOR=64]="DESTROY_ARMOR",e[e.NO_REG_ARMOR=128]="NO_REG_ARMOR",e[e.NO_POWER_ARMOR=256]="NO_POWER_ARMOR",e[e.NO_INDICATOR=512]="NO_INDICATOR",e[e.NO_DAMAGE_EFFECTS=1024]="NO_DAMAGE_EFFECTS",e))(uh||{})}});function Qk(e,t,n){if(e<=0||jt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Gh[n.armorType],r=jt(t,4)?i.energyProtection:i.normalProtection,a=Math.ceil(r*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function eE(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(jt(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=Z(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},l=Math.hypot(o.x,o.y,o.z);if(r.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:r.cellCount}}let c=a.ctfMode??!1,u=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*u;jt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/u;jt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let g=Math.max(u,f),v=Math.max(0,r.cellCount-g);return{saved:d,remainingCells:v}}var pn,Gh,Hh=vn({"src/combat/armor.ts"(){"use strict";F(),Bh(),pn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(pn||{}),Gh={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 Vh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var Ee,Qt=vn({"src/inventory/playerInventory.ts"(){"use strict";yn(),F(),Hh(),Ee=(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))(Ee||{})}});function Wh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var dh,Kh=vn({"src/combat/weapons/state.ts"(){"use strict";dh=(e=>(e[e.WEAPON_READY=0]="WEAPON_READY",e[e.WEAPON_ACTIVATING=1]="WEAPON_ACTIVATING",e[e.WEAPON_DROPPING=2]="WEAPON_DROPPING",e[e.WEAPON_FIRING=3]="WEAPON_FIRING",e))(dh||{})}}),$h={};j5($h,{ChangeWeapon:()=>nE,NoAmmoWeaponChange:()=>iE,setInstantSwitch:()=>tE,switchToBestWeapon:()=>Xh});function tE(e){Ma=e}function nE(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Vh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,Ma){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function iE(e){e.client&&Xh(e)}function Xh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(V.BFG10K)&&t.ammo.counts[I.Cells]>=50?n=V.BFG10K:t.ownedWeapons.has(V.RocketLauncher)&&t.ammo.counts[I.Rockets]>=1?n=V.RocketLauncher:t.ownedWeapons.has(V.Railgun)&&t.ammo.counts[I.Slugs]>=1?n=V.Railgun:t.ownedWeapons.has(V.Chaingun)&&t.ammo.counts[I.Bullets]>=1?n=V.Chaingun:t.ownedWeapons.has(V.SuperShotgun)&&t.ammo.counts[I.Shells]>=2?n=V.SuperShotgun:t.ownedWeapons.has(V.Machinegun)&&t.ammo.counts[I.Bullets]>=1?n=V.Machinegun:t.ownedWeapons.has(V.Shotgun)&&t.ammo.counts[I.Shells]>=1?n=V.Shotgun:n=V.Blaster,n&&n!==t.currentWeapon&&(Vh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,Ma&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var Ma,rE=vn({"src/combat/weapons/switching.ts"(){"use strict";Qt(),yn(),Ma=!1}});F();Qt();yn();var aE={...W};var I7=Object.freeze({aiflags:0,last_sighting:aE,trail_time:0,pausetime:0});var Cc=[{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:"spawn_count",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:"last_move_time",type:"float",save:!0},{name:"damage_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}];F();F();F();F();var sE=20,oE=440,cE=940,dc=32,lE=1<<24,ya=1;F();F();function mh(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 en(e,t){let n=mh(e),i=mh(t),r=Q5(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function uE(e){return e<=sE?"melee":e<=oE?"near":e<=cE?"mid":"far"}function er(e,t){let{forward:n}=Z(e.angles),i=B(P(t.origin,e.origin)),r=ba(i,n);return(e.spawnflags&ya)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function wn(e,t,n,i){if((t.flags&lE)!==0)return!1;let r={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=i?.throughGlass?1:3,o=n(r,null,null,a,e,s);return o.fraction===1||o.ent===t}F();function dE(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=ar(n)}function Yh(e){e.angles.y=pc(e.ideal_yaw)}function mE(e,t,n){e.enemy&&(e.goalentity=e.enemy,dE(e,e.enemy),Yh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function hE(e,t,n,i){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 r=e.monsterinfo.last_sighting;if(r.x=e.enemy.origin.x,r.y=e.enemy.origin.y,r.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){mE(e,t,n);return}let a=i?.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 fE(e,t,n,i){let r=en(e,t),a=uE(r);return a==="far"||t.light_level<=5||!wn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||er(e,t):a==="mid"?er(e,t):!0}function _E(e,t,n,i,r){if((e.spawnflags&ya)!==0){if(!wn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=P(t.origin,e.origin);return Ue(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=ar(a),Yh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function gE(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&ya)===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&ya)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function pE(e){return(e.flags&dc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&dc)!==0:!!(e.enemy&&(e.enemy.flags&dc)!==0)}function Pc(e,t,n,i,r={}){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}=gE(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(pE(a))return!1;if(s){if(!_E(e,a,t,r,i))return!1}else{if(!fE(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return hE(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var mc=18;function qh(e,t){if(t===0)return{x:0,y:0,z:0};let n=pa(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ra(e,t,n){let i=qh(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ii(e,t){let n=pc(e.angles.y),i=e.ideal_yaw;if(n===i){e.angles.y=n;return}let r=e.yaw_speed*t*10,a=i-n;i>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>r?a=r:a<-r&&(a=-r),e.angles.y=pc(n+a)}function _(e,t){Ra(e,e.angles.y,t)}function La(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=ar(n)}function M(e,t,n){Pc(e,n.targetAwareness,n,n.trace)||ii(e,t)}function z(e,t,n,i){if(!Pc(e,i.targetAwareness,i,i.trace)&&(La(e,e.goalentity),ii(e,n),t!==0&&Ra(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&en(e,e.goalentity)<64&&e.goalentity.target)){let a=i.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function se(e,t,n){t!==0&&Ra(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&ii(e,n)}function ce(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Pc(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&La(e,e.enemy??e.goalentity),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&jh(e,e.angles.y,t,i)}function vE(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&La(e,t),ii(e,i),n!==0&&Ra(e,e.angles.y,n)}function ue(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&La(e,e.enemy),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&jh(e,e.angles.y,t,i)}function hh(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},i=t.trace(e.origin,e.mins,e.maxs,n,e,qt);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&Rh?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function fh(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},i={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},r={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?r={x:n.x,y:n.y,z:0}:r={x:i.x,y:n.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,qt).fraction<1)||(s===1?r={x:n.x,y:i.y,z:0}:r={x:i.x,y:i.y,z:0},r.z=n.z-1,t.pointcontents(r)!==0)||(a={...r},a.z=r.z-60,t.trace(r,null,null,a,e,qt).fraction<1))return!0;return!1}function jh(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=qh(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+r.x,y:e.origin.y+r.y,z:e.origin.z+r.z};if(i.trace(e.origin,e.mins,e.maxs,a,e,qt).fraction===1){let p={...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&&!fh(e,i)?(e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,!1):((e.flags&3)===0&&hh(e,i),!0)}if((e.flags&3)!==0)return!1;let o={...e.origin},l={...e.origin,z:e.origin.z+mc},c=i.trace(e.origin,e.mins,e.maxs,l,e,qt);if(c.startsolid||c.allsolid)return!1;let u={x:l.x+r.x,y:l.y+r.y,z:l.z};if(i.trace(l,e.mins,e.maxs,u,e,qt).fraction<1)return!1;let d={x:u.x,y:u.y,z:u.z-mc},f={x:d.x,y:d.y,z:d.z-mc},g=i.trace(u,e.mins,e.maxs,d,e,qt);if(g.startsolid||g.allsolid)return!1;let v=g.endpos;return e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,fh(e,i)?(hh(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}F();F();var yE=Cc.filter(e=>e.save||e.type==="callback"),C7=new Map(yE.map(e=>[e.name,e]));F();F();Hh();Bh();F();function wE(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let i=1;return n.quad_time&&n.quad_time>t&&(i*=4),n.double_time&&n.double_time>t&&(i*=2),i}function AE(e,t,n,i,r){if(jt(r,8)||((e.flags??0)&4)!==0||i===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=B(n),c=D(o,(t===e?1600:500)*i/s);return e.velocity=U(e.velocity,c),c}function SE(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=eE(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=Qk(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function _h(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 fe(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=wE(n,u),f=s*d,g=o*d;if(!jt(l,32)&&((e.flags??0)&1)!==0&&f>0)return{take:0,psave:0,asave:f,knocked:{x:0,y:0,z:0},killed:!1};let p=AE(e,n,i,g,l),[w,x,k,y,E]=SE(e,r,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(w=e.health+100,x=0,k=0),e.powerArmor&&y!==void 0&&(e.powerArmor.cellCount=y),e.regularArmor&&(e.regularArmor.armorCount=E??e.regularArmor.armorCount);let T=w;T>0&&(e.health-=T,m&&!jt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,re.temp_entity,ye.BLOOD,r,a));let b=e.health<=0;return b?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,T,r,c):T>0&&e.pain&&e.pain(e,n,o,T,c),{take:T,psave:x,asave:k,knocked:p,killed:b,remainingCells:y,remainingArmor:E}}function Dc(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=_h(t),f=c.canDamage??(()=>!0);for(let g of e){if(g===r||!g.takedamage||!f(g,t))continue;let v=g.mins&&g.maxs?J5(d,U(g.origin,g.mins),U(g.origin,g.maxs)):_h(g),p=P(d,v),w=Ue(p);if(a>0&&w>a)continue;let x=i-.5*w;if(x<=0)continue;let k=g===n?x*.5:x,y=B(P(g.origin,d)),E=fe(g,t,n,y,v,y,k,k,s|1,o,l,u);m.push({target:g,result:E,appliedDamage:k})}return m}var P7=sr();F();F();F();function Zh(e,t,n,i,r,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:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&fe(u,c,c.owner,c.velocity,c.origin,m?m.normal:W,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);Dc(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,re.temp_entity,ye.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function Fc(e,t,n,i,r,a,s=2.5){let o=e.spawn();o.classname="grenade",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.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);Dc(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,re.temp_entity,ye.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,u,m,d)=>{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 or(e,t,n,i,r,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:i.x*a,y:i.y*a,z:i.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,m)=>{if(c!==l.owner){if(c&&c.takedamage)fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=ye.BLASTER;s===58&&(d=ye.BLUEHYPERBLASTER),e.multicast(l.origin,1,re.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o),o}function kE(e,t,n,i,r,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.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){fe(l,o,o.owner,o.velocity,o.origin,c?c.normal:W,r,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,re.temp_entity,ye.WELDING_SPARKS,o.origin,W,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,re.temp_entity,ye.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,re.temp_entity,ye.WELDING_SPARKS,o.origin,W,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function EE(e,t,n,i,r,a){or(e,t,n,i,r,a,58)}function bE(e,t,n,i){let r={...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,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},l=16,c=[],u=[],m={...r};try{for(let f=0;f<l;f++){let g=e.trace(m,null,null,o,t,Fe|Yt|gn|Qi);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&fe(g.ent,t,t.owner,s,g.endpos,W,i,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,m={...g.endpos}}let d=e.trace(r,null,null,o,t,Fe);e.multicast(t.origin,2,re.temp_entity,ye.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function xE(e,t){let n=t.deathmatch?5:10,i=t.findByRadius(e.origin,256);for(let r of i){if(r===e||r===e.owner||!r.takedamage||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let a={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5};t.trace(e.origin,null,null,a,null,Ic).fraction<1||bE(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function TE(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 i of n){if(!i.takedamage||i===e.owner||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let r={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5},a=P(e.origin,r),s=Ue(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&fe(i,e,e.owner,e.velocity,r,W,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 Jh(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.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=r,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,m)=>{if(c===l.owner)return;c&&c.takedamage&&fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Dc(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,re.temp_entity,ye.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=W,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(f,g)=>TE(f,g),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>xE(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}F();var D7=1/40;yn();Qt();Kh();Qt();var ME=1;Qt();Kh();Qt();yn();F();F();var RE=22;function pt(e,t,n,i,r,a){let s=ti(t.origin),o={...s,z:s.z+(t.viewheight??RE)},l=D(i,n.x),c=D(r,n.y),u=D(a,n.z),m=U(U(U(o,l),c),u),d=e.trace(o,null,null,m,t,Ic);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var LE=7,zE=18,NE=36,OE=39,IE=5,CE=28,PE=52,DE=57,FE=3,UE=23,BE=52,GE=61,HE=4,VE=21,WE=52,KE=61,$E=3,XE=18,YE=51,qE=56,jE=3,ZE=12,JE=34,QE=38,eb=5,tb=9,nb=28,ib=32,rb=8,ab=32,sb=54,ob=58,cb=5,lb=16,ub=36,db=39,mb=4,hb=8,fb=52,_b=55;var gb=46,pb=53;var vb=109,yb=117;var wb=1;var Zt=sr();function vt(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}function yt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=wb,t?(e.frame=vb-1,e.client.anim_end=yb):(e.frame=gb-1,e.client.anim_end=pb)}function Qh(e,t,n,i,r,a,s){let o={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},l=e.trace(n,null,null,o,t,0);l.ent&&l.ent.takedamage?fe(l.ent,t,t,W,l.endpos,l.plane?l.plane.normal:W,r,a,16,s,e.time,e.multicast):l.plane&&e.multicast(l.endpos,1,re.temp_entity,ye.GUNSHOT,l.endpos,l.plane.normal)}function vc(e,t,n,i,r,a,s,o,l,c,u,m){for(let d=0;d<s;d++){let f=U(D(r,Zt.crandom()*c),D(a,Zt.crandom()*u)),g=U(i,f),v={x:n.x+g.x*8192,y:n.y+g.y*8192,z:n.z+g.z*8192},p=e.trace(n,null,null,v,t,0);p.ent&&p.ent.takedamage?fe(p.ent,t,t,W,p.endpos,p.plane?p.plane.normal:W,o,l,16,m,e.time,e.multicast):p.plane&&Zt.frandom()>.9&&e.multicast(p.endpos,1,re.temp_entity,ye.GUNSHOT,p.endpos,p.plane.normal)}}function Ab(e,t,n,i,r,a){let s={...n},o={...n},l={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,u=0,m=l;for(;u<16;){u++;let d=e.trace(o,null,null,l,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&fe(d.ent,t,t,W,d.endpos,d.plane?d.plane.normal:W,r,a,4,11,e.time,e.multicast),c=d.ent,o=d.endpos,!d.ent||d.ent===e.entities.world))break}e.multicast(s,2,re.temp_entity,ye.RAILTRAIL,s,m)}function Sb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<1)return;n.ammo.counts[I.Shells]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Nh),vt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);vc(e,t,s,i,r,a,12,4,1,500,500,2)}function kb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Shells]<2)return;n.ammo.counts[I.Shells]-=2,e.multicast(t.origin,1,re.muzzleflash,t.index,Dh),vt(t,-4,0,-4),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:l,up:c}=Z({...t.angles,y:t.angles.y-5});vc(e,t,s,o,l,c,10,6,1,700,700,3);let{forward:u,right:m,up:d}=Z({...t.angles,y:t.angles.y+5});vc(e,t,s,u,m,d,10,6,1,700,700,3)}function Eb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Bullets]<1)return;n.ammo.counts[I.Bullets]--,e.multicast(t.origin,1,re.muzzleflash,t.index,zh),vt(t,-1,Zt.crandom()*.5,0),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);Qh(e,t,s,i,8,1,4)}function bb(e,t){if(!t.client)return;let n=t.client.inventory,i=Wh(t.client.weaponStates,V.Chaingun);e.time-i.lastFireTime>200&&(i.spinupCount=0);let r=(i.spinupCount||0)+1;i.spinupCount=r;let a;if(r<=5?(a=1,r===1&&e.sound(t,0,"weapons/chngnu1a.wav",1,0,0)):(r<=10?a=2:a=3,e.sound(t,0,"weapons/chngnl1a.wav",1,0,0)),n.ammo.counts[I.Bullets]<a&&(a=n.ammo.counts[I.Bullets]),a===0)return;n.ammo.counts[I.Bullets]-=a;let s=e.deathmatch?6:8,o=1;vt(t,-.5,Zt.crandom()*(.5+a*.15),0),yt(t);let{forward:l,right:c,up:u}=Z(t.angles),m=pt(e,t,{x:8,y:8,z:-8},l,c,u);for(let f=0;f<a;f++){let g=U(D(c,Zt.crandom()*4),D(u,Zt.crandom()*4)),v=U(l,g);Qh(e,t,m,v,s,o,5)}let d=Oh+a-1;e.multicast(t.origin,1,re.muzzleflash,t.index,d)}function xb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Slugs]<1)return;n.ammo.counts[I.Slugs]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Ih),vt(t,-3,0,-3),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,l=e.deathmatch?200:225;Ab(e,t,s,i,o,l)}function Tb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Cells]<1)return;n.ammo.counts[I.Cells]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Uh),vt(t,-.5,0,0),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;or(e.entities,t,s,i,o,1e3,10)}function Mb(e,t){if(!t.client)return;e.multicast(t.origin,1,re.muzzleflash,t.index,Lh),vt(t,-.5,0,0),yt(t);let{forward:n,right:i,up:r}=Z(t.angles),a=pt(e,t,{x:8,y:8,z:-8},n,i,r);or(e.entities,t,a,n,15,1500,1)}function Rb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Rockets]<1)return;n.ammo.counts[I.Rockets]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Ch),vt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Zh(e.entities,t,s,i,o,120,650)}function Lb(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[I.Grenades]<1)return;n.ammo.counts[I.Grenades]--,e.multicast(t.origin,1,re.muzzleflash,t.index,Ph),vt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=Z(t.angles),s=pt(e,t,{x:8,y:8,z:-8},i,r,a);Fc(e.entities,t,s,i,120,600)}function zb(e,t){if(!t.client)return;let n=t.client.inventory,i=t.client.gun_frame,r=i===9||i===0||i===void 0,a=i===22||i===0||i===void 0;if(r){if(n.ammo.counts[I.Cells]<50)return;n.ammo.counts[I.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,re.muzzleflash,t.index,Fh),vt(t,-5,0,-2),yt(t);let{forward:s,right:o,up:l}=Z(t.angles),c=pt(e,t,{x:8,y:8,z:-8},s,o,l),u=e.deathmatch?200:500;Jh(e.entities,t,c,s,u,400,200)}}function $t(e){let t=.1;return e.client?.inventory.powerups.has(ie.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(ie.QuadFire)&&(t*=.25),t}function Ot(e,t,n,i,r,a,s,o,l){if(!e.client)return;let c=e.client,u=l.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=u&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>u)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=u+$t(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+$t(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=u+$t(e);return}Promise.resolve().then(()=>(rE(),$h)).then(({ChangeWeapon:m})=>{m(e)});return}if(c.weaponstate===0){if(c.buttons&1){c.weaponstate=3,c.gun_frame=t+1;return}if(c.gun_frame<i){if(c.gun_frame++,c.weapon_think_time=u+$t(e),a){for(let m of a)if(c.gun_frame===m&&Zt.frandom()<.9375)return}return}c.gun_frame=n+1,c.weapon_think_time=u+$t(e);return}if(c.weaponstate===3){if(s){for(let m of s)if(c.gun_frame===m){o&&o(e);break}}if(c.gun_frame<n){c.gun_frame++,c.weapon_think_time=u+$t(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=u+$t(e);return}}}function Uc(e,t,n,i,r,a,s,o){if(!e.client)return;let l=e.client,c=t+1;l.weaponstate===3?(l.gun_frame===n||l.gun_frame===i?l.gun_frame=c:l.gun_frame++,s&&s(e),l.buttons&1||(l.gun_frame=i+1,l.weaponstate=0),l.weapon_think_time=o.timeSeconds+$t(e)):Ot(e,t,n,i,r,a,null,s,o)}var Nb=[38,43,51,61];function Ob(e,t){let n=Wh(e.client.weaponStates,V.Chaingun);!(e.client.buttons&ME)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Uc(e,HE,VE,WE,KE,Nb,i=>bb(t.game,i),t)}var Ib=[22,28,34],Cb=[8];function Pb(e,t){Ot(e,LE,zE,NE,OE,Ib,Cb,n=>Sb(t.game,n),t)}var Db=[29,42,57],Fb=[22,28];function Ub(e,t){Ot(e,IE,CE,PE,DE,Db,Fb,n=>kb(t.game,n),t)}var Bb=[23,45],Gb=[4,5,30,31];function Hb(e,t){Ot(e,FE,UE,BE,GE,Bb,Gb,n=>Eb(t.game,n),t)}var Vb=[25,33],Wb=[4];function Kb(e,t){Ot(e,jE,ZE,JE,QE,Vb,Wb,n=>Rb(t.game,n),t)}function $b(e,t){Uc(e,eb,tb,nb,ib,null,n=>Tb(t.game,n),t)}var Xb=[56],Yb=[4];function qb(e,t){Ot(e,$E,XE,YE,qE,Xb,Yb,n=>xb(t.game,n),t)}var jb=[39,45,50,54],Zb=[9,22];function Jb(e,t){Ot(e,rb,ab,sb,ob,jb,Zb,n=>zb(t.game,n),t)}var Qb=[34,51,59],ex=[6];function tx(e,t){Ot(e,cb,lb,ub,db,Qb,ex,n=>Lb(t.game,n),t)}var nx=[19,32],ix=[5];function rx(e,t){Ot(e,mb,hb,fb,_b,nx,ix,n=>Mb(t.game,n),t)}F();function ax(e,t,n=0,i=0){e.client&&(e.client.kick_angles={x:t,y:n,z:0},e.client.kick_origin={x:i,y:0,z:0})}var sx=24;function ox(e,t){if(!e.inUse||!e.takedamage||e===t.self)return!1;let n=(c,u,m)=>({x:Math.max(u.x,Math.min(c.x,m.x)),y:Math.max(u.y,Math.min(c.y,m.y)),z:Math.max(u.z,Math.min(c.z,m.z))}),i=n(t.start,{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}),r=n(i,{x:t.self.origin.x+t.self.mins.x,y:t.self.origin.y+t.self.mins.y,z:t.self.origin.z+t.self.mins.z},{x:t.self.origin.x+t.self.maxs.x,y:t.self.origin.y+t.self.maxs.y,z:t.self.origin.z+t.self.maxs.z}),a=P(i,r),s=Ue(a);if(s>t.reach)return!1;let o={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},l=B(P(o,t.start));return!(ba(l,t.aim)<.7&&s>1)}function cx(e,t,n,i,r,a,s,o){let l={x:r,y:r,z:r},c={x:t.origin.x+t.mins.x-r,y:t.origin.y+t.mins.y-r,z:t.origin.z+t.mins.z-r},u={x:t.origin.x+t.maxs.x+r,y:t.origin.y+t.maxs.y+r,z:t.origin.z+t.maxs.z+r},m=e.entities.findInBox(c,u),d={self:t,start:n,aim:i,reach:r},f=!1,g=(v,p,w)=>({x:Math.max(p.x,Math.min(v.x,w.x)),y:Math.max(p.y,Math.min(v.y,w.y)),z:Math.max(p.z,Math.min(v.z,w.z))});for(let v of m){if(!ox(v,d))continue;let p={x:v.origin.x+v.mins.x,y:v.origin.y+v.mins.y,z:v.origin.z+v.mins.z},w={x:v.origin.x+v.maxs.x,y:v.origin.y+v.maxs.y,z:v.origin.z+v.maxs.z},x=g(n,p,w);fe(v,t,t,i,x,D(i,-1),a,s/2,8,o,e.time,e.multicast),f=!0}return f}function lx(e,t){let n={x:0,y:0,z:0},i={x:0,y:0,z:0},r={x:0,y:0,z:0},a=t.client?t.client.v_angle:t.angles,s=Z(a||{x:0,y:0,z:0}),o={x:8,y:8,z:-4},l={x:t.origin.x+t.viewheight*0+s.forward.x*o.x+s.right.x*o.y+s.up.x*o.z,y:t.origin.y+t.viewheight*0+s.forward.y*o.x+s.right.y*o.y+s.up.y*o.z,z:t.origin.z+t.viewheight*1+s.forward.z*o.x+s.right.z*o.y+s.up.z*o.z};e.multicast(l,1,re.temp_entity,ye.CHAINFIST_SMOKE,l)}function ux(e,t,n,i,r,a){let s=7;e.deathmatch&&(s=15),t.client&&t.client.quad_time&&t.client.quad_time>e.time&&(s*=4);let o=cx(e,t,r,a,sx,s,100,41);ax(t,-.5,0,0)}function dx(e,t){let n=t.game;if(Uc(e,4,32,57,60,[],a=>{let s=a.client?a.client.v_angle:a.angles,l=Z(s||{x:0,y:0,z:0}).forward,c={x:a.origin.x,y:a.origin.y,z:a.origin.z+(a.viewheight||0)},u=a.client?a.client.inventory:{ammo:{counts:[]}};if(ux(n,a,u,{},c,l),a.client){let d=a.client;d.buttons&1?d.gun_frame===12?d.gun_frame=14:d.gun_frame===22?d.gun_frame=24:d.gun_frame>=32&&(d.gun_frame=7):(d.gun_frame===13||d.gun_frame===23||d.gun_frame>=32)&&(d.gun_frame=33)}},t),e.client){let a=e.client.gun_frame;(a===42||a===51)&&Math.random()<.125&&Math.random()<.4&&lx(n,e)}}var F7={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:V.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:rx},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:V.Shotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Pb},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:V.SuperShotgun,ammoType:I.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Ub},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:V.Machinegun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Hb},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:V.Chaingun,ammoType:I.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Ob},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:V.HandGrenade,ammoType:I.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:V.GrenadeLauncher,ammoType:I.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:tx},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:V.RocketLauncher,ammoType:I.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:Kb},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:V.HyperBlaster,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:$b},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:V.Railgun,ammoType:I.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:qb},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:V.BFG10K,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:Jb},weapon_chainfist:{type:"weapon",id:"weapon_chainfist",name:"Chainfist",weaponId:V.ChainFist,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.1,think:dx},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:V.IonRipper,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:V.Phalanx,ammoType:I.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:V.PlasmaBeam,ammoType:I.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:V.EtfRifle,ammoType:I.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:V.ProxLauncher,ammoType:I.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};yn();yn();F();F();var Xe=sr(),yc=0,mx=1;function ef(e){let t=100*Xe.crandom(),n=100*Xe.crandom(),i=200+100*Xe.frandom();return e<50?(t*=.7,n*=.7,i*=.7):(t*=1.2,n*=1.2,i*=1.2),{x:t,y:n,z:i}}function tf(e){let{x:t,y:n,z:i}=e.velocity;t<-300?t=-300:t>300&&(t=300),n<-300?n=-300:n>300&&(n=300),i<200?i=200:i>500&&(i=500),e.velocity={x:t,y:n,z:i}}function nf(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function tt(e,t,n,i,r=yc){let a=e.spawn();a.classname="gib",a.origin={x:t.x+Xe.crandom()*20,y:t.y+Xe.crandom()*20,z:t.z+Xe.crandom()*20};let s=i||"models/objects/gibs/sm_meat/tris.md2";a.modelindex=e.modelIndex(s),a.mins={x:-2,y:-2,z:-2},a.maxs={x:2,y:2,z:2},a.solid=0,a.takedamage=!0,a.die=(c,u,m,d,f,g)=>{e.free(c)},a.clipmask=1;let o=1;r===yc?(a.movetype=7,a.touch=(c,u,m,d)=>nf(c,u,m,d,e),o=.5):(a.movetype=9,o=1);let l=ef(n);return a.velocity={x:l.x*o,y:l.y*o,z:l.z*o},tf(a),a.avelocity={x:Xe.frandom()*600,y:Xe.frandom()*600,z:Xe.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+Xe.frandom()*10),e.finalizeSpawn(a),a}function hx(e,t,n){let i=e.spawn(),r;Xe.irandom(2)===1?(r="models/objects/gibs/head2/tris.md2",i.skin=1):(r="models/objects/gibs/skull/tris.md2",i.skin=0),i.frame=0,i.modelindex=e.modelIndex(r),i.mins={x:-16,y:-16,z:0},i.maxs={x:16,y:16,z:16},i.origin={x:t.x,y:t.y,z:t.z+32},i.solid=0,i.takedamage=!0,i.die=(o,l,c,u,m,d)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,l,c,u)=>nf(o,l,c,u,e);let s=ef(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},tf(i),i.avelocity={x:0,y:Xe.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+Xe.frandom()*10),e.finalizeSpawn(i),i}function rf(e,t,n,i=yc){if(typeof n=="number"){let r=n;i===mx?(tt(e,t,r,"models/objects/debris1/tris.md2",i),tt(e,t,r,"models/objects/debris2/tris.md2",i),tt(e,t,r,"models/objects/debris3/tris.md2",i),tt(e,t,r,"models/objects/debris2/tris.md2",i)):(tt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),tt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),tt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),tt(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),tt(e,t,r,"models/objects/gibs/meat/tris.md2",i),tt(e,t,r,"models/objects/gibs/bone/tris.md2",i),hx(e,t,r))}else{let r=n;for(let a of r)for(let s=0;s<a.count;s++)tt(e,t,0,a.model,a.flags)}}F();function fx(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 i=e.frame-n.firstframe,r=n.frames[i];r.ai&&r.ai(e,r.dist,t),r.think&&r.think(e,t),e.inUse&&(e.frame++,e.frame>n.lastframe&&n.endfunc&&(n.endfunc(e,t),e.monsterinfo.current_move))}function _x(e,t){fx(e,t),e.nextthink=t.timeSeconds+.1}var za=.1,Ji=80;var af=sr();function gx(){return af.frandom()}function sf(e,t){return Math.floor(af.frandom()*(t-e+1)+e)}function jn(e,t,n){M(e,za,n)}function nt(e,t,n){z(e,t,za,n)}function $n(e,t,n){ce(e,t,za,n)}function ve(e,t,n){ue(e,t,za,n)}function j(e,t,n){_(e,t)}var tr={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 st(e,t){t.sound(e,2,tr.footstep,1,1,0)}function wa(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function px(e,t){}var Bc,of,vx,cf,yx,wx,Ax,Sx,kx,lf,Ex;function bx(e,t){wa(e,Bc)}function xx(e,t){e.monsterinfo.aiflags&1||e.enemy||gx()>.15||(wa(e,of),t.sound(e,1,tr.idle,1,2,0))}var Tx=[{ai:jn,dist:0,think:xx},{ai:jn,dist:0},{ai:jn,dist:0},{ai:jn,dist:0},{ai:jn,dist:0}];Bc={firstframe:0,lastframe:4,frames:Tx,endfunc:null};var Mx=Array.from({length:20},()=>({ai:jn,dist:0}));of={firstframe:5,lastframe:24,frames:Mx,endfunc:bx};var Rx=[{ai:nt,dist:9.1},{ai:nt,dist:6.3},{ai:nt,dist:4.9},{ai:nt,dist:6.7,think:st},{ai:nt,dist:6},{ai:nt,dist:8.2},{ai:nt,dist:7.2},{ai:nt,dist:6.1},{ai:nt,dist:4.9},{ai:nt,dist:4.7,think:st},{ai:nt,dist:4.7}];vx={firstframe:25,lastframe:35,frames:Rx,endfunc:null};var Lx=[{ai:$n,dist:21},{ai:$n,dist:11,think:st},{ai:$n,dist:21},{ai:$n,dist:25,think:px},{ai:$n,dist:18,think:st},{ai:$n,dist:19}];cf={firstframe:36,lastframe:41,frames:Lx,endfunc:null};function cr(e,t){e.monsterinfo.aiflags&1?wa(e,Bc):wa(e,cf)}function uf(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Z(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*Ji,y:a.y+s.y*Ji,z:a.z+s.z*Ji},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function zx(e,t){uf(e,{x:Ji,y:0,z:-24},sf(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function df(e,t){t.sound(e,1,tr.punch,1,1,0)}var Nx=[{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:df},{ai:ve,dist:0,think:zx},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0}];yx={firstframe:67,lastframe:74,frames:Nx,endfunc:cr};function Ox(e,t){uf(e,{x:Ji,y:0,z:-4},sf(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Ix=[{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0,think:st},{ai:ve,dist:0},{ai:ve,dist:0,think:df},{ai:ve,dist:0},{ai:ve,dist:0,think:Ox},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:0}];wx={firstframe:75,lastframe:86,frames:Ix,endfunc:cr};function Cx(e,t,n,i,r,a){let s=a.findByRadius(e.origin,i);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/i);if(c<=0)continue;let u=Math.max(1,n*c*c),m=r*c*c,d=B(P(o.origin,e.origin));fe(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Gc(e,t){t.sound(e,1,tr.thud,1,1,0),t.sound(e,2,tr.explod,.75,1,0);let{forward:n,right:i}=Z(e.angles),r={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*r.x+i.x*r.y,y:e.origin.y+n.y*r.x+i.y*r.y,z:e.origin.z+n.z*r.x+i.z*r.y+r.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,re.temp_entity,ye.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},Cx(e,e,8,165,300,t)}function Px(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Gc(e,r))}function Hc(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Dx(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)*1.95,a=B({x:n.x,y:n.y,z:0}),s=ni(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*r,y:a.y*r,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(l,c,u,m)=>{Px(l,c,u,m,t),l.groundentity&&(l.frame=104,Gc(l,t),l.touch=void 0)},Hc(e,t)}function Fx(e,t){if(Hc(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Gc(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Ux=[{ai:ve,dist:0},{ai:ve,dist:0},{ai:j,dist:0,think:Dx},{ai:j,dist:0,think:Hc},{ai:j,dist:0,think:Fx},{ai:j,dist:0,think:st},{ai:j,dist:0},{ai:j,dist:0,think:st},{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},{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},{ai:j,dist:0,think:st}];Ax={firstframe:87,lastframe:109,frames:Ux,endfunc:cr};var Bx=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];Sx={firstframe:149,lastframe:152,frames:Bx,endfunc:cr};var Gx=Array.from({length:20},(e,t)=>({ai:j,dist:0,think:t%5===4?st:void 0}));kx={firstframe:153,lastframe:172,frames:Gx,endfunc:cr};function mf(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=lf.lastframe,e.nextthink=-1,e.deadflag=2}var Hx=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:st},{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},{ai:j,dist:0}];lf={firstframe:173,lastframe:185,frames:Hx,endfunc:mf};var Vx=[{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:st},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0}];Ex={firstframe:186,lastframe:193,frames:Vx,endfunc:mf};F();function gh(){return 2*Math.random()-1}function Aa(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let f=ni(n),{right:g,up:v}=Z(f),p=gh()*a,w=gh()*s;u={x:n.x+g.x*p+v.x*w,y:n.y+g.y*p+v.y*w,z:n.z+g.z*p+v.z*w},u=B(u)}let m=U(t,D(u,8192)),d=l.trace(t,m,W,W,e,Nt);!d.ent||d.fraction===1||fe(d.ent,e,e,u,d.endpos,d.plane?.normal||W,i,r,18,c,l.timeSeconds)}var Jt=Aa;function Wx(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Jt(e,t,n,i,r,a,s,l,c,u)}function wt(e,t,n,i,r,a,s,o,l=1){or(o,e,t,n,i,r,l)}function Kx(e,t,n,i,r,a,s,o){EE(o,e,t,n,i,r)}function $x(e,t,n,i,r,a,s,o){kE(o,e,t,n,i,r)}function Xx(e,t,n,i,r,a,s){Fc(s,e,t,n,i,r)}function lr(e,t,n,i,r,a,s){Zh(s,e,t,n,i,120,r)}function hf(e,t,n,i,r,a,s,o,l){Jh(l,e,t,n,i,r,s)}function ff(e,t,n,i,r,a,s){let o=U(t,D(n,8192)),l=s.trace(t,o,W,W,e,Nt);s.multicast(t,2,re.temp_entity,ye.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&fe(l.ent,e,e,n,l.endpos,W,i,r,6,11,s.timeSeconds)}function ur(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=Z(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=U(s,D(a,o)),c=r.trace(s,l,W,W,e,Nt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=B(P(c.endpos,s));return fe(c.ent,e,e,u,c.endpos,c.plane?.normal||W,n,i,0,0,r.timeSeconds),!0}return!1}function Yx(e,t,n,i,r,a,s,o){lr(e,t,n,i,r,a,o)}function ph(e,t){let n={...e.origin},i=U(n,D(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,W,W,e,Fe|Yt|gn|Qi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&fe(c.ent,e,e.owner,e.movedir,c.endpos,W,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,re.temp_entity,ye.LASER_SPARKS,10,c.endpos,c.plane?.normal||W,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,r={...c.endpos};continue}break}}finally{for(let l=0;l<s.length;l++)s[l].solid=o[l]}t.linkentity(e)}function qx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function wc(e,t,n,i,r){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=r.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?qx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),ph(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),ph(a,r)}F();var Vc=.1,jx={x:0,y:30,z:-15},Zx={x:0,y:15,z:0},Jx={x:0,y:-15,z:0},Qx={x:0,y:-30,z:-15},e6={x:30,y:20,z:0},t6={x:30,y:-20,z:0};function n6(e,t,n){M(e,Vc,n)}function i6(e,t,n){z(e,t,Vc,n)}function Na(e,t,n){ue(e,t,Vc,n)}function Wc(e,t,n){_(e,t)}var Kc,_f,gf,r6,pf,vf,a6,s6,o6,yf;function c6(e){e.monsterinfo.current_move=Kc}function l6(e){e.monsterinfo.current_move=_f}function dr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gf:e.monsterinfo.current_move=Kc}function wf(e){e.monsterinfo.current_move=pf}function u6(e){e.enemy&&er(e,e.enemy)&&Math.random()<=.7?wf(e):e.monsterinfo.current_move=vf}function Ac(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function d6(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Ac(e,e6),i=B(P(e.enemy.origin,n));Jt(e,n,i,6,4,.1,.05,0,t,4);let r=Ac(e,t6),a=B(P(e.enemy.origin,r));Jt(e,r,a,6,4,.1,.05,0,t,4)}function m6(e,t){if(!e.enemy)return;let n=[jx,Zx,Jx,Qx],i=n[Math.floor(Math.random()*n.length)],r=Ac(e,i),a=B(P(e.enemy.origin,r));lr(e,r,a,50,500,0,t)}function h6(e){e.monsterinfo.nextframe=yf.lastframe,e.nextthink=-1}var Af=Array.from({length:20},()=>({ai:i6,dist:10}));_f={firstframe:0,lastframe:19,frames:Af,endfunc:l6};gf={firstframe:0,lastframe:19,frames:Af,endfunc:dr};var f6=Array.from({length:21},()=>({ai:n6,dist:0}));Kc={firstframe:29,lastframe:49,frames:f6,endfunc:c6};var _6=Array.from({length:9},(e,t)=>({ai:Na,dist:2,think:t===8?wf:null}));r6={firstframe:50,lastframe:58,frames:_6,endfunc:null};var g6=Array.from({length:6},()=>({ai:Na,dist:2,think:d6}));pf={firstframe:59,lastframe:64,frames:g6,endfunc:u6};var p6=Array.from({length:4},()=>({ai:Na,dist:2}));vf={firstframe:65,lastframe:68,frames:p6,endfunc:dr};var v6=Array.from({length:21},(e,t)=>({ai:Na,dist:2,think:t===12?m6:null}));a6={firstframe:69,lastframe:89,frames:v6,endfunc:dr};var y6=Array.from({length:18},()=>({ai:Wc,dist:0}));s6={firstframe:90,lastframe:107,frames:y6,endfunc:dr};var w6=Array.from({length:4},()=>({ai:Wc,dist:0}));o6={firstframe:108,lastframe:111,frames:w6,endfunc:dr};var A6=Array.from({length:49},()=>({ai:Wc,dist:0}));yf={firstframe:112,lastframe:160,frames:A6,endfunc:h6};F();var Oa=.1,$c=80,Ia=Math.random;function Sf(e,t,n){M(e,Oa,n)}function it(e,t,n){z(e,t,Oa,n)}function rt(e,t,n){ce(e,t,Oa,n)}function C(e,t,n){ue(e,t,Oa,n)}function Y(e,t,n){_(e,t)}var Xc,S6,k6,kf,Ef,E6,b6,x6,T6,M6,R6,L6,z6,N6;function bf(e){e.monsterinfo.current_move=Xc}function tn(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Xc:e.monsterinfo.current_move=kf}function O6(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function I6(e,t){let n={x:$c,y:e.maxs.x,z:8};ur(e,n,15+Math.floor(Ia()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function C6(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function P6(e,t){let n={x:$c,y:e.mins.x,z:8};ur(e,n,15+Math.floor(Ia()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function xf(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Tf(e,t){ur(e,{x:$c,y:0,z:8},10+Math.floor(Ia()*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 Mf(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Ef)}function vh(e,t){if(!e.enemy)return;let n=Z(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,re.temp_entity,ye.PARASITE_ATTACK,e,i,r);let s=P(i,r);fe(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Z(e.angles).forward;e.enemy.velocity=D(o,-1200)}var yh=[{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}],wh=[{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 D6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s=n.frame-0;(s<0||s>=yh.length)&&(s=0);let o=yh[s],l=U(n.origin,D(r,o.x));l=U(l,D(i,o.y)),l=U(l,D(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function F6(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s=n.frame-0;(s<0||s>=wh.length)&&(s=0);let o=wh[s],l=U(n.origin,D(r,o.x));l=U(l,D(i,o.y)),l=U(l,D(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function _t(e,t){wc(e,1,!1,D6,t),wc(e,1,!0,F6,t)}function U6(e){Ia()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function B6(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function G6(e){}function H6(e){e.monsterinfo.aiflags&=-17}var V6=Array.from({length:30},()=>({ai:Sf,dist:0}));Xc={firstframe:162,lastframe:191,frames:V6,endfunc:bf};var W6=Array.from({length:30},()=>({ai:Sf,dist:0}));S6={firstframe:192,lastframe:221,frames:W6,endfunc:bf};var K6=[{ai:it,dist:7},{ai:it,dist:2},{ai:it,dist:3},{ai:it,dist:3},{ai:it,dist:1},{ai:it,dist:0},{ai:it,dist:0},{ai:it,dist:9},{ai:it,dist:-4},{ai:it,dist:-1},{ai:it,dist:2}];k6={firstframe:0,lastframe:10,frames:K6,endfunc:null};var $6=[{ai:rt,dist:9},{ai:rt,dist:2},{ai:rt,dist:3},{ai:rt,dist:3},{ai:rt,dist:1},{ai:rt,dist:0},{ai:rt,dist:0},{ai:rt,dist:10},{ai:rt,dist:-4},{ai:rt,dist:-1},{ai:rt,dist:2}];kf={firstframe:0,lastframe:10,frames:$6,endfunc:null};var X6=[{ai:C,dist:8},{ai:C,dist:3},{ai:C,dist:5},{ai:C,dist:0},{ai:C,dist:-3,think:O6},{ai:C,dist:0},{ai:C,dist:-5},{ai:C,dist:-7,think:I6},{ai:C,dist:0},{ai:C,dist:6,think:C6},{ai:C,dist:1},{ai:C,dist:2,think:P6},{ai:C,dist:-3},{ai:C,dist:6},{ai:C,dist:-1},{ai:C,dist:-3},{ai:C,dist:2},{ai:C,dist:-11}];Ef={firstframe:53,lastframe:70,frames:X6,endfunc:tn};var Y6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:xf},{ai:C,dist:0},{ai:C,dist:13,think:Tf},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:Mf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];E6={firstframe:71,lastframe:87,frames:Y6,endfunc:tn};var q6=[{ai:C,dist:5},{ai:C,dist:-4},{ai:C,dist:-4},{ai:C,dist:-3},{ai:C,dist:0,think:xf},{ai:C,dist:0,think:vh},{ai:C,dist:13},{ai:C,dist:0,think:Tf},{ai:C,dist:2},{ai:C,dist:0,think:vh},{ai:C,dist:-9,think:Mf},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];b6={firstframe:71,lastframe:87,frames:q6,endfunc:tn};var j6=[{ai:C,dist:9,think:_t},{ai:C,dist:2,think:_t},{ai:C,dist:3,think:_t},{ai:C,dist:3,think:_t},{ai:C,dist:1,think:_t},{ai:C,dist:0,think:_t},{ai:C,dist:0,think:_t},{ai:C,dist:10,think:_t},{ai:C,dist:-4,think:_t},{ai:C,dist:-1,think:_t},{ai:C,dist:2,think:U6}];x6={firstframe:0,lastframe:10,frames:j6,endfunc:tn};var Z6=[{ai:Y,dist:-6},{ai:Y,dist:-2},{ai:Y,dist:-6},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:2},{ai:Y,dist:0},{ai:Y,dist:2},{ai:Y,dist:1},{ai:Y,dist:7},{ai:Y,dist:0},{ai:Y,dist:3},{ai:Y,dist:-1}];T6={firstframe:88,lastframe:108,frames:Z6,endfunc:tn};var J6=[{ai:Y,dist:-2},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:3},{ai:Y,dist:1},{ai:Y,dist:-2}];M6={firstframe:109,lastframe:116,frames:J6,endfunc:tn};var Q6=[{ai:Y,dist:-2},{ai:Y,dist:2},{ai:Y,dist:1},{ai:Y,dist:3},{ai:Y,dist:0},{ai:Y,dist:-4}];R6={firstframe:117,lastframe:122,frames:Q6,endfunc:tn};var e3=Array.from({length:18},()=>({ai:Y,dist:0}));L6={firstframe:123,lastframe:140,frames:e3,endfunc:Rf};var t3=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:9},{ai:Y,dist:0}];z6={firstframe:141,lastframe:145,frames:t3,endfunc:Rf};var n3=[{ai:Y,dist:0},{ai:Y,dist:-2,think:B6},{ai:Y,dist:17,think:G6},{ai:Y,dist:-3},{ai:Y,dist:-1,think:H6},{ai:Y,dist:-5},{ai:Y,dist:-6},{ai:Y,dist:-6}];N6={firstframe:146,lastframe:153,frames:n3,endfunc:tn};function Rf(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}F();var Ca=.1,i3=80,ri=Math.random;function Lf(e,t,n){M(e,Ca,n)}function r3(e,t,n){z(e,t,Ca,n)}function a3(e,t,n){ce(e,t,Ca,n)}function q(e,t,n){ue(e,t,Ca,n)}function ai(e,t,n){_(e,t)}var Yc,zf,Nf,s3,qc,Sc,o3,jc,Of,c3,l3,u3,d3,m3,h3,If;function Cf(e){e.monsterinfo.current_move=Yc}function f3(e){e.monsterinfo.current_move=zf}function An(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Yc;return}e.monsterinfo.current_move=Nf}function _3(e){e.monsterinfo.aiflags&4||e.enemy||ri()<=.3&&(e.monsterinfo.current_move=If)}function g3(e,t){ri()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function p3(e,t){let n={x:i3,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),ur(e,n,10+Math.floor(ri()*6),100,t)}function v3(e,t){let{forward:n,right:i}=Z(e.angles),r={x:0,y:20,z:40},a=U(e.origin,D(n,r.x)),s=D(i,r.y),o=U(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=W;if(u&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=P(m,l);!u&&e.enemy&&(ri()<.33||l.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-l.z});let f=B(d);e.skin>1?Yx(e,l,f,50,c,0,.075,t):lr(e,l,f,50,c,0,t)}function y3(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=ni(n).y}}function w3(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function A3(e){e.monsterinfo.current_move=qc}function S3(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Sc;return}if(e.enemy&&e.enemy.health>0&&ri()<=.6){e.monsterinfo.current_move=qc;return}e.monsterinfo.current_move=Sc}function k3(e){if(e.enemy&&e.enemy.health>0&&ri()<=.9){e.monsterinfo.current_move=jc;return}e.monsterinfo.current_move=Of}function E3(e){e.monsterinfo.current_move=jc}var b3=Array.from({length:30},(e,t)=>({ai:Lf,dist:0,think:t===8?(n,i)=>g3(n,i):null}));If={firstframe:201,lastframe:230,frames:b3,endfunc:Cf};var x3=Array.from({length:30},(e,t)=>({ai:Lf,dist:0,think:t===29?_3:null}));Yc={firstframe:101,lastframe:130,frames:x3,endfunc:Cf};var T3=Array.from({length:10},()=>({ai:r3,dist:6}));zf={firstframe:171,lastframe:180,frames:T3,endfunc:f3};var M3=Array.from({length:10},()=>({ai:a3,dist:12}));Nf={firstframe:171,lastframe:180,frames:M3,endfunc:An};var R3=Array.from({length:5},()=>({ai,dist:0}));c3={firstframe:90,lastframe:94,frames:R3,endfunc:An};var L3=Array.from({length:5},()=>({ai,dist:0}));l3={firstframe:95,lastframe:99,frames:L3,endfunc:An};var z3=Array.from({length:21},()=>({ai,dist:0}));u3={firstframe:100,lastframe:120,frames:z3,endfunc:An};var N3=Array.from({length:12},()=>({ai,dist:0}));d3={firstframe:48,lastframe:59,frames:N3,endfunc:Pf};var O3=Array.from({length:23},()=>({ai,dist:0}));m3={firstframe:60,lastframe:82,frames:O3,endfunc:Pf};function Pf(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var I3=[{ai:q,dist:0,think:y3},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:4},{ai:q,dist:0},{ai:q,dist:-3},{ai:q,dist:3},{ai:q,dist:5},{ai:q,dist:7},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0},{ai:q,dist:0,think:A3}];s3={firstframe:0,lastframe:12,frames:I3,endfunc:null};var C3=[{ai:q,dist:19,think:v3},{ai:q,dist:-6},{ai:q,dist:-5},{ai:q,dist:-2},{ai:q,dist:-7},{ai:q,dist:0},{ai:q,dist:1},{ai:q,dist:10,think:w3},{ai:q,dist:4},{ai:q,dist:5},{ai:q,dist:6},{ai:q,dist:6},{ai:q,dist:4},{ai:q,dist:3,think:S3}];qc={firstframe:13,lastframe:26,frames:C3,endfunc:null};var P3=[{ai:q,dist:-3},{ai:q,dist:0},{ai:q,dist:-6},{ai:q,dist:-4},{ai:q,dist:-2}];Sc={firstframe:27,lastframe:31,frames:P3,endfunc:An};var D3=[{ai:q,dist:1},{ai:q,dist:8},{ai:q,dist:3}];o3={firstframe:32,lastframe:34,frames:D3,endfunc:E3};var F3=[{ai:q,dist:1},{ai:q,dist:7,think:p3},{ai:q,dist:-7},{ai:q,dist:1},{ai:q,dist:-1},{ai:q,dist:1},{ai:q,dist:0},{ai:q,dist:1},{ai:q,dist:-2,think:k3}];jc={firstframe:35,lastframe:43,frames:F3,endfunc:null};var U3=[{ai:q,dist:-6},{ai:q,dist:-1},{ai:q,dist:-6},{ai:q,dist:0}];Of={firstframe:44,lastframe:47,frames:U3,endfunc:An};var B3=Array.from({length:7},()=>({ai,dist:0}));h3={firstframe:83,lastframe:89,frames:B3,endfunc:An};var Pa=.1,G3=80,H3=24;function V3(e,t,n){M(e,Pa,n)}function W3(e,t,n){z(e,t,Pa,n)}function Df(e,t,n){ce(e,t,Pa,n)}function Se(e,t,n){ue(e,t,Pa,n)}function Zc(e,t,n){_(e,t)}var K3,$3,Ff,Uf,X3,Y3,q3,j3;function Z3(e){e.monsterinfo.current_move=Uf}function Jc(e){e.monsterinfo.current_move=Ff}function Ah(e,t){ur(e,{x:G3,y:0,z:0},5,0,t)}function J3(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var Q3=[{ai:V3,dist:0}];K3={firstframe:41,lastframe:41,frames:Q3,endfunc:null};var e8=Array.from({length:24},()=>({ai:Df,dist:H3}));Uf={firstframe:70,lastframe:93,frames:e8,endfunc:null};var t8=Array.from({length:6},()=>({ai:Df,dist:8}));Ff={firstframe:65,lastframe:70,frames:t8,endfunc:Z3};var n8=Array.from({length:24},()=>({ai:W3,dist:4}));$3={firstframe:41,lastframe:64,frames:n8,endfunc:null};var i8=Array.from({length:5},()=>({ai:Zc,dist:0}));Y3={firstframe:99,lastframe:103,frames:i8,endfunc:Jc};var r8=Array.from({length:5},()=>({ai:Zc,dist:0}));q3={firstframe:94,lastframe:98,frames:r8,endfunc:Jc};var a8=[{ai:Se,dist:0,think:J3},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Ah},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Ah},{ai:Se,dist:0}];X3={firstframe:0,lastframe:19,frames:a8,endfunc:Jc};function s8(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var o8=Array.from({length:56},()=>({ai:Zc,dist:0}));j3={firstframe:104,lastframe:159,frames:o8,endfunc:s8};F();var Da=.1;function c8(e,t,n){M(e,Da,n)}function l8(e,t,n){z(e,t,Da,n)}function u8(e,t,n){ce(e,t,Da,n)}function d8(e,t,n){ue(e,t,Da,n)}function Bf(e,t,n){_(e,t)}var Qc,Gf,Hf,m8,h8,Vf;function f8(e){e.monsterinfo.current_move=Qc}function _8(e){e.monsterinfo.current_move=Gf}function el(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hf:e.monsterinfo.current_move=Qc}function g8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));wt(e,n,i,5,1e3,0,0,t,1)}function p8(e){e.monsterinfo.nextframe=Vf.lastframe,e.nextthink=-1}var v8=Array.from({length:46},()=>({ai:c8,dist:0}));Qc={firstframe:0,lastframe:45,frames:v8,endfunc:f8};var y8=Array.from({length:46},()=>({ai:l8,dist:5}));Gf={firstframe:0,lastframe:45,frames:y8,endfunc:_8};var w8=Array.from({length:46},()=>({ai:u8,dist:10}));Hf={firstframe:0,lastframe:45,frames:w8,endfunc:el};var A8=Array.from({length:20},(e,t)=>({ai:d8,dist:0,think:t===10?g8:null}));m8={firstframe:46,lastframe:65,frames:A8,endfunc:el};var S8=Array.from({length:6},()=>({ai:Bf,dist:0}));h8={firstframe:66,lastframe:71,frames:S8,endfunc:el};var k8=Array.from({length:10},()=>({ai:Bf,dist:0}));Vf={firstframe:84,lastframe:93,frames:k8,endfunc:p8};F();var Fa=.1;function E8(e,t,n){M(e,Fa,n)}function b8(e,t,n){z(e,t,Fa,n)}function x8(e,t,n){ce(e,t,Fa,n)}function T8(e,t,n){ue(e,t,Fa,n)}function Wf(e,t,n){_(e,t)}var tl,Kf,$f,M8,R8,Xf;function L8(e){e.monsterinfo.current_move=tl}function z8(e){e.monsterinfo.current_move=Kf}function nl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=$f:e.monsterinfo.current_move=tl}function N8(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));wt(e,n,i,5,1e3,0,0,t,1)}function O8(e,t){if(!e.enemy)return;let n=5+Math.random()*5;en(e,e.enemy)<=80&&er(e,e.enemy)&&fe(e.enemy,e,e,B(P(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function I8(e){e.monsterinfo.nextframe=Xf.lastframe,e.nextthink=-1}var C8=Array.from({length:46},()=>({ai:E8,dist:0}));tl={firstframe:0,lastframe:45,frames:C8,endfunc:L8};var P8=Array.from({length:46},()=>({ai:b8,dist:5}));Kf={firstframe:0,lastframe:45,frames:P8,endfunc:z8};var D8=Array.from({length:46},()=>({ai:x8,dist:10}));$f={firstframe:0,lastframe:45,frames:D8,endfunc:nl};var F8=Array.from({length:20},(e,t)=>({ai:T8,dist:0,think:t===10?N8:t===12?O8:null}));M8={firstframe:46,lastframe:65,frames:F8,endfunc:nl};var U8=Array.from({length:6},()=>({ai:Wf,dist:0}));R8={firstframe:66,lastframe:71,frames:U8,endfunc:nl};var B8=Array.from({length:10},()=>({ai:Wf,dist:0}));Xf={firstframe:84,lastframe:93,frames:B8,endfunc:I8};F();var Ua=.1;function G8(e,t,n){M(e,Ua,n)}function H8(e,t,n){z(e,t,Ua,n)}function V8(e,t,n){ce(e,t,Ua,n)}function Yf(e,t,n){ue(e,t,Ua,n)}function qf(e,t,n){_(e,t)}var il,jf,Zf,W8,K8,$8,Jf;function X8(e){e.monsterinfo.current_move=il}function Y8(e){e.monsterinfo.current_move=jf}function Ba(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Zf:e.monsterinfo.current_move=il}function q8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function j8(e,t){if(!e.enemy||!er(e,e.enemy))return;let n=en(e,e.enemy);if(q8(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=B(P(e.enemy.origin,i));fe(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}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)},i=B(P(e.enemy.origin,n));ff(e,n,i,50,100,0,t)}function J8(e){e.monsterinfo.nextframe=Jf.lastframe,e.nextthink=-1}var Q8=Array.from({length:30},()=>({ai:G8,dist:0}));il={firstframe:0,lastframe:29,frames:Q8,endfunc:X8};var eT=Array.from({length:40},()=>({ai:H8,dist:3}));jf={firstframe:30,lastframe:69,frames:eT,endfunc:Y8};var tT=Array.from({length:20},()=>({ai:V8,dist:12}));Zf={firstframe:70,lastframe:89,frames:tT,endfunc:Ba};var nT=Array.from({length:10},(e,t)=>({ai:Yf,dist:0,think:t===5?j8:null}));W8={firstframe:90,lastframe:99,frames:nT,endfunc:Ba};var iT=Array.from({length:12},(e,t)=>({ai:Yf,dist:0,think:t===6?Z8:null}));K8={firstframe:100,lastframe:111,frames:iT,endfunc:Ba};var rT=Array.from({length:6},()=>({ai:qf,dist:0}));$8={firstframe:112,lastframe:117,frames:rT,endfunc:Ba};var aT=Array.from({length:12},()=>({ai:qf,dist:0}));Jf={firstframe:118,lastframe:129,frames:aT,endfunc:J8};F();var Ga=.1;function Qf(e,t,n){M(e,Ga,n)}function sT(e,t,n){z(e,t,Ga,n)}function e1(e,t,n){ce(e,t,Ga,n)}function Ha(e,t,n){ue(e,t,Ga,n)}function ke(e,t,n){_(e,t)}var rl,t1,oT,n1,cT,lT,uT,al,i1,dT,mT,hT,r1,fT,a1;function _T(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function gT(e){e.monsterinfo.current_move=rl}function pT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=t1)}function Sn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=rl:e.monsterinfo.current_move=n1}function vT(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function yT(e,t){e.monsterinfo.current_move=al}function wT(e,t){if(e.enemy&&e.enemy.health>0&&wn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=al;return}e.monsterinfo.current_move=i1}function AT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=B(P(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Jt(e,n,i,r,a,300,500,0,t,5)}function s1(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Fc(t,e,n,i,r,a)}function ST(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&s1(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function kT(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function ET(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function bT(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),r=600,a=B({x:n.x,y:n.y,z:0}),s=ni(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*r,y:a.y*r,z:270},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3}function xT(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 TT(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=a1)}var MT=Array.from({length:30},(e,t)=>({ai:Qf,dist:0,think:t===29?pT:null}));rl={firstframe:0,lastframe:29,frames:MT,endfunc:null};var RT=Array.from({length:40},(e,t)=>({ai:Qf,dist:0,think:t===7?_T:null}));t1={firstframe:30,lastframe:69,frames:RT,endfunc:gT};var LT=[0,3,4,5,7,2,6,4,2,7,5,7,4],zT=LT.map(e=>({ai:sT,dist:e}));oT={firstframe:76,lastframe:88,frames:zT,endfunc:null};var NT=[26,9,9,9,15,10,13,6],OT=NT.map((e,t)=>({ai:e1,dist:e,think:t%4===0?TT:null}));n1={firstframe:94,lastframe:101,frames:OT,endfunc:null};var IT=[32,15,10,18,8,20],CT=IT.map(e=>({ai:e1,dist:e}));cT={firstframe:102,lastframe:107,frames:CT,endfunc:null};var PT=Array.from({length:21},(e,t)=>({ai:Ha,dist:0,think:[4,7,10,13].includes(t)?s1:null}));uT={firstframe:108,lastframe:128,frames:PT,endfunc:Sn};var DT=Array.from({length:7},(e,t)=>({ai:Ha,dist:0,think:t===0?vT:null}));lT={firstframe:137,lastframe:143,frames:DT,endfunc:yT};var FT=Array.from({length:8},()=>({ai:Ha,dist:0,think:AT}));al={firstframe:144,lastframe:151,frames:FT,endfunc:wT};var UT=Array.from({length:7},()=>({ai:Ha,dist:0}));i1={firstframe:152,lastframe:158,frames:UT,endfunc:Sn};var BT=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],GT=BT.map(e=>({ai:ke,dist:e}));dT={firstframe:159,lastframe:176,frames:GT,endfunc:Sn};var HT=[-2,11,6,2,-1,-7,-2,-7],VT=HT.map(e=>({ai:ke,dist:e}));mT={firstframe:177,lastframe:184,frames:VT,endfunc:Sn};var WT=[-3,1,1,0,1],KT=WT.map(e=>({ai:ke,dist:e}));hT={firstframe:185,lastframe:189,frames:KT,endfunc:Sn};var $T=[0,0,0,-7,-3,-5,8,6,0,0,0],XT=$T.map(e=>({ai:ke,dist:e}));function YT(e){e.monsterinfo.nextframe=r1.lastframe,e.nextthink=-1,e.solid=0}r1={firstframe:190,lastframe:200,frames:XT,endfunc:YT};var qT=[{ai:ke,dist:1,think:ST},{ai:ke,dist:1},{ai:ke,dist:1,think:kT},{ai:ke,dist:0},{ai:ke,dist:-1},{ai:ke,dist:-1},{ai:ke,dist:0,think:ET},{ai:ke,dist:-1}];fT={firstframe:201,lastframe:208,frames:qT,endfunc:Sn};var jT=[{ai:ke,dist:0,think:bT},{ai:ke,dist:0},{ai:ke,dist:0},{ai:ke,dist:0,think:xT},{ai:ke,dist:0},{ai:ke,dist:0},{ai:ke,dist:0},{ai:ke,dist:0}];a1={firstframe:209,lastframe:216,frames:jT,endfunc:Sn};F();var Va=.1;function ZT(e,t,n){M(e,Va,n)}function JT(e,t,n){z(e,t,Va,n)}function QT(e,t,n){ce(e,t,Va,n)}function eM(e,t,n){ue(e,t,Va,n)}function o1(e,t,n){_(e,t)}var sl,c1,l1,tM,nM,u1;function iM(e){e.monsterinfo.current_move=sl}function rM(e){e.monsterinfo.current_move=c1}function ol(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=l1:e.monsterinfo.current_move=sl}function aM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));wt(e,n,i,5,1e3,0,0,t,1)}function sM(e){e.monsterinfo.nextframe=u1.lastframe,e.nextthink=-1}var oM=Array.from({length:46},()=>({ai:ZT,dist:0}));sl={firstframe:0,lastframe:45,frames:oM,endfunc:iM};var cM=Array.from({length:46},()=>({ai:JT,dist:5}));c1={firstframe:0,lastframe:45,frames:cM,endfunc:rM};var lM=Array.from({length:46},()=>({ai:QT,dist:10}));l1={firstframe:0,lastframe:45,frames:lM,endfunc:ol};var uM=Array.from({length:20},(e,t)=>({ai:eM,dist:0,think:t===10?aM:null}));tM={firstframe:46,lastframe:65,frames:uM,endfunc:ol};var dM=Array.from({length:6},()=>({ai:o1,dist:0}));nM={firstframe:66,lastframe:71,frames:dM,endfunc:ol};var mM=Array.from({length:10},()=>({ai:o1,dist:0}));u1={firstframe:84,lastframe:93,frames:mM,endfunc:sM};F();var Wa=.1;function hM(e,t,n){M(e,Wa,n)}function fM(e,t,n){z(e,t,Wa,n)}function _M(e,t,n){ce(e,t,Wa,n)}function gM(e,t,n){ue(e,t,Wa,n)}function d1(e,t,n){_(e,t)}var cl,m1,h1,pM,vM,f1;function yM(e){e.monsterinfo.current_move=cl}function wM(e){e.monsterinfo.current_move=m1}function ll(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=h1:e.monsterinfo.current_move=cl}function AM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=B(P(e.enemy.origin,n));wt(e,n,i,5,1e3,0,0,t,1)}function SM(e){e.monsterinfo.nextframe=f1.lastframe,e.nextthink=-1}var kM=Array.from({length:46},()=>({ai:hM,dist:0}));cl={firstframe:0,lastframe:45,frames:kM,endfunc:yM};var EM=Array.from({length:46},()=>({ai:fM,dist:5}));m1={firstframe:0,lastframe:45,frames:EM,endfunc:wM};var bM=Array.from({length:46},()=>({ai:_M,dist:10}));h1={firstframe:0,lastframe:45,frames:bM,endfunc:ll};var xM=Array.from({length:20},(e,t)=>({ai:gM,dist:0,think:t===10?AM:null}));pM={firstframe:46,lastframe:65,frames:xM,endfunc:ll};var TM=Array.from({length:6},()=>({ai:d1,dist:0}));vM={firstframe:66,lastframe:71,frames:TM,endfunc:ll};var MM=Array.from({length:10},()=>({ai:d1,dist:0}));f1={firstframe:84,lastframe:93,frames:MM,endfunc:SM};F();var Ka=.1;function RM(e,t,n){M(e,Ka,n)}function LM(e,t,n){z(e,t,Ka,n)}function zM(e,t,n){ce(e,t,Ka,n)}function NM(e,t,n){ue(e,t,Ka,n)}function ul(e,t,n){_(e,t)}var dl,_1,g1,OM,IM,p1,CM;function PM(e){e.monsterinfo.current_move=dl}function DM(e){e.monsterinfo.current_move=_1}function $a(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=g1:e.monsterinfo.current_move=dl}function FM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},r=B(P(i,n));Jt(e,n,r,5,2,.05,.05,0,t,4)}var UM=Array.from({length:22},()=>({ai:RM,dist:0}));dl={firstframe:0,lastframe:21,frames:UM,endfunc:PM};var BM=Array.from({length:15},()=>({ai:LM,dist:4}));_1={firstframe:22,lastframe:36,frames:BM,endfunc:DM};var GM=Array.from({length:8},()=>({ai:zM,dist:12}));g1={firstframe:37,lastframe:44,frames:GM,endfunc:$a};var HM=Array.from({length:15},(e,t)=>({ai:NM,dist:0,think:t>=5&&t<=7?FM:null}));OM={firstframe:45,lastframe:59,frames:HM,endfunc:$a};var VM=Array.from({length:10},()=>({ai:ul,dist:0}));IM={firstframe:60,lastframe:69,frames:VM,endfunc:$a};var WM=Array.from({length:20},()=>({ai:ul,dist:0}));function KM(e){e.monsterinfo.nextframe=p1.lastframe,e.nextthink=-1}p1={firstframe:70,lastframe:89,frames:WM,endfunc:KM};var $M=Array.from({length:5},()=>({ai:ul,dist:0}));CM={firstframe:90,lastframe:94,frames:$M,endfunc:$a};F();var mr=.1,XM={x:30,y:28,z:24},YM={x:26,y:16,z:24},qM={x:26,y:-14,z:24};function jM(e,t,n){M(e,mr,n)}function ZM(e,t,n){z(e,t,mr,n)}function JM(e,t,n){ce(e,t,mr,n)}function v1(e,t,n){ue(e,t,mr,n)}function si(e,t,n){_(e,t)}var ml,y1,w1,A1,hl,S1,k1,E1,b1,fl,kc;function x1(e){e.monsterinfo.current_move=ml}function T1(e){e.monsterinfo.current_move=y1}function It(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=w1:e.monsterinfo.current_move=ml}function QM(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=A1:t<=.6?e.monsterinfo.current_move=hl:e.monsterinfo.current_move=S1}function _l(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function e4(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=_l(e,XM),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));hf(e,n,r,50,300,100,300,0,t)}function t4(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=_l(e,qM),i=B(P(e.pos1,n));ff(e,n,i,50,100,0,t)}function n4(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function i4(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=_l(e,YM),i=(e.monsterinfo.nextframe||0)-hl.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...ni(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=Z(c).forward}else{let{forward:s}=Z(e.angles);a=s}wt(e,n,a,15,1e3,0,0,t,1)}function r4(e,t,n,i,r){e.health<e.max_health/2&&(e.skin=1),!(e.timestamp<(e.pain_finished_time||0))&&(i<=25&&Math.random()<.2||(e.pain_finished_time=e.timestamp+3,i<=40?(r.engine.sound?.(e,0,"makron/pain1.wav",1,1,0),e.monsterinfo.current_move=k1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=E1):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=b1)))}function a4(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 s4(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=a4,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=Z(e.angles),r=D(i,120),a=D(n,-120);e.velocity=U(U(e.velocity,r),a),e.origin=U(e.origin,D(n,-10)),e.angles={...e.angles,x:90},e.avelocity=W,t.linkentity(e)}function o4(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,s4(n,t)}function c4(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),o4(e,t),e.monsterinfo.current_move=fl,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function l4(e){e.monsterinfo.nextframe=fl.lastframe,e.nextthink=-1}var u4=Array.from({length:60},()=>({ai:jM,dist:0}));ml={firstframe:0,lastframe:59,frames:u4,endfunc:x1};var d4=Array.from({length:10},()=>({ai:ZM,dist:8}));y1={firstframe:60,lastframe:69,frames:d4,endfunc:T1};var m4=Array.from({length:10},()=>({ai:JM,dist:8}));w1={firstframe:60,lastframe:69,frames:m4,endfunc:It};var h4=Array.from({length:8},(e,t)=>({ai:v1,dist:0,think:t===3?e4:null}));A1={firstframe:70,lastframe:77,frames:h4,endfunc:It};var f4=Array.from({length:26},(e,t)=>({ai:si,dist:0,think:t>=4&&t<=20?i4:null}));hl={firstframe:78,lastframe:103,frames:f4,endfunc:It};var _4=Array.from({length:16},(e,t)=>({ai:v1,dist:0,think:t===7?n4:t===8?t4:null}));S1={firstframe:104,lastframe:119,frames:_4,endfunc:It};var g4=Array.from({length:4},()=>({ai:si,dist:0}));k1={firstframe:120,lastframe:123,frames:g4,endfunc:It};var p4=Array.from({length:4},()=>({ai:si,dist:0}));E1={firstframe:124,lastframe:127,frames:p4,endfunc:It};var v4=Array.from({length:27},()=>({ai:si,dist:0}));b1={firstframe:128,lastframe:154,frames:v4,endfunc:It};var y4=Array.from({length:95},()=>({ai:si,dist:0}));fl={firstframe:155,lastframe:249,frames:y4,endfunc:l4};var w4=Array.from({length:13},()=>({ai:si,dist:0}));kc={firstframe:250,lastframe:262,frames:w4,endfunc:It};function A4(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,i,r,a)=>r4(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){rf(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,c4(n,t.entities)},e.monsterinfo.stand=x1,e.monsterinfo.walk=T1,e.monsterinfo.run=It,e.monsterinfo.attack=QM,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=kc},e.think=_x,e.monsterinfo.current_move=kc,e.nextthink=e.timestamp+mr}F();var Xa=.1,S4={x:40,y:-20,z:20},k4={x:40,y:20,z:20},E4={x:30,y:0,z:40};function b4(e,t,n){M(e,Xa,n)}function x4(e,t,n){z(e,t,Xa,n)}function T4(e,t,n){ce(e,t,Xa,n)}function gl(e,t,n){ue(e,t,Xa,n)}function hr(e,t,n){_(e,t)}var pl,M1,R1,vl,Ec,M4,R4,L4,z4,L1;function N4(e){e.monsterinfo.current_move=pl}function O4(e){e.monsterinfo.current_move=M1}function oi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=R1:e.monsterinfo.current_move=pl}function I4(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&wn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=vl:e.monsterinfo.current_move=Ec}function bc(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function C4(e,t){if(!e.enemy)return;let n=bc(e,k4),i=B(P(e.enemy.origin,n));Aa(e,n,i,6,4,.05,.05,0,t,4);let r=bc(e,S4),a=B(P(e.enemy.origin,r));Aa(e,r,a,6,4,.05,.05,0,t,4)}function P4(e,t){if(!e.enemy)return;let n=bc(e,E4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));hf(e,n,r,50,300,100,200,0,t)}function D4(e){e.monsterinfo.nextframe=L1.lastframe,e.nextthink=-1}function F4(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,A4(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=P(n.enemy.origin,n.origin);n.angles={...n.angles,y:ar(r)};let a=B(r),s=D(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 U4=Array.from({length:51},()=>({ai:b4,dist:0}));pl={firstframe:0,lastframe:50,frames:U4,endfunc:N4};var B4=Array.from({length:14},()=>({ai:x4,dist:10}));M1={firstframe:51,lastframe:64,frames:B4,endfunc:O4};var G4=Array.from({length:14},()=>({ai:T4,dist:10}));R1={firstframe:51,lastframe:64,frames:G4,endfunc:oi};var H4=Array.from({length:8},()=>({ai:gl,dist:0})),V4={firstframe:65,lastframe:72,frames:H4,endfunc:null},W4=Array.from({length:6},()=>({ai:gl,dist:0,think:C4}));vl={firstframe:73,lastframe:78,frames:W4,endfunc:I4};V4.endfunc=e=>{e.monsterinfo.current_move=vl};var K4=Array.from({length:4},()=>({ai:hr,dist:0}));Ec={firstframe:79,lastframe:82,frames:K4,endfunc:oi};var $4=Array.from({length:13},(e,t)=>({ai:gl,dist:0,think:t===6?P4:null}));M4={firstframe:83,lastframe:95,frames:$4,endfunc:oi};var X4=Array.from({length:3},()=>({ai:hr,dist:0}));R4={firstframe:96,lastframe:98,frames:X4,endfunc:oi};var Y4=Array.from({length:3},()=>({ai:hr,dist:0}));L4={firstframe:99,lastframe:101,frames:Y4,endfunc:oi};var q4=Array.from({length:25},()=>({ai:hr,dist:0}));z4={firstframe:102,lastframe:126,frames:q4,endfunc:oi};var j4=Array.from({length:50},(e,t)=>({ai:hr,dist:0,think:t===49?((n,i)=>{}):t===48?F4:null}));L1={firstframe:127,lastframe:176,frames:j4,endfunc:D4};var yl=.1,Ya=4,z1=8,qa=16,Z4=32,wl=64,J4=0,Q4=39,eR=40,tR=58,nR=59,N1=64,iR=93,rR=95,Al=99,O1=159,I1=160,C1=172,P1=173,D1=198,aR=199,sR=209,oR=210,cR=226,Sl=227,kl=235,F1=236,Sa=244,lR=245,uR=251,dR=252,mR=266,hR=267,fR=281,U1,B1,G1,H1,V1,fr,W1,K1,$1,X1,_R,gR,Y1,q1,pR,vR,El,j1,yR="insane/insane11.wav",wR="insane/insane5.wav",AR="insane/insane7.wav",Sh=["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 xc(e,t){t.sound(e,2,yR,1,1,0)}function SR(e,t){(e.spawnflags&wl)===0&&t.sound(e,2,wR,1,1,0)}function bl(e,t){e.spawnflags&wl||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,AR,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function nn(e,t){if(!(e.spawnflags&wl)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Sh[Math.floor(Math.random()*Sh.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function qe(e,t){}function Z1(e,t){e.spawnflags&Z4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=G1:e.monsterinfo.current_move=V1)}function kR(e,t){e.spawnflags&Ya&&e.spawnflags&qa||Math.random()<.5&&(e.monsterinfo.current_move=H1)}function xl(e,t){e.monsterinfo.current_move=fr}function J1(e,t){Math.random()<.8?e.monsterinfo.current_move=El:e.monsterinfo.current_move=j1}function Tl(e,t){e.spawnflags&z1?(e.monsterinfo.current_move=El,e.monsterinfo.aiflags|=1):e.spawnflags&Ya&&e.spawnflags&qa?e.monsterinfo.current_move=fr:Math.random()<.5?e.monsterinfo.current_move=U1:e.monsterinfo.current_move=B1}function Ml(e,t){if(e.spawnflags&qa&&e.frame===Sa){e.monsterinfo.current_move=fr;return}e.spawnflags&Ya?e.monsterinfo.current_move=Y1:Math.random()<=.5?e.monsterinfo.current_move=W1:e.monsterinfo.current_move=$1}function _r(e,t){if(e.spawnflags&qa&&e.frame===Sa){e.monsterinfo.current_move=fr;return}let n=e.frame;e.spawnflags&Ya||n>=F1&&n<=Sa||n>=Sl&&n<=kl||n>=Al&&n<=O1?e.monsterinfo.current_move=q1:Math.random()<=.5?e.monsterinfo.current_move=K1:e.monsterinfo.current_move=X1}function Q1(e,t){e.spawnflags&z1?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 h(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,yl,a)},dist:t}}var ER=[h(M),h(M),h(M),h(M),h(M),h(M,0,Z1)];U1={firstframe:nR,lastframe:N1,frames:ER,endfunc:Tl};var bR=[h(M,0,SR),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M),h(M,0,Z1)];B1={firstframe:N1,lastframe:iR,frames:bR,endfunc:Tl};var xR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,bl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,2.7),h(_,4.1),h(_,6),h(_,7.6),h(_,3.6),h(_),h(_),h(_,0,xc),h(_),h(_),h(_),h(_),h(_),h(_,0,xc),h(_),h(_),h(_),h(_),h(_),h(_)];G1={firstframe:J4,lastframe:Q4,frames:xR,endfunc:xl};var TR=[h(_,-.7),h(_,-1.2),h(_,-1.5),h(_,-4.5),h(_,-3.5),h(_,-.2),h(_),h(_,-1.3),h(_,-3),h(_,-2),h(_),h(_),h(_),h(_,-3.3),h(_,-1.6),h(_,-.3),h(_),h(_),h(_)];H1={firstframe:eR,lastframe:tR,frames:TR,endfunc:Tl};var MR=[h(_,.2),h(_,11.5),h(_,5.1),h(_,7.1),h(_)];V1={firstframe:rR,lastframe:Al,frames:MR,endfunc:xl};var RR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,-1.7),h(_,-1.6),h(_),h(_),h(_),h(_,0,xc),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,0,bl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_,.5),h(_),h(_,-.2,nn),h(_),h(_,.2),h(_,.4),h(_,.6),h(_,.8),h(_,.7),h(_,0,kR)];fr={firstframe:Al,lastframe:O1,frames:RR,endfunc:xl};var Tc=[h(z,0,nn),h(z,2.5),h(z,3.5),h(z,1.7),h(z,2.3),h(z,2.4),h(z,2.2,qe),h(z,4.2),h(z,5.6),h(z,3.3),h(z,2.4),h(z,.9),h(z,0,qe)];W1={firstframe:I1,lastframe:C1,frames:Tc,endfunc:Ml};K1={firstframe:I1,lastframe:C1,frames:Tc.map(e=>({ai:(t,n,i)=>{e.ai===Tc[0].ai&&nn(t,i),ce(t,n,yl,i)},dist:e.dist})),endfunc:_r};var Mc=[h(z,0,nn),h(z,3.4),h(z,3.6),h(z,2.9),h(z,2.2),h(z,2.6,qe),h(z),h(z,.7),h(z,4.8),h(z,5.3),h(z,1.1),h(z,2,qe),h(z,.5),h(z),h(z),h(z,4.9),h(z,6.7),h(z,3.8),h(z,2,qe),h(z,.2),h(z),h(z,3.4),h(z,6.4),h(z,5),h(z,1.8,qe),h(z)];$1={firstframe:P1,lastframe:D1,frames:Mc,endfunc:Ml};X1={firstframe:P1,lastframe:D1,frames:Mc.map(e=>({ai:(t,n,i)=>{e.ai===Mc[0].ai&&nn(t,i),ce(t,n,yl,i)},dist:e.dist})),endfunc:_r};var LR=[h(_),h(_),h(_),h(_),h(_,0,qe),h(_),h(_),h(_),h(_),h(_),h(_,0,qe)];_R={firstframe:aR,lastframe:sR,frames:LR,endfunc:_r};var zR=[h(_),h(_),h(_),h(_),h(_,0,qe),h(_),h(_),h(_),h(_),h(_),h(_,0,qe),h(_),h(_,0,qe),h(_),h(_),h(_),h(_)];gR={firstframe:oR,lastframe:cR,frames:zR,endfunc:Q1};var e_=[h(z,0,nn),h(z,1.5),h(z,2.1),h(z,3.6),h(z,2,qe),h(z,.9),h(z,3),h(z,3.4),h(z,2.4,qe)];Y1={firstframe:Sl,lastframe:kl,frames:e_,endfunc:Ml};q1={firstframe:Sl,lastframe:kl,frames:e_,endfunc:_r};var NR=[h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];pR={firstframe:F1,lastframe:Sa,frames:NR,endfunc:_r};var OR=[h(_),h(_),h(_),h(_),h(_,0,nn),h(_),h(_)];vR={firstframe:lR,lastframe:uR,frames:OR,endfunc:Q1};var IR=[h(_,0,bl),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];El={firstframe:dR,lastframe:mR,frames:IR,endfunc:J1};var CR=[h(_,0,nn),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_),h(_)];j1={firstframe:hR,lastframe:fR,frames:CR,endfunc:J1};F();F();var PR=.1,DR=0;var Rc=0,t_=39,FR=40,UR=47,BR=48,GR=53,HR=54,VR=56,WR=57,KR=59,$R=60,XR=62,YR=63,qR=76,jR=77,ZR=93,JR=94,QR=100,eL=101,tL=113,nL=114,iL=117,n_,i_,r_,rL,aL,sL,oL,cL,lL,uL,dL;function S(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,PR,a)},dist:t}}function kh(e,t){e.monsterinfo.current_move=n_,t.timeSeconds<1&&(e.frame=Rc+Math.floor(Math.random()*(t_-Rc+1)))}function mL(e,t){e.monsterinfo.current_move=i_}function ci(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?mL(e,t):kh(e,t);return}if(e.monsterinfo.aiflags&1){kh(e,t);return}e.monsterinfo.current_move=r_}function hL(e,t){let n={x:0,y:0,z:0},r=Z(e.angles).forward,a=ti(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,D(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=ti(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=P(o,a),s=B(s)}else s=r;Jt(e,a,s,3,4,0,0,DR,t)}function a_(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 fL(e,t){hL(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var _L=[S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M),S(M)];n_={firstframe:Rc,lastframe:t_,frames:_L,endfunc:null};var gL=[S(z),S(z,6),S(z,10),S(z,3),S(z,2),S(z,7),S(z,10),S(z,1)];i_={firstframe:FR,lastframe:UR,frames:gL,endfunc:null};var pL=[S(ce,4),S(ce,15),S(ce,15),S(ce,8),S(ce,20),S(ce,15)];r_={firstframe:BR,lastframe:GR,frames:pL,endfunc:null};var vL=[S(_,-5),S(_,4),S(_,1)];rL={firstframe:HR,lastframe:VR,frames:vL,endfunc:ci};var yL=[S(_,-4),S(_,4),S(_)];aL={firstframe:WR,lastframe:KR,frames:yL,endfunc:ci};var wL=[S(_,-1),S(_,1),S(_,0)];sL={firstframe:$R,lastframe:XR,frames:wL,endfunc:ci};var AL=[S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se)];oL={firstframe:YR,lastframe:qR,frames:AL,endfunc:ci};var SL=[S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se),S(se)];cL={firstframe:jR,lastframe:ZR,frames:SL,endfunc:ci};var kL=[S(_),S(_),S(_,-13),S(_,14),S(_,3),S(_,-2),S(_,1)];lL={firstframe:JR,lastframe:QR,frames:kL,endfunc:a_};var EL=[S(_),S(_,7),S(_,-6),S(_,-5),S(_,1),S(_),S(_,-1),S(_,-2),S(_,-1),S(_,-9),S(_,-13),S(_,-13),S(_)];uL={firstframe:eL,lastframe:tL,frames:EL,endfunc:a_};var bL=[S(ue,-2,fL),S(ue,-2),S(ue,3),S(ue,2)];dL={firstframe:nL,lastframe:iL,frames:bL,endfunc:ci};F();F();var nr=.1;function xL(e,t,n){if(e.classname==="monster_medic"&&l_(e,n)){e.monsterinfo.current_move=gr;return}M(e,nr,n)}function TL(e,t,n){z(e,t,nr,n)}function ML(e,t,n){e.classname==="monster_medic"&&l_(e,n)?e.monsterinfo.current_move=gr:ce(e,t,nr,n)}function gt(e,t,n){ue(e,t,nr,n)}function Rl(e,t,n){_(e,t)}var Ll,s_,gr,RL,o_,LL,zL,c_;function NL(e){e.monsterinfo.current_move=Ll}function OL(e){e.monsterinfo.current_move=s_}function pr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&en(e,e.enemy)<80){e.monsterinfo.current_move=o_;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gr:e.monsterinfo.current_move=Ll}function IL(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},i=B(P(e.enemy.origin,n));wt(e,n,i,2,1e3,0,0,t,10)}function Xt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(en(e,e.enemy)>400){e.monsterinfo.current_move=gr;return}let i=Z(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=U(e.origin,U(D(r,o.x),U(D(a,o.y),D(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,re.temp_entity,{te:ye.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function CL(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),Xt(e,t)}function PL(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(en(e,n)>400){e.enemy=null;return}if(!i)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 r={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};i(n,r),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function l_(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,i=1024,r=(a,s,o,l,c,u)=>{let m=t.trace(a,s,o,l,c,u);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!wn(e,a,r))return;let s=en(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function DL(e,t){let n=Math.random(),i="monster_soldier_light";n>.8?i="monster_soldier_ssg":n>.5&&(i="monster_soldier");let r=t.getSpawnFunction(i);if(r){let a=Z(e.angles),s=D(a.forward,64),o=U(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,Fe|Yt|Qi);if(c.fraction<1||c.startsolid||c.allsolid)return;let u=t.spawn();u.origin=l,u.angles={...e.angles},r(u,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),u.enemy=e.enemy,t.multicast(l,1,re.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function FL(e){e.monsterinfo.nextframe=c_.lastframe,e.nextthink=-1}var UL=Array.from({length:30},()=>({ai:xL,dist:0}));Ll={firstframe:0,lastframe:29,frames:UL,endfunc:NL};var BL=Array.from({length:40},()=>({ai:TL,dist:3}));s_={firstframe:30,lastframe:69,frames:BL,endfunc:OL};var GL=Array.from({length:20},()=>({ai:ML,dist:12}));gr={firstframe:70,lastframe:89,frames:GL,endfunc:pr};var HL=Array.from({length:16},(e,t)=>({ai:gt,dist:0,think:t>=4&&t<=13?IL:null}));RL={firstframe:90,lastframe:105,frames:HL,endfunc:pr};var VL=[{ai:gt,dist:0,think:CL},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:Xt},{ai:gt,dist:0,think:PL}];o_={firstframe:106,lastframe:114,frames:VL,endfunc:pr};var WL=Array.from({length:6},()=>({ai:Rl,dist:0}));zL={firstframe:116,lastframe:121,frames:WL,endfunc:pr};var KL=Array.from({length:23},(e,t)=>({ai:Rl,dist:0,think:t===11?DL:null}));LL={firstframe:122,lastframe:144,frames:KL,endfunc:pr};var $L=Array.from({length:30},()=>({ai:Rl,dist:0}));c_={firstframe:161,lastframe:190,frames:$L,endfunc:FL};F();var vr=.1;function K(e,t,n){M(e,vr,n)}function $e(e,t,n){z(e,t,vr,n)}function Xn(e,t,n){ce(e,t,vr,n)}function Kt(e,t,n){ue(e,t,vr,n)}function le(e,t,n){_(e,t)}function hc(e,t,n){vE(e,null,t,vr)}var u_,d_,ka,XL,YL,qL,jL,m_,h_;function ZL(e){e.monsterinfo.current_move=d_}function JL(e){e.monsterinfo.current_move=u_}function li(e){e.monsterinfo.current_move=ka}function f_(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=P(e.enemy.origin,e.origin);if(Ue(i)>100)return;let a=B(i);fe(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function QL(e,t){f_(e,30,t)}function Eh(e,t){f_(e,30,t)}function Zn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ka),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=ka)}function ez(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,B(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function tz(e,t){let n=Z(e.angles).forward;e.movetype=7,e.touch=ez,e.velocity=U(D(n,300),{x:0,y:0,z:300}),e.velocity=U(D(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function nz(e){e.monsterinfo.nextframe=m_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var iz=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];u_={firstframe:0,lastframe:50,frames:iz,endfunc:JL};var rz=[{ai:$e,dist:3},{ai:$e,dist:1},{ai:$e,dist:5},{ai:$e,dist:10},{ai:$e,dist:13},{ai:$e,dist:12},{ai:$e,dist:0},{ai:$e,dist:0},{ai:$e,dist:5},{ai:$e,dist:6},{ai:$e,dist:16},{ai:$e,dist:15},{ai:$e,dist:6}];d_={firstframe:51,lastframe:63,frames:rz,endfunc:ZL};var az=[{ai:Xn,dist:20},{ai:Xn,dist:15},{ai:Xn,dist:35},{ai:Xn,dist:20},{ai:Xn,dist:10},{ai:Xn,dist:20}];ka={firstframe:64,lastframe:69,frames:az,endfunc:li};var sz=[{ai:Kt,dist:0},{ai:Kt,dist:0},{ai:Kt,dist:0,think:Eh},{ai:Kt,dist:0},{ai:Kt,dist:0,think:QL},{ai:Kt,dist:0},{ai:Kt,dist:0,think:Eh},{ai:Kt,dist:0}];XL={firstframe:70,lastframe:77,frames:sz,endfunc:li};var oz=[{ai:hc,dist:0},{ai:hc,dist:0},{ai:hc,dist:0,think:tz},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn},{ai:le,dist:0,think:Zn}];h_={firstframe:93,lastframe:100,frames:oz,endfunc:li};h_.frames[3].ai=(e,t,n)=>{Zn(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var cz=[{ai:le,dist:4},{ai:le,dist:-3},{ai:le,dist:-8},{ai:le,dist:2},{ai:le,dist:5}];YL={firstframe:78,lastframe:82,frames:cz,endfunc:li};var lz=[{ai:le,dist:-24},{ai:le,dist:11},{ai:le,dist:5},{ai:le,dist:-2}];qL={firstframe:83,lastframe:86,frames:lz,endfunc:li};var uz=[{ai:le,dist:11},{ai:le,dist:0},{ai:le,dist:-2},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];jL={firstframe:87,lastframe:92,frames:uz,endfunc:li};var dz=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];m_={firstframe:101,lastframe:109,frames:dz,endfunc:nz};F();var ja=.1,mz=()=>Math.random();function te(e,t,n){M(e,ja,n)}function Rt(e,t,n){z(e,t,ja,n)}function Lt(e,t,n){ce(e,t,ja,n)}function Te(e,t,n){ue(e,t,ja,n)}function Me(e,t,n){_(e,t)}var zl,__,g_,hz,fz,p_,v_,_z,gz,Nl,y_;function pz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function vz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function Yn(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Lc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function yz(e){e.monsterinfo.current_move=Nl}function wz(e){mz()<=.8?e.monsterinfo.current_move=Nl:e.monsterinfo.current_move=y_}function w_(e){e.monsterinfo.current_move=zl}function Ol(e){e.monsterinfo.current_move=__}function A_(e){e.monsterinfo.current_move=v_}function S_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=zl:e.monsterinfo.current_move=g_}function fc(e,t){let n=P(t,e);if(Ue(n)>256)return!1;let a=ni(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function at(e,t){if(!e.enemy)return;let n=Z(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=U(e.origin,U(D(i,s.x),U(D(r,s.y),D(a,s.z)))),l=ti(e.enemy.origin);if(!fc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!fc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!fc(o,l)))||t.trace(o,l,W,W,e,Nt).ent!==e.enemy)return;let u=2,m=e.frame;m===41?(u=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),u=2),t.multicast(e.origin,0,re.temp_entity,{te:ye.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=B(P(o,l));fe(e.enemy,e,e,d,e.enemy.origin,W,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 Az(e){e.monsterinfo.nextframe=p_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Sz=[{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:Yn},{ai:te,dist:0},{ai:te,dist:0,think:Yn},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:Yn},{ai:te,dist:0},{ai:te,dist:0,think:Yn},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:Yn},{ai:te,dist:0},{ai:te,dist:0,think:Yn}];zl={firstframe:83,lastframe:99,frames:Sz,endfunc:w_};var kz=[{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0}];gz={firstframe:100,lastframe:103,frames:kz,endfunc:yz};var Ez=[{ai:te,dist:0,think:Lc},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:Lc},{ai:te,dist:0},{ai:te,dist:0}];Nl={firstframe:104,lastframe:109,frames:Ez,endfunc:wz};var bz=[{ai:te,dist:0,think:Lc},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0}];y_={firstframe:110,lastframe:117,frames:bz,endfunc:w_};var xz=[{ai:Lt,dist:0},{ai:Lt,dist:30}];v_={firstframe:68,lastframe:69,frames:xz,endfunc:S_};var Tz=[{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}];g_={firstframe:70,lastframe:76,frames:Tz,endfunc:S_};var Mz=[{ai:Rt,dist:0},{ai:Rt,dist:30,think:Ol}];_z={firstframe:68,lastframe:69,frames:Mz,endfunc:Ol};var Rz=[{ai:Rt,dist:30},{ai:Rt,dist:30},{ai:Rt,dist:22},{ai:Rt,dist:19},{ai:Rt,dist:24},{ai:Rt,dist:28},{ai:Rt,dist:25}];__={firstframe:70,lastframe:76,frames:Rz,endfunc:Ol};var Lz=[{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:6},{ai:Me,dist:16},{ai:Me,dist:-6},{ai:Me,dist:-7},{ai:Me,dist:0}];fz={firstframe:57,lastframe:67,frames:Lz,endfunc:A_};var zz=[{ai:Te,dist:0,think:pz},{ai:Te,dist:0},{ai:Te,dist:15,think:at},{ai:Te,dist:0,think:at},{ai:Te,dist:0,think:at},{ai:Te,dist:0,think:at},{ai:Te,dist:0,think:at},{ai:Te,dist:-2,think:at},{ai:Te,dist:-2,think:at},{ai:Te,dist:-3,think:at},{ai:Te,dist:-2,think:at},{ai:Te,dist:0,think:at},{ai:Te,dist:-1,think:at},{ai:Te,dist:0,think:vz},{ai:Te,dist:-2},{ai:Te,dist:-2},{ai:Te,dist:-3},{ai:Te,dist:0}];hz={firstframe:39,lastframe:56,frames:zz,endfunc:A_};var Nz=[{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:0}];p_={firstframe:32,lastframe:38,frames:Nz,endfunc:Az};F();var Za=.1;var Oz=2,Iz=4;function Cz(e,t,n){M(e,Za,n)}function Pz(e,t,n){z(e,t,Za,n)}function Dz(e,t,n){ce(e,t,Za,n)}function k_(e,t,n){ue(e,t,Za,n)}function E_(e,t,n){_(e,t)}var Il,b_,x_,Fz,Uz,Bz,T_;function Gz(e){e.monsterinfo.current_move=Il}function Hz(e){e.monsterinfo.current_move=b_}function Ja(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=x_:e.monsterinfo.current_move=Il}function yr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function wr(e,t){if(!e.enemy){let{forward:i}=Z(e.angles);return i}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 Vz(e,t){if(!e.enemy)return;let n=yr(e),i=wr(e,n);wt(e,n,i,5,600,0,0,t,1)}function Wz(e,t){if(!e.enemy)return;let n=yr(e),i=wr(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Wx(e,n,i,r,a,o,l,s,0,t,3)}function Kz(e,t){if(!e.enemy)return;let n=yr(e),i=wr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Jt(e,n,i,r,a,s,o,0,t,4)}function $z(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=Z(n.angles),s={...n.origin};s=U(s,D(i,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 Xz(e,t){if(!e.enemy)return;let n=yr(e),i=wr(e,n);$x(e,n,i,5,600,0,0,t)}function Yz(e,t){if(!e.enemy)return;let n=yr(e),i=wr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Kx(e,n,i,r,a,0,0,t)}function qz(e,t){e.enemy&&wc(e,1,!1,$z,t)}function jz(e,t){e.count<2?Xz(e,t):e.count<4?Yz(e,t):qz(e,t)}function M_(e,t){if(e.style===1){jz(e,t);return}e.spawnflags&Oz?Wz(e,t):e.spawnflags&Iz?Kz(e,t):Vz(e,t)}var Zz=Array.from({length:30},()=>({ai:Cz,dist:0}));Il={firstframe:0,lastframe:29,frames:Zz,endfunc:Gz};var Jz=Array.from({length:40},()=>({ai:Pz,dist:2}));b_={firstframe:30,lastframe:69,frames:Jz,endfunc:Hz};var Qz=Array.from({length:20},()=>({ai:Dz,dist:10}));x_={firstframe:70,lastframe:89,frames:Qz,endfunc:Ja};var eN=Array.from({length:10},(e,t)=>({ai:k_,dist:0,think:t===5?M_:null}));Fz={firstframe:90,lastframe:99,frames:eN,endfunc:Ja};var tN=Array.from({length:10},(e,t)=>({ai:k_,dist:0,think:t>=4&&t<=8?M_:null}));Uz={firstframe:90,lastframe:99,frames:tN,endfunc:Ja};var nN=Array.from({length:6},()=>({ai:E_,dist:0}));Bz={firstframe:100,lastframe:105,frames:nN,endfunc:Ja};var iN=Array.from({length:10},()=>({ai:E_,dist:0}));function rN(e){e.monsterinfo.nextframe=T_.lastframe,e.nextthink=-1}T_={firstframe:106,lastframe:115,frames:iN,endfunc:rN};F();var R_=.1,aN={x:30,y:30,z:40},sN={x:30,y:-30,z:40},oN={x:20,y:0,z:70};function cN(e,t,n){M(e,R_,n)}function lN(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Pl:e.monsterinfo.current_move=Qa}function Cl(e,t,n){ue(e,t,R_,n)}function Ar(e,t,n){_(e,t)}var Qa,Pl,uN,dN,L_,z_,mN,hN,fN,N_;function _N(e){e.monsterinfo.current_move=Qa}function kn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Pl:e.monsterinfo.current_move=Qa}function Dl(e,t){let{forward:n,right:i,up:r}=Z(e.angles),a={...e.origin},s=D(n,t.x),o=D(i,t.y),l=D(r,t.z);return U(U(U(a,s),o),l)}function gN(e,t){if(!e.enemy)return;let n=Dl(e,sN),i=B(P(e.enemy.origin,n));lr(e,n,i,50,650,0,t)}function pN(e,t){if(!e.enemy)return;let n=Dl(e,oN),i=B(P(e.enemy.origin,n));Xx(e,n,i,50,600,0,t)}function vN(e,t){if(!e.enemy)return;let n=Dl(e,aN),i=B(P(e.enemy.origin,n));Aa(e,n,i,6,4,.05,.05,0,t,4)}function yN(e,t){let n=(i,r,a,s,o,l)=>{let c=t.trace(i,r,a,s,o,l);return{fraction:c.fraction,ent:c.ent}};e.enemy&&wn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=L_:e.monsterinfo.current_move=z_}function wN(e){e.monsterinfo.nextframe=N_.lastframe,e.nextthink=-1}var AN=Array.from({length:60},()=>({ai:cN,dist:0}));Qa={firstframe:0,lastframe:59,frames:AN,endfunc:_N};var SN=Array.from({length:18},()=>({ai:lN,dist:12}));Pl={firstframe:60,lastframe:77,frames:SN,endfunc:kn};var kN=Array.from({length:4},()=>({ai:Ar,dist:0}));fN={firstframe:78,lastframe:81,frames:kN,endfunc:kn};var EN=Array.from({length:4},()=>({ai:Ar,dist:0}));hN={firstframe:82,lastframe:85,frames:EN,endfunc:kn};var bN=Array.from({length:4},()=>({ai:Ar,dist:0}));mN={firstframe:86,lastframe:89,frames:bN,endfunc:kn};var xN=Array.from({length:24},()=>({ai:Ar,dist:0}));N_={firstframe:90,lastframe:113,frames:xN,endfunc:wN};var TN=Array.from({length:6},(e,t)=>({ai:Cl,dist:0,think:t===0||t===3?pN:null}));dN={firstframe:114,lastframe:119,frames:TN,endfunc:kn};var MN=Array.from({length:27},(e,t)=>({ai:Cl,dist:0,think:t===7||t===10||t===13?gN:null}));uN={firstframe:120,lastframe:146,frames:MN,endfunc:kn};var RN=Array.from({length:6},()=>({ai:Cl,dist:0,think:vN}));L_={firstframe:147,lastframe:152,frames:RN,endfunc:yN};var LN=Array.from({length:14},()=>({ai:Ar,dist:0}));z_={firstframe:153,lastframe:166,frames:LN,endfunc:kn};F();var Fl=.1;function O_(e,t,n,i,r){let a=r.trace(t,n,W,W,e,Nt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return B(P(n,t));let s=U(n,D(i,-20)),o=r.trace(t,s,W,W,e,Nt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return B(P(s,t));let l=U(n,D(i,20)),c=r.trace(t,l,W,W,e,Nt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?B(P(l,t)):null}function I_(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=ar(n)}}function zN(e,t,n){M(e,Fl,n)}function NN(e,t,n){z(e,t,Fl,n)}function ON(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Bl:e.monsterinfo.current_move=es}function Ul(e,t,n){ue(e,t,Fl,n)}function C_(e,t,n){_(e,t)}var es,P_,Bl,IN,CN,PN,DN,D_;function FN(e){e.monsterinfo.current_move=es}function UN(e){e.monsterinfo.current_move=P_}function Sr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Bl:e.monsterinfo.current_move=es}function BN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=Z(o),c=e.monsterinfo.blind_fire_target,u=O_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));wt(e,n,i,30,1e3,0,0,t,1)}function GN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=B(P(e.enemy.origin,n));Jt(e,n,i,20,2,.05,.05,0,t,4)}function HN(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i;if((e.monsterinfo.aiflags&32768)!==0&&e.monsterinfo.blind_fire_target){let o=e.angles,{right:l}=Z(o),c=e.monsterinfo.blind_fire_target,u=O_(e,n,c,l,t);if(!u)return;i=u}else i=B(P(e.enemy.origin,n));lr(e,n,i,50,650,0,t)}function VN(e){e.monsterinfo.nextframe=D_.lastframe,e.nextthink=-1}function WN(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Sr(e)}var KN=Array.from({length:30},()=>({ai:zN,dist:0}));es={firstframe:0,lastframe:29,frames:KN,endfunc:FN};var $N=Array.from({length:16},()=>({ai:NN,dist:5}));P_={firstframe:30,lastframe:45,frames:$N,endfunc:UN};var XN=Array.from({length:16},()=>({ai:ON,dist:10}));Bl={firstframe:46,lastframe:61,frames:XN,endfunc:Sr};var YN=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=I_:t>5&&t<12&&(n=BN),{ai:Ul,dist:0,think:n}});IN={firstframe:62,lastframe:77,frames:YN,endfunc:Sr};var qN=Array.from({length:20},(e,t)=>({ai:Ul,dist:0,think:t%2===0&&t>5?GN:null}));CN={firstframe:78,lastframe:97,frames:qN,endfunc:Sr};var jN=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=I_:(t===8||t===12||t===16)&&(n=HN),{ai:Ul,dist:0,think:n}});PN={firstframe:98,lastframe:115,frames:jN,endfunc:WN};var ZN=Array.from({length:6},()=>({ai:C_,dist:0}));DN={firstframe:116,lastframe:121,frames:ZN,endfunc:Sr};var JN=Array.from({length:16},()=>({ai:C_,dist:0}));D_={firstframe:122,lastframe:137,frames:JN,endfunc:VN};F();var Gl=.1;function QN(e,t,n){M(e,Gl,n)}function Hl(e,t,n){ce(e,t,Gl,n)}function eO(e,t,n){ue(e,t,Gl,n)}var Vl,F_,tO,nO,U_;function iO(e){e.monsterinfo.current_move=Vl}function Wl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=F_:e.monsterinfo.current_move=Vl}function rO(e,t){if(!e.enemy)return;let n=Z(e.angles).forward,i={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},r=B(P(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),wt(e,i,r,2,1e3,1,0,t)}var aO=Array.from({length:1},()=>({ai:QN,dist:0}));Vl={firstframe:0,lastframe:0,frames:aO,endfunc:iO};var sO=Array.from({length:1},()=>({ai:Hl,dist:0}));F_={firstframe:0,lastframe:0,frames:sO,endfunc:Wl};var oO=Array.from({length:8},(e,t)=>({ai:eO,dist:0,think:t===4?rO:void 0}));tO={firstframe:1,lastframe:8,frames:oO,endfunc:Wl};var cO=Array.from({length:2},()=>({ai:Hl,dist:0}));nO={firstframe:9,lastframe:10,frames:cO,endfunc:Wl};var lO=Array.from({length:4},()=>({ai:Hl,dist:0}));function uO(e){e.monsterinfo.nextframe=U_.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}U_={firstframe:11,lastframe:14,frames:lO,endfunc:uO};F();var ts=.1;var ir=()=>Math.random(),ns=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ui(e,t,n){M(e,ts,n)}function qn(e,t,n){z(e,t,ts,n)}function Ye(e,t,n){ce(e,t,ts,n)}function $(e,t,n){ue(e,t,ts,n)}function Be(e,t,n){_(e,t)}var Kl,B_,G_,is,$l,dO,H_,mO,V_,W_,K_,$_,X_,hO,fO,_O,gO,pO,vO,yO,wO,AO,SO,rs=2,Y_=80,kO=100;var EO=8;var Xl=32;function di(e,t){!(e.spawnflags&Xl)&&e.waterlevel>=rs&&DO(e)}function bO(e){e.waterlevel>=rs?(e.flags|=2,e.monsterinfo.current_move=B_):e.monsterinfo.current_move!==$l&&(e.monsterinfo.current_move=Kl)}function q_(e){e.flags|=2,e.monsterinfo.current_move=G_}function as(e,t){if(!e.enemy)return;let n=ns(5,10),i=100,r=P(e.enemy.origin,e.origin);Ue(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function Yl(e,t){if(!e.enemy)return;let n=ns(5,10),i=100,r=P(e.enemy.origin,e.origin);Ue(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function ql(e,t){if(!e.enemy)return;let n=5,i=Y_,r=P(e.enemy.origin,e.origin);Ue(r)<=i&&fe(e.enemy,e,e,B(r),e.enemy.origin,W,n,0,0,0,t.timeSeconds)}function xO(e){e.monsterinfo.current_move=$l}function j_(e){ir()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function Z_(e,t){let n=ns(0,2),i=["gek/gk_step1.wav","gek/gk_step2.wav","gek/gk_step3.wav"];t.engine.sound?.(e,0,i[n],1,1,0)}function J_(e,t){if(e.spawnflags&EO){let n=ir();n<.33?t.engine.sound?.(e,0,"gek/gek_low.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"gek/gek_mid.wav",1,1,0):t.engine.sound?.(e,0,"gek/gek_high.wav",1,1,0)}else t.engine.sound?.(e,0,"gek/gk_idle1.wav",1,1,0);e.health+=ns(10,20),e.health>e.max_health&&(e.health=e.max_health),e.health<e.max_health/4?e.skin=2:e.health<e.max_health/2?e.skin=1:e.skin=0}function Ct(e){!(e.spawnflags&Xl)&&e.waterlevel>=rs?e.monsterinfo.current_move=is:e.monsterinfo.current_move=W_}function TO(e){!(e.spawnflags&Xl)&&e.waterlevel>=rs?e.monsterinfo.current_move=is:e.monsterinfo.current_move=V_}function Q_(e){if(!e.enemy||e.enemy.health<=0)return;Ue(P(e.enemy.origin,e.origin))<=Y_&&(e.frame===114?e.monsterinfo.current_move=$_:e.frame===123&&(e.monsterinfo.current_move=K_))}function MO(e,t,n,i,r,a){let s=or(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function RO(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=Z(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=U(e.origin,U(D(i,s.x),U(D(r,s.y),D(a,s.z))));o.z+=2;let l=ti(e.enemy.origin);l.z+=e.enemy.viewheight||0;let c=B(P(l,o));MO(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function LO(e){if(ir()>.8&&e.health<e.max_health){e.monsterinfo.current_move=H_;return}if(e.enemy&&e.enemy.health>0){let t=Ue(P(e.enemy.origin,e.origin));ir()>.7&&t<=kO&&(e.monsterinfo.current_move=X_)}}function zO(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function NO(e,t){let i=Z(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=U(D(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=zO}function OO(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=W;return}}function _n(e){e.groundentity&&(e.velocity=W)}function IO(e,t){}function ss(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function eg(e,t){rf(t,e.origin,20),e.deadflag=2}function CO(e,t){ir()>.9&&eg(e,t)}function PO(e){e.maxs.z=0}function DO(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=is,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var tg=Array(38).fill({ai:ui,dist:0});tg[38]={ai:ui,dist:0,think:di};Kl={firstframe:0,lastframe:38,frames:tg,endfunc:null};var FO=Array(32).fill({ai:ui,dist:14});B_={firstframe:39,lastframe:70,frames:FO,endfunc:null};var UO=Array(32).fill({ai:Ye,dist:14});G_={firstframe:39,lastframe:70,frames:UO,endfunc:q_};var os=Array(32).fill({ai:Ye,dist:14});os[8]={ai:Ye,dist:18,think:as};os[14]={ai:Ye,dist:24,think:Yl};os[20]={ai:Ye,dist:22,think:ql};is={firstframe:39,lastframe:70,frames:os,endfunc:q_};var jl=Array(32).fill({ai:ui,dist:0});jl[0]={ai:ui,dist:0,think:J_};jl[31]={ai:ui,dist:0,think:j_};dO={firstframe:71,lastframe:102,frames:jl,endfunc:bO};var cs=Array(32).fill({ai:Be,dist:0});cs[0]={ai:Be,dist:0,think:J_};cs[31]={ai:Be,dist:0,think:j_};H_={firstframe:71,lastframe:102,frames:cs,endfunc:e=>YO(e,Kl)};$l={firstframe:71,lastframe:102,frames:cs,endfunc:xO};var BO=[{ai:qn,dist:3.8,think:di},{ai:qn,dist:19.6},{ai:qn,dist:25.5},{ai:qn,dist:34.6,think:Z_},{ai:qn,dist:27.3},{ai:qn,dist:28.4}];mO={firstframe:103,lastframe:108,frames:BO,endfunc:null};var GO=[{ai:Ye,dist:3.8,think:di},{ai:Ye,dist:19.6},{ai:Ye,dist:25.5},{ai:Ye,dist:34.6,think:Z_},{ai:Ye,dist:27.3},{ai:Ye,dist:28.4}];V_={firstframe:103,lastframe:108,frames:GO,endfunc:null};var HO=[{ai:Ye,dist:.2},{ai:Ye,dist:19.7}];W_={firstframe:0,lastframe:1,frames:HO,endfunc:TO};var VO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:RO},{ai:$,dist:0,think:LO}];X_={firstframe:133,lastframe:139,frames:VO,endfunc:Ct};var WO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:as},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Q_}];K_={firstframe:109,lastframe:117,frames:WO,endfunc:Ct};var KO=[{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:as},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Yl},{ai:$,dist:0},{ai:$,dist:0},{ai:$,dist:0,think:Q_}];$_={firstframe:118,lastframe:126,frames:KO,endfunc:Ct};var ng=[{ai:$,dist:0},{ai:$,dist:-.3},{ai:$,dist:-1.1},{ai:$,dist:-.2},{ai:$,dist:6.7,think:NO},{ai:$,dist:6.4},{ai:$,dist:.1},{ai:$,dist:28.3},{ai:$,dist:24.1},{ai:$,dist:31.7},{ai:$,dist:35.9,think:OO},{ai:$,dist:12.3,think:_n},{ai:$,dist:20.1,think:_n},{ai:$,dist:-1,think:_n},{ai:$,dist:2.5,think:_n},{ai:$,dist:.5,think:_n},{ai:$,dist:1.8,think:_n},{ai:$,dist:1.2,think:_n},{ai:$,dist:-.4,think:di}];hO={firstframe:140,lastframe:158,frames:ng,endfunc:Ct};fO={firstframe:140,lastframe:158,frames:ng,endfunc:Ct};var mi=Array(21).fill({ai:$,dist:16});mi[0]={ai:$,dist:16,think:IO};mi[4]={ai:$,dist:16,think:ql};mi[9]={ai:$,dist:16,think:ql};mi[13]={ai:$,dist:16,think:as};mi[18]={ai:$,dist:16,think:Yl};_O={firstframe:159,lastframe:179,frames:mi,endfunc:Ct};var $O=Array(6).fill({ai:Be,dist:0});gO={firstframe:180,lastframe:185,frames:$O,endfunc:Ct};var ig=Array(11).fill({ai:Be,dist:0});ig[10]={ai:Be,dist:0,think:di};pO={firstframe:186,lastframe:196,frames:ig,endfunc:Ct};var rg=Array(13).fill({ai:Be,dist:0});rg[12]={ai:Be,dist:0,think:di};vO={firstframe:197,lastframe:209,frames:rg,endfunc:Ct};var ag=Array(10).fill({ai:Be,dist:0});ag[5]={ai:Be,dist:-7,think:PO};yO={firstframe:210,lastframe:219,frames:ag,endfunc:ss};var sg=Array(7).fill({ai:Be,dist:0});sg[5]={ai:Be,dist:-7,think:CO};wO={firstframe:220,lastframe:226,frames:sg,endfunc:ss};var og=Array(35).fill({ai:Be,dist:0});og[34]={ai:Be,dist:0,think:eg};AO={firstframe:227,lastframe:261,frames:og,endfunc:ss};var XO=Array(45).fill({ai:Be,dist:0});SO={firstframe:262,lastframe:306,frames:XO,endfunc:ss};function YO(e,t){e.monsterinfo.current_move=t}F();var Zl=.1,qO=()=>Math.random(),bh=()=>Math.random();function jO(e,t,n){z(e,t,Zl,n)}function ZO(e,t,n){ce(e,t,Zl,n)}function ls(e,t,n){ue(e,t,Zl,n)}function ot(e,t,n){_(e,t)}var rr,JO,Jl,cg,lg,QO,eI,tI,nI,iI,rI,aI,sI=1;function oI(e,t){let i=t.findByRadius(e.origin,1024),r=null;for(let a of i)if(a!==e&&a.monsterinfo&&!(a.monsterinfo.aiflags&256)&&!(a.health>0)&&!(a.nextthink&&a.think===t.free)&&!(a.health<=-40)&&wn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function cI(e,t){if(e.enemy)return;let n=oI(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,kr(e),void 0):qO()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function lI(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Jl;return}let n=Z(e.angles),i=U(e.origin,U(D(n.forward,0),U(D(n.right,0),D(n.up,0)))),r=ti(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=B(P(r,i));wt(e,i,a,15,1e3,sI,0,t)}function uI(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=rr,e.monsterinfo.aiflags&=-8193;return}e.enemy.health<e.enemy.max_health?(e.enemy.health+=5,e.enemy.health>e.enemy.max_health&&(e.enemy.health=e.enemy.max_health)):(e.enemy.deadflag===2&&(e.enemy.deadflag=0,e.enemy.solid=2,e.enemy.takedamage=!0,e.enemy.health=e.enemy.max_health,e.enemy.monsterinfo.aiflags&=-129),e.monsterinfo.current_move=rr,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function dI(e,t){if(bh()>.8){let n=bh();n<.33?t.engine.sound?.(e,0,"misc/welder1.wav",1,1,0):n<.66?t.engine.sound?.(e,0,"misc/welder2.wav",1,1,0):t.engine.sound?.(e,0,"misc/welder3.wav",1,1,0)}}function kr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=rr:e.monsterinfo.current_move=Jl}function mI(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=lg:e.monsterinfo.current_move=cg}function Ql(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=rr)}var ug=Array(19).fill({ai:ot,dist:0});ug[18]={ai:ot,dist:0,think:cI};rr={firstframe:58,lastframe:76,frames:ug,endfunc:null};var hI=[{ai:jO,dist:5}];JO={firstframe:0,lastframe:0,frames:hI,endfunc:null};var fI=[{ai:ZO,dist:10}];Jl={firstframe:0,lastframe:0,frames:fI,endfunc:null};var dg=Array(31).fill({ai:ls,dist:0});dg[20]={ai:ls,dist:0,think:lI};cg={firstframe:121,lastframe:151,frames:dg,endfunc:kr};var _I=Array(6).fill({ai:ls,dist:0,think:uI});lg={firstframe:115,lastframe:120,frames:_I,endfunc:null};var mg=Array(10).fill({ai:ot,dist:0});mg[9]={ai:ot,dist:0,think:Ql};QO={firstframe:77,lastframe:86,frames:mg,endfunc:null};var hg=Array(7).fill({ai:ot,dist:0,think:dI});hg[6]={ai:ot,dist:0,think:Ql};eI={firstframe:87,lastframe:93,frames:hg,endfunc:null};var fg=Array(7).fill({ai:ot,dist:-2});fg[6]={ai:ot,dist:-2,think:Ql};tI={firstframe:94,lastframe:100,frames:fg,endfunc:null};var gI=[{ai:ls,dist:0}];nI={firstframe:0,lastframe:0,frames:gI,endfunc:mI};var pI=[{ai:ot,dist:-1}];iI={firstframe:0,lastframe:0,frames:pI,endfunc:kr};var vI=Array(8).fill({ai:ot,dist:0});rI={firstframe:107,lastframe:114,frames:vI,endfunc:kr};var yI=Array(6).fill({ai:ot,dist:0});aI={firstframe:101,lastframe:106,frames:yI,endfunc:kr};F();F();var eu=.1;function wI(e,t,n){M(e,eu,n)}function AI(e,t,n){z(e,t,eu,n)}function SI(e,t,n){ce(e,t,eu,n)}var U7=Array.from({length:1},()=>({ai:wI,dist:0})),B7=Array.from({length:1},()=>({ai:AI,dist:5})),G7=Array.from({length:1},()=>({ai:SI,dist:10}));var H7=new Map(Cc.map(e=>[e.name,e]));F();var kI=2166136261,EI=16777619;function _g(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,EI)>>>0;return n>>>0}function Jn(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return _g(e,r)}function zc(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return _g(e,n)}var _c=2,bI=1;function je(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function pe(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function Qn(e,t,n){return e===void 0?n:pe(e,t)}function Ea(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function va(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)pe(n,`${t} element`);return e}function xI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=je(e,"level");return{frameNumber:Qn(t.frameNumber,"level.frameNumber",0),timeSeconds:Qn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Qn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Qn(t.deltaSeconds,"level.deltaSeconds",0)}}function TI(e){if(e===void 0)return new Oc().getState();let t=je(e,"rng"),n=je(t.mt,"rng.mt"),i=va(n.state,"rng.mt.state");return{mt:{index:pe(n.index,"rng.mt.index"),state:i}}}function MI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let i=je(t,`thinks[${n}]`);return{time:pe(i.time,`thinks[${n}].time`),entityIndex:pe(i.entityIndex,`thinks[${n}].entityIndex`)}})}function RI(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=je(e,"awareness"),n=(i,r)=>i===null?null:pe(i,r);return{frameNumber:pe(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:pe(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:pe(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:pe(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function LI(e){if(e===void 0)return{};let t=je(e,"entity.fields"),n={};for(let[i,r]of Object.entries(t)){if(r===null){n[i]=null;continue}switch(typeof r){case"number":case"string":case"boolean":n[i]=r;break;default:{if(!Array.isArray(r)){let a=je(r,i),s={};for(let[o,l]of Object.entries(a))s[o]=pe(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[pe(a,`${i}[0]`),pe(s,`${i}[1]`),pe(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function zI(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=je(t,`entities[${n}]`);return{index:pe(i.index,`entities[${n}].index`),fields:LI(i.fields)}})}function NI(e){let t=je(e,"pool");return{capacity:pe(t.capacity,"pool.capacity"),activeOrder:va(t.activeOrder,"pool.activeOrder"),freeList:va(t.freeList,"pool.freeList"),pendingFree:va(t.pendingFree,"pool.pendingFree")}}function OI(e){let t=je(e,"entities");return{timeSeconds:pe(t.timeSeconds,"entities.timeSeconds"),pool:NI(t.pool),entities:zI(t.entities),thinks:MI(t.thinks),awareness:RI(t.awareness),crossLevelFlags:Qn(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:Qn(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function II(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let i=je(t,`cvars[${n}]`);return{name:Ea(i.name,`cvars[${n}].name`),value:Ea(i.value,`cvars[${n}].value`),flags:pe(i.flags,`cvars[${n}].flags`)}})}function CI(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Ea(t,`configstrings[${n}]`))}function PI(e){return e===void 0?{}:je(e,"gameState")}function zt(e,t){if(t==null)return e;if(typeof t=="number")return Jn(e,t);if(typeof t=="string")return zc(e,t);if(typeof t=="boolean")return Jn(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=zt(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=zc(n,r),n=zt(n,t[r]);return n}return e}function DI(e){let t=kI;return t=Jn(t,e.version),t=Jn(t,e.timestamp),t=zc(t,e.map),t=Jn(t,e.difficulty),t=Jn(t,e.playtimeSeconds),t=zt(t,e.gameState),t=zt(t,e.level),t=zt(t,e.rng),t=zt(t,e.entities),t=zt(t,e.cvars),t=zt(t,e.configstrings),e.player&&(t=zt(t,e.player)),t>>>0}function gg(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=je(i,"save"),a=r.version??_c,s=pe(a,"version");if(s<bI)throw new Error(`Unsupported save version ${s}`);if(s>_c&&!n)throw new Error(`Save version ${s} is newer than supported ${_c}`);let o={version:s,timestamp:pe(r.timestamp,"timestamp"),map:Ea(r.map,"map"),difficulty:pe(r.difficulty,"difficulty"),playtimeSeconds:pe(r.playtimeSeconds,"playtimeSeconds"),gameState:PI(r.gameState),level:xI(r.level),rng:TI(r.rng),entities:OI(r.entities),cvars:II(r.cvars),configstrings:CI(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?pe(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=DI(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}F();var V7=new Set(Cc.filter(e=>e.save).map(e=>e.name));var xh=globalThis.TextEncoder;function ei(e){return gg({...e},{allowNewerVersion:!0})}function FI(e){return xh?new xh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var UI=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:ei(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:ei(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:ei(e.save)}))}},BI=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((i,r)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>i(o.result),o.onerror=()=>r(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:ei(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:ei(t.save)}))}},tu=class ji{constructor(t={}){let{dbName:n=ji.DEFAULT_DB_NAME,storeName:i=ji.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new BI(r,n,i):this.adapter=new UI}async save(t,n,i={}){let r=ei(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:FI(r)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:r}),a}async load(t,n={}){await this.adapter.init();let i=await this.adapter.get(t);if(!i)throw new Error(`Save slot ${t} not found`);return gg(i.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,i)=>i.timestamp-n.timestamp||n.id.localeCompare(i.id))}async quickSave(t){return this.save(ji.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(ji.QUICK_SLOT,t)}};tu.DEFAULT_DB_NAME="quake2ts-saves";tu.DEFAULT_STORE="saves";tu.QUICK_SLOT="quicksave";F();Qt();F();F();var W7=sr();F();Qt();var K7=[{id:ie.QuadDamage,priority:1},{id:ie.Invulnerability,priority:2},{id:ie.EnviroSuit,priority:3},{id:ie.Rebreather,priority:4},{id:ie.Silencer,priority:5}];F();F();var GI=new Map,HI=["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"],pg=async(e,t)=>{for(let n of HI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);GI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var VI=new Map,WI=["d_left","d_right","d_up","d_down"],vg=async(e,t)=>{for(let n of WI)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);VI.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var nu=[],KI=0,yg=async(e,t)=>{for(let n=0;n<10;n++)try{let i=await t.loadTexture(`pics/hud/num_${n}.pcx`),r=e.registerTexture(`hud_num_${n}`,i);nu.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}nu.length>0&&(KI=nu[0].width),await o0(e,t),await pg(e,t),await vg(e,t)};var iu=[{type:"null"},{type:"armor",id:pn.BODY},{type:"armor",id:pn.COMBAT},{type:"armor",id:pn.JACKET},{type:"armor",id:pn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:V.Grapple},{type:"weapon",id:V.Blaster},{type:"weapon",id:V.ChainFist},{type:"weapon",id:V.Shotgun},{type:"weapon",id:V.SuperShotgun},{type:"weapon",id:V.Machinegun},{type:"weapon",id:V.EtfRifle},{type:"weapon",id:V.Chaingun},{type:"ammo",id:I.Grenades},{type:"ammo",id:I.Trap},{type:"ammo",id:I.Tesla},{type:"weapon",id:V.GrenadeLauncher},{type:"weapon",id:V.ProxLauncher},{type:"weapon",id:V.RocketLauncher},{type:"weapon",id:V.HyperBlaster},{type:"weapon",id:V.IonRipper},{type:"weapon",id:V.PlasmaBeam},{type:"weapon",id:V.Railgun},{type:"weapon",id:V.Phalanx},{type:"weapon",id:V.BFG10K},{type:"weapon",id:V.Disruptor},{type:"ammo",id:I.Shells},{type:"ammo",id:I.Bullets},{type:"ammo",id:I.Cells},{type:"ammo",id:I.Rockets},{type:"ammo",id:I.Slugs},{type:"ammo",id:I.MagSlugs},{type:"ammo",id:I.Flechettes},{type:"ammo",id:I.Prox},{type:"ammo",id:I.Nuke},{type:"ammo",id:I.Rounds},{type:"powerup",id:ie.QuadDamage},{type:"powerup",id:ie.QuadFire},{type:"powerup",id:ie.Invulnerability},{type:"powerup",id:ie.Invisibility},{type:"powerup",id:ie.Silencer},{type:"powerup",id:ie.Rebreather},{type:"powerup",id:ie.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:ie.Bandolier},{type:"powerup",id:ie.AmmoPack},{type:"powerup",id:ie.IRGoggles},{type:"powerup",id:ie.DoubleDamage},{type:"powerup",id:ie.SphereVengeance},{type:"powerup",id:ie.SphereHunter},{type:"powerup",id:ie.SphereDefender},{type:"powerup",id:ie.Doppelganger},{type:"powerup",id:ie.TagToken},{type:"key",id:Ee.DataCD},{type:"key",id:Ee.PowerCube},{type:"key",id:Ee.ExplosiveCharges},{type:"key",id:Ee.Yellow},{type:"key",id:Ee.PowerCore},{type:"key",id:Ee.Pyramid},{type:"key",id:Ee.DataSpinner},{type:"key",id:Ee.Pass},{type:"key",id:Ee.Blue},{type:"key",id:Ee.Red},{type:"key",id:Ee.Green},{type:"key",id:Ee.CommanderHead},{type:"key",id:Ee.Airstrike},{type:"key",id:Ee.NukeContainer},{type:"key",id:Ee.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:Ee.RedFlag},{type:"key",id:Ee.BlueFlag},{type:"powerup",id:ie.TechResistance},{type:"powerup",id:ie.TechStrength},{type:"powerup",id:ie.TechHaste},{type:"powerup",id:ie.TechRegeneration},{type:"powerup",id:ie.Flashlight},{type:"powerup",id:ie.Compass}];function hi(e,t,n){return e+(t-e)*n}function ru(e,t,n){return hi(e,t,n)}function us(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o;t instanceof Map?o=t:o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=l.modelIndex??l.modelindex,m=l.skinNum??l.skinnum;if(u===void 0)continue;let d=i.getModelName(u);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let g={x:hi(c.origin.x,l.origin.x,n),y:hi(c.origin.y,l.origin.y,n),z:hi(c.origin.z,l.origin.z,n)},v={x:ru(c.angles.x,l.angles.x,n),y:ru(c.angles.y,l.angles.y,n),z:ru(c.angles.z,l.angles.z,n)},p=l.frame,w=c.frame,x=c.scale!==void 0?c.scale:1,k=l.scale!==void 0?l.scale:1,y=hi(x,k,n),E=X=>X===void 0||X===0?255:X,T=E(c.alpha),b=E(l.alpha),N=hi(T,b,n)/255,A=me.create();me.translate(A,A,[g.x,g.y,g.z]),me.rotateZ(A,A,v.z*Math.PI/180),me.rotateY(A,A,v.y*Math.PI/180),me.rotateX(A,A,v.x*Math.PI/180),me.scale(A,A,[y,y,y]);let O=m!==void 0&&m>0?i.getImageName(m):void 0;f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:w,frame1:p,lerp:n},transform:A,skin:O,alpha:N}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:w,frame1:p,lerp:n},transform:A,alpha:N})}return a}var $I=32768,ds=class{constructor(t,n){this.configstrings=new Array($I).fill("");this.entities=new Map;this.previousEntities=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,i,r,a,s,o,l){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}, Tick: ${o??10}`),this.configstrings.fill(""),this.entities.clear(),this.previousEntities.clear(),this.baselines.clear(),this.latestFrame=null,this.previousFrame=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.previousEntities=this.entities),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,i=new Map;if(n.delta)for(let[r,a]of this.entities)i.set(r,structuredClone(a));for(let r of n.entities){if(r.bits&Qd){i.delete(r.number);continue}let a=r.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=Rn();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits,r=n.bitsHigh;t.number=n.number,i&Eo&&(t.modelindex=n.modelindex),i&To&&(t.modelindex2=n.modelindex2),i&Mo&&(t.modelindex3=n.modelindex3),i&Ro&&(t.modelindex4=n.modelindex4),i&wo&&(t.frame=n.frame),i&xo&&(t.frame=n.frame),(i&Gr||i&Wr)&&(t.skinnum=n.skinnum),(i&Br||i&Vr)&&(t.effects=n.effects),(i&Ur||i&Hr)&&(t.renderfx=n.renderfx),i&go&&(t.origin.x=n.origin.x),i&po&&(t.origin.y=n.origin.y),i&So&&(t.origin.z=n.origin.z),i&ko&&(t.angles.x=n.angles.x),i&vo&&(t.angles.y=n.angles.y),i&yo&&(t.angles.z=n.angles.z),i&Lo&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),i&zo&&(t.sound=n.sound),i&Ao&&(t.event=n.event),i&No&&(t.solid=n.solid),i&bo&&(t.alpha=n.alpha),i&Oo&&(t.scale=n.scale),i&Io&&(t.instanceBits=n.instanceBits),i&Co&&(t.loopVolume=n.loopVolume),r&Po&&(t.loopAttenuation=n.loopAttenuation),r&Do&&(t.owner=n.owner),r&Fo&&(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,i,r,a,s,o){if(!this.imports?.engine.audio)return;let l=i??1,c=r??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,i,r,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 r=0,a=0,s=0,o=Ht,c=ra(this.stats,Wi.QuadDamage)?4:1;switch(n){case Am:r=-2,o={x:-2,y:0,z:0};break;case Mm:r=-4,o={x:-4,y:0,z:0};break;case wm:r=-1,a=Math.random()-.5;break;case Sm:case km:case Em:r=-.5,a=Math.random()-.5;break;case bm:r=-3,o={x:-3,y:0,z:0};break;case xm:case Tm:r=-2,o={x:-2,y:0,z:0};break;case Rm:r=-5,o={x:-2,y:0,z:0};break;case Lm:case ym:r=-.5;break}(r!==0||a!==0||s!==0)&&this.view.addKick({pitch:r*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,i){this.callbacks?.onLocPrint&&this.callbacks.onLocPrint(t,n,i)}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,i){}convertFrameToPredictionState(t){let n=t.playerState,i={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>=iu.length)break;let u=iu[l];switch(u.type){case"weapon":i.ownedWeapons.add(u.id);break;case"ammo":i.ammo.counts[u.id]||(i.ammo.counts[u.id]=0),i.ammo.counts[u.id]=c;break;case"armor":i.armor={armorType:u.id,armorCount:c};break;case"powerup":i.powerups.set(u.id,c);break;case"key":i.keys.add(u.id);break;case"health":break;case"item":i.items.add(u.id);break}}let r={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:r,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Vi.None,gravity:n.gravity,deltaAngles:o,client:{inventory:i,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:Ht,kick_origin:Ht,gunoffset:Ht,gunangles:Ht,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 Tt();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let i=this.latestFrame.serverFrame*100,r=this.previousFrame.serverFrame*100;if(t<=1){let a=this.convertFrameToPredictionState(this.previousFrame);return fn(a,n,Math.max(0,Math.min(1,t)))}else if(t>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return fn(s,n,Math.max(0,Math.min(1,a)))}}return n}getRenderableEntities(t,n){if(!this.latestFrame)return[];if(!this.imports)return[];let i=Array.from(this.entities.values()),r=this.previousEntities.size>0?this.previousEntities:i;return us(i,r,t,n,this.imports)}getDemoCamera(t){let n=this.getPredictionState(t);return{origin:n.origin,angles:n.viewAngles,fov:n.fov??90}}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var fi=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=we.Models&&t<we.Models+Bi){let i=t-we.Models;this.models[i]=n}else if(t>=we.Sounds&&t<we.Sounds+Gi){let i=t-we.Sounds;this.sounds[i]=n}else if(t>=we.Images&&t<we.Images+Hi){let i=t-we.Images;this.images[i]=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 ms=class{constructor(t,n,i){this.menuSystem=t;this.saveLoadFactory=n;this.options=i}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 hs=class{constructor(t,n,i,r,a){this.menuSystem=t;this.storage=n;this.onSave=i;this.onLoad=r;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(i=>{n.push({label:`${i.name} - ${i.map} (${wg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(i))}})}),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(i=>{n.push({label:`${i.name} - ${i.map} (${wg(i.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(i))}})}),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 wg(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),i=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")}`}var fs=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 i=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 i.action&&i.action(),!0;if(t==="back")return this.popMenu(),!0;if(i.type==="input"&&i.onUpdate&&i.getValue){let r=i.getValue();if(t==="char"&&n){let a=(r||"")+n;i.onUpdate(a)}else if(t==="left"){let a=String(r||"");a.length>0&&i.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var Er=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 i=parseFloat(n);isNaN(i)||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 i=parseFloat(n);isNaN(i)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let i=parseFloat(n);isNaN(i)||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 i=parseFloat(n);isNaN(i)||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 i=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",i.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var _s=class{constructor(t,n,i){this.menuSystem=t;this.vfs=n;this.onStartMap=i}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(i=>({label:i.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(i.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 gs=class{constructor(t,n,i){this.menuSystem=t;this.optionsFactory=n;this.host=i}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 ps=class{constructor(t,n){this.menuSystem=t;this.connection=n}createMultiplayerMenu(t="localhost:27910",n=""){let i=t,r=[];return n&&r.push({label:n,action:()=>{}}),r.push({label:"Address: "+i,action:()=>{if(typeof window<"u"){let a=window.prompt("Enter Server Address",i);a&&(i=a,this.refreshMenu(i))}}},{label:"Connect",action:()=>{this.refreshMenu(i,"Connecting..."),this.connection.connect("ws://"+i).then(()=>{this.menuSystem.closeAll()}).catch(a=>{console.error(a);let s="Failed: "+(a.message||"Unknown error");this.refreshMenu(i,s)})}},{label:"Disconnect",action:()=>{this.connection.disconnect(),this.refreshMenu(i,"Disconnected")}},{label:"Back",action:()=>{this.menuSystem.popMenu()}}),{title:"Multiplayer",items:r}}refreshMenu(t,n=""){this.menuSystem.popMenu(),this.menuSystem.pushMenu(this.createMultiplayerMenu(t,n))}};function Ag(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,l=r.items.length*o+40,c=s-l/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((u,m)=>{let d=c+40+m*o,f=u.label;if(u.type==="input"&&u.getValue){if(f+=`: ${u.getValue()}`,m===t.selectedIndex){let g=Date.now();Math.floor(g/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(m===t.selectedIndex){let w=f.replace(/\^[0-9]/g,"").length*8,x=(n-w)/2;e.drawString(x-16,d,"\r")}e.drawCenterString(d,f)})}var br=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let i=JSON.parse(n);for(let[r,a]of Object.entries(i)){let s=t.get(r);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let i of t)i.flags&Ui.Archive&&(n[i.name]=i.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(i){console.warn("Failed to save settings",i)}}};var vs=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(i){console.warn("Failed to write to localStorage",i)}}};var ys=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,i=t.height;t.drawfillRect(0,0,n,i,[.1,.1,.1,1]);let r=n*.6,a=20,s=(n-r)/2,o=i*.7;t.drawfillRect(s,o,r,a,[.3,.3,.3,1]);let l=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*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 ws=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,i=t.height,r=n/2,a=i/2,s=400,o=200;t.drawfillRect(0,0,n,i,[0,0,0,.5]),t.drawfillRect(r-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 As=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,i,r){if(!this.state.active)return;let a=n/2,s=i/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var Ss=class{constructor(){this.socket=null;this.messageCallback=null;this.closeCallback=null;this.errorCallback=null}async connect(t){return new Promise((n,i)=>{try{this.socket=new WebSocket(t),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{n()},this.socket.onerror=r=>{let a=new Error("WebSocket connection error");this.errorCallback&&this.errorCallback(a),i(a)},this.socket.onclose=()=>{this.closeCallback&&this.closeCallback(),this.socket=null},this.socket.onmessage=r=>{this.messageCallback&&(r.data instanceof ArrayBuffer?this.messageCallback(new Uint8Array(r.data)):console.warn("Received non-binary message from server"))}}catch(r){i(r)}})}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 ks=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.prediction=null;this.driver=new Ss,this.options=t,this.netchan=new Um,this.driver.onMessage(n=>this.handleMessage(n)),this.driver.onClose(()=>this.handleDisconnect()),this.driver.onError(n=>console.error("Network Error:",n))}setPrediction(t){this.prediction=t}async connect(t){this.state!==0&&this.disconnect(),console.log(`Connecting to ${t}...`),this.state=1,this.netchan.reset();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>vm&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new Yo;i.writeByte(hn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Dm(i,n);let r=this.netchan.transmit(i.getData());this.driver.send(r)}handleMessage(t){let n=t.buffer;if(n instanceof SharedArrayBuffer){let r=new ArrayBuffer(t.byteLength);new Uint8Array(r).set(t),n=r}let i=this.netchan.process(new Uint8Array(n));if(i&&i.byteLength>0){let r=new Fm(i.buffer);this.parser=new Uo(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new Ki;t.writeByte(hn.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new Ki;n.writeByte(hn.stringcmd);let i=`\\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 ${Fr} ${t} ${i}`);let r=this.netchan.transmit(n.getData());this.driver.send(r)}isConnected(){return this.state===5}onServerData(t,n,i,r,a,s){console.log(`Server Data: Protocol ${t}, Level ${s}`),this.serverProtocol=t,this.serverCount=n,this.gameDir=r,this.playerNum=a,this.levelName=s,this.state=3;let o=new Ki;o.writeByte(hn.stringcmd),o.writeString("new");let l=this.netchan.transmit(o.getData());this.driver.send(l),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 Ki;t.writeByte(hn.stringcmd),t.writeString("begin");let n=this.netchan.transmit(t.getData());this.driver.send(n),this.state=5}onFrame(t){if(t.serverFrame>this.latestServerFrame&&(this.latestServerFrame=t.serverFrame),this.prediction&&t.playerState){let n=t.playerState,i={...Tt(),origin:{x:n.origin.x,y:n.origin.y,z:n.origin.z},velocity:{x:n.velocity.x,y:n.velocity.y,z:n.velocity.z},viewAngles:{x:n.viewangles.x,y:n.viewangles.y,z:n.viewangles.z},deltaAngles:{x:n.delta_angles.x,y:n.delta_angles.y,z:n.delta_angles.z},pmFlags:n.pm_flags,pmType:n.pm_type,gravity:n.gravity,health:n.stats[0]},r={frame:t.serverFrame,timeMs:0,state:i};this.prediction.setAuthoritative(r)}}onCenterPrint(t){}onPrint(t,n){}onSound(t,n,i,r,a,s,o){}onTempEntity(t,n,i,r,a,s,o,l,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var Es=class{constructor(t){this.isVisible=!0;this.playback=t}render(t,n,i){if(!this.isVisible)return;let a=this.playback.getState()===Pi.Playing,s=60,o=i-s;t.drawfillRect(0,o,n,s,[0,0,0,.5]);let c=o+(s-24)/2,u=20,m=a?"PAUSE":"PLAY";t.drawString(u,c,m);let f=`Speed: ${this.playback.getSpeed()}x`;t.drawCenterString(c,f);let g=this.playback.getCurrentTime(),w=`${this.formatTime(g)} / --:--`,x=n-150;t.drawString(x,c,w);let k=o+5,y=4,E=n-40,T=20;t.drawfillRect(T,k,E,y,[.3,.3,.3,1]);let L=E*0;t.drawfillRect(T,k,L,y,[1,1,1,1]);let N=T+L;t.drawfillRect(N-2,k-2,4,y+4,[1,0,0,1]),t.drawCenterString(o+35,"[Space] Toggle [< >] Step [ [ ] ] Speed [Esc] Stop")}handleInput(t,n){if(!n)return!1;switch(t.toLowerCase()){case" ":return this.playback.getState()===Pi.Playing?this.playback.pause():this.playback.getState()===Pi.Paused&&this.playback.play(),!0;case"arrowright":return this.playback.stepForward(),!0;case"arrowleft":return this.playback.stepBackward(),!0;case"]":return this.changeSpeed(2),!0;case"[":return this.changeSpeed(.5),!0;case"escape":return this.playback.stop(),!0}return!1}changeSpeed(t){let i=this.playback.getSpeed()*t;i<.1&&(i=.1),i>16&&(i=16),this.playback.setSpeed(i)}formatTime(t){let n=Math.floor(t/1e3),i=Math.floor(n/60),r=n%60;return`${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}};var XI=[{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"}],En=class{constructor(t=XI){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 Sg(){return new En}function au(e){return e}function xr(e){return e.trim().toLowerCase()}var YI=250,su=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 i=this.msec;this.activeCodes.size>0&&(i+=n-this.downTime,this.downTime=n),this.msec=0;let r=Math.min(i/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:r}}},bs=(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))(bs||{}),qI={"+attack":ft.Attack,"+use":ft.Use,"+holster":ft.Holster,"+jump":ft.Jump,"+crouch":ft.Crouch},jI=new Map(Object.values(bs).map(e=>[xr(e),e]));function ZI(e){return jI.get(xr(e))}function Tr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var _i=class{constructor(t={},n=new En){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.sequence=0;this.bindings=n,this.forwardSpeed=t.forwardSpeed??um,this.sideSpeed=t.sideSpeed??dm,this.upSpeed=t.upSpeed??mm,this.yawSpeed=t.yawSpeed??hm,this.pitchSpeed=t.pitchSpeed??fm,this.sensitivity=t.sensitivity??_m,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=Tr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=Tr()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=Tr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=Tr()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!1,i,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=Tr(),i){this.pollGamepads(n),this.applyTouchState(n);let r=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)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let O=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+O*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let O=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+O*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let O=this.sampleMouseDelta(),X=pm(O,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+X.x,y:u.y+X.y,z:0}}let m=gm(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),v=this.sample("+moveright",t,n),p=this.sample("+moveup",t,n),w=this.sample("+movedown",t,n),x=this.sample("+speed",t,n),k=this.sample("+jump",t,n),y=this.sample("+crouch",t,n),E=this.runByDefault?x.active?.5:1:x.active?1:.5,T=this.forwardSpeed*(d.fraction-f.fraction)*E,b=this.sideSpeed*(v.fraction-g.fraction)*E,L=this.upSpeed*(p.fraction-w.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*E,b+=this.sideSpeed*this.gamepadMove.x*E),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*E,b+=this.sideSpeed*this.touchMove.x*E),this.jumpAddsUpMove&&k.fraction>0&&(L+=this.upSpeed*k.fraction),this.crouchAddsDownMove&&y.fraction>0&&(L-=this.upSpeed*y.fraction),T=this.clampMove(T,this.forwardSpeed),b=this.clampMove(b,this.sideSpeed),L=this.clampMove(L,this.upSpeed);let N=this.collectButtonBits(t,n),A=Math.min(Math.max(Math.round(t),1),YI);return(this.anyPressed||N!==ft.None)&&(N|=ft.Any),this.anyPressed=!1,this.sequence++,{msec:A,buttons:N,angles:{...this.viewAngles},forwardmove:T,sidemove:b,upmove:L,serverFrame:i,sequence:this.sequence,lightlevel:0,impulse:0}}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 i=new Set;for(let r of n){if(!r||r.connected===!1)continue;let a=r.index??0,s=r.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=r.buttons??[];for(let l=0;l<o.length;l++){let c=o[l];if(!c)continue;let u=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,l);u&&i.add(m);let d=this.gamepadButtons.get(m)??!1;u!==d&&(this.applyCommand(this.bindings.getBinding(m),u,m,t),this.gamepadButtons.set(m,u))}}for(let[r,a]of this.gamepadButtons.entries())a&&!i.has(r)&&(this.applyCommand(this.bindings.getBinding(r),!1,r,t),this.gamepadButtons.set(r,!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[i,r]of Object.entries(n.buttons)){if(r===void 0)continue;let a=this.touchButtons.get(i)??!1;r!==a&&(this.applyCommand(i,r,this.touchButtonCode(i),t),this.touchButtons.set(i,r))}}applyCommand(t,n,i,r){if(!t)return;let a=ZI(t);if(a){let s=this.lookupButton(a);n?(s.press(i,r)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(i,r)&&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 i=ft.None;for(let[r,a]of Object.entries(qI)){let s=this.sample(r,t,n);(s.fraction>0||s.active||s.wasPressed)&&(i|=a)}return i}lookupButton(t){let n=this.buttons.get(t);return n||(n=new su,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,i){return this.lookupButton(t).sample(n,i)}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 xs=class{constructor(t,n=new _i(t)){this.queued=[];this.controller=n}captureFrame(t,n,i){let r=this.controller.buildCommand(t,n,i),a=this.controller.consumeConsoleCommands(),s={command:r,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ts={x:0,y:0,z:0},kg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(kg||{});function JI(e){let t=R=>{let G={x:0,y:0,z:0};return e.engine.trace(R,R,G,G).contents||0},n=new da(e.engine.trace,t),i=new ua,r=new tm,a=new Es(r),s=new ds(e);s.setView(i);let o=!1,l=null,c=0,u=new fs,m=new ys,d=new ws,f=new As,g=new br(new vs),v,p,w=new fi,x,k=0,y=!1,T=s0(e,{get tickRate(){return 10},get frameTimeMs(){return x?.timeMs??0},get serverFrame(){return s.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return w},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return y}}),b=a0(T),L=new ks({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 oe}}),N=new ps(u,L);s.setCallbacks({onCenterPrint:R=>b.ParseCenterPrint(R,0,!1),onPrint:(R,G)=>b.NotifyMessage(0,G,!1),onConfigString:(R,G)=>{w.set(R,G),b.ParseConfigString(R,G)},onServerData:(R,G)=>{G&&G>0?r.setFrameDuration(1e3/G):r.setFrameDuration(100)}}),r.setHandler(s);let A,O,X,oe=90,Q=!1;if(e.host){p=new Er(u,e.host),v=new gs(u,p,e.host);let R=new Map;if(e.host.cvars){for(let G of e.host.cvars.list())R.set(G.name,{value:G.string,setValue:ne=>e.host.cvars.setValue(G.name,ne)});g.loadCvars(R)}}if(e.host?.commands&&(e.host.commands.register("playdemo",R=>{if(R.length<1){console.log("usage: playdemo <filename>");return}let G=R[0];console.log(`playdemo: ${G}`),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 R=c0();console.log(`Crosshair changed to index ${R}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{Q=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{Q=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{u.isActive()?u.closeAll():v&&u.pushMenu(v.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",R=>{if(R.length<1){console.log("usage: connect <address>");return}let G=R[0];console.log(`Connecting to ${G}...`),L.connect(G).catch(ne=>{console.error("Failed to connect:",ne),d.show("Connection Failed",ne instanceof Error?ne.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{L.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ui.Archive,onChange:G=>{let ne=G.number;isNaN(ne)||(oe=Math.max(1,Math.min(179,ne)))},description:"Field of view"});let R=e.host.cvars.get("fov");if(R){let G=R.number;isNaN(G)||(oe=Math.max(1,Math.min(179,G)))}}return{loadingScreen:m,errorDialog:d,init(R){this.Init(R)},Init(R){x=R,R?.state&&n.setAuthoritative(R),b.Init(),e.engine.assets&&e.engine.renderer&&(m.start(100,"Loading assets..."),yg(e.engine.renderer,e.engine.assets).then(()=>{m.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(u.isActive()||document.body.requestPointerLock?.())})},predict(R){return u.isActive(),L.isConnected()&&L.sendCommand(R),n.enqueueCommand(R)},handleInput(R,G){if(o&&a.handleInput(R,G))return!0;if(!u.isActive())return!1;if(!G)return!0;let ne=R.toLowerCase();return ne==="arrowup"||ne==="w"?u.handleInput("up"):ne==="arrowdown"||ne==="s"?u.handleInput("down"):ne==="arrowleft"||ne==="a"?u.handleInput("left"):ne==="arrowright"||ne==="d"?u.handleInput("right"):ne==="enter"||ne===" "?u.handleInput("select"):ne==="escape"?u.getState().activeMenu?.parent?u.handleInput("back"):!1:R.length===1?u.handleInput("char",R):R==="Backspace"?u.handleInput("left"):!0},toggleMenu(){if(u.isActive()){if(u.closeAll(),e.host?.cvars){let R=e.host.cvars.list().map(G=>({name:G.name,value:G.string,flags:G.flags}));g.saveCvars(R)}}else v&&u.pushMenu(v.createPauseMenu())},createMainMenu(R,G,ne,At,Ne){let Le=new hs(u,G,ne,At,Ne),St=p;if(!St){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");St=new Er(u,e.host)}let bn=e.engine.assets,Eg={findByExtension:xn=>bn?bn.listFiles(xn):[]},bg=new _s(u,Eg,xn=>{console.log(`Starting map: ${xn}`),e.host?.commands.execute(`map ${xn}`)}),xg=new ms(u,Le,{...R,optionsFactory:St,mapsFactory:bg,multiplayerFactory:N,onSetDifficulty:xn=>{e.host?.cvars&&e.host.cvars.setValue("skill",xn.toString())}});return{menuSystem:u,factory:xg}},render(R){let G=[];if(o){let Ne=R.nowMs,Le=k>0?Math.max(0,Ne-k):0;k=Ne,r.update(Le),A=s.getPredictionState(r.getCurrentTime())}else k=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),x=R.latest),R.previous?.state&&R.latest?.state?(A=fn(R.previous.state,R.latest.state,R.alpha),R.latest.state.packetEntities&&R.previous.state.packetEntities&&(G=us(R.latest.state.packetEntities,R.previous.state.packetEntities,R.alpha,w,e))):A=R.latest?.state??R.previous?.state??n.getPredictedState();let ne=R.latest&&R.previous?Math.max(0,R.latest.timeMs-R.previous.timeMs):0;O=i.sample(A,ne);let At={};if(A){let{origin:Ne,viewAngles:Le}=A;X=new pd,X.position=_e.fromValues(Ne.x,Ne.y,Ne.z);let St=O?.offset??{x:0,y:0,z:0};_e.add(X.position,X.position,[St.x,St.y,St.z]);let bn=O?.angles??{x:0,y:0,z:0};X.angles=_e.fromValues(Le.x+bn.x,Le.y+bn.y,Le.z+bn.z),X.fov=Q?40:oe,X.aspect=4/3,e.engine.renderer&&(X.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&X){let Ne;if(e.engine.assets){let Le=w.getModelName(1);if(Le){let St=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:X,world:Ne,dlights:[]},G)}if(e.engine.renderer&&A&&A.client){let Ne=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},Le=R.latest?.timeMs??0;this.DrawHUD(Ne,Le)}return At},DrawHUD(R,G){if(!e.engine.renderer)return;let ne=e.engine.renderer,At=ne.width,Ne=ne.height;if(A&&A.client){let Le={origin:A.origin,velocity:A.velocity,viewAngles:A.viewAngles,onGround:Bn(A.pmFlags,xt.OnGround),waterLevel:A.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:A.damageAlpha??0,damageIndicators:A.damageIndicators??[],blend:A.blend??[0,0,0,0],pickupIcon:A.pickupIcon,centerPrint:void 0,notify:void 0,stats:A.stats?[...A.stats]:new Array(32).fill(0),kick_angles:Ts,kick_origin:Ts,gunoffset:Ts,gunangles:Ts,gunindex:0,pm_type:A.pm_type??0,pm_time:A.pm_time??0,pm_flags:A.pmFlags,gun_frame:A.gun_frame??0,rdflags:A.rdflags??0,fov:A.fov??90};Le.stats[Pe.STAT_HEALTH]=A.health??0,Le.stats[Pe.STAT_AMMO]=A.ammo??0,Le.stats[Pe.STAT_ARMOR]=A.armor??0,ne.begin2D(),b.DrawHUD(0,null,{x:0,y:0,width:At,height:Ne},{x:0,y:0,width:At,height:Ne},1,0,Le),ne.end2D()}u.isActive()&&Ag(e.engine.renderer,u.getState(),e.engine.renderer.width,e.engine.renderer.height),o&&a.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height),A&&A.client&&f.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,A.client),d.render(e.engine.renderer),m.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(b.Shutdown(),x=void 0,A=void 0,e.host?.cvars){let R=e.host.cvars.list().map(G=>({name:G.name,value:G.string,flags:G.flags}));g.saveCvars(R)}},get prediction(){return n},get lastRendered(){return A},get view(){return i},get lastView(){return O},get camera(){return X},demoPlayback:r,get isDemoPlaying(){return o},get currentDemoName(){return l},get mode(){return c},startDemoPlayback(R,G){r.loadDemo(R),r.setHandler(s),o=!0,l=G,c=1,k=0,w.clear()},stopDemoPlayback(){r.stop(),o=!1,l=null,c=0},ParseCenterPrint(R){b.ParseCenterPrint(R,0,!1)},ParseNotify(R){b.NotifyMessage(0,R,!1)},showSubtitle(R,G){b.ShowSubtitle(R,G)},ParseConfigString(R,G){w.set(R,G),b.ParseConfigString(R,G)},demoHandler:s,multiplayer:L,configStrings:w}}return zg(QI);})();
178
178
  /*! Bundled license information:
179
179
 
180
180
  pako/dist/pako.esm.mjs: