quake2ts 0.0.302 → 0.0.305

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.
Files changed (34) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +13 -13
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs +58 -3
  5. package/packages/client/dist/cjs/index.cjs.map +1 -1
  6. package/packages/client/dist/esm/index.js +58 -3
  7. package/packages/client/dist/esm/index.js.map +1 -1
  8. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  9. package/packages/client/dist/types/entities.d.ts +1 -0
  10. package/packages/client/dist/types/entities.d.ts.map +1 -1
  11. package/packages/client/dist/types/index.d.ts.map +1 -1
  12. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  13. package/packages/engine/dist/types/render/renderer.d.ts.map +1 -1
  14. package/packages/engine/dist/types/render/scene.d.ts +2 -0
  15. package/packages/engine/dist/types/render/scene.d.ts.map +1 -1
  16. package/packages/game/dist/browser/index.global.js +4 -4
  17. package/packages/game/dist/browser/index.global.js.map +1 -1
  18. package/packages/game/dist/cjs/index.cjs +857 -1
  19. package/packages/game/dist/cjs/index.cjs.map +1 -1
  20. package/packages/game/dist/esm/index.js +856 -1
  21. package/packages/game/dist/esm/index.js.map +1 -1
  22. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  23. package/packages/game/dist/types/ai/constants.d.ts +1 -0
  24. package/packages/game/dist/types/ai/constants.d.ts.map +1 -1
  25. package/packages/game/dist/types/ai/monster.d.ts.map +1 -1
  26. package/packages/game/dist/types/entities/gibs.d.ts +4 -0
  27. package/packages/game/dist/types/entities/gibs.d.ts.map +1 -1
  28. package/packages/game/dist/types/entities/monsters/attack.d.ts +1 -0
  29. package/packages/game/dist/types/entities/monsters/attack.d.ts.map +1 -1
  30. package/packages/game/dist/types/entities/monsters/common.d.ts +3 -0
  31. package/packages/game/dist/types/entities/monsters/common.d.ts.map +1 -1
  32. package/packages/game/dist/types/entities/monsters/gunnerCommander.d.ts +5 -0
  33. package/packages/game/dist/types/entities/monsters/gunnerCommander.d.ts.map +1 -0
  34. package/packages/game/dist/types/entities/monsters/index.d.ts.map +1 -1
@@ -1,4 +1,4 @@
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:()=>_i,ClientMode:()=>Eg,ClientPrediction:()=>da,InputAction:()=>bs,InputBindings:()=>xn,InputCommandBuffer:()=>xs,InputController:()=>gi,ViewEffects:()=>ua,createClient:()=>JI,createDefaultBindings:()=>Sg,interpolatePredictionState:()=>_n,normalizeCommand:()=>xr,normalizeInputCode:()=>au});var de=1e-6,je=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:()=>gv,adjoint:()=>Ug,clone:()=>Og,copy:()=>Ig,create:()=>Ng,decompose:()=>nv,determinant:()=>Bg,equals:()=>wv,exactEquals:()=>yv,frob:()=>_v,fromQuat:()=>av,fromQuat2:()=>Qg,fromRotation:()=>qg,fromRotationTranslation:()=>uu,fromRotationTranslationScale:()=>iv,fromRotationTranslationScaleOrigin:()=>rv,fromScaling:()=>Yg,fromTranslation:()=>Xg,fromValues:()=>Cg,fromXRotation:()=>Zg,fromYRotation:()=>jg,fromZRotation:()=>Jg,frustum:()=>sv,getRotation:()=>tv,getScaling:()=>du,getTranslation:()=>ev,identity:()=>cu,invert:()=>Dg,lookAt:()=>mv,mul:()=>Av,multiply:()=>lu,multiplyScalar:()=>vv,multiplyScalarAndAdd:()=>pv,ortho:()=>uv,orthoNO:()=>fu,orthoZO:()=>dv,perspective:()=>ov,perspectiveFromFieldOfView:()=>lv,perspectiveNO:()=>mu,perspectiveZO:()=>cv,rotate:()=>Vg,rotateX:()=>Wg,rotateY:()=>Kg,rotateZ:()=>$g,scale:()=>Hg,set:()=>Pg,str:()=>hv,sub:()=>Sv,subtract:()=>hu,targetTo:()=>fv,translate:()=>Gg,transpose:()=>Fg});function Ng(){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 Og(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 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,_,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]=_,v[15]=p,v}function Pg(e,t,n,i,r,a,s,o,l,c,u,m,d,f,_,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]=_,e[14]=p,e[15]=v,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 Fg(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 Dg(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],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,E=n*l-r*s,w=n*c-a*s,b=i*l-r*o,T=i*c-a*o,x=r*c-a*l,L=u*p-m*_,N=u*v-d*_,A=u*y-f*_,O=m*v-d*p,X=m*y-f*p,oe=d*y-f*v,Q=S*oe-E*X+w*O+b*A-T*N+x*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]=(p*x-v*T+y*b)*Q,e[3]=(d*T-m*x-f*b)*Q,e[4]=(l*A-s*oe-c*N)*Q,e[5]=(n*oe-r*A+a*N)*Q,e[6]=(v*w-_*x-y*E)*Q,e[7]=(u*x-d*w+f*E)*Q,e[8]=(s*X-o*A+c*L)*Q,e[9]=(i*A-n*X-a*L)*Q,e[10]=(_*T-p*w+y*S)*Q,e[11]=(m*w-u*T-f*S)*Q,e[12]=(o*N-s*O-l*L)*Q,e[13]=(n*O-i*N+r*L)*Q,e[14]=(p*E-_*b-v*S)*Q,e[15]=(u*b-m*E+d*S)*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],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,E=n*l-r*s,w=n*c-a*s,b=i*l-r*o,T=i*c-a*o,x=r*c-a*l,L=u*p-m*_,N=u*v-d*_,A=u*y-f*_,O=m*v-d*p,X=m*y-f*p,oe=d*y-f*v;return e[0]=o*oe-l*X+c*O,e[1]=r*X-i*oe-a*O,e[2]=p*x-v*T+y*b,e[3]=d*T-m*x-f*b,e[4]=l*A-s*oe-c*N,e[5]=n*oe-r*A+a*N,e[6]=v*w-_*x-y*E,e[7]=u*x-d*w+f*E,e[8]=s*X-o*A+c*L,e[9]=i*A-n*X-a*L,e[10]=_*T-p*w+y*S,e[11]=m*w-u*T-f*S,e[12]=o*N-s*O-l*L,e[13]=n*O-i*N+r*L,e[14]=p*E-_*b-v*S,e[15]=u*b-m*E+d*S,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],_=e[13],p=e[14],v=e[15],y=t*s-n*a,S=t*o-i*a,E=n*o-i*s,w=c*_-u*f,b=c*p-m*f,T=u*p-m*_,x=t*T-n*b+i*w,L=a*T-s*b+o*w,N=c*E-u*S+m*y,A=f*E-_*S+p*y;return l*x-r*L+v*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],_=t[11],p=t[12],v=t[13],y=t[14],S=t[15],E=n[0],w=n[1],b=n[2],T=n[3];return e[0]=E*i+w*o+b*m+T*p,e[1]=E*r+w*l+b*d+T*v,e[2]=E*a+w*c+b*f+T*y,e[3]=E*s+w*u+b*_+T*S,E=n[4],w=n[5],b=n[6],T=n[7],e[4]=E*i+w*o+b*m+T*p,e[5]=E*r+w*l+b*d+T*v,e[6]=E*a+w*c+b*f+T*y,e[7]=E*s+w*u+b*_+T*S,E=n[8],w=n[9],b=n[10],T=n[11],e[8]=E*i+w*o+b*m+T*p,e[9]=E*r+w*l+b*d+T*v,e[10]=E*a+w*c+b*f+T*y,e[11]=E*s+w*u+b*_+T*S,E=n[12],w=n[13],b=n[14],T=n[15],e[12]=E*i+w*o+b*m+T*p,e[13]=E*r+w*l+b*d+T*v,e[14]=E*a+w*c+b*f+T*y,e[15]=E*s+w*u+b*_+T*S,e}function Gg(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,f,_,p,v,y;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],_=t[8],p=t[9],v=t[10],y=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]=_,e[9]=p,e[10]=v,e[11]=y,e[12]=s*i+u*r+_*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+y*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,_,p,v,y,S,E,w,b,T,x,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],_=t[3],p=t[4],v=t[5],y=t[6],S=t[7],E=t[8],w=t[9],b=t[10],T=t[11],x=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*x+p*L+E*N,e[1]=d*x+v*L+w*N,e[2]=f*x+y*L+b*N,e[3]=_*x+S*L+T*N,e[4]=m*A+p*O+E*X,e[5]=d*A+v*O+w*X,e[6]=f*A+y*O+b*X,e[7]=_*A+S*O+T*X,e[8]=m*oe+p*Q+E*Re,e[9]=d*oe+v*Q+w*Re,e[10]=f*oe+y*Q+b*Re,e[11]=_*oe+S*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 Zg(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 jg(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,_=r*c,p=a*c,v=s*o,y=s*l,S=s*c;return e[0]=1-(f+p),e[1]=m+S,e[2]=d-y,e[3]=0,e[4]=m-S,e[5]=1-(u+p),e[6]=_+v,e[7]=0,e[8]=d+y,e[9]=_-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 Qg(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),uu(e,t,n),e}function ev(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 tv(e,t){var n=new je(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,_=t[10]*a,p=s+u+_,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>_?(v=Math.sqrt(1+s-u-_)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+l)/v):u>_?(v=Math.sqrt(1+u-s-_)*2,e[3]=(d-l)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+_-s-u)*2,e[3]=(o-c)/v,e[0]=(d+l)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function nv(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],_=1/n[1],p=1/n[2],v=r*f,y=a*_,S=s*p,E=o*f,w=l*_,b=c*p,T=u*f,x=m*_,L=d*p,N=v+w+L,A=0;return N>0?(A=Math.sqrt(N+1)*2,e[3]=.25*A,e[0]=(b-x)/A,e[1]=(T-S)/A,e[2]=(y-E)/A):v>w&&v>L?(A=Math.sqrt(1+v-w-L)*2,e[3]=(b-x)/A,e[0]=.25*A,e[1]=(y+E)/A,e[2]=(T+S)/A):w>L?(A=Math.sqrt(1+w-v-L)*2,e[3]=(T-S)/A,e[0]=(y+E)/A,e[1]=.25*A,e[2]=(b+x)/A):(A=Math.sqrt(1+L-v-w)*2,e[3]=(y-E)/A,e[0]=(T+S)/A,e[1]=(b+x)/A,e[2]=.25*A),e}function iv(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,_=a*c,p=a*u,v=s*u,y=o*l,S=o*c,E=o*u,w=i[0],b=i[1],T=i[2];return e[0]=(1-(_+v))*w,e[1]=(d+E)*w,e[2]=(f-S)*w,e[3]=0,e[4]=(d-E)*b,e[5]=(1-(m+v))*b,e[6]=(p+y)*b,e[7]=0,e[8]=(f+S)*T,e[9]=(p-y)*T,e[10]=(1-(m+_))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function rv(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,_=a*m,p=s*u,v=s*m,y=o*m,S=l*c,E=l*u,w=l*m,b=i[0],T=i[1],x=i[2],L=r[0],N=r[1],A=r[2],O=(1-(p+y))*b,X=(f+w)*b,oe=(_-E)*b,Q=(f-w)*T,Re=(1-(d+y))*T,R=(v+S)*T,G=(_+E)*x,ne=(v-S)*x,At=(1-(d+p))*x;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 av(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,_=r*l,p=a*s,v=a*o,y=a*l;return e[0]=1-m-_,e[1]=u+y,e[2]=d-v,e[3]=0,e[4]=u-y,e[5]=1-c-_,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 sv(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 ov=mu;function cv(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 lv(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 fu(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 uv=fu;function dv(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 mv(e,t,n,i){var r,a,s,o,l,c,u,m,d,f,_=t[0],p=t[1],v=t[2],y=i[0],S=i[1],E=i[2],w=n[0],b=n[1],T=n[2];return Math.abs(_-w)<de&&Math.abs(p-b)<de&&Math.abs(v-T)<de?cu(e):(u=_-w,m=p-b,d=v-T,f=1/Math.sqrt(u*u+m*m+d*d),u*=f,m*=f,d*=f,r=S*d-E*m,a=E*u-y*d,s=y*m-S*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*_+a*p+s*v),e[13]=-(o*_+l*p+c*v),e[14]=-(u*_+m*p+d*v),e[15]=1,e)}function fv(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 _=l*d-c*m,p=c*u-o*d,v=o*m-l*u;return f=_*_+p*p+v*v,f>0&&(f=1/Math.sqrt(f),_*=f,p*=f,v*=f),e[0]=_,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*_-u*v,e[6]=u*p-m*_,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 hv(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 _v(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 gv(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 hu(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 vv(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 pv(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 yv(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 wv(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],_=e[12],p=e[13],v=e[14],y=e[15],S=t[0],E=t[1],w=t[2],b=t[3],T=t[4],x=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-S)<=de*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(i-E)<=de*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(r-w)<=de*Math.max(1,Math.abs(r),Math.abs(w))&&Math.abs(a-b)<=de*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-T)<=de*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-x)<=de*Math.max(1,Math.abs(o),Math.abs(x))&&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(_-Q)<=de*Math.max(1,Math.abs(_),Math.abs(Q))&&Math.abs(p-Re)<=de*Math.max(1,Math.abs(p),Math.abs(Re))&&Math.abs(v-R)<=de*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(y-G)<=de*Math.max(1,Math.abs(y),Math.abs(G))}var Av=lu,Sv=hu;var _e={};Rs(_e,{add:()=>Tv,angle:()=>Zv,bezier:()=>Hv,ceil:()=>Mv,clone:()=>Ev,copy:()=>bv,create:()=>_u,cross:()=>Dv,dist:()=>rp,distance:()=>wu,div:()=>ip,divide:()=>yu,dot:()=>zs,equals:()=>ep,exactEquals:()=>Qv,floor:()=>Rv,forEach:()=>cp,fromValues:()=>kv,hermite:()=>Gv,inverse:()=>Pv,len:()=>sp,length:()=>gu,lerp:()=>Uv,max:()=>zv,min:()=>Lv,mul:()=>np,multiply:()=>pu,negate:()=>Cv,normalize:()=>Fv,random:()=>Vv,rotateX:()=>Xv,rotateY:()=>Yv,rotateZ:()=>qv,round:()=>Nv,scale:()=>Ov,scaleAndAdd:()=>Iv,set:()=>xv,slerp:()=>Bv,sqrDist:()=>ap,sqrLen:()=>op,squaredDistance:()=>Au,squaredLength:()=>Su,str:()=>Jv,sub:()=>tp,subtract:()=>vu,transformMat3:()=>Kv,transformMat4:()=>Wv,transformQuat:()=>$v,zero:()=>jv});function _u(){var e=new je(3);return je!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Ev(e){var t=new je(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 kv(e,t,n){var i=new je(3);return i[0]=e,i[1]=t,i[2]=n,i}function bv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function xv(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Tv(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 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 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 Mv(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Rv(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Lv(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 zv(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 Nv(e,t){return e[0]=Mr(t[0]),e[1]=Mr(t[1]),e[2]=Mr(t[2]),e}function Ov(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Iv(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 Cv(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Pv(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Fv(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 Dv(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 Uv(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 Bv(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 Gv(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 Hv(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 Vv(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 Wv(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 Kv(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 $v(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 Xv(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 Yv(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 qv(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 Zv(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 jv(e){return e[0]=0,e[1]=0,e[2]=0,e}function Jv(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Qv(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ep(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 tp=vu,np=pu,ip=yu,rp=wu,ap=Au,sp=gu,op=Su,cp=(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 lp=Object.defineProperty,dd=(e,t)=>{for(var n in t)lp(e,n,{get:t[n],enumerable:!0})};var rC=Math.PI/180;var up=Math.PI/180,aC=180/Math.PI,vi=up,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,dp=32;var mp=16384;var Kr=65536,md=1<<17,fp=1<<18,hp=1<<19,_p=1<<20,gp=1<<21,vp=1<<22,pp=1<<23,sC=1<<24,$r=1<<25,yp=1<<26,oC=1<<27,cC=1<<28,lC=1<<29,Xr=1<<30,uC=1<<31;var dC=1<<25,mC=1<<28,fC=1<<29,hC=1<<30,_C=1<<31,gC=mt|Gt,vC=mt|Kr|Gt|$r|Xr,pC=mt|Kr|Gt,yC=mt|md|Gt|$r|Xr,wC=dp|so|oo,AC=mt|oo|so,wp=mt|$r|Xr|Gt|yp,SC=fp|hp|_p|gp|vp|pp,EC=mt|so|oo|$r|Xr,kC=mt|Kr|Gt,bC=mt|Gt,xC=mt|Kr|Gt|md,TC=wp|mp,MC=Number.MAX_SAFE_INTEGER-1;var fd=256,Ap=256,Sp=8192,Ep=2048,kp=512,bp=256,xp=fd*2,Tp=256,Ns=32;var hd=(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+Sp]="Sounds",e[e.Images=e.Sounds+Ep]="Images",e[e.Lights=e.Images+kp]="Lights",e[e.ShadowLights=e.Lights+Ap]="ShadowLights",e[e.Items=e.ShadowLights+Tp]="Items",e[e.PlayerSkins=e.Items+bp]="PlayerSkins",e[e.General=e.PlayerSkins+fd]="General",e[e.WheelWeapons=e.General+xp]="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))(hd||{}),RC=hd.MaxConfigStrings;var Mp={};dd(Mp,{addReplayFrame:()=>Np,createReplaySession:()=>zp,deserializeReplay:()=>Lp,serializeReplay:()=>Rp});function Rp(e){return JSON.stringify(e,null,2)}function Lp(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 zp(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Np(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||{}),Op=12,Ip=9,LC=Math.ceil(Op*Ip/16),Cp=23,Pp=2,zC=Math.ceil(Cp*Pp/16),Fp={};dd(Fp,{U_ANGLE1:()=>Wp,U_ANGLE2:()=>Kp,U_ANGLE3:()=>$p,U_EFFECTS:()=>qp,U_EVENT:()=>Jp,U_FRAME:()=>Xp,U_MODEL:()=>Up,U_MODEL2:()=>ey,U_MODEL3:()=>ty,U_MODEL4:()=>ny,U_MOREBITS:()=>Qp,U_NUMBER:()=>Dp,U_ORIGIN1:()=>Gp,U_ORIGIN2:()=>Hp,U_ORIGIN3:()=>Vp,U_REMOVE:()=>iy,U_RENDERFX:()=>Zp,U_SKIN:()=>Yp,U_SOLID:()=>jp,U_SOUND:()=>Bp});var Dp=1,Up=2,Bp=4,Gp=8,Hp=16,Vp=32,Wp=64,Kp=128,$p=256,Xp=512,Yp=1024,qp=2048,Zp=4096,jp=8192,Jp=16384,Qp=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}},On=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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new ry(Ne.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ne.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ne.FRAGMENT_SIZE&&(n=Ne.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ne.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ne.MAX_MSGLEN&&(o=Ne.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}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 _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}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 _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ne.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ne.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ne.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ne.MAX_RELIABLE_BUFFER)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_RELIABLE_BUFFER)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}};On.MAX_MSGLEN=1400;On.FRAGMENT_SIZE=1024;On.PACKET_HEADER=10;On.HEADER_OVERHEAD=On.PACKET_HEADER+2;On.MAX_RELIABLE_BUFFER=262144;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 Zs=4,Os=7*Zs,PC=[{index:0,size:3,type:5126,stride:Os,offset:0},{index:1,size:2,type:5126,stride:Os,offset:3*Zs},{index:2,size:2,type:5126,stride:Os,offset:5*Zs}];var gd=32;var FC=`#version 300 es
1
+ "use strict";var Quake2Client=(()=>{var Zs=Object.defineProperty;var Ev=Object.getOwnPropertyDescriptor;var bv=Object.getOwnPropertyNames;var xv=Object.prototype.hasOwnProperty;var js=(e,t)=>{for(var n in t)Zs(e,n,{get:t[n],enumerable:!0})},Tv=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of bv(t))!xv.call(e,r)&&r!==n&&Zs(e,r,{get:()=>t[r],enumerable:!(i=Ev(t,r))||i.enumerable});return e};var Mv=e=>Tv(Zs({},"__esModule",{value:!0}),e);var N7={};js(N7,{ClientConfigStrings:()=>Ti,ClientMode:()=>wv,ClientPrediction:()=>Ea,InputAction:()=>Xs,InputBindings:()=>Fn,InputCommandBuffer:()=>Ys,InputController:()=>Mi,ViewEffects:()=>ka,createClient:()=>z7,createDefaultBindings:()=>yv,interpolatePredictionState:()=>bn,normalizeCommand:()=>Ur,normalizeInputCode:()=>Cl});var he=1e-6,rt=typeof Float32Array<"u"?Float32Array:Array,Js=Math.random;function Gr(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var I7=Math.PI/180,C7=180/Math.PI;var _e={};js(_e,{add:()=>fp,adjoint:()=>Pv,clone:()=>Lv,copy:()=>zv,create:()=>Rv,decompose:()=>Qv,determinant:()=>Fv,equals:()=>vp,exactEquals:()=>gp,frob:()=>mp,fromQuat:()=>np,fromQuat2:()=>Zv,fromRotation:()=>$v,fromRotationTranslation:()=>Bl,fromRotationTranslationScale:()=>ep,fromRotationTranslationScaleOrigin:()=>tp,fromScaling:()=>Kv,fromTranslation:()=>Wv,fromValues:()=>Nv,fromXRotation:()=>Xv,fromYRotation:()=>Yv,fromZRotation:()=>qv,frustum:()=>ip,getRotation:()=>Jv,getScaling:()=>Gl,getTranslation:()=>jv,identity:()=>Dl,invert:()=>Cv,lookAt:()=>up,mul:()=>pp,multiply:()=>Ul,multiplyScalar:()=>hp,multiplyScalarAndAdd:()=>_p,ortho:()=>op,orthoNO:()=>Vl,orthoZO:()=>cp,perspective:()=>rp,perspectiveFromFieldOfView:()=>sp,perspectiveNO:()=>Hl,perspectiveZO:()=>ap,rotate:()=>Bv,rotateX:()=>Gv,rotateY:()=>Hv,rotateZ:()=>Vv,scale:()=>Uv,set:()=>Ov,str:()=>dp,sub:()=>yp,subtract:()=>Wl,targetTo:()=>lp,translate:()=>Dv,transpose:()=>Iv});function Rv(){var e=new rt(16);return rt!=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 Lv(e){var t=new rt(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 zv(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 Nv(e,t,n,i,r,a,s,o,u,c,l,m,d,f,_,p){var v=new rt(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]=u,v[9]=c,v[10]=l,v[11]=m,v[12]=d,v[13]=f,v[14]=_,v[15]=p,v}function Ov(e,t,n,i,r,a,s,o,u,c,l,m,d,f,_,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]=u,e[8]=c,e[9]=l,e[10]=m,e[11]=d,e[12]=f,e[13]=_,e[14]=p,e[15]=v,e}function Dl(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 Iv(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 Cv(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],l=t[8],m=t[9],d=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,k=n*u-r*s,w=n*c-a*s,b=i*u-r*o,T=i*c-a*o,x=r*c-a*u,N=l*p-m*_,O=l*v-d*_,A=l*y-f*_,C=m*v-d*p,V=m*y-f*p,ne=d*y-f*v,Q=S*ne-k*V+w*C+b*A-T*O+x*N;return Q?(Q=1/Q,e[0]=(o*ne-u*V+c*C)*Q,e[1]=(r*V-i*ne-a*C)*Q,e[2]=(p*x-v*T+y*b)*Q,e[3]=(d*T-m*x-f*b)*Q,e[4]=(u*A-s*ne-c*O)*Q,e[5]=(n*ne-r*A+a*O)*Q,e[6]=(v*w-_*x-y*k)*Q,e[7]=(l*x-d*w+f*k)*Q,e[8]=(s*V-o*A+c*N)*Q,e[9]=(i*A-n*V-a*N)*Q,e[10]=(_*T-p*w+y*S)*Q,e[11]=(m*w-l*T-f*S)*Q,e[12]=(o*O-s*C-u*N)*Q,e[13]=(n*C-i*O+r*N)*Q,e[14]=(p*k-_*b-v*S)*Q,e[15]=(l*b-m*k+d*S)*Q,e):null}function Pv(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=t[4],o=t[5],u=t[6],c=t[7],l=t[8],m=t[9],d=t[10],f=t[11],_=t[12],p=t[13],v=t[14],y=t[15],S=n*o-i*s,k=n*u-r*s,w=n*c-a*s,b=i*u-r*o,T=i*c-a*o,x=r*c-a*u,N=l*p-m*_,O=l*v-d*_,A=l*y-f*_,C=m*v-d*p,V=m*y-f*p,ne=d*y-f*v;return e[0]=o*ne-u*V+c*C,e[1]=r*V-i*ne-a*C,e[2]=p*x-v*T+y*b,e[3]=d*T-m*x-f*b,e[4]=u*A-s*ne-c*O,e[5]=n*ne-r*A+a*O,e[6]=v*w-_*x-y*k,e[7]=l*x-d*w+f*k,e[8]=s*V-o*A+c*N,e[9]=i*A-n*V-a*N,e[10]=_*T-p*w+y*S,e[11]=m*w-l*T-f*S,e[12]=o*O-s*C-u*N,e[13]=n*C-i*O+r*N,e[14]=p*k-_*b-v*S,e[15]=l*b-m*k+d*S,e}function Fv(e){var t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],u=e[7],c=e[8],l=e[9],m=e[10],d=e[11],f=e[12],_=e[13],p=e[14],v=e[15],y=t*s-n*a,S=t*o-i*a,k=n*o-i*s,w=c*_-l*f,b=c*p-m*f,T=l*p-m*_,x=t*T-n*b+i*w,N=a*T-s*b+o*w,O=c*k-l*S+m*y,A=f*k-_*S+p*y;return u*x-r*N+v*O-d*A}function Ul(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=t[4],u=t[5],c=t[6],l=t[7],m=t[8],d=t[9],f=t[10],_=t[11],p=t[12],v=t[13],y=t[14],S=t[15],k=n[0],w=n[1],b=n[2],T=n[3];return e[0]=k*i+w*o+b*m+T*p,e[1]=k*r+w*u+b*d+T*v,e[2]=k*a+w*c+b*f+T*y,e[3]=k*s+w*l+b*_+T*S,k=n[4],w=n[5],b=n[6],T=n[7],e[4]=k*i+w*o+b*m+T*p,e[5]=k*r+w*u+b*d+T*v,e[6]=k*a+w*c+b*f+T*y,e[7]=k*s+w*l+b*_+T*S,k=n[8],w=n[9],b=n[10],T=n[11],e[8]=k*i+w*o+b*m+T*p,e[9]=k*r+w*u+b*d+T*v,e[10]=k*a+w*c+b*f+T*y,e[11]=k*s+w*l+b*_+T*S,k=n[12],w=n[13],b=n[14],T=n[15],e[12]=k*i+w*o+b*m+T*p,e[13]=k*r+w*u+b*d+T*v,e[14]=k*a+w*c+b*f+T*y,e[15]=k*s+w*l+b*_+T*S,e}function Dv(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,u,c,l,m,d,f,_,p,v,y;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],u=t[2],c=t[3],l=t[4],m=t[5],d=t[6],f=t[7],_=t[8],p=t[9],v=t[10],y=t[11],e[0]=s,e[1]=o,e[2]=u,e[3]=c,e[4]=l,e[5]=m,e[6]=d,e[7]=f,e[8]=_,e[9]=p,e[10]=v,e[11]=y,e[12]=s*i+l*r+_*a+t[12],e[13]=o*i+m*r+p*a+t[13],e[14]=u*i+d*r+v*a+t[14],e[15]=c*i+f*r+y*a+t[15]),e}function Uv(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 Bv(e,t,n,i){var r=i[0],a=i[1],s=i[2],o=Math.sqrt(r*r+a*a+s*s),u,c,l,m,d,f,_,p,v,y,S,k,w,b,T,x,N,O,A,C,V,ne,Q,Oe;return o<he?null:(o=1/o,r*=o,a*=o,s*=o,u=Math.sin(n),c=Math.cos(n),l=1-c,m=t[0],d=t[1],f=t[2],_=t[3],p=t[4],v=t[5],y=t[6],S=t[7],k=t[8],w=t[9],b=t[10],T=t[11],x=r*r*l+c,N=a*r*l+s*u,O=s*r*l-a*u,A=r*a*l-s*u,C=a*a*l+c,V=s*a*l+r*u,ne=r*s*l+a*u,Q=a*s*l-r*u,Oe=s*s*l+c,e[0]=m*x+p*N+k*O,e[1]=d*x+v*N+w*O,e[2]=f*x+y*N+b*O,e[3]=_*x+S*N+T*O,e[4]=m*A+p*C+k*V,e[5]=d*A+v*C+w*V,e[6]=f*A+y*C+b*V,e[7]=_*A+S*C+T*V,e[8]=m*ne+p*Q+k*Oe,e[9]=d*ne+v*Q+w*Oe,e[10]=f*ne+y*Q+b*Oe,e[11]=_*ne+S*Q+T*Oe,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Gv(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[4],s=t[5],o=t[6],u=t[7],c=t[8],l=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+l*i,e[6]=o*r+m*i,e[7]=u*r+d*i,e[8]=c*r-a*i,e[9]=l*r-s*i,e[10]=m*r-o*i,e[11]=d*r-u*i,e}function Hv(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[8],l=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-l*i,e[2]=o*r-m*i,e[3]=u*r-d*i,e[8]=a*i+c*r,e[9]=s*i+l*r,e[10]=o*i+m*r,e[11]=u*i+d*r,e}function Vv(e,t,n){var i=Math.sin(n),r=Math.cos(n),a=t[0],s=t[1],o=t[2],u=t[3],c=t[4],l=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+l*i,e[2]=o*r+m*i,e[3]=u*r+d*i,e[4]=c*r-a*i,e[5]=l*r-s*i,e[6]=m*r-o*i,e[7]=d*r-u*i,e}function Wv(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 Kv(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 $v(e,t,n){var i=n[0],r=n[1],a=n[2],s=Math.sqrt(i*i+r*r+a*a),o,u,c;return s<he?null:(s=1/s,i*=s,r*=s,a*=s,o=Math.sin(t),u=Math.cos(t),c=1-u,e[0]=i*i*c+u,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+u,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+u,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Xv(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 Yv(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 qv(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 Bl(e,t,n){var i=t[0],r=t[1],a=t[2],s=t[3],o=i+i,u=r+r,c=a+a,l=i*o,m=i*u,d=i*c,f=r*u,_=r*c,p=a*c,v=s*o,y=s*u,S=s*c;return e[0]=1-(f+p),e[1]=m+S,e[2]=d-y,e[3]=0,e[4]=m-S,e[5]=1-(l+p),e[6]=_+v,e[7]=0,e[8]=d+y,e[9]=_-v,e[10]=1-(l+f),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Zv(e,t){var n=new rt(3),i=-t[0],r=-t[1],a=-t[2],s=t[3],o=t[4],u=t[5],c=t[6],l=t[7],m=i*i+r*r+a*a+s*s;return m>0?(n[0]=(o*s+l*i+u*a-c*r)*2/m,n[1]=(u*s+l*r+c*i-o*a)*2/m,n[2]=(c*s+l*a+o*r-u*i)*2/m):(n[0]=(o*s+l*i+u*a-c*r)*2,n[1]=(u*s+l*r+c*i-o*a)*2,n[2]=(c*s+l*a+o*r-u*i)*2),Bl(e,t,n),e}function jv(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Gl(e,t){var n=t[0],i=t[1],r=t[2],a=t[4],s=t[5],o=t[6],u=t[8],c=t[9],l=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(u*u+c*c+l*l),e}function Jv(e,t){var n=new rt(3);Gl(n,t);var i=1/n[0],r=1/n[1],a=1/n[2],s=t[0]*i,o=t[1]*r,u=t[2]*a,c=t[4]*i,l=t[5]*r,m=t[6]*a,d=t[8]*i,f=t[9]*r,_=t[10]*a,p=s+l+_,v=0;return p>0?(v=Math.sqrt(p+1)*2,e[3]=.25*v,e[0]=(m-f)/v,e[1]=(d-u)/v,e[2]=(o-c)/v):s>l&&s>_?(v=Math.sqrt(1+s-l-_)*2,e[3]=(m-f)/v,e[0]=.25*v,e[1]=(o+c)/v,e[2]=(d+u)/v):l>_?(v=Math.sqrt(1+l-s-_)*2,e[3]=(d-u)/v,e[0]=(o+c)/v,e[1]=.25*v,e[2]=(m+f)/v):(v=Math.sqrt(1+_-s-l)*2,e[3]=(o-c)/v,e[0]=(d+u)/v,e[1]=(m+f)/v,e[2]=.25*v),e}function Qv(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],u=i[5],c=i[6],l=i[8],m=i[9],d=i[10];n[0]=Math.sqrt(r*r+a*a+s*s),n[1]=Math.sqrt(o*o+u*u+c*c),n[2]=Math.sqrt(l*l+m*m+d*d);var f=1/n[0],_=1/n[1],p=1/n[2],v=r*f,y=a*_,S=s*p,k=o*f,w=u*_,b=c*p,T=l*f,x=m*_,N=d*p,O=v+w+N,A=0;return O>0?(A=Math.sqrt(O+1)*2,e[3]=.25*A,e[0]=(b-x)/A,e[1]=(T-S)/A,e[2]=(y-k)/A):v>w&&v>N?(A=Math.sqrt(1+v-w-N)*2,e[3]=(b-x)/A,e[0]=.25*A,e[1]=(y+k)/A,e[2]=(T+S)/A):w>N?(A=Math.sqrt(1+w-v-N)*2,e[3]=(T-S)/A,e[0]=(y+k)/A,e[1]=.25*A,e[2]=(b+x)/A):(A=Math.sqrt(1+N-v-w)*2,e[3]=(y-k)/A,e[0]=(T+S)/A,e[1]=(b+x)/A,e[2]=.25*A),e}function ep(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=t[3],u=r+r,c=a+a,l=s+s,m=r*u,d=r*c,f=r*l,_=a*c,p=a*l,v=s*l,y=o*u,S=o*c,k=o*l,w=i[0],b=i[1],T=i[2];return e[0]=(1-(_+v))*w,e[1]=(d+k)*w,e[2]=(f-S)*w,e[3]=0,e[4]=(d-k)*b,e[5]=(1-(m+v))*b,e[6]=(p+y)*b,e[7]=0,e[8]=(f+S)*T,e[9]=(p-y)*T,e[10]=(1-(m+_))*T,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function tp(e,t,n,i,r){var a=t[0],s=t[1],o=t[2],u=t[3],c=a+a,l=s+s,m=o+o,d=a*c,f=a*l,_=a*m,p=s*l,v=s*m,y=o*m,S=u*c,k=u*l,w=u*m,b=i[0],T=i[1],x=i[2],N=r[0],O=r[1],A=r[2],C=(1-(p+y))*b,V=(f+w)*b,ne=(_-k)*b,Q=(f-w)*T,Oe=(1-(d+y))*T,R=(v+S)*T,H=(_+k)*x,ae=(v-S)*x,Lt=(1-(d+p))*x;return e[0]=C,e[1]=V,e[2]=ne,e[3]=0,e[4]=Q,e[5]=Oe,e[6]=R,e[7]=0,e[8]=H,e[9]=ae,e[10]=Lt,e[11]=0,e[12]=n[0]+N-(C*N+Q*O+H*A),e[13]=n[1]+O-(V*N+Oe*O+ae*A),e[14]=n[2]+A-(ne*N+R*O+Lt*A),e[15]=1,e}function np(e,t){var n=t[0],i=t[1],r=t[2],a=t[3],s=n+n,o=i+i,u=r+r,c=n*s,l=i*s,m=i*o,d=r*s,f=r*o,_=r*u,p=a*s,v=a*o,y=a*u;return e[0]=1-m-_,e[1]=l+y,e[2]=d-v,e[3]=0,e[4]=l-y,e[5]=1-c-_,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 ip(e,t,n,i,r,a,s){var o=1/(n-t),u=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*u,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(r+i)*u,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 Hl(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 rp=Hl;function ap(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 sp(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),u=2/(s+o),c=2/(r+a);return e[0]=u,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)*u*.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 Vl(e,t,n,i,r,a,s){var o=1/(t-n),u=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*u,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)*u,e[14]=(s+a)*c,e[15]=1,e}var op=Vl;function cp(e,t,n,i,r,a,s){var o=1/(t-n),u=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*u,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)*u,e[14]=a*c,e[15]=1,e}function up(e,t,n,i){var r,a,s,o,u,c,l,m,d,f,_=t[0],p=t[1],v=t[2],y=i[0],S=i[1],k=i[2],w=n[0],b=n[1],T=n[2];return Math.abs(_-w)<he&&Math.abs(p-b)<he&&Math.abs(v-T)<he?Dl(e):(l=_-w,m=p-b,d=v-T,f=1/Math.sqrt(l*l+m*m+d*d),l*=f,m*=f,d*=f,r=S*d-k*m,a=k*l-y*d,s=y*m-S*l,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,u=d*r-l*s,c=l*a-m*r,f=Math.sqrt(o*o+u*u+c*c),f?(f=1/f,o*=f,u*=f,c*=f):(o=0,u=0,c=0),e[0]=r,e[1]=o,e[2]=l,e[3]=0,e[4]=a,e[5]=u,e[6]=m,e[7]=0,e[8]=s,e[9]=c,e[10]=d,e[11]=0,e[12]=-(r*_+a*p+s*v),e[13]=-(o*_+u*p+c*v),e[14]=-(l*_+m*p+d*v),e[15]=1,e)}function lp(e,t,n,i){var r=t[0],a=t[1],s=t[2],o=i[0],u=i[1],c=i[2],l=r-n[0],m=a-n[1],d=s-n[2],f=l*l+m*m+d*d;f>0&&(f=1/Math.sqrt(f),l*=f,m*=f,d*=f);var _=u*d-c*m,p=c*l-o*d,v=o*m-u*l;return f=_*_+p*p+v*v,f>0&&(f=1/Math.sqrt(f),_*=f,p*=f,v*=f),e[0]=_,e[1]=p,e[2]=v,e[3]=0,e[4]=m*v-d*p,e[5]=d*_-l*v,e[6]=l*p-m*_,e[7]=0,e[8]=l,e[9]=m,e[10]=d,e[11]=0,e[12]=r,e[13]=a,e[14]=s,e[15]=1,e}function dp(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 mp(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 fp(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 Wl(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 hp(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 _p(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 gp(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 vp(e,t){var n=e[0],i=e[1],r=e[2],a=e[3],s=e[4],o=e[5],u=e[6],c=e[7],l=e[8],m=e[9],d=e[10],f=e[11],_=e[12],p=e[13],v=e[14],y=e[15],S=t[0],k=t[1],w=t[2],b=t[3],T=t[4],x=t[5],N=t[6],O=t[7],A=t[8],C=t[9],V=t[10],ne=t[11],Q=t[12],Oe=t[13],R=t[14],H=t[15];return Math.abs(n-S)<=he*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(i-k)<=he*Math.max(1,Math.abs(i),Math.abs(k))&&Math.abs(r-w)<=he*Math.max(1,Math.abs(r),Math.abs(w))&&Math.abs(a-b)<=he*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-T)<=he*Math.max(1,Math.abs(s),Math.abs(T))&&Math.abs(o-x)<=he*Math.max(1,Math.abs(o),Math.abs(x))&&Math.abs(u-N)<=he*Math.max(1,Math.abs(u),Math.abs(N))&&Math.abs(c-O)<=he*Math.max(1,Math.abs(c),Math.abs(O))&&Math.abs(l-A)<=he*Math.max(1,Math.abs(l),Math.abs(A))&&Math.abs(m-C)<=he*Math.max(1,Math.abs(m),Math.abs(C))&&Math.abs(d-V)<=he*Math.max(1,Math.abs(d),Math.abs(V))&&Math.abs(f-ne)<=he*Math.max(1,Math.abs(f),Math.abs(ne))&&Math.abs(_-Q)<=he*Math.max(1,Math.abs(_),Math.abs(Q))&&Math.abs(p-Oe)<=he*Math.max(1,Math.abs(p),Math.abs(Oe))&&Math.abs(v-R)<=he*Math.max(1,Math.abs(v),Math.abs(R))&&Math.abs(y-H)<=he*Math.max(1,Math.abs(y),Math.abs(H))}var pp=Ul,yp=Wl;var ve={};js(ve,{add:()=>Ep,angle:()=>Xp,bezier:()=>Up,ceil:()=>bp,clone:()=>wp,copy:()=>Sp,create:()=>Kl,cross:()=>Cp,dist:()=>ty,distance:()=>Zl,div:()=>ey,divide:()=>ql,dot:()=>Qs,equals:()=>jp,exactEquals:()=>Zp,floor:()=>xp,forEach:()=>ay,fromValues:()=>Ap,hermite:()=>Dp,inverse:()=>Op,len:()=>iy,length:()=>$l,lerp:()=>Pp,max:()=>Mp,min:()=>Tp,mul:()=>Qp,multiply:()=>Yl,negate:()=>Np,normalize:()=>Ip,random:()=>Bp,rotateX:()=>Wp,rotateY:()=>Kp,rotateZ:()=>$p,round:()=>Rp,scale:()=>Lp,scaleAndAdd:()=>zp,set:()=>kp,slerp:()=>Fp,sqrDist:()=>ny,sqrLen:()=>ry,squaredDistance:()=>jl,squaredLength:()=>Jl,str:()=>qp,sub:()=>Jp,subtract:()=>Xl,transformMat3:()=>Hp,transformMat4:()=>Gp,transformQuat:()=>Vp,zero:()=>Yp});function Kl(){var e=new rt(3);return rt!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function wp(e){var t=new rt(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function $l(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Ap(e,t,n){var i=new rt(3);return i[0]=e,i[1]=t,i[2]=n,i}function Sp(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function kp(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function Ep(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Xl(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Yl(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function ql(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function bp(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function xp(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Tp(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 Mp(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 Rp(e,t){return e[0]=Gr(t[0]),e[1]=Gr(t[1]),e[2]=Gr(t[2]),e}function Lp(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function zp(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 Zl(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 jl(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 Jl(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function Np(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Op(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Ip(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 Qs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Cp(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function Pp(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 Fp(e,t,n,i){var r=Math.acos(Math.min(Math.max(Qs(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 Dp(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),l=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*l,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*l,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*l,e}function Up(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,m=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*m+r[2]*d,e}function Bp(e,t){t=t===void 0?1:t;var n=Js()*2*Math.PI,i=Js()*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 Gp(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 Hp(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 Vp(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],l=r*c-a*u,m=a*o-i*c,d=i*u-r*o;return l=l+l,m=m+m,d=d+d,e[0]=o+s*l+r*d-a*m,e[1]=u+s*m+a*l-i*d,e[2]=c+s*d+i*m-r*l,e}function Wp(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 Kp(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 $p(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 Xp(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&Qs(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function Yp(e){return e[0]=0,e[1]=0,e[2]=0,e}function qp(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function Zp(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function jp(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)<=he*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=he*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=he*Math.max(1,Math.abs(r),Math.abs(o))}var Jp=Xl,Qp=Yl,ey=ql,ty=Zl,ny=jl,iy=$l,ry=Jl,ay=(function(){var e=Kl();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;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 sy=Object.defineProperty,Gd=(e,t)=>{for(var n in t)sy(e,n,{get:t[n],enumerable:!0})};var F7=Math.PI/180;var oy=Math.PI/180,D7=180/Math.PI,Ri=oy,vo=[[-.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 At=1,qt=2;var Ro=8,Lo=16,cy=32;var uy=16384;var ra=65536,Hd=1<<17,ly=1<<18,dy=1<<19,my=1<<20,fy=1<<21,hy=1<<22,_y=1<<23,U7=1<<24,aa=1<<25,gy=1<<26,B7=1<<27,G7=1<<28,H7=1<<29,sa=1<<30,V7=1<<31;var W7=1<<25,K7=1<<28,$7=1<<29,X7=1<<30,Y7=1<<31,q7=At|qt,Z7=At|ra|qt|aa|sa,j7=At|ra|qt,J7=At|Hd|qt|aa|sa,Q7=cy|Ro|Lo,eP=At|Lo|Ro,vy=At|aa|sa|qt|gy,tP=ly|dy|my|fy|hy|_y,nP=At|Ro|Lo|aa|sa,iP=At|ra|qt,rP=At|qt,aP=At|ra|qt|Hd,sP=vy|uy,oP=Number.MAX_SAFE_INTEGER-1;var Vd=256,py=256,yy=8192,wy=2048,Ay=512,Sy=256,ky=Vd*2,Ey=256,eo=32;var Wd=(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+yy]="Sounds",e[e.Images=e.Sounds+wy]="Images",e[e.Lights=e.Images+Ay]="Lights",e[e.ShadowLights=e.Lights+py]="ShadowLights",e[e.Items=e.ShadowLights+Ey]="Items",e[e.PlayerSkins=e.Items+Sy]="PlayerSkins",e[e.General=e.PlayerSkins+Vd]="General",e[e.WheelWeapons=e.General+ky]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+eo]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+eo]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+eo]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Wd||{}),cP=Wd.MaxConfigStrings;var by={};Gd(by,{addReplayFrame:()=>Ry,createReplaySession:()=>My,deserializeReplay:()=>Ty,serializeReplay:()=>xy});function xy(e){return JSON.stringify(e,null,2)}function Ty(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 My(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Ry(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var ee=(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))(ee||{}),W=(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))(W||{}),Ly=12,zy=9,uP=Math.ceil(Ly*zy/16),Ny=23,Oy=2,lP=Math.ceil(Ny*Oy/16),Iy={};Gd(Iy,{U_ANGLE1:()=>Gy,U_ANGLE2:()=>Hy,U_ANGLE3:()=>Vy,U_EFFECTS:()=>$y,U_EVENT:()=>qy,U_FRAME:()=>Wy,U_MODEL:()=>Py,U_MODEL2:()=>jy,U_MODEL3:()=>Jy,U_MODEL4:()=>Qy,U_MOREBITS:()=>Zy,U_NUMBER:()=>Cy,U_ORIGIN1:()=>Dy,U_ORIGIN2:()=>Uy,U_ORIGIN3:()=>By,U_REMOVE:()=>ew,U_RENDERFX:()=>Xy,U_SKIN:()=>Ky,U_SOLID:()=>Yy,U_SOUND:()=>Fy});var Cy=1,Py=2,Fy=4,Dy=8,Uy=16,By=32,Gy=64,Hy=128,Vy=256,Wy=512,Ky=1024,$y=2048,Xy=4096,Yy=8192,qy=16384,Zy=32768,jy=1,Jy=2,Qy=4,ew=32768,po=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=vo[t];e.x=n[0],e.y=n[1],e.z=n[2]}},tw=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<vo.length;i++){let r=vo[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}},Vn=class Fe{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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new tw(Fe.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Fe.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Fe.FRAGMENT_SIZE&&(n=Fe.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Fe.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Fe.MAX_MSGLEN&&(o=Fe.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),l=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);l.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);l.set(_,f)}return l}process(t){if(t.length<Fe.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,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=Fe.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(l===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Fe.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Fe.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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>Fe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Fe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Fe.MAX_RELIABLE_BUFFER)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>Fe.MAX_RELIABLE_BUFFER)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}};Vn.MAX_MSGLEN=1400;Vn.FRAGMENT_SIZE=1024;Vn.PACKET_HEADER=10;Vn.HEADER_OVERHEAD=Vn.PACKET_HEADER+2;Vn.MAX_RELIABLE_BUFFER=262144;var Kd=(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))(Kd||{}),dP=Object.keys(Kd).length/2;function nw(){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 mP=nw();var fP=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 iw=19,hP=8+iw*8;var yo=4,to=7*yo,_P=[{index:0,size:3,type:5126,stride:to,offset:0},{index:1,size:2,type:5126,stride:to,offset:3*yo},{index:2,size:2,type:5126,stride:to,offset:5*yo}];var $d=32;var gP=`#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 = ${gd};
10
+ const int MAX_DLIGHTS = ${$d};
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 DC=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
117
+ }`;var vP=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 pP=`#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 = ${gd};
130
+ const int MAX_DLIGHTS = ${$d};
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 vd=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*vi,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;me.perspective(this._projectionMatrix,this._fov*vi,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*vi,a=n*vi,s=i*vi,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,Eu=0,ku=1,ly=2;function Pn(e){let t=e.length;for(;--t>=0;)e[t]=0}var uy=0,pd=1,dy=2,my=3,fy=258,co=29,Ni=256,ki=Ni+1+co,Nn=30,lo=19,yd=2*ki+1,rn=15,Is=16,hy=7,uo=256,wd=16,Ad=17,Sd=18,js=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]),Ed=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gy=512,kt=new Array((ki+2)*2);Pn(kt);var Ai=new Array(Nn*2);Pn(Ai);var bi=new Array(gy);Pn(bi);var xi=new Array(fy-my+1);Pn(xi);var mo=new Array(co);Pn(mo);var Cr=new Array(Nn);Pn(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 kd,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},vy=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)},py=(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,_,p=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,p++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,f=0,u>=o&&(f=s[u-o]),_=n[u*2],e.opt_len+=_*(d+f),a&&(e.static_len+=_*(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--)}},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<<js[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<Nn;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;)kt[e*2+1]=8,e++,a[8]++;for(;e<=255;)kt[e*2+1]=9,e++,a[9]++;for(;e<=279;)kt[e*2+1]=7,e++,a[7]++;for(;e<=287;)kt[e*2+1]=8,e++,a[8]++;for(Rd(kt,ki+1,a),e=0;e<Nn;e++)Ai[e*2+1]=5,Ai[e*2]=Md(e,5);kd=new Cs(kt,js,Ni+1,ki,rn),bd=new Cs(Ai,Ir,0,Nn,rn),xd=new Cs(new Array(0),_y,0,lo,hy)},Ld=e=>{let t;for(t=0;t<ki;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Nn;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]},Fs=(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=js[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--)Fs(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Fs(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++,Fs(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],py(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[Ed[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[Ed[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 Eu;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return ku;for(n=32;n<Ni;n++)if(e.dyn_ltree[n*2]!==0)return ku;return Eu},Ru=!1,Ey=e=>{Ru||(yy(),Ru=!0),e.l_desc=new Ps(e.dyn_ltree,kd),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},ky=e=>{Ge(e,pd<<1,3),lt(e,uo,kt),vy(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,(pd<<1)+(i?1:0),3),xu(e,kt,Ai)):(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=Ey,My=Nd,Ry=by,Ly=xy,zy=ky,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:Fy,_tr_stored_block:Qs,_tr_flush_block:Dy,_tr_tally:Dt,_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:Ds,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,Zy=15,jy=8,Jy=29,Qy=256,eo=Qy+1+Jy,ew=30,tw=19,nw=2*eo+1,iw=15,ee=3,Ft=258,dt=Ft+ee+1,rw=32,In=42,fo=57,to=69,no=73,io=91,ro=103,an=113,yi=666,Pe=1,Fn=2,cn=3,Dn=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)=>{Dy(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+Ft,f=c[i+s-1],_=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==_||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=Ft-(d-i),i=d-Ft,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],_=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Cn=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?Dn:t!==Ut&&t!==Je&&e.strm.avail_in===0&&e.strstart===e.block_start?Fn:(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:Pe)},Us=(e,t)=>{let n,i;for(;;){if(e.lookahead<dt){if(Cn(e),e.lookahead<dt&&t===Ut)return Pe;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=Dt(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=Dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=e.strstart<ee-1?e.strstart:ee-1,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Dn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Fn},Rn=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<dt){if(Cn(e),e.lookahead<dt&&t===Ut)return Pe;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=Dt(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 Pe}else if(e.match_available){if(i=Dt(e,0,e.window[e.strstart-1]),i&&Ke(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Pe}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=Dt(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:Dn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Fn},cw=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Ft){if(Cn(e),e.lookahead<=Ft&&t===Ut)return Pe;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+Ft;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=Ft-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ee?(n=Dt(e,1,e.match_length-ee),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=Dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Dn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Fn},lw=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Cn(e),e.lookahead===0)){if(t===Ut)return Pe;break}if(e.match_length=0,n=Dt(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ke(e,!1),e.strm.avail_out===0))return Pe}return e.insert=0,t===Je?(Ke(e,!0),e.strm.avail_out===0?cn:Dn):e.sym_next&&(Ke(e,!1),e.strm.avail_out===0)?Pe:Fn};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 wi=[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,Rn),new ct(8,16,32,32,Rn),new ct(8,16,128,128,Rn),new ct(8,32,128,256,Rn),new ct(32,128,258,1024,Rn),new ct(32,258,258,4096,Rn)],uw=e=>{e.window_size=2*e.w_size,Pt(e.head),e.max_lazy_match=wi[e.level].max_lazy,e.good_match=wi[e.level].good_length,e.nice_match=wi[e.level].nice_length,e.max_chain_length=wi[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!==In&&t.status!==fo&&t.status!==to&&t.status!==no&&t.status!==io&&t.status!==ro&&t.status!==an&&t.status!==yi?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?fo:t.wrap?In:an,e.adler=t.wrap===2?0:1,t.last_flush=-2,Fy(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),Fd=(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=In,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)},fw=(e,t)=>Fd(e,t,Yr,Zy,jy,Xy),hw=(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===yi&&t!==Je)return sn(e,e.avail_out===0?Ds: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,Ds);if(n.status===yi&&e.avail_in!==0)return sn(e,Ds);if(n.status===In&&n.wrap===0&&(n.status=an),n.status===In){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===fo){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!==yi){let r=n.level===0?Id(n,t):n.strategy===Rr?lw(n,t):n.strategy===Ky?cw(n,t):wi[n.level].func(n,t);if((r===cn||r===Dn)&&(n.status=yi),r===Pe||r===cn)return e.avail_out===0&&(n.last_flush=-1),ze;if(r===Fn&&(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!==In||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,Cn(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,Cn(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},vw=fw,pw=Fd,yw=Pd,ww=Cd,Aw=mw,Sw=hw,Ew=_w,kw=gw,bw="pako deflate (from Nodeca project)",Si={deflateInit:vw,deflateInit2:pw,deflateReset:yw,deflateResetKeep:ww,deflateSetHeader:Aw,deflate:Sw,deflateEnd:Ew,deflateSetDictionary:kw,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},Dd=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Dd=!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&&Dd)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:Fw,Z_OK:Pr,Z_STREAM_END:Dw,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=Si.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Pr)throw new Error(on[n]);if(t.header&&Si.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=Si.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?Fw: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=Si.deflate(n,a),r===Dw)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Si.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 ho(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,ho(e,t)}function Vw(e,t){return t=t||{},t.gzip=!0,ho(e,t)}var Ww=Ii,Kw=ho,$w=Hw,Xw=Vw,Yw=un,qw={Deflate:Ww,deflate:Kw,deflateRaw:$w,gzip:Xw,constants:Yw},Lr=16209,Zw=16191,jw=function(t,n){let i,r,a,s,o,l,c,u,m,d,f,_,p,v,y,S,E,w,b,T,x,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,_=O.bits,p=O.lencode,v=O.distcode,y=(1<<O.lenbits)-1,S=(1<<O.distbits)-1;e:do{_<15&&(f+=N[i++]<<_,_+=8,f+=N[i++]<<_,_+=8),E=p[f&y];t:for(;;){if(w=E>>>24,f>>>=w,_-=w,w=E>>>16&255,w===0)A[a++]=E&65535;else if(w&16){b=E&65535,w&=15,w&&(_<w&&(f+=N[i++]<<_,_+=8),b+=f&(1<<w)-1,f>>>=w,_-=w),_<15&&(f+=N[i++]<<_,_+=8,f+=N[i++]<<_,_+=8),E=v[f&S];n:for(;;){if(w=E>>>24,f>>>=w,_-=w,w=E>>>16&255,w&16){if(T=E&65535,w&=15,_<w&&(f+=N[i++]<<_,_+=8,_<w&&(f+=N[i++]<<_,_+=8)),T+=f&(1<<w)-1,T>l){t.msg="invalid distance too far back",O.mode=Lr;break e}if(f>>>=w,_-=w,w=a-s,T>w){if(w=T-w,w>u&&O.sane){t.msg="invalid distance too far back",O.mode=Lr;break e}if(x=0,L=d,m===0){if(x+=c-w,w<b){b-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}}else if(m<w){if(x+=c+m-w,w-=m,w<b){b-=w;do A[a++]=d[x++];while(--w);if(x=0,m<b){w=m,b-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}}}else if(x+=m-w,w<b){b-=w;do A[a++]=d[x++];while(--w);x=a-T,L=A}for(;b>2;)A[a++]=L[x++],A[a++]=L[x++],A[a++]=L[x++],b-=3;b&&(A[a++]=L[x++],b>1&&(A[a++]=L[x++]))}else{x=a-T;do A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],b-=3;while(b>2);b&&(A[a++]=A[x++],b>1&&(A[a++]=A[x++]))}}else if((w&64)===0){E=v[(E&65535)+(f&(1<<w)-1)];continue n}else{t.msg="invalid distance code",O.mode=Lr;break e}break}}else if((w&64)===0){E=p[(E&65535)+(f&(1<<w)-1)];continue t}else if(w&32){O.mode=Zw;break e}else{t.msg="invalid literal/length code",O.mode=Lr;break e}break}}while(i<r&&a<o);b=_>>3,i-=b,_-=b<<3,f&=(1<<_)-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=_},Ln=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,_=0,p=0,v=0,y=0,S=0,E,w,b,T,x,L=null,N,A=new Uint16Array(Ln+1),O=new Uint16Array(Ln+1),X=null,oe,Q,Re;for(c=0;c<=Ln;c++)A[c]=0;for(u=0;u<i;u++)A[t[n+u]]++;for(f=l,d=Ln;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),v=1,c=1;c<=Ln;c++)if(v<<=1,v-=A[c],v<0)return-1;if(v>0&&(e===Cu||d!==1))return-1;for(O[1]=0,c=1;c<Ln;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),S=0,u=0,c=m,x=a,_=f,p=0,b=-1,y=1<<f,T=y-1,e===Bs&&y>Ou||e===Pu&&y>Iu)return 1;for(;;){oe=c-p,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),E=1<<c-p,w=1<<_,m=w;do w-=E,r[x+(S>>p)+w]=oe<<24|Q<<16|Re|0;while(w!==0);for(E=1<<c-1;S&E;)E>>=1;if(E!==0?(S&=E-1,S+=E):S=0,u++,--A[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>f&&(S&T)!==b){for(p===0&&(p=f),x+=m,_=c-p,v=1<<_;_+p<d&&(v-=A[_+p],!(v<=0));)_++,v<<=1;if(y+=1<<_,e===Bs&&y>Ou||e===Pu&&y>Iu)return 1;b=S&T,r[b]=f<<24|_<<16|x-a|0}}return S!==0&&(r[x+S]=c-p<<24|64<<16|0),o.bits=f,0},Ei=nA,iA=0,Gd=1,Hd=2,{Z_FINISH:Fu,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:Du}=un,Zr=16180,Uu=16181,Bu=16182,Gu=16183,Hu=16184,Vu=16185,Wu=16186,Ku=16187,$u=16188,Xu=16189,Fr=16190,Et=16191,Gs=16192,Yu=16193,Hs=16194,qu=16195,Zu=16196,ju=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<Zr||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=Zr,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))},Zd=(e,t)=>{if(!e)return Qe;let n=new mA;e.state=n,n.strm=e,n.window=null,n.mode=Zr;let i=qd(e,t);return i!==ln&&(e.state=null),i},fA=e=>Zd(e,dA),od=!0,Ws,Ks,hA=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(Ei(Gd,e.lens,0,288,Ws,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ei(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},jd=(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,_,p,v=0,y,S,E,w,b,T,x,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===Et&&(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 Zr: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)!==Du){e.msg="unknown compression method",n.mode=ge;break}if(c>>>=4,u-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>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:Et,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)!==Du){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&&(x=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),x)),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 x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,x)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 x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=xe(n.check,i,f,a)),o-=f,a+=f,x)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=Et;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=Fr;case Fr: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=Et;case Et: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(hA(n),n.mode=Nr,t===zr){c>>>=2,u-=2;break e}break;case 2:n.mode=Zu;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=Et;break;case Zu: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=ju;case ju: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=Ei(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(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(E<16)c>>>=y,u-=y,n.lens[n.have++]=E;else{if(E===16){for(O=y+2;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=y,u-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=ge;break}x=n.lens[n.have-1],f=3+(c&3),c>>>=2,u-=2}else if(E===17){for(O=y+3;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,x=0,f=3+(c&7),c>>>=3,u-=3}else{for(O=y+7;u<O;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=y,u-=y,x=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++]=x}}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=Ei(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=Ei(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,jw(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===Et&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(S&&(S&240)===0){for(w=y,b=S,T=E;v=n.lencode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,E=v&65535,!(w+y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,n.back+=w}if(c>>>=y,u-=y,n.back+=y,n.length=E,S===0){n.mode=id;break}if(S&32){n.back=-1,n.mode=Et;break}if(S&64){e.msg="invalid literal/length code",n.mode=ge;break}n.extra=S&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(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,S=v>>>16&255,E=v&65535,!(y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((S&240)===0){for(w=y,b=S,T=E;v=n.distcode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,E=v&65535,!(w+y<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=w,u-=w,n.back+=w}if(c>>>=y,u-=y,n.back+=y,S&64){e.msg="invalid distance code",n.mode=ge;break}n.offset=E,n.extra=S&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,_=n.wsize-f):_=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,_=s-n.offset,f=n.length;f>l&&(f=l),l-=f,n.length-=f;do r[s++]=p[_++];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!==Fu))&&jd(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===Et?128:0)+(n.mode===Nr||n.mode===Hs?256:0),(m===0&&d===0||t===Fu)&&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},vA=(e,t)=>{if(dn(e))return Qe;let n=e.state;return(n.wrap&2)===0?Qe:(n.head=t,t.done=!1,ln)},pA=(e,t)=>{let n=t.length,i,r,a;return dn(e)||(i=e.state,i.wrap!==0&&i.mode!==Fr)?Qe:i.mode===Fr&&(r=1,r=Mi(r,t,n,0),r!==i.check)?Vd:(a=jd(e,t,n,n),a?(i.mode=Kd,Wd):(i.havedict=1,ln))},yA=Yd,wA=qd,AA=Xd,SA=fA,EA=Zd,kA=_A,bA=gA,xA=vA,TA=pA,MA="pako inflate (from Nodeca project)",bt={inflateReset:yA,inflateReset2:wA,inflateResetKeep:AA,inflateInit:SA,inflateInit2:EA,inflate:kA,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,FA=_o,DA=CA,UA=_o,BA=un,GA={Inflate:PA,inflate:FA,inflateRaw:DA,ungzip:UA,constants:BA},{Deflate:HA,deflate:VA,deflateRaw:WA,gzip:KA}=qw,{Inflate:$A,inflate:XA,inflateRaw:YA,ungzip:qA}=GA,ZA=HA,jA=VA,JA=WA,QA=KA,eS=$A,tS=XA,nS=YA,iS=qA,rS=un,ld={Deflate:ZA,deflate:jA,deflateRaw:JA,gzip:QA,Inflate:eS,inflate:tS,inflateRaw:nS,ungzip:iS,constants:rS},Dr=2023,go=1,vo=2,po=4,yo=8,wo=16,Ao=32,Qd=64,aS=128,sS=256,So=512,Eo=1024,ko=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,Fo=2,Do=4,uS=1,dS=2,mS=128,zn=()=>({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===Dr?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===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=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=zn();this.parseDelta(zn(),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=zn();this.parseDelta(zn(),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&ko&&(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&vo&&(n.origin.y=this.stream.readCoord()),r&So&&(n.origin.z=this.stream.readCoord()),r&Eo&&(n.angles.x=this.stream.readAngle()),r&po&&(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&Fo&&(n.owner=this.stream.readShort()),a&Do&&(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 fS=Object.defineProperty,nm=(e,t)=>{for(var n in t)fS(e,n,{get:t[n],enumerable:!0})},Ht={x:0,y:0,z:0};var XC=Math.PI/180;function jr(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 Gn(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 hS(e){return Di(e,e)}function fn(e){return Math.sqrt(hS(e))}function rm(e){let t=fn(e);return t===0?e:Gn(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 Bn(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 Un=[[-.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 ft=1,Vt=2;var Wo=8,Ko=16,gS=32;var vS=16384;var ea=65536,cm=1<<17,pS=1<<18,yS=1<<19,wS=1<<20,AS=1<<21,SS=1<<22,ES=1<<23,qC=1<<24,ta=1<<25,kS=1<<26,ZC=1<<27,jC=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=ft|Vt,s7=ft|ea|Vt|ta|na,o7=ft|ea|Vt,c7=ft|cm|Vt|ta|na,l7=gS|Wo|Ko,u7=ft|Ko|Wo,bS=ft|ta|na|Vt|kS,d7=pS|yS|wS|AS|SS|ES,m7=ft|Wo|Ko|ta|na,f7=ft|ea|Vt,h7=ft|Vt,_7=ft|ea|Vt|cm,g7=bS|vS;var v7=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||{}),p7=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 Hn(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||{}),ht=(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))(ht||{});function CS(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=fn(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=u<l?l:u;m+=_*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 Gn(t,f)}function PS(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 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:0},s=fn(a);if(s>r){let o=r/s;a=Gn(a,o),s=r}return{wishdir:s===0?a:rm(a),wishspeed:s}}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: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=fn(a);if(s>r){let o=r/s;a=Gn(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,fm=140,hm=150,_m=3;function GS(e){let t=Bn(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:Bn(e.y+t.y),z:Bn(e.z+t.z)}}function vm(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 pm=64;var ym=0,wm=1,Am=2,Sm=3,Em=4,km=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||{}),Fe=(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))(Fe||{}),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 Fm(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:()=>jS,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:()=>ZS,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,ZS=32,jS=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,Fi=.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:Fi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=l>=2?DS({forward:m,right:d,cmd:t,maxSpeed:320}):FS({forward:m,right:d,cmd:t,maxSpeed:320}),p=PS({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||l>=2?10:1,frametime:Fi}),v=n(a,{x:a.x+p.x*Fi,y:a.y+p.y*Fi,z:a.z+p.z*Fi});return{...r,origin:v.endpos,velocity:p}},Dm=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=Un[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<Un.length;i++){let r=Un[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*Un[s][0]+t*Un[s][1]+n*Un[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},mn=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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Yo(Oe.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Oe.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Oe.FRAGMENT_SIZE&&(n=Oe.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Oe.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Oe.MAX_MSGLEN&&(o=Oe.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}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 _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}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 _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Oe.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Oe.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Oe.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Oe.MAX_RELIABLE_BUFFER)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_RELIABLE_BUFFER)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}};mn.MAX_MSGLEN=1400;mn.FRAGMENT_SIZE=1024;mn.PACKET_HEADER=10;mn.HEADER_OVERHEAD=mn.PACKET_HEADER+2;mn.MAX_RELIABLE_BUFFER=262144;var Um=mn;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 f2=Object.defineProperty,h2=(e,t)=>{for(var n in t)f2(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,v2=["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"],p2=e=>{for(let t of v2)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,E2=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}},k2=3e3,b2=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:k2}}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)}},Zo=(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[Fe.STAT_HEALTH]||0,o=t.stats[Fe.STAT_ARMOR]||0,l=t.stats[Fe.STAT_AMMO]||0,c=t.stats[Fe.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(Zo(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),Zo(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),Zo(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[Fe.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)}}}},jo=640,Vn=480,R2=(e,t)=>{let n=e/jo,i=t/Vn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Vn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Vn-450)*r,AMMO_X:e-(jo-540)*r,AMMO_Y:t-(Vn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Vn-450)*r,POWERUP_X:e-(jo-610)*r,POWERUP_Y:t-(Vn-450)*r,scale:r}},be=null,nc=[],qm=0,ic=new E2,Zm=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),p2(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),Zm.drawSubtitles(be,o),g2(be,n.width,n.height)}function la(){return ic}function O2(){return Zm}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={};h2(C2,{add:()=>B2,angle:()=>l5,bezier:()=>t5,ceil:()=>G2,clone:()=>P2,copy:()=>D2,create:()=>jm,cross:()=>j2,dist:()=>v5,distance:()=>n0,div:()=>g5,divide:()=>t0,dot:()=>ac,equals:()=>f5,exactEquals:()=>m5,floor:()=>H2,forEach:()=>A5,fromValues:()=>F2,hermite:()=>e5,inverse:()=>q2,len:()=>y5,length:()=>Jm,lerp:()=>J2,max:()=>W2,min:()=>V2,mul:()=>_5,multiply:()=>e0,negate:()=>Y2,normalize:()=>Z2,random:()=>n5,rotateX:()=>s5,rotateY:()=>o5,rotateZ:()=>c5,round:()=>K2,scale:()=>$2,scaleAndAdd:()=>X2,set:()=>U2,slerp:()=>Q2,sqrDist:()=>p5,sqrLen:()=>w5,squaredDistance:()=>i0,squaredLength:()=>r0,str:()=>d5,sub:()=>h5,subtract:()=>Qm,transformMat3:()=>r5,transformMat4:()=>i5,transformQuat:()=>a5,zero:()=>u5});function jm(){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 F2(e,t,n){var i=new ca(3);return i[0]=e,i[1]=t,i[2]=n,i}function D2(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 Z2(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 j2(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 f5(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 h5=Qm,_5=e0,g5=t0,v5=n0,p5=i0,y5=Jm,w5=r0,A5=(function(){var e=jm();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 E5(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 k5(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=k5(t,i,r),s=e+a,l=Hn(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=Hn(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=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;Hn(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 _=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,y=0,S=0,E=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,S+=x*this.kick.origin.y,E+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let w={x:o+p,y:0,z:m+v},b={x:y,y:S,z:_+E},T={angles:w,offset:E5(b),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=Bn(t-e);return i>180&&(i-=360),Bn(e+i*n)}function _n(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=fn(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=fn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=Gn(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[Fe.STAT_ACTIVE_WHEEL_WEAPON]??0}function C5(e){let t=[],n=e.stats[Fe.STAT_WEAPONS_OWNED_1]||0,i=e.stats[Fe.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 F5(e){let t=0,n=Object.values(Wi);for(let i of n)ra(e.stats,i)>0&&t++;return t}function D5(e){return e.stats[Fe.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:F5,GetHitMarkerDamage:D5,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 Wn=null,Wt=0;var $i=!0,Xi=["ch1","ch2","ch3"],Kn=[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`);Kn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");Kn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}Wn=Kn[0]};var c0=()=>{if($i?(Wt++,Wt>=Xi.length&&($i=!1,Wt=0)):($i=!0,Wt=0),$i){if(Wn=Kn[Wt],!Wn){let e=!1;for(let t=0;t<Xi.length;t++){let n=(Wt+t)%Xi.length;if(Kn[n]){Wt=n,Wn=Kn[n],e=!0;break}}e||(Wn=null)}}else Wn=null;return $i?Wt:-1};var Y5=Object.defineProperty,q5=Object.getOwnPropertyNames,wn=(e,t)=>function(){return e&&(t=(0,e[q5(e)[0]])(e=0)),t},Z5=(e,t)=>{for(var n in t)Y5(e,n,{get:t[n],enumerable:!0})};function ni(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 F(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 j5(e){return ba(e,e)}function Ue(e){return Math.sqrt(j5(e))}function B(e){let t=Ue(e);return t===0?e:F(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 ji(e,t){switch(t){case xa:return e.x;case Ta:return e.y;case Nc:default:return e.z}}function va(e){return e*Mf}function gc(e){return e*Rf}function vc(e){let t=e%360;return t<0?360+t:t}function j(e){let t=va(ji(e,Ta)),n=va(ji(e,xa)),i=va(ji(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=ji(e,xa),n=ji(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 ii(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 eE(e){return JSON.stringify(e,null,2)}function tE(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 nE(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function iE(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}function rE(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 _=u<l?l:u;m+=_*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 F(t,f)}function aE(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 sE(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=F(a,o),s=r}return{wishdir:s===0?a:B(a),wishspeed:s}}function oE(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=F(a,o),s=r}return s*=.5,{wishdir:s===0?a:B(a),wishspeed:s}}var l0,sc,W,cE,lE,xa,Ta,Nc,Mf,Rf,oc,et,u0,d0,m0,f0,ma,h0,Oc,De,Mt,uE,fa,ha,_0,dE,mE,g0,fE,Yi,cc,v0,p0,y0,w0,A0,S0,hE,Yt,Qi,_E,gE,vE,pn,pE,yE,wE,AE,SE,EE,kE,bE,xE,TE,ME,RE,LE,zE,Ic,NE,OE,qt,Lf,IE,Nt,CE,PE,FE,DE,UE,BE,GE,E0,lc,k0,b0,x0,T0,M0,R0,L0,_a,uc,HE,z0,N0,VE,re,ye,zf,Nf,Of,If,Cf,Pf,Ff,Df,Uf,Bf,ie,O0,I0,C0,WE,P0,F0,KE,$E,D0,U0,B0,G0,H0,V0,W0,K0,$0,X0,Y0,q0,Z0,j0,J0,Q0,ef,tf,nf,rf,af,sf,$n,ga,qi,of,cf,XE,lf,gn,V,I,YE,fe,qE,uf,ZE,jE,D=wn({"../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},cE=.1,lE=Math.PI/180,xa=0,Ta=1,Nc=2,Mf=Math.PI/180,Rf=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,f0=2147483647,ma=4294967296,h0=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]&f0,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 h0(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)}},De=1,Mt=2,uE=4,fa=8,ha=16,_0=32,dE=64,mE=8192,g0=16384,fE=32768,Yi=65536,cc=1<<17,v0=1<<18,p0=1<<19,y0=1<<20,w0=1<<21,A0=1<<22,S0=1<<23,hE=1<<24,Yt=1<<25,Qi=1<<26,_E=1<<27,gE=1<<28,vE=1<<29,pn=1<<30,pE=1<<31,yE=1,wE=2,AE=4,SE=8,EE=16,kE=32,bE=64,xE=128,TE=1<<25,ME=1<<28,RE=1<<29,LE=1<<30,zE=1<<31,Ic=De|Mt,NE=De|Yi|Mt|Yt|pn,OE=De|Yi|Mt,qt=De|cc|Mt|Yt|pn,Lf=_0|fa|ha,IE=De|ha|fa,Nt=De|Yt|pn|Mt|Qi,CE=v0|p0|y0|w0|A0|S0,PE=De|fa|ha|Yt|pn,FE=De|Yi|Mt,DE=De|Mt,UE=De|Yi|Mt|cc,BE=Nt|g0,GE=Number.MAX_SAFE_INTEGER-1,E0=(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))(E0||{}),lc=256,k0=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+k0]="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||{}),HE=uc.MaxConfigStrings,z0={},sc(z0,{addReplayFrame:()=>iE,createReplaySession:()=>nE,deserializeReplay:()=>tE,serializeReplay:()=>eE}),N0=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(N0||{}),VE=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||{}),zf=0,Nf=1,Of=2,If=3,Cf=6,Pf=7,Ff=8,Df=11,Uf=12,Bf=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,WE=Math.ceil(I0*C0/16),P0=23,F0=2,KE=Math.ceil(P0*F0/16),$E={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},D0=(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))(D0||{}),U0={},sc(U0,{U_ANGLE1:()=>$0,U_ANGLE2:()=>X0,U_ANGLE3:()=>Y0,U_EFFECTS:()=>j0,U_EVENT:()=>ef,U_FRAME:()=>q0,U_MODEL:()=>G0,U_MODEL2:()=>nf,U_MODEL3:()=>rf,U_MODEL4:()=>af,U_MOREBITS:()=>tf,U_NUMBER:()=>B0,U_ORIGIN1:()=>V0,U_ORIGIN2:()=>W0,U_ORIGIN3:()=>K0,U_REMOVE:()=>sf,U_RENDERFX:()=>J0,U_SKIN:()=>Z0,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,Z0=1024,j0=2048,J0=4096,Q0=8192,ef=16384,tf=32768,nf=1,rf=2,af=4,sf=32768,$n=.025,ga=33554432,qi={None:0,Feet:1,Waist:2,Under:3},of=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},cf=(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}},XE=(e,t,n,i)=>{let r={...e};r=of(r,n),r=cf(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=rE({velocity:s,frametime:$n,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:l,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=l>=2?oE({forward:m,right:d,cmd:t,maxSpeed:320}):sE({forward:m,right:d,cmd:t,maxSpeed:320}),p=aE({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||l>=2?10:1,frametime:$n}),v=n(a,{x:a.x+p.x*$n,y:a.y+p.y*$n,z:a.z+p.z*$n});return{...r,origin:v.endpos,velocity:p}},lf=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}},gn=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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new lf(Ie.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ie.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ie.FRAGMENT_SIZE&&(n=Ie.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ie.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ie.MAX_MSGLEN&&(o=Ie.MAX_MSGLEN-a-s-n,o<0&&(o=0));let l=new ArrayBuffer(a+s+n+o),c=new DataView(l),u=new Uint8Array(l),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);u.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);u.set(_,f)}return u}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 _=l?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}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 _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(u===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ie.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ie.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let E=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(E,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ie.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ie.MAX_RELIABLE_BUFFER)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_RELIABLE_BUFFER)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}},gn.MAX_MSGLEN=1400,gn.FRAGMENT_SIZE=1024,gn.PACKET_HEADER=10,gn.HEADER_OVERHEAD=gn.PACKET_HEADER+2,gn.MAX_RELIABLE_BUFFER=262144,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||{}),YE=Object.keys(I).length/2,fe=(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))(fe||{}),qE=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],uf=(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))(uf||{}),ZE=1,jE=2}});var JE,An=wn({"src/inventory/ammo.ts"(){"use strict";D(),JE={[fe.Shells]:{id:fe.Shells,ammoType:I.Shells,quantity:10,weaponAmmo:!1},[fe.Bullets]:{id:fe.Bullets,ammoType:I.Bullets,quantity:50,weaponAmmo:!1},[fe.Rockets]:{id:fe.Rockets,ammoType:I.Rockets,quantity:5,weaponAmmo:!1},[fe.Grenades]:{id:fe.Grenades,ammoType:I.Grenades,quantity:5,weaponAmmo:!0},[fe.Cells]:{id:fe.Cells,ammoType:I.Cells,quantity:50,weaponAmmo:!1},[fe.Slugs]:{id:fe.Slugs,ammoType:I.Slugs,quantity:10,weaponAmmo:!1},[fe.MagSlugs]:{id:fe.MagSlugs,ammoType:I.MagSlugs,quantity:10,weaponAmmo:!1},[fe.Flechettes]:{id:fe.Flechettes,ammoType:I.Flechettes,quantity:50,weaponAmmo:!1},[fe.Disruptor]:{id:fe.Disruptor,ammoType:I.Disruptor,quantity:15,weaponAmmo:!1},[fe.Tesla]:{id:fe.Tesla,ammoType:I.Tesla,quantity:5,weaponAmmo:!1},[fe.Trap]:{id:fe.Trap,ammoType:I.Trap,quantity:5,weaponAmmo:!1},[fe.Prox]:{id:fe.Prox,ammoType:I.Prox,quantity:5,weaponAmmo:!1}}}});function Zt(e,t){return(e&t)!==0}var df,Gf=wn({"src/combat/damageFlags.ts"(){"use strict";df=(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))(df||{})}});function QE(e,t,n){if(e<=0||Zt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Hf[n.armorType],r=Zt(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 ek(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(Zt(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;Zt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/u;Zt(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let _=Math.max(u,f),p=Math.max(0,r.cellCount-_);return{saved:d,remainingCells:p}}var yn,Hf,Vf=wn({"src/combat/armor.ts"(){"use strict";D(),Gf(),yn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(yn||{}),Hf={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 Wf(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var ke,Qt=wn({"src/inventory/playerInventory.ts"(){"use strict";An(),D(),Vf(),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 Kf(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var mf,$f=wn({"src/combat/weapons/state.ts"(){"use strict";mf=(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))(mf||{})}}),Xf={};Z5(Xf,{ChangeWeapon:()=>nk,NoAmmoWeaponChange:()=>ik,setInstantSwitch:()=>tk,switchToBestWeapon:()=>Yf});function tk(e){Ma=e}function nk(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(Wf(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 ik(e){e.client&&Yf(e)}function Yf(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&&(Wf(t,n),e.client.weaponstate=1,e.client.gun_frame=0,Ma&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var Ma,rk=wn({"src/combat/weapons/switching.ts"(){"use strict";Qt(),An(),Ma=!1}});D();Qt();An();var ak={...W};var I7=Object.freeze({aiflags:0,last_sighting:ak,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}];D();D();D();D();var sk=20,ok=440,ck=940,dc=32,lk=1<<24,ya=1;D();D();function ff(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=ff(e),i=ff(t),r=Q5(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function uk(e){return e<=sk?"melee":e<=ok?"near":e<=ck?"mid":"far"}function er(e,t){let{forward:n}=j(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 Sn(e,t,n,i){if((t.flags&lk)!==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}D();function dk(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 qf(e){e.angles.y=vc(e.ideal_yaw)}function mk(e,t,n){e.enemy&&(e.goalentity=e.enemy,dk(e,e.enemy),qf(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function fk(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){mk(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 hk(e,t,n,i){let r=en(e,t),a=uk(r);return a==="far"||t.light_level<=5||!Sn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||er(e,t):a==="mid"?er(e,t):!0}function _k(e,t,n,i,r){if((e.spawnflags&ya)!==0){if(!Sn(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),qf(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function gk(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 vk(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}=gk(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(vk(a))return!1;if(s){if(!_k(e,a,t,r,i))return!1}else{if(!hk(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return fk(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var mc=18;function Zf(e,t){if(t===0)return{x:0,y:0,z:0};let n=va(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ra(e,t,n){let i=Zf(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ri(e,t){let n=vc(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=vc(n+a)}function g(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)||ri(e,t)}function z(e,t,n,i){if(!Pc(e,i.targetAwareness,i,i.trace)&&(La(e,e.goalentity),ri(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&&ri(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),ri(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&jf(e,e.angles.y,t,i)}function pk(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&La(e,t),ri(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),ri(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&jf(e,e.angles.y,t,i)}function hf(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&Lf?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function _f(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 jf(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=Zf(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 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&&!_f(e,i)?(e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,!1):((e.flags&3)===0&&hf(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},_=i.trace(u,e.mins,e.maxs,d,e,qt);if(_.startsolid||_.allsolid)return!1;let p=_.endpos;return e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,_f(e,i)?(hf(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}D();D();var yk=Cc.filter(e=>e.save||e.type==="callback"),C7=new Map(yk.map(e=>[e.name,e]));D();D();Vf();Gf();D();function wk(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 Ak(e,t,n,i,r){if(Zt(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=F(o,(t===e?1600:500)*i/s);return e.velocity=U(e.velocity,c),c}function Sk(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=ek(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=QE(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function gf(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 he(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=wk(n,u),f=s*d,_=o*d;if(!Zt(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=Ak(e,n,i,_,l),[y,S,E,w,b]=Sk(e,r,a,f,l);e.monsterinfo&&e.monsterinfo.freeze_time>u&&f>0&&(y=e.health+100,S=0,E=0),e.powerArmor&&w!==void 0&&(e.powerArmor.cellCount=w),e.regularArmor&&(e.regularArmor.armorCount=b??e.regularArmor.armorCount);let T=y;T>0&&(e.health-=T,m&&!Zt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,re.temp_entity,ye.BLOOD,r,a));let x=e.health<=0;return x?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:S,asave:E,knocked:v,killed:x,remainingCells:w,remainingArmor:b}}function Fc(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=gf(t),f=c.canDamage??(()=>!0);for(let _ of e){if(_===r||!_.takedamage||!f(_,t))continue;let p=_.mins&&_.maxs?J5(d,U(_.origin,_.mins),U(_.origin,_.maxs)):gf(_),v=P(d,p),y=Ue(v);if(a>0&&y>a)continue;let S=i-.5*y;if(S<=0)continue;let E=_===n?S*.5:S,w=B(P(_.origin,d)),b=he(_,t,n,w,p,w,E,E,s|1,o,l,u);m.push({target:_,result:b,appliedDamage:E})}return m}var P7=sr();D();D();D();function Jf(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&&he(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);Fc(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 Dc(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);Fc(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)he(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 Ek(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){he(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 kk(e,t,n,i,r,a){or(e,t,n,i,r,a,58)}function bk(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 _=e.trace(m,null,null,o,t,De|Yt|pn|Qi);if(!_.ent||_.fraction>=1||(_.ent.takedamage&&_.ent!==t.owner&&he(_.ent,t,t.owner,s,_.endpos,W,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(_.ent.svflags&4)&&!_.ent.client&&_.ent.classname!=="misc_explobox"))break;c.push(_.ent),u.push(_.ent.solid),_.ent.solid=0,m={..._.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 xk(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||bk(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function Tk(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&&he(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 Qf(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&&he(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);Fc(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,_)=>Tk(f,_),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>xk(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}D();var F7=1/40;An();Qt();$f();Qt();var Mk=1;Qt();$f();Qt();An();D();D();var Rk=22;function vt(e,t,n,i,r,a){let s=ni(t.origin),o={...s,z:s.z+(t.viewheight??Rk)},l=F(i,n.x),c=F(r,n.y),u=F(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 Lk=7,zk=18,Nk=36,Ok=39,Ik=5,Ck=28,Pk=52,Fk=57,Dk=3,Uk=23,Bk=52,Gk=61,Hk=4,Vk=21,Wk=52,Kk=61,$k=3,Xk=18,Yk=51,qk=56,Zk=3,jk=12,Jk=34,Qk=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,fb=8,hb=52,_b=55;var gb=46,vb=53;var pb=109,yb=117;var wb=1;var jt=sr();function pt(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=pb-1,e.client.anim_end=yb):(e.frame=gb-1,e.client.anim_end=vb)}function eh(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?he(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 pc(e,t,n,i,r,a,s,o,l,c,u,m){for(let d=0;d<s;d++){let f=U(F(r,jt.crandom()*c),F(a,jt.crandom()*u)),_=U(i,f),p={x:n.x+_.x*8192,y:n.y+_.y*8192,z:n.z+_.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?he(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 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&&he(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,Of),pt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(e,t,{x:8,y:8,z:-8},i,r,a);pc(e,t,s,i,r,a,12,4,1,500,500,2)}function Eb(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,Df),pt(t,-4,0,-4),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(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});pc(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});pc(e,t,s,u,m,d,10,6,1,700,700,3)}function kb(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,Nf),pt(t,-1,jt.crandom()*.5,0),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(e,t,{x:8,y:8,z:-8},i,r,a);eh(e,t,s,i,8,1,4)}function bb(e,t){if(!t.client)return;let n=t.client.inventory,i=Kf(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;pt(t,-.5,jt.crandom()*(.5+a*.15),0),yt(t);let{forward:l,right:c,up:u}=j(t.angles),m=vt(e,t,{x:8,y:8,z:-8},l,c,u);for(let f=0;f<a;f++){let _=U(F(c,jt.crandom()*4),F(u,jt.crandom()*4)),p=U(l,_);eh(e,t,m,p,s,o,5)}let d=If+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,Cf),pt(t,-3,0,-3),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(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,Bf),pt(t,-.5,0,0),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(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,zf),pt(t,-.5,0,0),yt(t);let{forward:n,right:i,up:r}=j(t.angles),a=vt(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,Pf),pt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Jf(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,Ff),pt(t,-2,0,-2),yt(t);let{forward:i,right:r,up:a}=j(t.angles),s=vt(e,t,{x:8,y:8,z:-8},i,r,a);Dc(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,Uf),pt(t,-5,0,-2),yt(t);let{forward:s,right:o,up:l}=j(t.angles),c=vt(e,t,{x:8,y:8,z:-8},s,o,l),u=e.deathmatch?200:500;Qf(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(()=>(rk(),Xf)).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&&jt.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=Kf(e.client.weaponStates,V.Chaingun);!(e.client.buttons&Mk)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),Uc(e,Hk,Vk,Wk,Kk,Nb,i=>bb(t.game,i),t)}var Ib=[22,28,34],Cb=[8];function Pb(e,t){Ot(e,Lk,zk,Nk,Ok,Ib,Cb,n=>Sb(t.game,n),t)}var Fb=[29,42,57],Db=[22,28];function Ub(e,t){Ot(e,Ik,Ck,Pk,Fk,Fb,Db,n=>Eb(t.game,n),t)}var Bb=[23,45],Gb=[4,5,30,31];function Hb(e,t){Ot(e,Dk,Uk,Bk,Gk,Bb,Gb,n=>kb(t.game,n),t)}var Vb=[25,33],Wb=[4];function Kb(e,t){Ot(e,Zk,jk,Jk,Qk,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,$k,Xk,Yk,qk,Xb,Yb,n=>xb(t.game,n),t)}var Zb=[39,45,50,54],jb=[9,22];function Jb(e,t){Ot(e,rb,ab,sb,ob,Zb,jb,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,fb,hb,_b,nx,ix,n=>Mb(t.game,n),t)}D();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,_=(p,v,y)=>({x:Math.max(v.x,Math.min(p.x,y.x)),y:Math.max(v.y,Math.min(p.y,y.y)),z:Math.max(v.z,Math.min(p.z,y.z))});for(let p of m){if(!ox(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},y={x:p.origin.x+p.maxs.x,y:p.origin.y+p.maxs.y,z:p.origin.z+p.maxs.z},S=_(n,v,y);he(p,t,t,i,S,F(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=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 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=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(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 D7={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}};An();An();D();D();var Xe=sr(),yc=0,mx=1;function th(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 nh(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 ih(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,_)=>{e.free(c)},a.clipmask=1;let o=1;r===yc?(a.movetype=7,a.touch=(c,u,m,d)=>ih(c,u,m,d,e),o=.5):(a.movetype=9,o=1);let l=th(n);return a.velocity={x:l.x*o,y:l.y*o,z:l.z*o},nh(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 fx(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)=>ih(o,l,c,u,e);let s=th(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},nh(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 rh(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),fx(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)}}D();function hx(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){hx(e,t),e.nextthink=t.timeSeconds+.1}var za=.1,Ji=80;var ah=sr();function gx(){return ah.frandom()}function sh(e,t){return Math.floor(ah.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 Xn(e,t,n){ce(e,t,za,n)}function pe(e,t,n){ue(e,t,za,n)}function Z(e,t,n){g(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 vx(e,t){}var Bc,oh,px,ch,yx,wx,Ax,Sx,Ex,lh,kx;function bx(e,t){wa(e,Bc)}function xx(e,t){e.monsterinfo.aiflags&1||e.enemy||gx()>.15||(wa(e,oh),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}));oh={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}];px={firstframe:25,lastframe:35,frames:Rx,endfunc:null};var Lx=[{ai:Xn,dist:21},{ai:Xn,dist:11,think:st},{ai:Xn,dist:21},{ai:Xn,dist:25,think:vx},{ai:Xn,dist:18,think:st},{ai:Xn,dist:19}];ch={firstframe:36,lastframe:41,frames:Lx,endfunc:null};function cr(e,t){e.monsterinfo.aiflags&1?wa(e,Bc):wa(e,ch)}function uh(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*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:(he(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){uh(e,{x:Ji,y:0,z:-24},sh(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function dh(e,t){t.sound(e,1,tr.punch,1,1,0)}var Nx=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:dh},{ai:pe,dist:0,think:zx},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];yx={firstframe:67,lastframe:74,frames:Nx,endfunc:cr};function Ox(e,t){uh(e,{x:Ji,y:0,z:-4},sh(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var Ix=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0,think:st},{ai:pe,dist:0},{ai:pe,dist:0,think:dh},{ai:pe,dist:0},{ai:pe,dist:0,think:Ox},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,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));he(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}=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},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 Fx(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=ii(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 Dx(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:pe,dist:0},{ai:pe,dist:0},{ai:Z,dist:0,think:Fx},{ai:Z,dist:0,think:Hc},{ai:Z,dist:0,think:Dx},{ai:Z,dist:0,think:st},{ai:Z,dist:0},{ai:Z,dist:0,think:st},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:st}];Ax={firstframe:87,lastframe:109,frames:Ux,endfunc:cr};var Bx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];Sx={firstframe:149,lastframe:152,frames:Bx,endfunc:cr};var Gx=Array.from({length:20},(e,t)=>({ai:Z,dist:0,think:t%5===4?st:void 0}));Ex={firstframe:153,lastframe:172,frames:Gx,endfunc:cr};function mh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=lh.lastframe,e.nextthink=-1,e.deadflag=2}var Hx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:st},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];lh={firstframe:173,lastframe:185,frames:Hx,endfunc:mh};var Vx=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0,think:st},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0}];kx={firstframe:186,lastframe:193,frames:Vx,endfunc:mh};D();function vf(){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=ii(n),{right:_,up:p}=j(f),v=vf()*a,y=vf()*s;u={x:n.x+_.x*v+p.x*y,y:n.y+_.y*v+p.y*y,z:n.z+_.z*v+p.z*y},u=B(u)}let m=U(t,F(u,8192)),d=l.trace(t,m,W,W,e,Nt);!d.ent||d.fraction===1||he(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){kk(o,e,t,n,i,r)}function $x(e,t,n,i,r,a,s,o){Ek(o,e,t,n,i,r)}function Xx(e,t,n,i,r,a,s){Dc(s,e,t,n,i,r)}function lr(e,t,n,i,r,a,s){Jf(s,e,t,n,i,120,r)}function fh(e,t,n,i,r,a,s,o,l){Qf(l,e,t,n,i,r,s)}function hh(e,t,n,i,r,a,s){let o=U(t,F(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&&he(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}=j(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,l=U(s,F(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 he(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 pf(e,t){let n={...e.origin},i=U(n,F(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|Yt|pn|Qi);if(!c.ent||c.fraction>=1)break;if(e.dmg>0&&c.ent.takedamage&&c.ent!==e.owner&&he(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),pf(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),pf(a,r)}D();var Vc=.1,Zx={x:0,y:30,z:-15},jx={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){g(e,t)}var Kc,_h,gh,r6,vh,ph,a6,s6,o6,yh;function c6(e){e.monsterinfo.current_move=Kc}function l6(e){e.monsterinfo.current_move=_h}function dr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=gh:e.monsterinfo.current_move=Kc}function wh(e){e.monsterinfo.current_move=vh}function u6(e){e.enemy&&er(e,e.enemy)&&Math.random()<=.7?wh(e):e.monsterinfo.current_move=ph}function Ac(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(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=[Zx,jx,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 f6(e){e.monsterinfo.nextframe=yh.lastframe,e.nextthink=-1}var Ah=Array.from({length:20},()=>({ai:i6,dist:10}));_h={firstframe:0,lastframe:19,frames:Ah,endfunc:l6};gh={firstframe:0,lastframe:19,frames:Ah,endfunc:dr};var h6=Array.from({length:21},()=>({ai:n6,dist:0}));Kc={firstframe:29,lastframe:49,frames:h6,endfunc:c6};var _6=Array.from({length:9},(e,t)=>({ai:Na,dist:2,think:t===8?wh:null}));r6={firstframe:50,lastframe:58,frames:_6,endfunc:null};var g6=Array.from({length:6},()=>({ai:Na,dist:2,think:d6}));vh={firstframe:59,lastframe:64,frames:g6,endfunc:u6};var v6=Array.from({length:4},()=>({ai:Na,dist:2}));ph={firstframe:65,lastframe:68,frames:v6,endfunc:dr};var p6=Array.from({length:21},(e,t)=>({ai:Na,dist:2,think:t===12?m6:null}));a6={firstframe:69,lastframe:89,frames:p6,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}));yh={firstframe:112,lastframe:160,frames:A6,endfunc:f6};D();var Oa=.1,$c=80,Ia=Math.random;function Sh(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){g(e,t)}var Xc,S6,E6,Eh,kh,k6,b6,x6,T6,M6,R6,L6,z6,N6;function bh(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=Eh}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 xh(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Th(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 Mh(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=kh)}function yf(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);he(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=F(o,-1200)}var wf=[{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}],Af=[{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 F6(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>=wf.length)&&(s=0);let o=wf[s],l=U(n.origin,F(r,o.x));l=U(l,F(i,o.y)),l=U(l,F(a,o.z));let c=B(P(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function D6(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>=Af.length)&&(s=0);let o=Af[s],l=U(n.origin,F(r,o.x));l=U(l,F(i,o.y)),l=U(l,F(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,F6,t),wc(e,1,!0,D6,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:Sh,dist:0}));Xc={firstframe:162,lastframe:191,frames:V6,endfunc:bh};var W6=Array.from({length:30},()=>({ai:Sh,dist:0}));S6={firstframe:192,lastframe:221,frames:W6,endfunc:bh};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}];E6={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}];Eh={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}];kh={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:xh},{ai:C,dist:0},{ai:C,dist:13,think:Th},{ai:C,dist:0},{ai:C,dist:2},{ai:C,dist:0},{ai:C,dist:-9,think:Mh},{ai:C,dist:0},{ai:C,dist:4},{ai:C,dist:3},{ai:C,dist:2},{ai:C,dist:-3},{ai:C,dist:-6}];k6={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:xh},{ai:C,dist:0,think:yf},{ai:C,dist:13},{ai:C,dist:0,think:Th},{ai:C,dist:2},{ai:C,dist:0,think:yf},{ai:C,dist:-9,think:Mh},{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 Z6=[{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:Z6,endfunc:tn};var j6=[{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:j6,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:Rh};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:Rh};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 Rh(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}D();var Ca=.1,i3=80,ai=Math.random;function Lh(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 si(e,t,n){g(e,t)}var Yc,zh,Nh,s3,qc,Sc,o3,Zc,Oh,c3,l3,u3,d3,m3,f3,Ih;function Ch(e){e.monsterinfo.current_move=Yc}function h3(e){e.monsterinfo.current_move=zh}function En(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Yc;return}e.monsterinfo.current_move=Nh}function _3(e){e.monsterinfo.aiflags&4||e.enemy||ai()<=.3&&(e.monsterinfo.current_move=Ih)}function g3(e,t){ai()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function v3(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(ai()*6),100,t)}function p3(e,t){let{forward:n,right:i}=j(e.angles),r={x:0,y:20,z:40},a=U(e.origin,F(n,r.x)),s=F(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&&(ai()<.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=ii(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&&ai()<=.6){e.monsterinfo.current_move=qc;return}e.monsterinfo.current_move=Sc}function E3(e){if(e.enemy&&e.enemy.health>0&&ai()<=.9){e.monsterinfo.current_move=Zc;return}e.monsterinfo.current_move=Oh}function k3(e){e.monsterinfo.current_move=Zc}var b3=Array.from({length:30},(e,t)=>({ai:Lh,dist:0,think:t===8?(n,i)=>g3(n,i):null}));Ih={firstframe:201,lastframe:230,frames:b3,endfunc:Ch};var x3=Array.from({length:30},(e,t)=>({ai:Lh,dist:0,think:t===29?_3:null}));Yc={firstframe:101,lastframe:130,frames:x3,endfunc:Ch};var T3=Array.from({length:10},()=>({ai:r3,dist:6}));zh={firstframe:171,lastframe:180,frames:T3,endfunc:h3};var M3=Array.from({length:10},()=>({ai:a3,dist:12}));Nh={firstframe:171,lastframe:180,frames:M3,endfunc:En};var R3=Array.from({length:5},()=>({ai:si,dist:0}));c3={firstframe:90,lastframe:94,frames:R3,endfunc:En};var L3=Array.from({length:5},()=>({ai:si,dist:0}));l3={firstframe:95,lastframe:99,frames:L3,endfunc:En};var z3=Array.from({length:21},()=>({ai:si,dist:0}));u3={firstframe:100,lastframe:120,frames:z3,endfunc:En};var N3=Array.from({length:12},()=>({ai:si,dist:0}));d3={firstframe:48,lastframe:59,frames:N3,endfunc:Ph};var O3=Array.from({length:23},()=>({ai:si,dist:0}));m3={firstframe:60,lastframe:82,frames:O3,endfunc:Ph};function Ph(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:p3},{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:En};var F3=[{ai:q,dist:1},{ai:q,dist:8},{ai:q,dist:3}];o3={firstframe:32,lastframe:34,frames:F3,endfunc:k3};var D3=[{ai:q,dist:1},{ai:q,dist:7,think:v3},{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:E3}];Zc={firstframe:35,lastframe:43,frames:D3,endfunc:null};var U3=[{ai:q,dist:-6},{ai:q,dist:-1},{ai:q,dist:-6},{ai:q,dist:0}];Oh={firstframe:44,lastframe:47,frames:U3,endfunc:En};var B3=Array.from({length:7},()=>({ai:si,dist:0}));f3={firstframe:83,lastframe:89,frames:B3,endfunc:En};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 Fh(e,t,n){ce(e,t,Pa,n)}function Se(e,t,n){ue(e,t,Pa,n)}function jc(e,t,n){g(e,t)}var K3,$3,Dh,Uh,X3,Y3,q3,Z3;function j3(e){e.monsterinfo.current_move=Uh}function Jc(e){e.monsterinfo.current_move=Dh}function Sf(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:Fh,dist:H3}));Uh={firstframe:70,lastframe:93,frames:e8,endfunc:null};var t8=Array.from({length:6},()=>({ai:Fh,dist:8}));Dh={firstframe:65,lastframe:70,frames:t8,endfunc:j3};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:jc,dist:0}));Y3={firstframe:99,lastframe:103,frames:i8,endfunc:Jc};var r8=Array.from({length:5},()=>({ai:jc,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:Sf},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Sf},{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:jc,dist:0}));Z3={firstframe:104,lastframe:159,frames:o8,endfunc:s8};D();var Fa=.1;function c8(e,t,n){M(e,Fa,n)}function l8(e,t,n){z(e,t,Fa,n)}function u8(e,t,n){ce(e,t,Fa,n)}function d8(e,t,n){ue(e,t,Fa,n)}function Bh(e,t,n){g(e,t)}var Qc,Gh,Hh,m8,f8,Vh;function h8(e){e.monsterinfo.current_move=Qc}function _8(e){e.monsterinfo.current_move=Gh}function el(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hh: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 v8(e){e.monsterinfo.nextframe=Vh.lastframe,e.nextthink=-1}var p8=Array.from({length:46},()=>({ai:c8,dist:0}));Qc={firstframe:0,lastframe:45,frames:p8,endfunc:h8};var y8=Array.from({length:46},()=>({ai:l8,dist:5}));Gh={firstframe:0,lastframe:45,frames:y8,endfunc:_8};var w8=Array.from({length:46},()=>({ai:u8,dist:10}));Hh={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:Bh,dist:0}));f8={firstframe:66,lastframe:71,frames:S8,endfunc:el};var E8=Array.from({length:10},()=>({ai:Bh,dist:0}));Vh={firstframe:84,lastframe:93,frames:E8,endfunc:v8};D();var Da=.1;function k8(e,t,n){M(e,Da,n)}function b8(e,t,n){z(e,t,Da,n)}function x8(e,t,n){ce(e,t,Da,n)}function T8(e,t,n){ue(e,t,Da,n)}function Wh(e,t,n){g(e,t)}var tl,Kh,$h,M8,R8,Xh;function L8(e){e.monsterinfo.current_move=tl}function z8(e){e.monsterinfo.current_move=Kh}function nl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=$h: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)&&he(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=Xh.lastframe,e.nextthink=-1}var C8=Array.from({length:46},()=>({ai:k8,dist:0}));tl={firstframe:0,lastframe:45,frames:C8,endfunc:L8};var P8=Array.from({length:46},()=>({ai:b8,dist:5}));Kh={firstframe:0,lastframe:45,frames:P8,endfunc:z8};var F8=Array.from({length:46},()=>({ai:x8,dist:10}));$h={firstframe:0,lastframe:45,frames:F8,endfunc:nl};var D8=Array.from({length:20},(e,t)=>({ai:T8,dist:0,think:t===10?N8:t===12?O8:null}));M8={firstframe:46,lastframe:65,frames:D8,endfunc:nl};var U8=Array.from({length:6},()=>({ai:Wh,dist:0}));R8={firstframe:66,lastframe:71,frames:U8,endfunc:nl};var B8=Array.from({length:10},()=>({ai:Wh,dist:0}));Xh={firstframe:84,lastframe:93,frames:B8,endfunc:I8};D();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 Yh(e,t,n){ue(e,t,Ua,n)}function qh(e,t,n){g(e,t)}var il,Zh,jh,W8,K8,$8,Jh;function X8(e){e.monsterinfo.current_move=il}function Y8(e){e.monsterinfo.current_move=Zh}function Ba(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=jh:e.monsterinfo.current_move=il}function q8(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Z8(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));he(e.enemy,e,e,r,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function j8(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));hh(e,n,i,50,100,0,t)}function J8(e){e.monsterinfo.nextframe=Jh.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}));Zh={firstframe:30,lastframe:69,frames:eT,endfunc:Y8};var tT=Array.from({length:20},()=>({ai:V8,dist:12}));jh={firstframe:70,lastframe:89,frames:tT,endfunc:Ba};var nT=Array.from({length:10},(e,t)=>({ai:Yh,dist:0,think:t===5?Z8:null}));W8={firstframe:90,lastframe:99,frames:nT,endfunc:Ba};var iT=Array.from({length:12},(e,t)=>({ai:Yh,dist:0,think:t===6?j8:null}));K8={firstframe:100,lastframe:111,frames:iT,endfunc:Ba};var rT=Array.from({length:6},()=>({ai:qh,dist:0}));$8={firstframe:112,lastframe:117,frames:rT,endfunc:Ba};var aT=Array.from({length:12},()=>({ai:qh,dist:0}));Jh={firstframe:118,lastframe:129,frames:aT,endfunc:J8};D();var Ga=.1;function Qh(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 Ee(e,t,n){g(e,t)}var rl,t1,oT,n1,cT,lT,uT,al,i1,dT,mT,fT,r1,hT,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 vT(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=t1)}function kn(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=rl:e.monsterinfo.current_move=n1}function pT(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&&Sn(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),Dc(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 ET(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function kT(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=ii(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:Qh,dist:0,think:t===29?vT:null}));rl={firstframe:0,lastframe:29,frames:MT,endfunc:null};var RT=Array.from({length:40},(e,t)=>({ai:Qh,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:kn};var FT=Array.from({length:7},(e,t)=>({ai:Ha,dist:0,think:t===0?pT:null}));lT={firstframe:137,lastframe:143,frames:FT,endfunc:yT};var DT=Array.from({length:8},()=>({ai:Ha,dist:0,think:AT}));al={firstframe:144,lastframe:151,frames:DT,endfunc:wT};var UT=Array.from({length:7},()=>({ai:Ha,dist:0}));i1={firstframe:152,lastframe:158,frames:UT,endfunc:kn};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:Ee,dist:e}));dT={firstframe:159,lastframe:176,frames:GT,endfunc:kn};var HT=[-2,11,6,2,-1,-7,-2,-7],VT=HT.map(e=>({ai:Ee,dist:e}));mT={firstframe:177,lastframe:184,frames:VT,endfunc:kn};var WT=[-3,1,1,0,1],KT=WT.map(e=>({ai:Ee,dist:e}));fT={firstframe:185,lastframe:189,frames:KT,endfunc:kn};var $T=[0,0,0,-7,-3,-5,8,6,0,0,0],XT=$T.map(e=>({ai:Ee,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:Ee,dist:1,think:ST},{ai:Ee,dist:1},{ai:Ee,dist:1,think:ET},{ai:Ee,dist:0},{ai:Ee,dist:-1},{ai:Ee,dist:-1},{ai:Ee,dist:0,think:kT},{ai:Ee,dist:-1}];hT={firstframe:201,lastframe:208,frames:qT,endfunc:kn};var ZT=[{ai:Ee,dist:0,think:bT},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0,think:xT},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0},{ai:Ee,dist:0}];a1={firstframe:209,lastframe:216,frames:ZT,endfunc:kn};D();var Va=.1;function jT(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){g(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:jT,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};D();var Wa=.1;function fM(e,t,n){M(e,Wa,n)}function hM(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){g(e,t)}var cl,m1,f1,vM,pM,h1;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=f1: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=h1.lastframe,e.nextthink=-1}var EM=Array.from({length:46},()=>({ai:fM,dist:0}));cl={firstframe:0,lastframe:45,frames:EM,endfunc:yM};var kM=Array.from({length:46},()=>({ai:hM,dist:5}));m1={firstframe:0,lastframe:45,frames:kM,endfunc:wM};var bM=Array.from({length:46},()=>({ai:_M,dist:10}));f1={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}));vM={firstframe:46,lastframe:65,frames:xM,endfunc:ll};var TM=Array.from({length:6},()=>({ai:d1,dist:0}));pM={firstframe:66,lastframe:71,frames:TM,endfunc:ll};var MM=Array.from({length:10},()=>({ai:d1,dist:0}));h1={firstframe:84,lastframe:93,frames:MM,endfunc:SM};D();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){g(e,t)}var dl,_1,g1,OM,IM,v1,CM;function PM(e){e.monsterinfo.current_move=dl}function FM(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 DM(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:FM};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?DM: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=v1.lastframe,e.nextthink=-1}v1={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};D();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 ZM(e,t,n){M(e,mr,n)}function jM(e,t,n){z(e,t,mr,n)}function JM(e,t,n){ce(e,t,mr,n)}function p1(e,t,n){ue(e,t,mr,n)}function oi(e,t,n){g(e,t)}var ml,y1,w1,A1,fl,S1,E1,k1,b1,hl,Ec;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=fl:e.monsterinfo.current_move=S1}function _l(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(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));fh(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));hh(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)-fl.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=P(s,n),c={...ii(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}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=E1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=k1):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}=j(e.angles),r=F(i,120),a=F(n,-120);e.velocity=U(U(e.velocity,r),a),e.origin=U(e.origin,F(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=hl,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function l4(e){e.monsterinfo.nextframe=hl.lastframe,e.nextthink=-1}var u4=Array.from({length:60},()=>({ai:ZM,dist:0}));ml={firstframe:0,lastframe:59,frames:u4,endfunc:x1};var d4=Array.from({length:10},()=>({ai:jM,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 f4=Array.from({length:8},(e,t)=>({ai:p1,dist:0,think:t===3?e4:null}));A1={firstframe:70,lastframe:77,frames:f4,endfunc:It};var h4=Array.from({length:26},(e,t)=>({ai:oi,dist:0,think:t>=4&&t<=20?i4:null}));fl={firstframe:78,lastframe:103,frames:h4,endfunc:It};var _4=Array.from({length:16},(e,t)=>({ai:p1,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:oi,dist:0}));E1={firstframe:120,lastframe:123,frames:g4,endfunc:It};var v4=Array.from({length:4},()=>({ai:oi,dist:0}));k1={firstframe:124,lastframe:127,frames:v4,endfunc:It};var p4=Array.from({length:27},()=>({ai:oi,dist:0}));b1={firstframe:128,lastframe:154,frames:p4,endfunc:It};var y4=Array.from({length:95},()=>({ai:oi,dist:0}));hl={firstframe:155,lastframe:249,frames:y4,endfunc:l4};var w4=Array.from({length:13},()=>({ai:oi,dist:0}));Ec={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){rh(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=Ec},e.think=_x,e.monsterinfo.current_move=Ec,e.nextthink=e.timestamp+mr}D();var Xa=.1,S4={x:40,y:-20,z:20},E4={x:40,y:20,z:20},k4={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 fr(e,t,n){g(e,t)}var vl,M1,R1,pl,kc,M4,R4,L4,z4,L1;function N4(e){e.monsterinfo.current_move=vl}function O4(e){e.monsterinfo.current_move=M1}function ci(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=R1:e.monsterinfo.current_move=vl}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&&Sn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=pl:e.monsterinfo.current_move=kc}function bc(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function C4(e,t){if(!e.enemy)return;let n=bc(e,E4),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,k4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=B(P(i,n));fh(e,n,r,50,300,100,200,0,t)}function F4(e){e.monsterinfo.nextframe=L1.lastframe,e.nextthink=-1}function D4(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=F(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}));vl={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:ci};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}));pl={firstframe:73,lastframe:78,frames:W4,endfunc:I4};V4.endfunc=e=>{e.monsterinfo.current_move=pl};var K4=Array.from({length:4},()=>({ai:fr,dist:0}));kc={firstframe:79,lastframe:82,frames:K4,endfunc:ci};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:ci};var X4=Array.from({length:3},()=>({ai:fr,dist:0}));R4={firstframe:96,lastframe:98,frames:X4,endfunc:ci};var Y4=Array.from({length:3},()=>({ai:fr,dist:0}));L4={firstframe:99,lastframe:101,frames:Y4,endfunc:ci};var q4=Array.from({length:25},()=>({ai:fr,dist:0}));z4={firstframe:102,lastframe:126,frames:q4,endfunc:ci};var Z4=Array.from({length:50},(e,t)=>({ai:fr,dist:0,think:t===49?((n,i)=>{}):t===48?D4:null}));L1={firstframe:127,lastframe:176,frames:Z4,endfunc:F4};var yl=.1,Ya=4,z1=8,qa=16,j4=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,F1=198,aR=199,sR=209,oR=210,cR=226,Sl=227,El=235,D1=236,Sa=244,lR=245,uR=251,dR=252,mR=266,fR=267,hR=281,U1,B1,G1,H1,V1,hr,W1,K1,$1,X1,_R,gR,Y1,q1,vR,pR,kl,Z1,yR="insane/insane11.wav",wR="insane/insane5.wav",AR="insane/insane7.wav",Ef=["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=Ef[Math.floor(Math.random()*Ef.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function qe(e,t){}function j1(e,t){e.spawnflags&j4||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=G1:e.monsterinfo.current_move=V1)}function ER(e,t){e.spawnflags&Ya&&e.spawnflags&qa||Math.random()<.5&&(e.monsterinfo.current_move=H1)}function xl(e,t){e.monsterinfo.current_move=hr}function J1(e,t){Math.random()<.8?e.monsterinfo.current_move=kl:e.monsterinfo.current_move=Z1}function Tl(e,t){e.spawnflags&z1?(e.monsterinfo.current_move=kl,e.monsterinfo.aiflags|=1):e.spawnflags&Ya&&e.spawnflags&qa?e.monsterinfo.current_move=hr: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=hr;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=hr;return}let n=e.frame;e.spawnflags&Ya||n>=D1&&n<=Sa||n>=Sl&&n<=El||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 kR=[h(M),h(M),h(M),h(M),h(M),h(M,0,j1)];U1={firstframe:nR,lastframe:N1,frames:kR,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,j1)];B1={firstframe:N1,lastframe:iR,frames:bR,endfunc:Tl};var xR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,bl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,2.7),h(g,4.1),h(g,6),h(g,7.6),h(g,3.6),h(g),h(g),h(g,0,xc),h(g),h(g),h(g),h(g),h(g),h(g,0,xc),h(g),h(g),h(g),h(g),h(g),h(g)];G1={firstframe:J4,lastframe:Q4,frames:xR,endfunc:xl};var TR=[h(g,-.7),h(g,-1.2),h(g,-1.5),h(g,-4.5),h(g,-3.5),h(g,-.2),h(g),h(g,-1.3),h(g,-3),h(g,-2),h(g),h(g),h(g),h(g,-3.3),h(g,-1.6),h(g,-.3),h(g),h(g),h(g)];H1={firstframe:eR,lastframe:tR,frames:TR,endfunc:Tl};var MR=[h(g,.2),h(g,11.5),h(g,5.1),h(g,7.1),h(g)];V1={firstframe:rR,lastframe:Al,frames:MR,endfunc:xl};var RR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,-1.7),h(g,-1.6),h(g),h(g),h(g),h(g,0,xc),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,bl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,.5),h(g),h(g,-.2,nn),h(g),h(g,.2),h(g,.4),h(g,.6),h(g,.8),h(g,.7),h(g,0,ER)];hr={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:F1,frames:Mc,endfunc:Ml};X1={firstframe:P1,lastframe:F1,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(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g),h(g),h(g),h(g),h(g,0,qe)];_R={firstframe:aR,lastframe:sR,frames:LR,endfunc:_r};var zR=[h(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g),h(g),h(g),h(g),h(g,0,qe),h(g),h(g,0,qe),h(g),h(g),h(g),h(g)];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:El,frames:e_,endfunc:Ml};q1={firstframe:Sl,lastframe:El,frames:e_,endfunc:_r};var NR=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];vR={firstframe:D1,lastframe:Sa,frames:NR,endfunc:_r};var OR=[h(g),h(g),h(g),h(g),h(g,0,nn),h(g),h(g)];pR={firstframe:lR,lastframe:uR,frames:OR,endfunc:Q1};var IR=[h(g,0,bl),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];kl={firstframe:dR,lastframe:mR,frames:IR,endfunc:J1};var CR=[h(g,0,nn),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];Z1={firstframe:fR,lastframe:hR,frames:CR,endfunc:J1};D();D();var PR=.1,FR=0;var Rc=0,t_=39,DR=40,UR=47,BR=48,GR=53,HR=54,VR=56,WR=57,KR=59,$R=60,XR=62,YR=63,qR=76,ZR=77,jR=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 k(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,PR,a)},dist:t}}function kf(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 li(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?mL(e,t):kf(e,t);return}if(e.monsterinfo.aiflags&1){kf(e,t);return}e.monsterinfo.current_move=r_}function fL(e,t){let n={x:0,y:0,z:0},r=j(e.angles).forward,a=ni(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=P(e.enemy.origin,F(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=ni(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,FR,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 hL(e,t){fL(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var _L=[k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M),k(M)];n_={firstframe:Rc,lastframe:t_,frames:_L,endfunc:null};var gL=[k(z),k(z,6),k(z,10),k(z,3),k(z,2),k(z,7),k(z,10),k(z,1)];i_={firstframe:DR,lastframe:UR,frames:gL,endfunc:null};var vL=[k(ce,4),k(ce,15),k(ce,15),k(ce,8),k(ce,20),k(ce,15)];r_={firstframe:BR,lastframe:GR,frames:vL,endfunc:null};var pL=[k(g,-5),k(g,4),k(g,1)];rL={firstframe:HR,lastframe:VR,frames:pL,endfunc:li};var yL=[k(g,-4),k(g,4),k(g)];aL={firstframe:WR,lastframe:KR,frames:yL,endfunc:li};var wL=[k(g,-1),k(g,1),k(g,0)];sL={firstframe:$R,lastframe:XR,frames:wL,endfunc:li};var AL=[k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se)];oL={firstframe:YR,lastframe:qR,frames:AL,endfunc:li};var SL=[k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se),k(se)];cL={firstframe:ZR,lastframe:jR,frames:SL,endfunc:li};var EL=[k(g),k(g),k(g,-13),k(g,14),k(g,3),k(g,-2),k(g,1)];lL={firstframe:JR,lastframe:QR,frames:EL,endfunc:a_};var kL=[k(g),k(g,7),k(g,-6),k(g,-5),k(g,1),k(g),k(g,-1),k(g,-2),k(g,-1),k(g,-9),k(g,-13),k(g,-13),k(g)];uL={firstframe:eL,lastframe:tL,frames:kL,endfunc:a_};var bL=[k(ue,-2,hL),k(ue,-2),k(ue,3),k(ue,2)];dL={firstframe:nL,lastframe:iL,frames:bL,endfunc:li};D();D();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){g(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 vr(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=j(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=U(e.origin,U(F(r,o.x),U(F(a,o.y),F(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||!Sn(e,a,r))return;let s=en(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function FL(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=F(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|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 DL(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:vr};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:vr};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:vr};var WL=Array.from({length:6},()=>({ai:Rl,dist:0}));zL={firstframe:116,lastframe:121,frames:WL,endfunc:vr};var KL=Array.from({length:23},(e,t)=>({ai:Rl,dist:0,think:t===11?FL:null}));LL={firstframe:122,lastframe:144,frames:KL,endfunc:vr};var $L=Array.from({length:30},()=>({ai:Rl,dist:0}));c_={firstframe:161,lastframe:190,frames:$L,endfunc:DL};D();var pr=.1;function K(e,t,n){M(e,pr,n)}function $e(e,t,n){z(e,t,pr,n)}function Yn(e,t,n){ce(e,t,pr,n)}function Kt(e,t,n){ue(e,t,pr,n)}function le(e,t,n){g(e,t)}function fc(e,t,n){pk(e,null,t,pr)}var u_,d_,Ea,XL,YL,qL,ZL,m_,f_;function jL(e){e.monsterinfo.current_move=d_}function JL(e){e.monsterinfo.current_move=u_}function ui(e){e.monsterinfo.current_move=Ea}function h_(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);he(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function QL(e,t){h_(e,30,t)}function bf(e,t){h_(e,30,t)}function Jn(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Ea),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Ea)}function ez(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),he(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=j(e.angles).forward;e.movetype=7,e.touch=ez,e.velocity=U(F(n,300),{x:0,y:0,z:300}),e.velocity=U(F(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:jL};var az=[{ai:Yn,dist:20},{ai:Yn,dist:15},{ai:Yn,dist:35},{ai:Yn,dist:20},{ai:Yn,dist:10},{ai:Yn,dist:20}];Ea={firstframe:64,lastframe:69,frames:az,endfunc:ui};var sz=[{ai:Kt,dist:0},{ai:Kt,dist:0},{ai:Kt,dist:0,think:bf},{ai:Kt,dist:0},{ai:Kt,dist:0,think:QL},{ai:Kt,dist:0},{ai:Kt,dist:0,think:bf},{ai:Kt,dist:0}];XL={firstframe:70,lastframe:77,frames:sz,endfunc:ui};var oz=[{ai:fc,dist:0},{ai:fc,dist:0},{ai:fc,dist:0,think:tz},{ai:le,dist:0,think:Jn},{ai:le,dist:0,think:Jn},{ai:le,dist:0,think:Jn},{ai:le,dist:0,think:Jn},{ai:le,dist:0,think:Jn}];f_={firstframe:93,lastframe:100,frames:oz,endfunc:ui};f_.frames[3].ai=(e,t,n)=>{Jn(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:ui};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:ui};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}];ZL={firstframe:87,lastframe:92,frames:uz,endfunc:ui};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};D();var Za=.1,mz=()=>Math.random();function te(e,t,n){M(e,Za,n)}function Rt(e,t,n){z(e,t,Za,n)}function Lt(e,t,n){ce(e,t,Za,n)}function Te(e,t,n){ue(e,t,Za,n)}function Me(e,t,n){g(e,t)}var zl,__,g_,fz,hz,v_,p_,_z,gz,Nl,y_;function vz(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function pz(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function qn(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=p_}function S_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=zl:e.monsterinfo.current_move=g_}function hc(e,t){let n=P(t,e);if(Ue(n)>256)return!1;let a=ii(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function at(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(F(i,s.x),U(F(r,s.y),F(a,s.z)))),l=ni(e.enemy.origin);if(!hc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!hc(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!hc(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));he(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=v_.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:qn},{ai:te,dist:0},{ai:te,dist:0,think:qn},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:qn},{ai:te,dist:0},{ai:te,dist:0,think:qn},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:qn},{ai:te,dist:0},{ai:te,dist:0,think:qn}];zl={firstframe:83,lastframe:99,frames:Sz,endfunc:w_};var Ez=[{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0}];gz={firstframe:100,lastframe:103,frames:Ez,endfunc:yz};var kz=[{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:kz,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}];p_={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}];hz={firstframe:57,lastframe:67,frames:Lz,endfunc:A_};var zz=[{ai:Te,dist:0,think:vz},{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:pz},{ai:Te,dist:-2},{ai:Te,dist:-2},{ai:Te,dist:-3},{ai:Te,dist:0}];fz={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}];v_={firstframe:32,lastframe:38,frames:Nz,endfunc:Az};D();var ja=.1;var Oz=2,Iz=4;function Cz(e,t,n){M(e,ja,n)}function Pz(e,t,n){z(e,t,ja,n)}function Fz(e,t,n){ce(e,t,ja,n)}function E_(e,t,n){ue(e,t,ja,n)}function k_(e,t,n){g(e,t)}var Il,b_,x_,Dz,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}=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 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}=j(n.angles),s={...n.origin};s=U(s,F(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 Zz(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){Zz(e,t);return}e.spawnflags&Oz?Wz(e,t):e.spawnflags&Iz?Kz(e,t):Vz(e,t)}var jz=Array.from({length:30},()=>({ai:Cz,dist:0}));Il={firstframe:0,lastframe:29,frames:jz,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:Fz,dist:10}));x_={firstframe:70,lastframe:89,frames:Qz,endfunc:Ja};var eN=Array.from({length:10},(e,t)=>({ai:E_,dist:0,think:t===5?M_:null}));Dz={firstframe:90,lastframe:99,frames:eN,endfunc:Ja};var tN=Array.from({length:10},(e,t)=>({ai:E_,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:k_,dist:0}));Bz={firstframe:100,lastframe:105,frames:nN,endfunc:Ja};var iN=Array.from({length:10},()=>({ai:k_,dist:0}));function rN(e){e.monsterinfo.nextframe=T_.lastframe,e.nextthink=-1}T_={firstframe:106,lastframe:115,frames:iN,endfunc:rN};D();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){g(e,t)}var Qa,Pl,uN,dN,L_,z_,mN,fN,hN,N_;function _N(e){e.monsterinfo.current_move=Qa}function bn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Pl:e.monsterinfo.current_move=Qa}function Fl(e,t){let{forward:n,right:i,up:r}=j(e.angles),a={...e.origin},s=F(n,t.x),o=F(i,t.y),l=F(r,t.z);return U(U(U(a,s),o),l)}function gN(e,t){if(!e.enemy)return;let n=Fl(e,sN),i=B(P(e.enemy.origin,n));lr(e,n,i,50,650,0,t)}function vN(e,t){if(!e.enemy)return;let n=Fl(e,oN),i=B(P(e.enemy.origin,n));Xx(e,n,i,50,600,0,t)}function pN(e,t){if(!e.enemy)return;let n=Fl(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&&Sn(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:bn};var EN=Array.from({length:4},()=>({ai:Ar,dist:0}));hN={firstframe:78,lastframe:81,frames:EN,endfunc:bn};var kN=Array.from({length:4},()=>({ai:Ar,dist:0}));fN={firstframe:82,lastframe:85,frames:kN,endfunc:bn};var bN=Array.from({length:4},()=>({ai:Ar,dist:0}));mN={firstframe:86,lastframe:89,frames:bN,endfunc:bn};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?vN:null}));dN={firstframe:114,lastframe:119,frames:TN,endfunc:bn};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:bn};var RN=Array.from({length:6},()=>({ai:Cl,dist:0,think:pN}));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:bn};D();var Dl=.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,F(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,F(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,Dl,n)}function NN(e,t,n){z(e,t,Dl,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,Dl,n)}function C_(e,t,n){g(e,t)}var es,P_,Bl,IN,CN,PN,FN,F_;function DN(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}=j(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}=j(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=F_.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:DN};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 ZN=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:ZN,endfunc:WN};var jN=Array.from({length:6},()=>({ai:C_,dist:0}));FN={firstframe:116,lastframe:121,frames:jN,endfunc:Sr};var JN=Array.from({length:16},()=>({ai:C_,dist:0}));F_={firstframe:122,lastframe:137,frames:JN,endfunc:VN};D();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,D_,tO,nO,U_;function iO(e){e.monsterinfo.current_move=Vl}function Wl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=D_:e.monsterinfo.current_move=Vl}function rO(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),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}));D_={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};D();var ts=.1;var ir=()=>Math.random(),ns=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function di(e,t,n){M(e,ts,n)}function Zn(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){g(e,t)}var Kl,B_,G_,is,$l,dO,H_,mO,V_,W_,K_,$_,X_,fO,hO,_O,gO,vO,pO,yO,wO,AO,SO,rs=2,Y_=80,EO=100;var kO=8;var Xl=32;function mi(e,t){!(e.spawnflags&Xl)&&e.waterlevel>=rs&&FO(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),he(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),he(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&&he(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 Z_(e){ir()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function j_(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&kO){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=j(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=U(e.origin,U(F(i,s.x),U(F(r,s.y),F(a,s.z))));o.z+=2;let l=ni(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<=EO&&(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=j(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=U(F(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 vn(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){rh(t,e.origin,20),e.deadflag=2}function CO(e,t){ir()>.9&&eg(e,t)}function PO(e){e.maxs.z=0}function FO(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:di,dist:0});tg[38]={ai:di,dist:0,think:mi};Kl={firstframe:0,lastframe:38,frames:tg,endfunc:null};var DO=Array(32).fill({ai:di,dist:14});B_={firstframe:39,lastframe:70,frames:DO,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 Zl=Array(32).fill({ai:di,dist:0});Zl[0]={ai:di,dist:0,think:J_};Zl[31]={ai:di,dist:0,think:Z_};dO={firstframe:71,lastframe:102,frames:Zl,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:Z_};H_={firstframe:71,lastframe:102,frames:cs,endfunc:e=>YO(e,Kl)};$l={firstframe:71,lastframe:102,frames:cs,endfunc:xO};var BO=[{ai:Zn,dist:3.8,think:mi},{ai:Zn,dist:19.6},{ai:Zn,dist:25.5},{ai:Zn,dist:34.6,think:j_},{ai:Zn,dist:27.3},{ai:Zn,dist:28.4}];mO={firstframe:103,lastframe:108,frames:BO,endfunc:null};var GO=[{ai:Ye,dist:3.8,think:mi},{ai:Ye,dist:19.6},{ai:Ye,dist:25.5},{ai:Ye,dist:34.6,think:j_},{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:vn},{ai:$,dist:20.1,think:vn},{ai:$,dist:-1,think:vn},{ai:$,dist:2.5,think:vn},{ai:$,dist:.5,think:vn},{ai:$,dist:1.8,think:vn},{ai:$,dist:1.2,think:vn},{ai:$,dist:-.4,think:mi}];fO={firstframe:140,lastframe:158,frames:ng,endfunc:Ct};hO={firstframe:140,lastframe:158,frames:ng,endfunc:Ct};var fi=Array(21).fill({ai:$,dist:16});fi[0]={ai:$,dist:16,think:IO};fi[4]={ai:$,dist:16,think:ql};fi[9]={ai:$,dist:16,think:ql};fi[13]={ai:$,dist:16,think:as};fi[18]={ai:$,dist:16,think:Yl};_O={firstframe:159,lastframe:179,frames:fi,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:mi};vO={firstframe:186,lastframe:196,frames:ig,endfunc:Ct};var rg=Array(13).fill({ai:Be,dist:0});rg[12]={ai:Be,dist:0,think:mi};pO={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}D();var jl=.1,qO=()=>Math.random(),xf=()=>Math.random();function ZO(e,t,n){z(e,t,jl,n)}function jO(e,t,n){ce(e,t,jl,n)}function ls(e,t,n){ue(e,t,jl,n)}function ot(e,t,n){g(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)&&Sn(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,Er(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=j(e.angles),i=U(e.origin,U(F(n.forward,0),U(F(n.right,0),F(n.up,0)))),r=ni(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(xf()>.8){let n=xf();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 Er(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 fI=[{ai:ZO,dist:5}];JO={firstframe:0,lastframe:0,frames:fI,endfunc:null};var hI=[{ai:jO,dist:10}];Jl={firstframe:0,lastframe:0,frames:hI,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:Er};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 fg=Array(7).fill({ai:ot,dist:0,think:dI});fg[6]={ai:ot,dist:0,think:Ql};eI={firstframe:87,lastframe:93,frames:fg,endfunc:null};var hg=Array(7).fill({ai:ot,dist:-2});hg[6]={ai:ot,dist:-2,think:Ql};tI={firstframe:94,lastframe:100,frames:hg,endfunc:null};var gI=[{ai:ls,dist:0}];nI={firstframe:0,lastframe:0,frames:gI,endfunc:mI};var vI=[{ai:ot,dist:-1}];iI={firstframe:0,lastframe:0,frames:vI,endfunc:Er};var pI=Array(8).fill({ai:ot,dist:0});rI={firstframe:107,lastframe:114,frames:pI,endfunc:Er};var yI=Array(6).fill({ai:ot,dist:0});aI={firstframe:101,lastframe:106,frames:yI,endfunc:Er};D();D();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]));D();var EI=2166136261,kI=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,kI)>>>0;return n>>>0}function Qn(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 Ze(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 ei(e,t,n){return e===void 0?n:ve(e,t)}function ka(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function pa(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 xI(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Ze(e,"level");return{frameNumber:ei(t.frameNumber,"level.frameNumber",0),timeSeconds:ei(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:ei(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:ei(t.deltaSeconds,"level.deltaSeconds",0)}}function TI(e){if(e===void 0)return new Oc().getState();let t=Ze(e,"rng"),n=Ze(t.mt,"rng.mt"),i=pa(n.state,"rng.mt.state");return{mt:{index:ve(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=Ze(t,`thinks[${n}]`);return{time:ve(i.time,`thinks[${n}].time`),entityIndex:ve(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=Ze(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 LI(e){if(e===void 0)return{};let t=Ze(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=Ze(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 zI(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=Ze(t,`entities[${n}]`);return{index:ve(i.index,`entities[${n}].index`),fields:LI(i.fields)}})}function NI(e){let t=Ze(e,"pool");return{capacity:ve(t.capacity,"pool.capacity"),activeOrder:pa(t.activeOrder,"pool.activeOrder"),freeList:pa(t.freeList,"pool.freeList"),pendingFree:pa(t.pendingFree,"pool.pendingFree")}}function OI(e){let t=Ze(e,"entities");return{timeSeconds:ve(t.timeSeconds,"entities.timeSeconds"),pool:NI(t.pool),entities:zI(t.entities),thinks:MI(t.thinks),awareness:RI(t.awareness),crossLevelFlags:ei(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:ei(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=Ze(t,`cvars[${n}]`);return{name:ka(i.name,`cvars[${n}].name`),value:ka(i.value,`cvars[${n}].value`),flags:ve(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)=>ka(t,`configstrings[${n}]`))}function PI(e){return e===void 0?{}:Ze(e,"gameState")}function zt(e,t){if(t==null)return e;if(typeof t=="number")return Qn(e,t);if(typeof t=="string")return zc(e,t);if(typeof t=="boolean")return Qn(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 FI(e){let t=EI;return t=Qn(t,e.version),t=Qn(t,e.timestamp),t=zc(t,e.map),t=Qn(t,e.difficulty),t=Qn(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=Ze(i,"save"),a=r.version??_c,s=ve(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:ve(r.timestamp,"timestamp"),map:ka(r.map,"map"),difficulty:ve(r.difficulty,"difficulty"),playtimeSeconds:ve(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?ve(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=FI(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}D();var V7=new Set(Cc.filter(e=>e.save).map(e=>e.name));var Tf=globalThis.TextEncoder;function ti(e){return gg({...e},{allowNewerVersion:!0})}function DI(e){return Tf?new Tf().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:ti(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:ti(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:ti(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:ti(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:ti(t.save)}))}},tu=class Zi{constructor(t={}){let{dbName:n=Zi.DEFAULT_DB_NAME,storeName:i=Zi.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=ti(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:DI(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(Zi.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Zi.QUICK_SLOT,t)}};tu.DEFAULT_DB_NAME="quake2ts-saves";tu.DEFAULT_STORE="saves";tu.QUICK_SLOT="quicksave";D();Qt();D();D();var W7=sr();D();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}];D();D();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"],vg=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"],pg=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 vg(e,t),await pg(e,t)};var iu=[{type:"null"},{type:"armor",id:yn.BODY},{type:"armor",id:yn.COMBAT},{type:"armor",id:yn.JACKET},{type:"armor",id:yn.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: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 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 _={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: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)},v=l.frame,y=c.frame,S=c.scale!==void 0?c.scale:1,E=l.scale!==void 0?l.scale:1,w=hi(S,E,n),b=X=>X===void 0||X===0?255:X,T=b(c.alpha),x=b(l.alpha),N=hi(T,x,n)/255,A=me.create();me.translate(A,A,[_.x,_.y,_.z]),me.rotateZ(A,A,p.z*Math.PI/180),me.rotateY(A,A,p.y*Math.PI/180),me.rotateX(A,A,p.x*Math.PI/180),me.scale(A,A,[w,w,w]);let O=m!==void 0&&m>0?i.getImageName(m):void 0;f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,skin:O,alpha:N}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:y,frame1:v,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=zn();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&ko&&(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&vo&&(t.origin.y=n.origin.y),i&So&&(t.origin.z=n.origin.z),i&Eo&&(t.angles.x=n.angles.x),i&po&&(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&Fo&&(t.owner=n.owner),r&Do&&(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 Em:case km: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 _n(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 _n(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 _i=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 fs=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 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 kr=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 vs=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 _=Date.now();Math.floor(_/500)%2===0&&(f+="_")}}else u.type==="toggle"&&u.getValue&&(f+=`: ${u.getValue()}`);if(m===t.selectedIndex){let y=f.replace(/\^[0-9]/g,"").length*8,S=(n-y)/2;e.drawString(S-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 ps=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 Es=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>pm&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new Yo;i.writeByte(hn.move),i.writeByte(0),i.writeLong(this.latestServerFrame),Fm(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 Dm(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 ${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 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 ks=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 _=this.playback.getCurrentTime(),y=`${this.formatTime(_)} / --:--`,S=n-150;t.drawString(S,c,y);let E=o+5,w=4,b=n-40,T=20;t.drawfillRect(T,E,b,w,[.3,.3,.3,1]);let L=b*0;t.drawfillRect(T,E,L,w,[1,1,1,1]);let N=T+L;t.drawfillRect(N-2,E-2,4,w+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"}],xn=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 xn}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=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(bs||{}),qI={"+attack":ht.Attack,"+use":ht.Use,"+holster":ht.Holster,"+jump":ht.Jump,"+crouch":ht.Crouch},ZI=new Map(Object.values(bs).map(e=>[xr(e),e]));function jI(e){return ZI.get(xr(e))}function Tr(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var gi=class{constructor(t={},n=new xn){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??fm,this.pitchSpeed=t.pitchSpeed??hm,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=vm(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),_=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),S=this.sample("+speed",t,n),E=this.sample("+jump",t,n),w=this.sample("+crouch",t,n),b=this.runByDefault?S.active?.5:1:S.active?1:.5,T=this.forwardSpeed*(d.fraction-f.fraction)*b,x=this.sideSpeed*(p.fraction-_.fraction)*b,L=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*b,x+=this.sideSpeed*this.gamepadMove.x*b),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*b,x+=this.sideSpeed*this.touchMove.x*b),this.jumpAddsUpMove&&E.fraction>0&&(L+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&w.fraction>0&&(L-=this.upSpeed*w.fraction),T=this.clampMove(T,this.forwardSpeed),x=this.clampMove(x,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!==ht.None)&&(N|=ht.Any),this.anyPressed=!1,this.sequence++,{msec:A,buttons:N,angles:{...this.viewAngles},forwardmove:T,sidemove:x,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=jI(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=ht.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 gi(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},Eg=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(Eg||{});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 ks(r),s=new ds(e);s.setView(i);let o=!1,l=null,c=0,u=new hs,m=new ys,d=new ws,f=new As,_=new br(new ps),p,v,y=new _i,S,E=0,w=!1,T=s0(e,{get tickRate(){return 10},get frameTimeMs(){return S?.timeMs??0},get serverFrame(){return s.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return y},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return w}}),x=a0(T),L=new Es({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 vs(u,L);s.setCallbacks({onCenterPrint:R=>x.ParseCenterPrint(R,0,!1),onPrint:(R,G)=>x.NotifyMessage(0,G,!1),onConfigString:(R,G)=>{y.set(R,G),x.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){v=new kr(u,e.host),p=new gs(u,v,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)});_.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():p&&u.pushMenu(p.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){S=R,R?.state&&n.setAuthoritative(R),x.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}));_.saveCvars(R)}}else p&&u.pushMenu(p.createPauseMenu())},createMainMenu(R,G,ne,At,Ce){let Le=new fs(u,G,ne,At,Ce),St=v;if(!St){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");St=new kr(u,e.host)}let Tn=e.engine.assets,kg={findByExtension:Mn=>Tn?Tn.listFiles(Mn):[]},bg=new _s(u,kg,Mn=>{console.log(`Starting map: ${Mn}`),e.host?.commands.execute(`map ${Mn}`)}),xg=new ms(u,Le,{...R,optionsFactory:St,mapsFactory:bg,multiplayerFactory:N,onSetDifficulty:Mn=>{e.host?.cvars&&e.host.cvars.setValue("skill",Mn.toString())}});return{menuSystem:u,factory:xg}},render(R){let G=[];if(o){let Ce=R.nowMs,Le=E>0?Math.max(0,Ce-E):0;E=Ce,r.update(Le),A=s.getPredictionState(r.getCurrentTime())}else E=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),S=R.latest),R.previous?.state&&R.latest?.state?(A=_n(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,y,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:Ce,viewAngles:Le}=A;X=new vd,X.position=_e.fromValues(Ce.x,Ce.y,Ce.z);let St=O?.offset??{x:0,y:0,z:0};_e.add(X.position,X.position,[St.x,St.y,St.z]);let Tn=O?.angles??{x:0,y:0,z:0};X.angles=_e.fromValues(Le.x+Tn.x,Le.y+Tn.y,Le.z+Tn.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 Ce;if(e.engine.assets){let Le=y.getModelName(1);if(Le){let St=e.engine.assets.getMap(Le)}}e.engine.renderer.renderFrame({camera:X,world:Ce,dlights:[]},G)}if(e.engine.renderer&&A&&A.client){let Ce=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(Ce,Le)}return At},DrawHUD(R,G){if(!e.engine.renderer)return;let ne=e.engine.renderer,At=ne.width,Ce=ne.height;if(A&&A.client){let Le={origin:A.origin,velocity:A.velocity,viewAngles:A.viewAngles,onGround:Hn(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[Fe.STAT_HEALTH]=A.health??0,Le.stats[Fe.STAT_AMMO]=A.ammo??0,Le.stats[Fe.STAT_ARMOR]=A.armor??0,ne.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:At,height:Ce},{x:0,y:0,width:At,height:Ce},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(x.Shutdown(),S=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}));_.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,E=0,y.clear()},stopDemoPlayback(){r.stop(),o=!1,l=null,c=0},ParseCenterPrint(R){x.ParseCenterPrint(R,0,!1)},ParseNotify(R){x.NotifyMessage(0,R,!1)},showSubtitle(R,G){x.ShowSubtitle(R,G)},ParseConfigString(R,G){y.set(R,G),x.ParseConfigString(R,G)},demoHandler:s,multiplayer:L,configStrings:y}}return zg(QI);})();
169
+ }`;var Xd=class{constructor(){this._position=ve.create(),this._angles=ve.create(),this._bobAngles=ve.create(),this._bobOffset=ve.create(),this._kickAngles=ve.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=_e.create(),this._projectionMatrix=_e.create(),this._viewProjectionMatrix=_e.create(),this._dirty=!0}get position(){return this._position}set position(e){ve.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ve.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ve.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ve.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ve.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=_e.create();return _e.perspective(t,e*Ri,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;_e.perspective(this._projectionMatrix,this._fov*Ri,this._aspect,this._near,this._far);let e=_e.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*Ri,a=n*Ri,s=i*Ri,o=_e.create();_e.identity(o),_e.rotateZ(o,o,-a),_e.rotateY(o,o,-r),_e.rotateX(o,o,-s);let u=_e.create();_e.multiply(u,e,o);let c=ve.add(ve.create(),this._position,this._bobOffset),l=ve.negate(ve.create(),c),m=ve.create();ve.transformMat4(m,l,o);let d=ve.fromValues(m[1]||0,m[2]||0,m[0]||0);_e.copy(this._viewMatrix,u),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],_e.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var rw=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 po(t)}}reset(){this.offset=0}getOffset(){return this.offset}},aw=4,Ql=0,ed=1,sw=2;function $n(e){let t=e.length;for(;--t>=0;)e[t]=0}var ow=0,Yd=1,cw=2,uw=3,lw=258,zo=29,Wi=256,Pi=Wi+1+zo,Hn=30,No=19,qd=2*Pi+1,hn=15,no=16,dw=7,Oo=256,Zd=16,jd=17,Jd=18,wo=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]),Xr=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]),mw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Qd=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),fw=512,Nt=new Array((Pi+2)*2);$n(Nt);var Oi=new Array(Hn*2);$n(Oi);var Fi=new Array(fw);$n(Fi);var Di=new Array(lw-uw+1);$n(Di);var Io=new Array(zo);$n(Io);var Yr=new Array(Hn);$n(Yr);function io(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 em,tm,nm;function ro(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var im=e=>e<256?Fi[e]:Fi[256+(e>>>7)],Ui=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ke=(e,t,n)=>{e.bi_valid>no-n?(e.bi_buf|=t<<e.bi_valid&65535,Ui(e,e.bi_buf),e.bi_buf=t>>no-e.bi_valid,e.bi_valid+=n-no):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},pt=(e,t,n)=>{Ke(e,n[t*2],n[t*2+1])},rm=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},hw=e=>{e.bi_valid===16?(Ui(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)},_w=(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,u=t.stat_desc.max_length,c,l,m,d,f,_,p=0;for(d=0;d<=hn;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<qd;c++)l=e.heap[c],d=n[n[l*2+1]*2+1]+1,d>u&&(d=u,p++),n[l*2+1]=d,!(l>i)&&(e.bl_count[d]++,f=0,l>=o&&(f=s[l-o]),_=n[l*2],e.opt_len+=_*(d+f),a&&(e.static_len+=_*(r[l*2+1]+f)));if(p!==0){do{for(d=u-1;e.bl_count[d]===0;)d--;e.bl_count[d]--,e.bl_count[d+1]+=2,e.bl_count[u]--,p-=2}while(p>0);for(d=u;d!==0;d--)for(l=e.bl_count[d];l!==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),l--)}},am=(e,t,n)=>{let i=new Array(hn+1),r=0,a,s;for(a=1;a<=hn;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]=rm(i[o]++,o))}},gw=()=>{let e,t,n,i,r,a=new Array(hn+1);for(n=0,i=0;i<zo-1;i++)for(Io[i]=n,e=0;e<1<<wo[i];e++)Di[n++]=i;for(Di[n-1]=i,r=0,i=0;i<16;i++)for(Yr[i]=r,e=0;e<1<<Xr[i];e++)Fi[r++]=i;for(r>>=7;i<Hn;i++)for(Yr[i]=r<<7,e=0;e<1<<Xr[i]-7;e++)Fi[256+r++]=i;for(t=0;t<=hn;t++)a[t]=0;for(e=0;e<=143;)Nt[e*2+1]=8,e++,a[8]++;for(;e<=255;)Nt[e*2+1]=9,e++,a[9]++;for(;e<=279;)Nt[e*2+1]=7,e++,a[7]++;for(;e<=287;)Nt[e*2+1]=8,e++,a[8]++;for(am(Nt,Pi+1,a),e=0;e<Hn;e++)Oi[e*2+1]=5,Oi[e*2]=rm(e,5);em=new io(Nt,wo,Wi+1,Pi,hn),tm=new io(Oi,Xr,0,Hn,hn),nm=new io(new Array(0),mw,0,No,dw)},sm=e=>{let t;for(t=0;t<Pi;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Hn;t++)e.dyn_dtree[t*2]=0;for(t=0;t<No;t++)e.bl_tree[t*2]=0;e.dyn_ltree[Oo*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},om=e=>{e.bi_valid>8?Ui(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},td=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ao=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&td(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!td(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},nd=(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?pt(e,r,t):(s=Di[r],pt(e,s+Wi+1,t),o=wo[s],o!==0&&(r-=Io[s],Ke(e,r,o)),i--,s=im(i),pt(e,s,n),o=Xr[s],o!==0&&(i-=Yr[s],Ke(e,i,o)));while(a<e.sym_next);pt(e,Oo,t)},Ao=(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,u=-1,c;for(e.heap_len=0,e.heap_max=qd,s=0;s<a;s++)n[s*2]!==0?(e.heap[++e.heap_len]=u=s,e.depth[s]=0):n[s*2+1]=0;for(;e.heap_len<2;)c=e.heap[++e.heap_len]=u<2?++u:0,n[c*2]=1,e.depth[c]=0,e.opt_len--,r&&(e.static_len-=i[c*2+1]);for(t.max_code=u,s=e.heap_len>>1;s>=1;s--)ao(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ao(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++,ao(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],_w(e,t),am(n,u,e.bl_count)},id=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),t[(n+1)*2+1]=65535,i=0;i<=n;i++)a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)&&(o<c?e.bl_tree[a*2]+=o:a!==0?(a!==r&&e.bl_tree[a*2]++,e.bl_tree[Zd*2]++):o<=10?e.bl_tree[jd*2]++:e.bl_tree[Jd*2]++,o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4))},rd=(e,t,n)=>{let i,r=-1,a,s=t[1],o=0,u=7,c=4;for(s===0&&(u=138,c=3),i=0;i<=n;i++)if(a=s,s=t[(i+1)*2+1],!(++o<u&&a===s)){if(o<c)do pt(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(pt(e,a,e.bl_tree),o--),pt(e,Zd,e.bl_tree),Ke(e,o-3,2)):o<=10?(pt(e,jd,e.bl_tree),Ke(e,o-3,3)):(pt(e,Jd,e.bl_tree),Ke(e,o-11,7));o=0,r=a,s===0?(u=138,c=3):a===s?(u=6,c=3):(u=7,c=4)}},vw=e=>{let t;for(id(e,e.dyn_ltree,e.l_desc.max_code),id(e,e.dyn_dtree,e.d_desc.max_code),Ao(e,e.bl_desc),t=No-1;t>=3&&e.bl_tree[Qd[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},pw=(e,t,n,i)=>{let r;for(Ke(e,t-257,5),Ke(e,n-1,5),Ke(e,i-4,4),r=0;r<i;r++)Ke(e,e.bl_tree[Qd[r]*2+1],3);rd(e,e.dyn_ltree,t-1),rd(e,e.dyn_dtree,n-1)},yw=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return Ql;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return ed;for(n=32;n<Wi;n++)if(e.dyn_ltree[n*2]!==0)return ed;return Ql},ad=!1,ww=e=>{ad||(gw(),ad=!0),e.l_desc=new ro(e.dyn_ltree,em),e.d_desc=new ro(e.dyn_dtree,tm),e.bl_desc=new ro(e.bl_tree,nm),e.bi_buf=0,e.bi_valid=0,sm(e)},cm=(e,t,n,i)=>{Ke(e,(ow<<1)+(i?1:0),3),om(e),Ui(e,n),Ui(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},Aw=e=>{Ke(e,Yd<<1,3),pt(e,Oo,Nt),hw(e)},Sw=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===sw&&(e.strm.data_type=yw(e)),Ao(e,e.l_desc),Ao(e,e.d_desc),s=vw(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?cm(e,t,n,i):e.strategy===aw||a===r?(Ke(e,(Yd<<1)+(i?1:0),3),nd(e,Nt,Oi)):(Ke(e,(cw<<1)+(i?1:0),3),pw(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),nd(e,e.dyn_ltree,e.dyn_dtree)),sm(e),i&&om(e)},kw=(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[(Di[n]+Wi+1)*2]++,e.dyn_dtree[im(t)*2]++),e.sym_next===e.sym_end),Ew=ww,bw=cm,xw=Sw,Tw=kw,Mw=Aw,Rw={_tr_init:Ew,_tr_stored_block:bw,_tr_flush_block:xw,_tr_tally:Tw,_tr_align:Mw},Lw=(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},Bi=Lw,zw=()=>{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},Nw=new Uint32Array(zw()),Ow=(e,t,n,i)=>{let r=Nw,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},Le=Ow,vn={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"},wn={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:Iw,_tr_stored_block:So,_tr_flush_block:Cw,_tr_tally:$t,_tr_align:Pw}=Rw,{Z_NO_FLUSH:Xt,Z_PARTIAL_FLUSH:Fw,Z_FULL_FLUSH:Dw,Z_FINISH:at,Z_BLOCK:sd,Z_OK:Ce,Z_STREAM_END:od,Z_STREAM_ERROR:yt,Z_DATA_ERROR:Uw,Z_BUF_ERROR:so,Z_DEFAULT_COMPRESSION:Bw,Z_FILTERED:Gw,Z_HUFFMAN_ONLY:Hr,Z_RLE:Hw,Z_FIXED:Vw,Z_DEFAULT_STRATEGY:Ww,Z_UNKNOWN:Kw,Z_DEFLATED:oa}=wn,$w=9,Xw=15,Yw=8,qw=29,Zw=256,ko=Zw+1+qw,jw=30,Jw=19,Qw=2*ko+1,eA=15,ie=3,Kt=258,wt=Kt+ie+1,tA=32,Wn=42,Co=57,Eo=69,bo=73,xo=91,To=103,_n=113,zi=666,Ge=1,Xn=2,pn=3,Yn=4,nA=3,gn=(e,t)=>(e.msg=vn[t],t),cd=e=>e*2-(e>4?9:0),Wt=e=>{let t=e.length;for(;--t>=0;)e[t]=0},iA=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)},rA=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,Yt=rA,qe=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))},Ze=(e,t)=>{Cw(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,qe(e.strm)},ce=(e,t)=>{e.pending_buf[e.pending++]=t},Li=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},Mo=(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=Bi(e.adler,t,r,n):e.state.wrap===2&&(e.adler=Le(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},um=(e,t)=>{let n=e.max_chain_length,i=e.strstart,r,a,s=e.prev_length,o=e.nice_match,u=e.strstart>e.w_size-wt?e.strstart-(e.w_size-wt):0,c=e.window,l=e.w_mask,m=e.prev,d=e.strstart+Kt,f=c[i+s-1],_=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==_||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=Kt-(d-i),i=d-Kt,a>s){if(e.match_start=t,s=a,a>=o)break;f=c[i+s-1],_=c[i+s]}}while((t=m[t&l])>u&&--n!==0);return s<=e.lookahead?s:e.lookahead},Kn=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-wt)&&(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),iA(e),i+=t),e.strm.avail_in===0)break;if(n=Mo(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=ie)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=Yt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=Yt(e,e.ins_h,e.window[r+ie-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<ie)););}while(e.lookahead<wt&&e.strm.avail_in!==0)},lm=(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!==at||t===Xt||i!==r+e.strm.avail_in)))break;s=t===at&&i===r+e.strm.avail_in?1:0,So(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,qe(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&&(Mo(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?Yn:t!==Xt&&t!==at&&e.strm.avail_in===0&&e.strstart===e.block_start?Xn:(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&&(Mo(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===at)&&t!==Xt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===at&&e.strm.avail_in===0&&i===r?1:0,So(e,e.block_start,i,s),e.block_start+=i,qe(e.strm)),s?pn:Ge)},oo=(e,t)=>{let n,i;for(;;){if(e.lookahead<wt){if(Kn(e),e.lookahead<wt&&t===Xt)return Ge;if(e.lookahead===0)break}if(n=0,e.lookahead>=ie&&(e.ins_h=Yt(e,e.ins_h,e.window[e.strstart+ie-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-wt&&(e.match_length=um(e,n)),e.match_length>=ie)if(i=$t(e,e.strstart-e.match_start,e.match_length-ie),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=ie){e.match_length--;do e.strstart++,e.ins_h=Yt(e,e.ins_h,e.window[e.strstart+ie-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!==0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Yt(e,e.ins_h,e.window[e.strstart+1]);else i=$t(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ze(e,!1),e.strm.avail_out===0))return Ge}return e.insert=e.strstart<ie-1?e.strstart:ie-1,t===at?(Ze(e,!0),e.strm.avail_out===0?pn:Yn):e.sym_next&&(Ze(e,!1),e.strm.avail_out===0)?Ge:Xn},Un=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<wt){if(Kn(e),e.lookahead<wt&&t===Xt)return Ge;if(e.lookahead===0)break}if(n=0,e.lookahead>=ie&&(e.ins_h=Yt(e,e.ins_h,e.window[e.strstart+ie-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=ie-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-wt&&(e.match_length=um(e,n),e.match_length<=5&&(e.strategy===Gw||e.match_length===ie&&e.strstart-e.match_start>4096)&&(e.match_length=ie-1)),e.prev_length>=ie&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-ie,i=$t(e,e.strstart-1-e.prev_match,e.prev_length-ie),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=Yt(e,e.ins_h,e.window[e.strstart+ie-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=ie-1,e.strstart++,i&&(Ze(e,!1),e.strm.avail_out===0))return Ge}else if(e.match_available){if(i=$t(e,0,e.window[e.strstart-1]),i&&Ze(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return Ge}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=$t(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<ie-1?e.strstart:ie-1,t===at?(Ze(e,!0),e.strm.avail_out===0?pn:Yn):e.sym_next&&(Ze(e,!1),e.strm.avail_out===0)?Ge:Xn},aA=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=Kt){if(Kn(e),e.lookahead<=Kt&&t===Xt)return Ge;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=ie&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+Kt;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=Kt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=ie?(n=$t(e,1,e.match_length-ie),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=$t(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ze(e,!1),e.strm.avail_out===0))return Ge}return e.insert=0,t===at?(Ze(e,!0),e.strm.avail_out===0?pn:Yn):e.sym_next&&(Ze(e,!1),e.strm.avail_out===0)?Ge:Xn},sA=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Kn(e),e.lookahead===0)){if(t===Xt)return Ge;break}if(e.match_length=0,n=$t(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ze(e,!1),e.strm.avail_out===0))return Ge}return e.insert=0,t===at?(Ze(e,!0),e.strm.avail_out===0?pn:Yn):e.sym_next&&(Ze(e,!1),e.strm.avail_out===0)?Ge:Xn};function vt(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 Ni=[new vt(0,0,0,0,lm),new vt(4,4,8,4,oo),new vt(4,5,16,8,oo),new vt(4,6,32,32,oo),new vt(4,4,16,16,Un),new vt(8,16,32,32,Un),new vt(8,16,128,128,Un),new vt(8,32,128,256,Un),new vt(32,128,258,1024,Un),new vt(32,258,258,4096,Un)],oA=e=>{e.window_size=2*e.w_size,Wt(e.head),e.max_lazy_match=Ni[e.level].max_lazy,e.good_match=Ni[e.level].good_length,e.nice_match=Ni[e.level].nice_length,e.max_chain_length=Ni[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=ie-1,e.match_available=0,e.ins_h=0};function cA(){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=oa,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(Qw*2),this.dyn_dtree=new Uint16Array((2*jw+1)*2),this.bl_tree=new Uint16Array((2*Jw+1)*2),Wt(this.dyn_ltree),Wt(this.dyn_dtree),Wt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(eA+1),this.heap=new Uint16Array(2*ko+1),Wt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*ko+1),Wt(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 Ki=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==Wn&&t.status!==Co&&t.status!==Eo&&t.status!==bo&&t.status!==xo&&t.status!==To&&t.status!==_n&&t.status!==zi?1:0},dm=e=>{if(Ki(e))return gn(e,yt);e.total_in=e.total_out=0,e.data_type=Kw;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Co:t.wrap?Wn:_n,e.adler=t.wrap===2?0:1,t.last_flush=-2,Iw(t),Ce},mm=e=>{let t=dm(e);return t===Ce&&oA(e.state),t},uA=(e,t)=>Ki(e)||e.state.wrap!==2?yt:(e.state.gzhead=t,Ce),fm=(e,t,n,i,r,a)=>{if(!e)return yt;let s=1;if(t===Bw&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>$w||n!==oa||i<8||i>15||t<0||t>9||a<0||a>Vw||i===8&&s!==1)return gn(e,yt);i===8&&(i=9);let o=new cA;return e.state=o,o.strm=e,o.status=Wn,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+ie-1)/ie),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,mm(e)},lA=(e,t)=>fm(e,t,oa,Xw,Yw,Ww),dA=(e,t)=>{if(Ki(e)||t>sd||t<0)return e?gn(e,yt):yt;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===zi&&t!==at)return gn(e,e.avail_out===0?so:yt);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(qe(e),e.avail_out===0)return n.last_flush=-1,Ce}else if(e.avail_in===0&&cd(t)<=cd(i)&&t!==at)return gn(e,so);if(n.status===zi&&e.avail_in!==0)return gn(e,so);if(n.status===Wn&&n.wrap===0&&(n.status=_n),n.status===Wn){let r=oa+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Hr||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=tA),r+=31-r%31,Li(n,r),n.strstart!==0&&(Li(n,e.adler>>>16),Li(n,e.adler&65535)),e.adler=1,n.status=_n,qe(e),n.pending!==0)return n.last_flush=-1,Ce}if(n.status===Co){if(e.adler=0,ce(n,31),ce(n,139),ce(n,8),n.gzhead)ce(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)),ce(n,n.gzhead.time&255),ce(n,n.gzhead.time>>8&255),ce(n,n.gzhead.time>>16&255),ce(n,n.gzhead.time>>24&255),ce(n,n.level===9?2:n.strategy>=Hr||n.level<2?4:0),ce(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(ce(n,n.gzhead.extra.length&255),ce(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=Le(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Eo;else if(ce(n,0),ce(n,0),ce(n,0),ce(n,0),ce(n,0),ce(n,n.level===9?2:n.strategy>=Hr||n.level<2?4:0),ce(n,nA),n.status=_n,qe(e),n.pending!==0)return n.last_flush=-1,Ce}if(n.status===Eo){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=Le(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,qe(e),n.pending!==0)return n.last_flush=-1,Ce;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=Le(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=bo}if(n.status===bo){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=Le(e.adler,n.pending_buf,n.pending-r,r)),qe(e),n.pending!==0)return n.last_flush=-1,Ce;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,ce(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Le(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=xo}if(n.status===xo){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=Le(e.adler,n.pending_buf,n.pending-r,r)),qe(e),n.pending!==0)return n.last_flush=-1,Ce;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,ce(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=Le(e.adler,n.pending_buf,n.pending-r,r))}n.status=To}if(n.status===To){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(qe(e),n.pending!==0))return n.last_flush=-1,Ce;ce(n,e.adler&255),ce(n,e.adler>>8&255),e.adler=0}if(n.status=_n,qe(e),n.pending!==0)return n.last_flush=-1,Ce}if(e.avail_in!==0||n.lookahead!==0||t!==Xt&&n.status!==zi){let r=n.level===0?lm(n,t):n.strategy===Hr?sA(n,t):n.strategy===Hw?aA(n,t):Ni[n.level].func(n,t);if((r===pn||r===Yn)&&(n.status=zi),r===Ge||r===pn)return e.avail_out===0&&(n.last_flush=-1),Ce;if(r===Xn&&(t===Fw?Pw(n):t!==sd&&(So(n,0,0,!1),t===Dw&&(Wt(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),qe(e),e.avail_out===0))return n.last_flush=-1,Ce}return t!==at?Ce:n.wrap<=0?od:(n.wrap===2?(ce(n,e.adler&255),ce(n,e.adler>>8&255),ce(n,e.adler>>16&255),ce(n,e.adler>>24&255),ce(n,e.total_in&255),ce(n,e.total_in>>8&255),ce(n,e.total_in>>16&255),ce(n,e.total_in>>24&255)):(Li(n,e.adler>>>16),Li(n,e.adler&65535)),qe(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?Ce:od)},mA=e=>{if(Ki(e))return yt;let t=e.state.status;return e.state=null,t===_n?gn(e,Uw):Ce},fA=(e,t)=>{let n=t.length;if(Ki(e))return yt;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==Wn||i.lookahead)return yt;if(r===1&&(e.adler=Bi(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(Wt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let u=new Uint8Array(i.w_size);u.set(t.subarray(n-i.w_size,n),0),t=u,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,Kn(i);i.lookahead>=ie;){let u=i.strstart,c=i.lookahead-(ie-1);do i.ins_h=Yt(i,i.ins_h,i.window[u+ie-1]),i.prev[u&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=u,u++;while(--c);i.strstart=u,i.lookahead=ie-1,Kn(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=ie-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,Ce},hA=lA,_A=fm,gA=mm,vA=dm,pA=uA,yA=dA,wA=mA,AA=fA,SA="pako deflate (from Nodeca project)",Ii={deflateInit:hA,deflateInit2:_A,deflateReset:gA,deflateResetKeep:vA,deflateSetHeader:pA,deflate:yA,deflateEnd:wA,deflateSetDictionary:AA,deflateInfo:SA},kA=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),EA=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)kA(n,i)&&(e[i]=n[i])}}return e},bA=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},ca={assign:EA,flattenChunks:bA},hm=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{hm=!1}var Gi=new Uint8Array(256);for(let e=0;e<256;e++)Gi[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Gi[254]=Gi[254]=1;var xA=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},TA=(e,t)=>{if(t<65534&&e.subarray&&hm)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},MA=(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=Gi[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 TA(a,r)},RA=(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+Gi[e[n]]>t?n:t},Hi={string2buf:xA,buf2string:MA,utf8border:RA};function LA(){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 _m=LA,gm=Object.prototype.toString,{Z_NO_FLUSH:zA,Z_SYNC_FLUSH:NA,Z_FULL_FLUSH:OA,Z_FINISH:IA,Z_OK:qr,Z_STREAM_END:CA,Z_DEFAULT_COMPRESSION:PA,Z_DEFAULT_STRATEGY:FA,Z_DEFLATED:DA}=wn;function $i(e){this.options=ca.assign({level:PA,method:DA,chunkSize:16384,windowBits:15,memLevel:8,strategy:FA},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 _m,this.strm.avail_out=0;let n=Ii.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==qr)throw new Error(vn[n]);if(t.header&&Ii.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Hi.string2buf(t.dictionary):gm.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=Ii.deflateSetDictionary(this.strm,i),n!==qr)throw new Error(vn[n]);this._dict_set=!0}}$i.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?IA:zA,typeof e=="string"?n.input=Hi.string2buf(e):gm.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===NA||a===OA)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=Ii.deflate(n,a),r===CA)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=Ii.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===qr;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};$i.prototype.onData=function(e){this.chunks.push(e)};$i.prototype.onEnd=function(e){e===qr&&(this.result=ca.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Po(e,t){let n=new $i(t);if(n.push(e,!0),n.err)throw n.msg||vn[n.err];return n.result}function UA(e,t){return t=t||{},t.raw=!0,Po(e,t)}function BA(e,t){return t=t||{},t.gzip=!0,Po(e,t)}var GA=$i,HA=Po,VA=UA,WA=BA,KA=wn,$A={Deflate:GA,deflate:HA,deflateRaw:VA,gzip:WA,constants:KA},Vr=16209,XA=16191,YA=function(t,n){let i,r,a,s,o,u,c,l,m,d,f,_,p,v,y,S,k,w,b,T,x,N,O,A,C=t.state;i=t.next_in,O=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),u=C.dmax,c=C.wsize,l=C.whave,m=C.wnext,d=C.window,f=C.hold,_=C.bits,p=C.lencode,v=C.distcode,y=(1<<C.lenbits)-1,S=(1<<C.distbits)-1;e:do{_<15&&(f+=O[i++]<<_,_+=8,f+=O[i++]<<_,_+=8),k=p[f&y];t:for(;;){if(w=k>>>24,f>>>=w,_-=w,w=k>>>16&255,w===0)A[a++]=k&65535;else if(w&16){b=k&65535,w&=15,w&&(_<w&&(f+=O[i++]<<_,_+=8),b+=f&(1<<w)-1,f>>>=w,_-=w),_<15&&(f+=O[i++]<<_,_+=8,f+=O[i++]<<_,_+=8),k=v[f&S];n:for(;;){if(w=k>>>24,f>>>=w,_-=w,w=k>>>16&255,w&16){if(T=k&65535,w&=15,_<w&&(f+=O[i++]<<_,_+=8,_<w&&(f+=O[i++]<<_,_+=8)),T+=f&(1<<w)-1,T>u){t.msg="invalid distance too far back",C.mode=Vr;break e}if(f>>>=w,_-=w,w=a-s,T>w){if(w=T-w,w>l&&C.sane){t.msg="invalid distance too far back",C.mode=Vr;break e}if(x=0,N=d,m===0){if(x+=c-w,w<b){b-=w;do A[a++]=d[x++];while(--w);x=a-T,N=A}}else if(m<w){if(x+=c+m-w,w-=m,w<b){b-=w;do A[a++]=d[x++];while(--w);if(x=0,m<b){w=m,b-=w;do A[a++]=d[x++];while(--w);x=a-T,N=A}}}else if(x+=m-w,w<b){b-=w;do A[a++]=d[x++];while(--w);x=a-T,N=A}for(;b>2;)A[a++]=N[x++],A[a++]=N[x++],A[a++]=N[x++],b-=3;b&&(A[a++]=N[x++],b>1&&(A[a++]=N[x++]))}else{x=a-T;do A[a++]=A[x++],A[a++]=A[x++],A[a++]=A[x++],b-=3;while(b>2);b&&(A[a++]=A[x++],b>1&&(A[a++]=A[x++]))}}else if((w&64)===0){k=v[(k&65535)+(f&(1<<w)-1)];continue n}else{t.msg="invalid distance code",C.mode=Vr;break e}break}}else if((w&64)===0){k=p[(k&65535)+(f&(1<<w)-1)];continue t}else if(w&32){C.mode=XA;break e}else{t.msg="invalid literal/length code",C.mode=Vr;break e}break}}while(i<r&&a<o);b=_>>3,i-=b,_-=b<<3,f&=(1<<_)-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),C.hold=f,C.bits=_},Bn=15,ud=852,ld=592,dd=0,co=1,md=2,qA=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]),ZA=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]),jA=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]),JA=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]),QA=(e,t,n,i,r,a,s,o)=>{let u=o.bits,c=0,l=0,m=0,d=0,f=0,_=0,p=0,v=0,y=0,S=0,k,w,b,T,x,N=null,O,A=new Uint16Array(Bn+1),C=new Uint16Array(Bn+1),V=null,ne,Q,Oe;for(c=0;c<=Bn;c++)A[c]=0;for(l=0;l<i;l++)A[t[n+l]]++;for(f=u,d=Bn;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),v=1,c=1;c<=Bn;c++)if(v<<=1,v-=A[c],v<0)return-1;if(v>0&&(e===dd||d!==1))return-1;for(C[1]=0,c=1;c<Bn;c++)C[c+1]=C[c]+A[c];for(l=0;l<i;l++)t[n+l]!==0&&(s[C[t[n+l]]++]=l);if(e===dd?(N=V=s,O=20):e===co?(N=qA,V=ZA,O=257):(N=jA,V=JA,O=0),S=0,l=0,c=m,x=a,_=f,p=0,b=-1,y=1<<f,T=y-1,e===co&&y>ud||e===md&&y>ld)return 1;for(;;){ne=c-p,s[l]+1<O?(Q=0,Oe=s[l]):s[l]>=O?(Q=V[s[l]-O],Oe=N[s[l]-O]):(Q=96,Oe=0),k=1<<c-p,w=1<<_,m=w;do w-=k,r[x+(S>>p)+w]=ne<<24|Q<<16|Oe|0;while(w!==0);for(k=1<<c-1;S&k;)k>>=1;if(k!==0?(S&=k-1,S+=k):S=0,l++,--A[c]===0){if(c===d)break;c=t[n+s[l]]}if(c>f&&(S&T)!==b){for(p===0&&(p=f),x+=m,_=c-p,v=1<<_;_+p<d&&(v-=A[_+p],!(v<=0));)_++,v<<=1;if(y+=1<<_,e===co&&y>ud||e===md&&y>ld)return 1;b=S&T,r[b]=f<<24|_<<16|x-a|0}}return S!==0&&(r[x+S]=c-p<<24|64<<16|0),o.bits=f,0},Ci=QA,eS=0,vm=1,pm=2,{Z_FINISH:fd,Z_BLOCK:tS,Z_TREES:Wr,Z_OK:yn,Z_STREAM_END:nS,Z_NEED_DICT:iS,Z_STREAM_ERROR:st,Z_DATA_ERROR:ym,Z_MEM_ERROR:wm,Z_BUF_ERROR:rS,Z_DEFLATED:hd}=wn,ua=16180,_d=16181,gd=16182,vd=16183,pd=16184,yd=16185,wd=16186,Ad=16187,Sd=16188,kd=16189,Zr=16190,zt=16191,uo=16192,Ed=16193,lo=16194,bd=16195,xd=16196,Td=16197,Md=16198,Kr=16199,$r=16200,Rd=16201,Ld=16202,zd=16203,Nd=16204,Od=16205,mo=16206,Id=16207,Cd=16208,pe=16209,Am=16210,Sm=16211,aS=852,sS=592,oS=15,cS=oS,Pd=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function uS(){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 An=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<ua||t.mode>Sm?1:0},km=e=>{if(An(e))return st;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=ua,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(aS),t.distcode=t.distdyn=new Int32Array(sS),t.sane=1,t.back=-1,yn},Em=e=>{if(An(e))return st;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,km(e)},bm=(e,t)=>{let n;if(An(e))return st;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?st:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Em(e))},xm=(e,t)=>{if(!e)return st;let n=new uS;e.state=n,n.strm=e,n.window=null,n.mode=ua;let i=bm(e,t);return i!==yn&&(e.state=null),i},lS=e=>xm(e,cS),Fd=!0,fo,ho,dS=e=>{if(Fd){fo=new Int32Array(512),ho=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(Ci(vm,e.lens,0,288,fo,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ci(pm,e.lens,0,32,ho,0,e.work,{bits:5}),Fd=!1}e.lencode=fo,e.lenbits=9,e.distcode=ho,e.distbits=5},Tm=(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},mS=(e,t)=>{let n,i,r,a,s,o,u,c,l,m,d,f,_,p,v=0,y,S,k,w,b,T,x,N,O=new Uint8Array(4),A,C,V=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(An(e)||!e.output||!e.input&&e.avail_in!==0)return st;n=e.state,n.mode===zt&&(n.mode=uo),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,l=n.bits,m=o,d=u,N=yn;e:for(;;)switch(n.mode){case ua:if(n.wrap===0){n.mode=uo;break}for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&2&&c===35615){n.wbits===0&&(n.wbits=15),n.check=0,O[0]=c&255,O[1]=c>>>8&255,n.check=Le(n.check,O,2,0),c=0,l=0,n.mode=_d;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=pe;break}if((c&15)!==hd){e.msg="unknown compression method",n.mode=pe;break}if(c>>>=4,l-=4,x=(c&15)+8,n.wbits===0&&(n.wbits=x),x>15||x>n.wbits){e.msg="invalid window size",n.mode=pe;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?kd:zt,c=0,l=0;break;case _d:for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.flags=c,(n.flags&255)!==hd){e.msg="unknown compression method",n.mode=pe;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=pe;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Le(n.check,O,2,0)),c=0,l=0,n.mode=gd;case gd:for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.head&&(n.head.time=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,O[2]=c>>>16&255,O[3]=c>>>24&255,n.check=Le(n.check,O,4,0)),c=0,l=0,n.mode=vd;case vd:for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.head&&(n.head.xflags=c&255,n.head.os=c>>8),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Le(n.check,O,2,0)),c=0,l=0,n.mode=pd;case pd:if(n.flags&1024){for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.length=c,n.head&&(n.head.extra_len=c),n.flags&512&&n.wrap&4&&(O[0]=c&255,O[1]=c>>>8&255,n.check=Le(n.check,O,2,0)),c=0,l=0}else n.head&&(n.head.extra=null);n.mode=yd;case yd:if(n.flags&1024&&(f=n.length,f>o&&(f=o),f&&(n.head&&(x=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),x)),n.flags&512&&n.wrap&4&&(n.check=Le(n.check,i,f,a)),o-=f,a+=f,n.length-=f),n.length))break e;n.length=0,n.mode=wd;case wd:if(n.flags&2048){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.name+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Le(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Ad;case Ad:if(n.flags&4096){if(o===0)break e;f=0;do x=i[a+f++],n.head&&x&&n.length<65536&&(n.head.comment+=String.fromCharCode(x));while(x&&f<o);if(n.flags&512&&n.wrap&4&&(n.check=Le(n.check,i,f,a)),o-=f,a+=f,x)break e}else n.head&&(n.head.comment=null);n.mode=Sd;case Sd:if(n.flags&512){for(;l<16;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&4&&c!==(n.check&65535)){e.msg="header crc mismatch",n.mode=pe;break}c=0,l=0}n.head&&(n.head.hcrc=n.flags>>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=zt;break;case kd:for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}e.adler=n.check=Pd(c),c=0,l=0,n.mode=Zr;case Zr:if(n.havedict===0)return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,iS;e.adler=n.check=1,n.mode=zt;case zt:if(t===tS||t===Wr)break e;case uo:if(n.last){c>>>=l&7,l-=l&7,n.mode=mo;break}for(;l<3;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}switch(n.last=c&1,c>>>=1,l-=1,c&3){case 0:n.mode=Ed;break;case 1:if(dS(n),n.mode=Kr,t===Wr){c>>>=2,l-=2;break e}break;case 2:n.mode=xd;break;case 3:e.msg="invalid block type",n.mode=pe}c>>>=2,l-=2;break;case Ed:for(c>>>=l&7,l-=l&7;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if((c&65535)!==(c>>>16^65535)){e.msg="invalid stored block lengths",n.mode=pe;break}if(n.length=c&65535,c=0,l=0,n.mode=lo,t===Wr)break e;case lo:n.mode=bd;case bd:if(f=n.length,f){if(f>o&&(f=o),f>u&&(f=u),f===0)break e;r.set(i.subarray(a,a+f),s),o-=f,a+=f,u-=f,s+=f,n.length-=f;break}n.mode=zt;break;case xd:for(;l<14;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.nlen=(c&31)+257,c>>>=5,l-=5,n.ndist=(c&31)+1,c>>>=5,l-=5,n.ncode=(c&15)+4,c>>>=4,l-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=pe;break}n.have=0,n.mode=Td;case Td:for(;n.have<n.ncode;){for(;l<3;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.lens[V[n.have++]]=c&7,c>>>=3,l-=3}for(;n.have<19;)n.lens[V[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,A={bits:n.lenbits},N=Ci(eS,n.lens,0,19,n.lencode,0,n.work,A),n.lenbits=A.bits,N){e.msg="invalid code lengths set",n.mode=pe;break}n.have=0,n.mode=Md;case Md:for(;n.have<n.nlen+n.ndist;){for(;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(k<16)c>>>=y,l-=y,n.lens[n.have++]=k;else{if(k===16){for(C=y+2;l<C;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(c>>>=y,l-=y,n.have===0){e.msg="invalid bit length repeat",n.mode=pe;break}x=n.lens[n.have-1],f=3+(c&3),c>>>=2,l-=2}else if(k===17){for(C=y+3;l<C;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,x=0,f=3+(c&7),c>>>=3,l-=3}else{for(C=y+7;l<C;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=y,l-=y,x=0,f=11+(c&127),c>>>=7,l-=7}if(n.have+f>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=pe;break}for(;f--;)n.lens[n.have++]=x}}if(n.mode===pe)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=pe;break}if(n.lenbits=9,A={bits:n.lenbits},N=Ci(vm,n.lens,0,n.nlen,n.lencode,0,n.work,A),n.lenbits=A.bits,N){e.msg="invalid literal/lengths set",n.mode=pe;break}if(n.distbits=6,n.distcode=n.distdyn,A={bits:n.distbits},N=Ci(pm,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,A),n.distbits=A.bits,N){e.msg="invalid distances set",n.mode=pe;break}if(n.mode=Kr,t===Wr)break e;case Kr:n.mode=$r;case $r:if(o>=6&&u>=258){e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,YA(e,d),s=e.next_out,r=e.output,u=e.avail_out,a=e.next_in,i=e.input,o=e.avail_in,c=n.hold,l=n.bits,n.mode===zt&&(n.back=-1);break}for(n.back=0;v=n.lencode[c&(1<<n.lenbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(S&&(S&240)===0){for(w=y,b=S,T=k;v=n.lencode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,k=v&65535,!(w+y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=w,l-=w,n.back+=w}if(c>>>=y,l-=y,n.back+=y,n.length=k,S===0){n.mode=Od;break}if(S&32){n.back=-1,n.mode=zt;break}if(S&64){e.msg="invalid literal/length code",n.mode=pe;break}n.extra=S&15,n.mode=Rd;case Rd:if(n.extra){for(C=n.extra;l<C;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.length+=c&(1<<n.extra)-1,c>>>=n.extra,l-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=Ld;case Ld:for(;v=n.distcode[c&(1<<n.distbits)-1],y=v>>>24,S=v>>>16&255,k=v&65535,!(y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if((S&240)===0){for(w=y,b=S,T=k;v=n.distcode[T+((c&(1<<w+b)-1)>>w)],y=v>>>24,S=v>>>16&255,k=v&65535,!(w+y<=l);){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}c>>>=w,l-=w,n.back+=w}if(c>>>=y,l-=y,n.back+=y,S&64){e.msg="invalid distance code",n.mode=pe;break}n.offset=k,n.extra=S&15,n.mode=zd;case zd:if(n.extra){for(C=n.extra;l<C;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}n.offset+=c&(1<<n.extra)-1,c>>>=n.extra,l-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=pe;break}n.mode=Nd;case Nd:if(u===0)break e;if(f=d-u,n.offset>f){if(f=n.offset-f,f>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=pe;break}f>n.wnext?(f-=n.wnext,_=n.wsize-f):_=n.wnext-f,f>n.length&&(f=n.length),p=n.window}else p=r,_=s-n.offset,f=n.length;f>u&&(f=u),u-=f,n.length-=f;do r[s++]=p[_++];while(--f);n.length===0&&(n.mode=$r);break;case Od:if(u===0)break e;r[s++]=n.length,u--,n.mode=$r;break;case mo:if(n.wrap){for(;l<32;){if(o===0)break e;o--,c|=i[a++]<<l,l+=8}if(d-=u,e.total_out+=d,n.total+=d,n.wrap&4&&d&&(e.adler=n.check=n.flags?Le(n.check,r,d,s-d):Bi(n.check,r,d,s-d)),d=u,n.wrap&4&&(n.flags?c:Pd(c))!==n.check){e.msg="incorrect data check",n.mode=pe;break}c=0,l=0}n.mode=Id;case Id:if(n.wrap&&n.flags){for(;l<32;){if(o===0)break e;o--,c+=i[a++]<<l,l+=8}if(n.wrap&4&&c!==(n.total&4294967295)){e.msg="incorrect length check",n.mode=pe;break}c=0,l=0}n.mode=Cd;case Cd:N=nS;break e;case pe:N=ym;break e;case Am:return wm;case Sm:default:return st}return e.next_out=s,e.avail_out=u,e.next_in=a,e.avail_in=o,n.hold=c,n.bits=l,(n.wsize||d!==e.avail_out&&n.mode<pe&&(n.mode<mo||t!==fd))&&Tm(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?Le(n.check,r,d,e.next_out-d):Bi(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===zt?128:0)+(n.mode===Kr||n.mode===lo?256:0),(m===0&&d===0||t===fd)&&N===yn&&(N=rS),N},fS=e=>{if(An(e))return st;let t=e.state;return t.window&&(t.window=null),e.state=null,yn},hS=(e,t)=>{if(An(e))return st;let n=e.state;return(n.wrap&2)===0?st:(n.head=t,t.done=!1,yn)},_S=(e,t)=>{let n=t.length,i,r,a;return An(e)||(i=e.state,i.wrap!==0&&i.mode!==Zr)?st:i.mode===Zr&&(r=1,r=Bi(r,t,n,0),r!==i.check)?ym:(a=Tm(e,t,n,n),a?(i.mode=Am,wm):(i.havedict=1,yn))},gS=Em,vS=bm,pS=km,yS=lS,wS=xm,AS=mS,SS=fS,kS=hS,ES=_S,bS="pako inflate (from Nodeca project)",Ot={inflateReset:gS,inflateReset2:vS,inflateResetKeep:pS,inflateInit:yS,inflateInit2:wS,inflate:AS,inflateEnd:SS,inflateGetHeader:kS,inflateSetDictionary:ES,inflateInfo:bS};function xS(){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 TS=xS,Mm=Object.prototype.toString,{Z_NO_FLUSH:MS,Z_FINISH:RS,Z_OK:Vi,Z_STREAM_END:_o,Z_NEED_DICT:go,Z_STREAM_ERROR:LS,Z_DATA_ERROR:Dd,Z_MEM_ERROR:zS}=wn;function Xi(e){this.options=ca.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 _m,this.strm.avail_out=0;let n=Ot.inflateInit2(this.strm,t.windowBits);if(n!==Vi)throw new Error(vn[n]);if(this.header=new TS,Ot.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Hi.string2buf(t.dictionary):Mm.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=Ot.inflateSetDictionary(this.strm,t.dictionary),n!==Vi)))throw new Error(vn[n])}Xi.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?RS:MS,Mm.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=Ot.inflate(n,s),a===go&&r&&(a=Ot.inflateSetDictionary(n,r),a===Vi?a=Ot.inflate(n,s):a===Dd&&(a=go));n.avail_in>0&&a===_o&&n.state.wrap>0&&e[n.next_in]!==0;)Ot.inflateReset(n),a=Ot.inflate(n,s);switch(a){case LS:case Dd:case go:case zS:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===_o))if(this.options.to==="string"){let u=Hi.utf8border(n.output,n.next_out),c=n.next_out-u,l=Hi.buf2string(n.output,u);n.next_out=c,n.avail_out=i-c,c&&n.output.set(n.output.subarray(u,u+c),0),this.onData(l)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(!(a===Vi&&o===0)){if(a===_o)return a=Ot.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Xi.prototype.onData=function(e){this.chunks.push(e)};Xi.prototype.onEnd=function(e){e===Vi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ca.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Fo(e,t){let n=new Xi(t);if(n.push(e),n.err)throw n.msg||vn[n.err];return n.result}function NS(e,t){return t=t||{},t.raw=!0,Fo(e,t)}var OS=Xi,IS=Fo,CS=NS,PS=Fo,FS=wn,DS={Inflate:OS,inflate:IS,inflateRaw:CS,ungzip:PS,constants:FS},{Deflate:US,deflate:BS,deflateRaw:GS,gzip:HS}=$A,{Inflate:VS,inflate:WS,inflateRaw:KS,ungzip:$S}=DS,XS=US,YS=BS,qS=GS,ZS=HS,jS=VS,JS=WS,QS=KS,e2=$S,t2=wn,Ud={Deflate:XS,deflate:YS,deflateRaw:qS,gzip:ZS,Inflate:jS,inflate:JS,inflateRaw:QS,ungzip:e2,constants:t2},jr=2023,Do=1,Uo=2,Bo=4,Go=8,Ho=16,Vo=32,Rm=64,n2=128,i2=256,Wo=512,Ko=1024,$o=2048,Jr=4096,Xo=8192,Qr=16384,r2=32768,ea=65536,Yo=1<<17,ta=1<<18,na=1<<19,qo=1<<20,Zo=1<<21,jo=1<<22,a2=1<<23,Jo=1<<24,ia=1<<25,Qo=1<<26,ec=1<<27,tc=1<<28,nc=1<<29,ic=1<<30,s2=-2147483648,rc=1,ac=2,sc=4,o2=1,c2=2,u2=128,Gn=()=>({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}),Bd=()=>({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}),oc=class Lm{constructor(t,n){this.protocolVersion=0,this.isDemo=o2,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)?ee.serverdata:this.protocolVersion===jr?t:this.protocolVersion===34||this.protocolVersion===25?t<=ee.frame?t:t===22?ee.playerinfo:t===23?ee.packetentities:ee.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 ee.bad:return;case ee.nop:break;case ee.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case ee.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case ee.print:this.parsePrint();break;case ee.serverdata:this.parseServerData();break;case ee.configstring:this.parseConfigString();break;case ee.spawnbaseline:this.parseSpawnBaseline();break;case ee.centerprint:this.parseCenterPrint();break;case ee.download:this.parseDownload();break;case ee.frame:this.parseFrame();break;case ee.packetentities:this.parsePacketEntities(!1);break;case ee.deltapacketentities:this.parsePacketEntities(!0);break;case ee.playerinfo:this.parsePlayerState();break;case ee.stufftext:this.parseStuffText();break;case ee.layout:this.parseLayout();break;case ee.inventory:this.parseInventory();break;case ee.sound:this.parseSound();break;case ee.muzzleflash:this.parseMuzzleFlash();break;case ee.muzzleflash2:this.parseMuzzleFlash2();break;case ee.temp_entity:this.parseTempEntity();break;case ee.splitclient:this.parseSplitClient();break;case ee.configblast:this.parseConfigBlast();break;case ee.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case ee.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case ee.damage:this.parseDamage();break;case ee.locprint:this.parseLocPrint();break;case ee.fog:this.parseFog();break;case ee.waitingforplayers:this.parseWaitingForPlayers();break;case ee.bot_chat:this.parseBotChat();break;case ee.poi:this.parsePoi();break;case ee.help_path:this.parseHelpPath();break;case ee.muzzleflash3:this.parseMuzzleFlash3();break;case ee.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===jr){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 u=0;u<o;u++)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=Ud.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new po(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=Ud.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new po(r.buffer),s=new Lm(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 u={x:0,y:0,z:0};this.stream.readPos(u),o=u}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,u=(r&64)!==0,c=(r&128)!==0;n.push({damage:s,health:o,armor:u,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,u,c;switch(t){case W.EXPLOSION1:case W.EXPLOSION2:case W.ROCKET_EXPLOSION:case W.GRENADE_EXPLOSION:case W.ROCKET_EXPLOSION_WATER:case W.GRENADE_EXPLOSION_WATER:case W.BFG_EXPLOSION:case W.BFG_BIGEXPLOSION:case W.BOSSTPORT:case W.PLASMA_EXPLOSION:case W.PLAIN_EXPLOSION:case W.CHAINFIST_SMOKE:case W.TRACKER_EXPLOSION:case W.TELEPORT_EFFECT:case W.DBALL_GOAL:case W.NUKEBLAST:case W.WIDOWSPLASH:case W.EXPLOSION1_BIG:case W.EXPLOSION1_NP:this.stream.readPos(n);break;case W.GUNSHOT:case W.BLOOD:case W.BLASTER:case W.SHOTGUN:case W.SPARKS:case W.BULLET_SPARKS:case W.SCREEN_SPARKS:case W.SHIELD_SPARKS:case W.BLASTER2:case W.FLECHETTE:case W.MOREBLOOD:case W.ELECTRIC_SPARKS:case W.HEATBEAM_SPARKS:case W.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case W.SPLASH:case W.LASER_SPARKS:case W.WELDING_SPARKS:case W.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case W.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case W.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case W.RAILTRAIL:case W.BUBBLETRAIL:case W.BFG_LASER:case W.DEBUGTRAIL:case W.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case W.PARASITE_ATTACK:case W.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case W.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case W.LIGHTNING:u=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case W.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case W.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case W.STEAM:let l=this.stream.readShort();a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte(),this.stream.readShort(),l!==-1&&this.stream.readLong();break;case W.WIDOWBEAMOUT:this.stream.readShort();case W.HEATBEAM:case W.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,u,c)}parseSpawnBaseline(){let t=this.parseEntityBits(),n=Gn();this.parseDelta(Gn(),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!==ee.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s} (translated)`);let o=this.parsePlayerState(),u=this.stream.readByte();if(u=this.translateCommand(u),u!==ee.packetentities)throw new Error(`Expected svc_packetentities after svc_playerinfo, got ${u} (translated)`);let c=this.collectPacketEntities();if(this.isDemo===u2){let l=this.stream.readByte();for(let m=0;m<l;m++)this.stream.readByte()}this.isDemo===c2&&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=Bd(),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:Bd(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Gn();this.parseDelta(Gn(),i,n.number,n.bits,n.bitsHigh),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&n2&&(t|=this.stream.readByte()<<8),t&r2&&(t|=this.stream.readByte()<<16),t&a2&&(t|=this.stream.readByte()<<24);let n=0;t&s2&&(n=this.stream.readByte());let i;return t&i2?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&$o&&(n.modelindex=this.stream.readByte()),r&qo&&(n.modelindex2=this.stream.readByte()),r&Zo&&(n.modelindex3=this.stream.readByte()),r&jo&&(n.modelindex4=this.stream.readByte()),r&Ho&&(n.frame=this.stream.readByte()),r&Yo&&(n.frame=this.stream.readShort()),r&ea&&r&ia?n.skinnum=this.stream.readLong():r&ea?n.skinnum=this.stream.readByte():r&ia&&(n.skinnum=this.stream.readShort()),r&Qr&&r&na?n.effects=this.stream.readLong():r&Qr?n.effects=this.stream.readByte():r&na&&(n.effects=this.stream.readShort()),r&Jr&&r&ta?n.renderfx=this.stream.readLong():r&Jr?n.renderfx=this.stream.readByte():r&ta&&(n.renderfx=this.stream.readShort()),r&Do&&(n.origin.x=this.stream.readCoord()),r&Uo&&(n.origin.y=this.stream.readCoord()),r&Wo&&(n.origin.z=this.stream.readCoord()),r&Ko&&(n.angles.x=this.stream.readAngle()),r&Bo&&(n.angles.y=this.stream.readAngle()),r&Go&&(n.angles.z=this.stream.readAngle()),r&Jo&&this.stream.readPos(n.old_origin),r&Qo&&(n.sound=this.stream.readByte()),r&Vo?n.event=this.stream.readByte():n.event=0,r&ec&&(n.solid=this.stream.readShort()),r&Xo&&(n.alpha=this.stream.readByte()/255),r&tc&&(n.scale=this.stream.readFloat()),r&nc&&(n.instanceBits=this.stream.readLong()),r&ic&&(n.loopVolume=this.stream.readByte()/255),a&rc&&(n.loopAttenuation=this.stream.readByte()/255),a&ac&&(n.owner=this.stream.readShort()),a&sc&&(n.oldFrame=this.stream.readShort())}},Yi=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(Yi||{}),zm=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 rw(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 oc(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 l2=Object.defineProperty,Nm=(e,t)=>{for(var n in t)l2(e,n,{get:t[n],enumerable:!0})},Zt={x:0,y:0,z:0};var xP=Math.PI/180;function la(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Om(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function jn(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Zi(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function d2(e){return Zi(e,e)}function kn(e){return Math.sqrt(d2(e))}function Im(e){let t=kn(e);return t===0?e:jn(e,1/t)}var Cm=0,Pm=1,Fm=2,m2=Math.PI/180,TP=180/Math.PI;function cc(e,t){switch(t){case Cm:return e.x;case Pm:return e.y;case Fm:default:return e.z}}function uc(e){return e*m2}function Zn(e){let t=e%360;return t<0?360+t:t}function ma(e){let t=uc(cc(e,Pm)),n=uc(cc(e,Cm)),i=uc(cc(e,Fm)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),l={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},d={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:l,right:m,up:d}}var qn=[[-.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 St=1,jt=2;var mc=8,fc=16,f2=32;var h2=16384;var fa=65536,Dm=1<<17,_2=1<<18,g2=1<<19,v2=1<<20,p2=1<<21,y2=1<<22,w2=1<<23,MP=1<<24,ha=1<<25,A2=1<<26,RP=1<<27,LP=1<<28,zP=1<<29,_a=1<<30,NP=1<<31;var OP=1<<25,IP=1<<28,CP=1<<29,PP=1<<30,FP=1<<31;var DP=St|jt,UP=St|fa|jt|ha|_a,BP=St|fa|jt,GP=St|Dm|jt|ha|_a,HP=f2|mc|fc,VP=St|fc|mc,S2=St|ha|_a|jt|A2,WP=_2|g2|v2|p2|y2|w2,KP=St|mc|fc|ha|_a,$P=St|fa|jt,XP=St|jt,YP=St|fa|jt|Dm,qP=S2|h2;var ZP=Number.MAX_SAFE_INTEGER-1;var ji=(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))(ji||{});var Um=256;var k2=256,Ji=8192,Qi=2048,er=512,E2=256,b2=Um*2,x2=256,lc=32;var ke=(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+Ji]="Sounds",e[e.Images=e.Sounds+Qi]="Images",e[e.Lights=e.Images+er]="Lights",e[e.ShadowLights=e.Lights+k2]="ShadowLights",e[e.Items=e.ShadowLights+x2]="Items",e[e.PlayerSkins=e.Items+E2]="PlayerSkins",e[e.General=e.PlayerSkins+Um]="General",e[e.WheelWeapons=e.General+b2]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+lc]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+lc]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+lc]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ke||{}),jP=ke.MaxConfigStrings;var T2={};Nm(T2,{addReplayFrame:()=>z2,createReplaySession:()=>L2,deserializeReplay:()=>R2,serializeReplay:()=>M2});function M2(e){return JSON.stringify(e,null,2)}function R2(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 L2(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function z2(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var tr=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(tr||{});var It=(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))(It||{});function Jn(e,t){return(e&t)!==0}var ga=(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))(ga||{}),kt=(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))(kt||{});function N2(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:u,pmWaterFriction:c}=e,l=kn(t);if(l<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=l<u?u:l;m+=_*o*n}s>0&&!a&&(m+=l*c*s*n);let d=l-m;if(d<0&&(d=0),d===l)return t;let f=d/l;return jn(t,f)}function O2(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Zi(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function I2(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=kn(a);if(s>r){let o=r/s;a=jn(a,o),s=r}return{wishdir:s===0?a:Im(a),wishspeed:s}}function C2(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=la(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=la(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=la(a,{x:0,y:0,z:-60}):a=la(a,{x:0,y:0,z:10});let s=kn(a);if(s>r){let o=r/s;a=jn(a,o),s=r}return s*=.5,{wishdir:s===0?a:Im(a),wishspeed:s}}function P2(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function F2(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function hc(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=P2(n,i),r={...r,x:F2(r.x)});let a=ma(r);return{viewangles:r,...a}}var Bm=200,Gm=200,Hm=200,Vm=140,Wm=150,Km=3;function D2(e){let t=Zn(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function $m(e,t){return{x:D2(e.x+t.x),y:Zn(e.y+t.y),z:Zn(e.z+t.z)}}function Xm(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 En=(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))(En||{});var Ym=64;var qm=0,Zm=1,jm=2,Jm=3,Qm=4,e0=5,t0=6,n0=7,i0=8;var r0=11,a0=12,s0=13;function U2(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,u=s>>>8&255;return(o&255)<<8|u}else return s&65535}function o0(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(U2(e,t,a)&o)>>>s}var nr=(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))(nr||{}),He=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(He||{}),c0=12,u0=9,JP=Math.ceil(c0*u0/16),l0=23,d0=2,QP=Math.ceil(l0*d0/16),B2={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 m0(e,t){return t<0||t>=c0?0:o0(e,34,t,u0)}function va(e,t){let n;return typeof t=="number"?n=t:n=B2[t],n===void 0||n<0||n>=l0?0:o0(e,41,n,d0)}function f0(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 ot=(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))(ot||{});var G2={};Nm(G2,{U_ANGLE1:()=>Y2,U_ANGLE2:()=>q2,U_ANGLE3:()=>Z2,U_EFFECTS:()=>Q2,U_EVENT:()=>n5,U_FRAME:()=>j2,U_MODEL:()=>V2,U_MODEL2:()=>r5,U_MODEL3:()=>a5,U_MODEL4:()=>s5,U_MOREBITS:()=>i5,U_NUMBER:()=>H2,U_ORIGIN1:()=>K2,U_ORIGIN2:()=>$2,U_ORIGIN3:()=>X2,U_REMOVE:()=>o5,U_RENDERFX:()=>e5,U_SKIN:()=>J2,U_SOLID:()=>t5,U_SOUND:()=>W2});var H2=1,V2=2,W2=4,K2=8,$2=16,X2=32,Y2=64,q2=128,Z2=256,j2=512,J2=1024,Q2=2048,e5=4096,t5=8192,n5=16384,i5=32768,r5=1,a5=2,s5=4,o5=32768,qi=.025,dc=33554432,da={None:0,Feet:1,Waist:2,Under:3},c5=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},u5=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&dc))return{...e,waterLevel:da.None};let s=da.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&dc){s=da.Waist;let c=e.origin.z+22;n.z=c,t(n)&dc&&(s=da.Under)}return{...e,waterLevel:s}},_c=(e,t,n,i)=>{let r={...e};r=c5(r,n),r=u5(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,l=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=ma(l),f=N2({velocity:s,frametime:qi,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=u>=2?C2({forward:m,right:d,cmd:t,maxSpeed:320}):I2({forward:m,right:d,cmd:t,maxSpeed:320}),p=O2({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||u>=2?10:1,frametime:qi}),v=n(a,{x:a.x+p.x*qi,y:a.y+p.y*qi,z:a.z+p.z*qi});return{...r,origin:v.endpos,velocity:p}},h0=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=qn[t];e.x=n[0],e.y=n[1],e.z=n[2]}},gc=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<qn.length;i++){let r=qn[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}},ir=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*qn[s][0]+t*qn[s][1]+n*qn[s][2];o>r&&(r=o,i=s)}}this.writeByte(i)}},Sn=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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new gc(De.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>De.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>De.FRAGMENT_SIZE&&(n=De.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=De.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>De.MAX_MSGLEN&&(o=De.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),l=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);l.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);l.set(_,f)}return l}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,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=De.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(l===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>De.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${De.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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>De.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>De.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>De.MAX_RELIABLE_BUFFER)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_RELIABLE_BUFFER)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}};Sn.MAX_MSGLEN=1400;Sn.FRAGMENT_SIZE=1024;Sn.PACKET_HEADER=10;Sn.HEADER_OVERHEAD=Sn.PACKET_HEADER+2;Sn.MAX_RELIABLE_BUFFER=262144;var _0=Sn;var g0=(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))(g0||{}),eF=Object.keys(g0).length/2;var pa=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],v0={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 l5=Object.defineProperty,d5=(e,t)=>{for(var n in t)l5(e,n,{get:t[n],enumerable:!0})},wa=null,ya=[1,1,1,1],p0=["ch1","ch2","ch3"],vc=[null,null,null],m5=e=>{for(let t=0;t<p0.length;t++){let n=p0[t];try{vc[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{vc[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
170
+ `)}}}wa=vc[0]},f5=(e,t,n)=>{if(wa){let i=e.Draw_GetPicSize(wa),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,wa,{x:ya[0],y:ya[1],z:ya[2]},ya[3])}},E0=new Map,h5=["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"],_5=e=>{for(let t of h5)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);E0.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
171
+ `)}},g5=new Map,v5=["d_left","d_right","d_up","d_down"],p5=e=>{for(let t of v5)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);g5.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
172
+ `)}},y5=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},y0=3e3,w0=5e3,A0=4,w5=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:y0}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:w0}),this.notifyMessages.length>A0&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:y0}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:w0}),this.notifyMessages.length>A0&&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}},A5=3e3,S5=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:A5}}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)}},k5=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},E5=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=E0.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)}},pc=(e,t,n,i,r,a,s)=>{let o=Math.abs(i).toString();for(let u=0;u<o.length;u++){let c=parseInt(o[u]),l=r[c];l&&(s?e.SCR_DrawColorPic(t+u*a,n,l,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+u*a,n,l))}},b5=(e,t,n,i,r,a)=>{let s=t.stats[He.STAT_HEALTH]||0,o=t.stats[He.STAT_ARMOR]||0,u=t.stats[He.STAT_AMMO]||0,c=t.stats[He.STAT_ARMOR_ICON]||0,l;if(s<=25&&(l=[1,0,0,1]),n.length>0&&(pc(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,l),pc(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),pc(e,a.AMMO_X,a.AMMO_Y,u,n,i)),c>0){let m=e.get_configstring(ke.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[He.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(ke.Images+m);if(d){let f=e.Draw_RegisterPic(d);f&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,f)}}}},yc=640,Qn=480,x5=(e,t)=>{let n=e/yc,i=t/Qn,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(Qn-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(Qn-450)*r,AMMO_X:e-(yc-540)*r,AMMO_Y:t-(Qn-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(Qn-450)*r,POWERUP_X:e-(yc-610)*r,POWERUP_Y:t-(Qn-450)*r,scale:r}},Me=null,Ec=[],b0=0,bc=new w5,x0=new S5;function T5(e){Me=e}function M5(){if(Me){Ec.length=0;for(let e=0;e<10;e++)try{let t=Me.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);Ec.push(t),e===0&&(b0=Me.Draw_GetPicSize(t).width)}catch{Me.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
173
+ `)}m5(Me),_5(Me),p5(Me)}}function R5(e,t,n,i,r,a,s){if(!Me){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=Me.CL_ClientTime(),u=x5(n.width,n.height);if(k5(Me,s,n.width,n.height),b5(Me,s,Ec,b0,o,u),E5(Me,s,n.width,n.height),y5(Me,s,n.width,n.height),s.centerPrint){let c=s.centerPrint.split(`
174
+ `),l=n.height/2-c.length*10;for(let m of c)Me.SCR_DrawCenterString(l,m),l+=16}bc.drawCenterPrint(Me,o,u),bc.drawNotifications(Me,o),x0.drawSubtitles(Me,o),f5(Me,n.width,n.height)}function Sa(){return bc}function L5(){return x0}function z5(e,t,n){t>=ke.Models&&t<ke.Models+Ji?e.RegisterModel(n):t>=ke.Sounds&&t<ke.Sounds+Qi?e.RegisterSound(n):t>=ke.Images&&t<ke.Images+er&&e.Draw_RegisterPic(n)}var wc=1e-6,Aa=typeof Float32Array<"u"?Float32Array:Array,S0=Math.random;function Ac(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var N5={};d5(N5,{add:()=>F5,angle:()=>sk,bezier:()=>J5,ceil:()=>D5,clone:()=>O5,copy:()=>C5,create:()=>T0,cross:()=>Y5,dist:()=>hk,distance:()=>N0,div:()=>fk,divide:()=>z0,dot:()=>Tc,equals:()=>lk,exactEquals:()=>uk,floor:()=>U5,forEach:()=>pk,fromValues:()=>I5,hermite:()=>j5,inverse:()=>$5,len:()=>gk,length:()=>M0,lerp:()=>q5,max:()=>G5,min:()=>B5,mul:()=>mk,multiply:()=>L0,negate:()=>K5,normalize:()=>X5,random:()=>Q5,rotateX:()=>ik,rotateY:()=>rk,rotateZ:()=>ak,round:()=>H5,scale:()=>V5,scaleAndAdd:()=>W5,set:()=>P5,slerp:()=>Z5,sqrDist:()=>_k,sqrLen:()=>vk,squaredDistance:()=>O0,squaredLength:()=>I0,str:()=>ck,sub:()=>dk,subtract:()=>R0,transformMat3:()=>tk,transformMat4:()=>ek,transformQuat:()=>nk,zero:()=>ok});function T0(){var e=new Aa(3);return Aa!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function O5(e){var t=new Aa(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function M0(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function I5(e,t,n){var i=new Aa(3);return i[0]=e,i[1]=t,i[2]=n,i}function C5(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function P5(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function F5(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function R0(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function L0(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function z0(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function D5(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function U5(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function B5(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 G5(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 H5(e,t){return e[0]=Ac(t[0]),e[1]=Ac(t[1]),e[2]=Ac(t[2]),e}function V5(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function W5(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 O0(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 I0(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function K5(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function $5(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function X5(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 Tc(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Y5(e,t,n){var i=t[0],r=t[1],a=t[2],s=n[0],o=n[1],u=n[2];return e[0]=r*u-a*o,e[1]=a*s-i*u,e[2]=i*o-r*s,e}function q5(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 Z5(e,t,n,i){var r=Math.acos(Math.min(Math.max(Tc(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 j5(e,t,n,i,r,a){var s=a*a,o=s*(2*a-3)+1,u=s*(a-2)+a,c=s*(a-1),l=s*(3-2*a);return e[0]=t[0]*o+n[0]*u+i[0]*c+r[0]*l,e[1]=t[1]*o+n[1]*u+i[1]*c+r[1]*l,e[2]=t[2]*o+n[2]*u+i[2]*c+r[2]*l,e}function J5(e,t,n,i,r,a){var s=1-a,o=s*s,u=a*a,c=o*s,l=3*a*o,m=3*u*s,d=u*a;return e[0]=t[0]*c+n[0]*l+i[0]*m+r[0]*d,e[1]=t[1]*c+n[1]*l+i[1]*m+r[1]*d,e[2]=t[2]*c+n[2]*l+i[2]*m+r[2]*d,e}function Q5(e,t){t=t===void 0?1:t;var n=S0()*2*Math.PI,i=S0()*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 ek(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 tk(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 nk(e,t,n){var i=n[0],r=n[1],a=n[2],s=n[3],o=t[0],u=t[1],c=t[2],l=r*c-a*u,m=a*o-i*c,d=i*u-r*o;return l=l+l,m=m+m,d=d+d,e[0]=o+s*l+r*d-a*m,e[1]=u+s*m+a*l-i*d,e[2]=c+s*d+i*m-r*l,e}function ik(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 rk(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 ak(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 sk(e,t){var n=e[0],i=e[1],r=e[2],a=t[0],s=t[1],o=t[2],u=Math.sqrt((n*n+i*i+r*r)*(a*a+s*s+o*o)),c=u&&Tc(e,t)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function ok(e){return e[0]=0,e[1]=0,e[2]=0,e}function ck(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function uk(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function lk(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)<=wc*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=wc*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=wc*Math.max(1,Math.abs(r),Math.abs(o))}var dk=R0,mk=L0,fk=z0,hk=N0,_k=O0,gk=M0,vk=I0,pk=(function(){var e=T0();return function(t,n,i,r,a,s){var o,u;for(n||(n=3),i||(i=0),r?u=Math.min(r*n+i,t.length):u=t.length,o=i;o<u;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 yk={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function wk(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 Ak(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function Sk(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Ak(t,i,r),s=e+a,u=Jn(n,It.Ducked)&&i?s*4:s;return{bobTime:s,bobCycle:Math.floor(u),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(u*Math.PI))}}var ka=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...yk,...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}=ma(hc({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??Zt}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=Jn(e.pmFlags,It.OnGround),s=Sk(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=Zi(e.velocity,n)*this.settings.runPitch,u=Zi(e.velocity,i),c=u<0?-1:1,m=Math.abs(u)*this.settings.runRoll;m>2&&(m=2),m*=c;let d=this.bobFracSin*this.settings.bobPitch*r,f=this.bobFracSin*this.settings.bobRoll*r;Jn(e.pmFlags,It.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 _=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),p=0,v=0,y=0,S=0,k=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=x*this.kick.pitch,v+=x*this.kick.roll,this.kick.origin&&(y+=x*this.kick.origin.x,S+=x*this.kick.origin.y,k+=x*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let w={x:o+p,y:0,z:m+v},b={x:y,y:S,z:_+k},T={angles:w,offset:wk(b),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=T,T}},kk={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Ek=800,Xe={x:0,y:0,z:0},bk=64;function Ct(){return{origin:Xe,velocity:Xe,viewAngles:Xe,onGround:!1,pmFlags:It.OnGround,pmType:ga.Normal,waterLevel:tr.None,gravity:Ek,deltaAngles:Xe,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:Xe,kick_origin:Xe,gunoffset:Xe,gunangles:Xe,gunindex:0,pm_time:0,pm_type:ga.Normal,pm_flags:It.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 Sc(e){return e?{...Ct(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Xe,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Ct()}function $e(e,t,n){return e+(t-e)*n}function kc(e,t,n){let i=Zn(t-e);return i>180&&(i-=360),Zn(e+i*n)}function bn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:$e(e.origin.x,t.origin.x,i),y:$e(e.origin.y,t.origin.y,i),z:$e(e.origin.z,t.origin.z,i)},velocity:{x:$e(e.velocity.x,t.velocity.x,i),y:$e(e.velocity.y,t.velocity.y,i),z:$e(e.velocity.z,t.velocity.z,i)},viewAngles:{x:kc(e.viewAngles.x,t.viewAngles.x,i),y:kc(e.viewAngles.y,t.viewAngles.y,i),z:kc(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:$e(e.damageAlpha,t.damageAlpha,i),blend:[$e(e.blend[0],t.blend[0],i),$e(e.blend[1],t.blend[1],i),$e(e.blend[2],t.blend[2],i),$e(e.blend[3],t.blend[3],i)],health:$e(e.health||0,t.health||0,i),armor:$e(e.armor||0,t.armor||0,i),ammo:$e(e.ammo||0,t.ammo||0,i)}}function k0(e,t,n,i,r){let a={forwardmove:t.forwardmove,sidemove:t.sidemove,upmove:t.upmove,buttons:t.buttons,angles:t.angles},s=_c(e,a,i,r),{viewangles:o}=hc({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Xe});return{...s,viewAngles:o}}var Ea=class{constructor(e,t,n={}){this.baseFrame={frame:0,timeMs:0,state:Ct()},this.commands=[],this.predicted=Ct(),this.predictionError=Xe,this.settings={...kk,...n},this.trace=e,this.pointContents=t,this.predicted=this.baseFrame.state??Ct()}setAuthoritative(e){let t=Sc(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=Sc(this.baseFrame.state);for(let a of i)r=k0(r,a,this.settings,this.trace,this.pointContents);n=r}if(n){let r=Om(n.origin,t.origin),a=kn(r);a>10?this.predictionError=Xe:a>.1?this.predictionError=r:this.predictionError=Xe}else this.predictionError=Xe;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=kn(this.predictionError);if(t>0){let n=t*10*e,i=Math.max(0,t-n)/t;this.predictionError=jn(this.predictionError,i)}}enqueueCommand(e){return this.commands.push(e),this.commands.length>bk&&this.commands.shift(),this.recompute()}getCommand(e){return this.commands.find(t=>t.sequence===e)}getPredictedState(){return this.predicted}recompute(){let e=Sc(this.baseFrame.state);for(let t of this.commands)e=k0(e,t,this.settings,this.trace,this.pointContents);return this.predicted=e,e}},Ee=null,xc=null;function xk(){if(!Ee){console.error("CGame Init: cgame imports not set");return}Ee.Com_Print(`===== CGame Initialization =====
175
+ `),T5(Ee),xc=Ee.Cvar_Get("cg_predict","1",0),Ee.Cvar_Get("cg_showmiss","0",0),Ee.Com_Print(`CGame initialized
176
+ `)}function Tk(){Ee&&Ee.Com_Print(`CGame shutdown
177
+ `),Ee=null}function Mk(e,t,n,i,r,a,s){R5(e,t,n,i,r,a,s)}function Rk(){M5()}function Lk(e){return 0}function zk(e){return e.stats[He.STAT_ACTIVE_WHEEL_WEAPON]??0}function Nk(e){let t=[],n=e.stats[He.STAT_WEAPONS_OWNED_1]||0,i=e.stats[He.STAT_WEAPONS_OWNED_2]||0,r=n|i<<16;for(let a=0;a<pa.length;a++)r&1<<a&&t.push(a);return t}function Ok(e,t){if(t<0||t>=pa.length)return 0;let n=pa[t],i=v0[n];return i===null?-1:m0(e.stats,i)}function Ik(e){let t=0,n=Object.values(nr);for(let i of n)va(e.stats,i)>0&&t++;return t}function Ck(e){return e.stats[He.STAT_HIT_MARKER]??0}function Pk(e){let t=e;if(!t||!t.s||!t.cmd||!Ee||xc&&xc.value===0)return;let n=(a,s,o,u)=>{let c={x:0,y:0,z:0};return Ee.PM_Trace(a,s,o||c,u||c)},i=a=>{let s={x:0,y:0,z:0};return Ee.PM_Trace(a,a,s,s).contents||0},r=_c(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 Fk(e,t){Ee&&z5(Ee,e,t)}function Dk(e,t,n){if(!Ee)return;Sa().setCenterPrint(e,Ee.CL_ClientTime())}function Uk(e,t,n){if(!Ee)return;Sa().addNotification(t,n,Ee.CL_ClientTime())}function Bk(e){Sa().clearNotifications()}function Gk(e){Sa().clearCenterPrint()}function Hk(e,t){if(!Ee)return;L5().addSubtitle(e,Ee.CL_ClientTime())}function Vk(e){return{x:0,y:0,z:0}}function Wk(e){return null}function C0(e){return Ee=e,{Init:xk,Shutdown:Tk,DrawHUD:Mk,TouchPics:Rk,LayoutFlags:Lk,GetActiveWeaponWheelWeapon:zk,GetOwnedWeaponWheelWeapons:Nk,GetWeaponWheelAmmoCount:Ok,GetPowerupWheelCount:Ik,GetHitMarkerDamage:Ck,Pmove:Pk,ParseConfigString:Fk,ParseCenterPrint:Dk,NotifyMessage:Uk,ShowSubtitle:Hk,ClearNotify:Bk,ClearCenterprint:Gk,GetMonsterFlashOffset:Vk,GetExtension:Wk}}function P0(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 u=e.host.cvars.get(a);return u||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 u=e.host.cvars.get(a);return u||(u=e.host.cvars.register({name:a,defaultValue:s,flags:o})),{get value(){return u.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 u=o,c=n.get(u);c&&r()?.drawPic(a,s,c)},SCR_DrawColorPic:(a,s,o,u,c)=>{let l=o,m=n.get(l);m&&r()?.drawPic(a,s,m,[u.x,u.y,u.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 u=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,u)=>e.engine.trace(a,s,o,u)}}var ei=null,Jt=0;var rr=!0,ar=["ch1","ch2","ch3"],ti=[null,null,null],F0=async(e,t)=>{for(let n=0;n<ar.length;n++){let i=ar[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);ti[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");ti[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}ei=ti[0]};var D0=()=>{if(rr?(Jt++,Jt>=ar.length&&(rr=!1,Jt=0)):(rr=!0,Jt=0),rr){if(ei=ti[Jt],!ei){let e=!1;for(let t=0;t<ar.length;t++){let n=(Jt+t)%ar.length;if(ti[n]){Jt=n,ei=ti[n],e=!0;break}}e||(ei=null)}}else ei=null;return rr?Jt:-1};var Kk=Object.defineProperty,$k=Object.getOwnPropertyNames,Ln=(e,t)=>function(){return e&&(t=(0,e[$k(e)[0]])(e=0)),t},Xk=(e,t)=>{for(var n in t)Kk(e,n,{get:t[n],enumerable:!0})};function _i(e){return{x:e.x,y:e.y,z:e.z}}function F(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.x,y:e.y-t.y,z:e.z-t.z}}function I(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Ga(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Yk(e){return Ga(e,e)}function Re(e){return Math.sqrt(Yk(e))}function G(e){let t=Re(e);return t===0?e:I(e,1/t)}function qk(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 Zk(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 ur(e,t){switch(t){case Ha:return e.x;case Va:return e.y;case nu:default:return e.z}}function La(e){return e*ih}function Dc(e){return e*rh}function Uc(e){let t=e%360;return t<0?360+t:t}function q(e){let t=La(ur(e,Va)),n=La(ur(e,Ha)),i=La(ur(e,nu)),r=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),u=Math.sin(i),c=Math.cos(i),l={x:o*a,y:o*r,z:-s},m={x:-u*s*a-c*-r,y:-u*s*r-c*a,z:-u*o},d={x:c*s*a-u*-r,y:c*s*r-u*a,z:c*o};return{forward:l,right:m,up:d}}function vr(e){let t=ur(e,Ha),n=ur(e,Va);if(t===0)return n===0?0:n>0?90:270;let i=Dc(Math.atan2(n,t));return i<0?i+360:i}function zn(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=Dc(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Dc(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}function pr(e){return new iu(e)}function jk(e){return JSON.stringify(e,null,2)}function Jk(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 Qk(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:u,pmWaterFriction:c}=e,l=Re(t);if(l<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let _=l<u?u:l;m+=_*o*n}s>0&&!a&&(m+=l*c*s*n);let d=l-m;if(d<0&&(d=0),d===l)return t;let f=d/l;return I(t,f)}function nE(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Ga(t,n),o=i-s;if(o<=0)return t;let u=r*a*i;return u>o&&(u=o),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}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=Re(a);if(s>r){let o=r/s;a=I(a,o),s=r}return{wishdir:s===0?a:G(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=F(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=F(a,{x:0,y:0,z:i.upmove}):Math.abs(i.forwardmove)<10&&Math.abs(i.sidemove)<10?a=F(a,{x:0,y:0,z:-60}):a=F(a,{x:0,y:0,z:10});let s=Re(a);if(s>r){let o=r/s;a=I(a,o),s=r}return s*=.5,{wishdir:s===0?a:G(a),wishspeed:s}}var U0,Mc,$,aE,sE,Ha,Va,nu,ih,rh,Rc,ct,B0,G0,H0,V0,ba,W0,iu,Ve,Pt,oE,xa,Ta,K0,cE,uE,$0,lE,sr,Lc,X0,Y0,q0,Z0,j0,J0,dE,nn,dr,mE,fE,hE,Mn,_E,gE,vE,pE,yE,wE,AE,SE,kE,EE,bE,xE,TE,ME,ru,RE,LE,rn,ah,zE,Bt,NE,OE,IE,CE,PE,FE,DE,Q0,zc,ef,tf,nf,rf,af,sf,of,Ma,Nc,UE,cf,uf,BE,se,Ae,sh,oh,ch,uh,lh,dh,mh,fh,hh,_h,oe,lf,df,mf,GE,ff,hf,HE,VE,li,_f,gf,vf,pf,yf,wf,Af,Sf,kf,Ef,bf,xf,Tf,Mf,Rf,Lf,zf,Nf,Of,If,Cf,ni,Ra,or,Pf,Ff,WE,Df,xn,K,P,KE,ge,$E,Uf,XE,YE,B=Ln({"../shared/dist/esm/index.js"(){"use strict";U0=Object.defineProperty,Mc=(e,t)=>{for(var n in t)U0(e,n,{get:t[n],enumerable:!0})},$={x:0,y:0,z:0},aE=.1,sE=Math.PI/180,Ha=0,Va=1,nu=2,ih=Math.PI/180,rh=180/Math.PI,Rc=[[-.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]],ct=624,B0=397,G0=2567483615,H0=2147483648,V0=2147483647,ba=4294967296,W0=class{constructor(e=5489){this.state=new Uint32Array(ct),this.index=ct,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<ct;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=ct}nextUint32(){this.index>=ct&&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<ct;e++){let t=this.state[e]&H0|this.state[(e+1)%ct]&V0,n=this.state[(e+B0)%ct]^t>>>1;(t&1)!==0&&(n^=G0),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==ct)throw new Error(`Expected ${ct} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},iu=class{constructor(e={}){this.mt=new W0(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/ba}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=ba-ba%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)}},Ve=1,Pt=2,oE=4,xa=8,Ta=16,K0=32,cE=64,uE=8192,$0=16384,lE=32768,sr=65536,Lc=1<<17,X0=1<<18,Y0=1<<19,q0=1<<20,Z0=1<<21,j0=1<<22,J0=1<<23,dE=1<<24,nn=1<<25,dr=1<<26,mE=1<<27,fE=1<<28,hE=1<<29,Mn=1<<30,_E=1<<31,gE=1,vE=2,pE=4,yE=8,wE=16,AE=32,SE=64,kE=128,EE=1<<25,bE=1<<28,xE=1<<29,TE=1<<30,ME=1<<31,ru=Ve|Pt,RE=Ve|sr|Pt|nn|Mn,LE=Ve|sr|Pt,rn=Ve|Lc|Pt|nn|Mn,ah=K0|xa|Ta,zE=Ve|Ta|xa,Bt=Ve|nn|Mn|Pt|dr,NE=X0|Y0|q0|Z0|j0|J0,OE=Ve|xa|Ta|nn|Mn,IE=Ve|sr|Pt,CE=Ve|Pt,PE=Ve|sr|Pt|Lc,FE=Bt|$0,DE=Number.MAX_SAFE_INTEGER-1,Q0=(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))(Q0||{}),zc=256,ef=256,tf=8192,nf=2048,rf=512,af=256,sf=zc*2,of=256,Ma=32,Nc=(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+tf]="Sounds",e[e.Images=e.Sounds+nf]="Images",e[e.Lights=e.Images+rf]="Lights",e[e.ShadowLights=e.Lights+ef]="ShadowLights",e[e.Items=e.ShadowLights+of]="Items",e[e.PlayerSkins=e.Items+af]="PlayerSkins",e[e.General=e.PlayerSkins+zc]="General",e[e.WheelWeapons=e.General+sf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Ma]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Ma]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Ma]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Nc||{}),UE=Nc.MaxConfigStrings,cf={},Mc(cf,{addReplayFrame:()=>eE,createReplaySession:()=>Qk,deserializeReplay:()=>Jk,serializeReplay:()=>jk}),uf=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(uf||{}),BE=1080,se=(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))(se||{}),Ae=(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))(Ae||{}),sh=0,oh=1,ch=2,uh=3,lh=6,dh=7,mh=8,fh=11,hh=12,_h=13,oe=(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))(oe||{}),lf=(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))(lf||{}),df=12,mf=9,GE=Math.ceil(df*mf/16),ff=23,hf=2,HE=Math.ceil(ff*hf/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},li=(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))(li||{}),_f={},Mc(_f,{U_ANGLE1:()=>Sf,U_ANGLE2:()=>kf,U_ANGLE3:()=>Ef,U_EFFECTS:()=>Tf,U_EVENT:()=>Lf,U_FRAME:()=>bf,U_MODEL:()=>vf,U_MODEL2:()=>Nf,U_MODEL3:()=>Of,U_MODEL4:()=>If,U_MOREBITS:()=>zf,U_NUMBER:()=>gf,U_ORIGIN1:()=>yf,U_ORIGIN2:()=>wf,U_ORIGIN3:()=>Af,U_REMOVE:()=>Cf,U_RENDERFX:()=>Mf,U_SKIN:()=>xf,U_SOLID:()=>Rf,U_SOUND:()=>pf}),gf=1,vf=2,pf=4,yf=8,wf=16,Af=32,Sf=64,kf=128,Ef=256,bf=512,xf=1024,Tf=2048,Mf=4096,Rf=8192,Lf=16384,zf=32768,Nf=1,Of=2,If=4,Cf=32768,ni=.025,Ra=33554432,or={None:0,Feet:1,Waist:2,Under:3},Pf=(e,t)=>{let n={...e.origin};n.z-=.25;let i=t(e.origin,n);return{...e,onGround:i.fraction<1}},Ff=(e,t)=>{let n={...e.origin},{mins:i,maxs:r}=e;if(n.z=e.origin.z+i.z+1,!(t(n)&Ra))return{...e,waterLevel:or.None};let s=or.Feet,o=e.origin.z+(i.z+r.z)*.5;if(n.z=o,t(n)&Ra){s=or.Waist;let c=e.origin.z+22;n.z=c,t(n)&Ra&&(s=or.Under)}return{...e,waterLevel:s}},WE=(e,t,n,i)=>{let r={...e};r=Pf(r,n),r=Ff(r,i);let{origin:a,velocity:s,onGround:o,waterLevel:u,viewAngles:c}=r,l=u>=2?c:{x:c.x>180?(c.x-360)/3:c.x/3,y:c.y,z:c.z},{forward:m,right:d}=q(l),f=tE({velocity:s,frametime:ni,onGround:o,groundIsSlick:!1,onLadder:!1,waterlevel:u,pmFriction:6,pmStopSpeed:100,pmWaterFriction:1}),_=u>=2?rE({forward:m,right:d,cmd:t,maxSpeed:320}):iE({forward:m,right:d,cmd:t,maxSpeed:320}),p=nE({velocity:f,wishdir:_.wishdir,wishspeed:_.wishspeed,accel:o||u>=2?10:1,frametime:ni}),v=n(a,{x:a.x+p.x*ni,y:a.y+p.y*ni,z:a.z+p.z*ni});return{...r,origin:v.endpos,velocity:p}},Df=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<Rc.length;i++){let r=Rc[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}},xn=class Ue{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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=0,this.lastSent=0,this.remoteAddress=null,this.reliableMessage=new Df(Ue.MAX_RELIABLE_BUFFER);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.fragmentSendOffset=0,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0,this.lastReceived=Date.now(),this.lastSent=Date.now()}transmit(t){this.outgoingSequence++,this.lastSent=Date.now();let n=0,i=!1,r=0;this.reliableLength>0&&(this.reliableLength>Ue.FRAGMENT_SIZE?(i=!0,this.fragmentSendOffset>=this.reliableLength&&(this.fragmentSendOffset=0),n=this.reliableLength-this.fragmentSendOffset,n>Ue.FRAGMENT_SIZE&&(n=Ue.FRAGMENT_SIZE),r=this.fragmentSendOffset,this.fragmentSendOffset+=n):n=this.reliableLength);let a=Ue.PACKET_HEADER,s=n>0?2+(i?8:0):0,o=t?t.length:0;a+s+n+o>Ue.MAX_MSGLEN&&(o=Ue.MAX_MSGLEN-a-s-n,o<0&&(o=0));let u=new ArrayBuffer(a+s+n+o),c=new DataView(u),l=new Uint8Array(u),m=this.outgoingSequence;n>0&&(m|=2147483648,(this.outgoingReliableSequence&1)!==0&&(m|=1073741824)),c.setUint32(0,m,!0);let d=this.incomingSequence;(this.incomingReliableSequence&1)!==0&&(d|=2147483648),c.setUint32(4,d,!0),c.setUint16(8,this.qport,!0);let f=a;if(n>0){let _=n;i&&(_|=32768),c.setUint16(f,_,!0),f+=2,i&&(c.setUint32(f,r,!0),f+=4,c.setUint32(f,this.reliableLength,!0),f+=4);let v=this.reliableMessage.getBuffer().subarray(r,r+n);l.set(v,f),f+=n}if(t&&o>0){let _=t.slice(0,o);l.set(_,f)}return l}process(t){if(t.length<Ue.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,u=(r&2147483648)!==0;if(o>this.incomingAcknowledged&&(this.incomingAcknowledged=o),this.reliableLength>0){let _=u?1:0,p=this.outgoingReliableSequence&1;_!==p&&(this.reliableLength=0,this.reliableMessage.reset(),this.outgoingReliableSequence^=1,this.fragmentSendOffset=0)}let c=(i&2147483648)!==0,l=(i&1073741824)!==0?1:0,m=Ue.PACKET_HEADER,d=null;if(c){if(m+2>t.byteLength)return null;let _=n.getUint16(m,!0);m+=2;let p=(_&32768)!==0;_&=32767;let v=this.incomingReliableSequence&1;if(l===v)if(p){if(m+8>t.byteLength)return null;let y=n.getUint32(m,!0);m+=4;let S=n.getUint32(m,!0);if(m+=4,S>Ue.MAX_RELIABLE_BUFFER)return console.warn(`NetChan: received invalid fragment total ${S} > ${Ue.MAX_RELIABLE_BUFFER}`),null;if((!this.fragmentBuffer||this.fragmentBuffer.length!==S)&&(this.fragmentBuffer=new Uint8Array(S),this.fragmentLength=S,this.fragmentReceived=0),m+_>t.byteLength)return null;let k=t.subarray(m,m+_);y===this.fragmentReceived&&y+_<=S&&(this.fragmentBuffer.set(k,y),this.fragmentReceived+=_,this.fragmentReceived>=S&&(d=this.fragmentBuffer,this.incomingReliableSequence++,this.fragmentBuffer=null,this.fragmentLength=0,this.fragmentReceived=0))}else{if(this.incomingReliableSequence++,m+_>t.byteLength)return null;d=t.slice(m,m+_)}m+=_}let f=t.slice(m);if(d&&d.length>0){let _=d.length+f.length,p=new Uint8Array(_);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>Ue.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeByte(t),this.reliableLength++}writeReliableShort(t){if(this.reliableLength+2>Ue.MAX_RELIABLE_BUFFER)throw new Error("NetChan reliable buffer overflow");this.reliableMessage.writeShort(t),this.reliableLength+=2}writeReliableLong(t){if(this.reliableLength+4>Ue.MAX_RELIABLE_BUFFER)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>Ue.MAX_RELIABLE_BUFFER)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}},xn.MAX_MSGLEN=1400,xn.FRAGMENT_SIZE=1024,xn.PACKET_HEADER=10,xn.HEADER_OVERHEAD=xn.PACKET_HEADER+2,xn.MAX_RELIABLE_BUFFER=262144,K=(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))(K||{}),P=(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))(P||{}),KE=Object.keys(P).length/2,ge=(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))(ge||{}),$E=["blaster","shotgun","supershotgun","machinegun","chaingun","grenadelauncher","rocketlauncher","grenades","hyperblaster","railgun","bfg10k"],Uf=(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))(Uf||{}),XE=1,YE=2}});var qE,Nn=Ln({"src/inventory/ammo.ts"(){"use strict";B(),qE={[ge.Shells]:{id:ge.Shells,ammoType:P.Shells,quantity:10,weaponAmmo:!1},[ge.Bullets]:{id:ge.Bullets,ammoType:P.Bullets,quantity:50,weaponAmmo:!1},[ge.Rockets]:{id:ge.Rockets,ammoType:P.Rockets,quantity:5,weaponAmmo:!1},[ge.Grenades]:{id:ge.Grenades,ammoType:P.Grenades,quantity:5,weaponAmmo:!0},[ge.Cells]:{id:ge.Cells,ammoType:P.Cells,quantity:50,weaponAmmo:!1},[ge.Slugs]:{id:ge.Slugs,ammoType:P.Slugs,quantity:10,weaponAmmo:!1},[ge.MagSlugs]:{id:ge.MagSlugs,ammoType:P.MagSlugs,quantity:10,weaponAmmo:!1},[ge.Flechettes]:{id:ge.Flechettes,ammoType:P.Flechettes,quantity:50,weaponAmmo:!1},[ge.Disruptor]:{id:ge.Disruptor,ammoType:P.Disruptor,quantity:15,weaponAmmo:!1},[ge.Tesla]:{id:ge.Tesla,ammoType:P.Tesla,quantity:5,weaponAmmo:!1},[ge.Trap]:{id:ge.Trap,ammoType:P.Trap,quantity:5,weaponAmmo:!1},[ge.Prox]:{id:ge.Prox,ammoType:P.Prox,quantity:5,weaponAmmo:!1}}}});function an(e,t){return(e&t)!==0}var Bf,gh=Ln({"src/combat/damageFlags.ts"(){"use strict";Bf=(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))(Bf||{})}});function ZE(e,t,n){if(e<=0||an(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=vh[n.armorType],r=an(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 jE(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(an(t,258))return{saved:0,remainingCells:r.cellCount};if(!r.type||r.cellCount<=0)return{saved:0,remainingCells:r.cellCount};let{forward:s}=q(r.angles),o={x:n.x-r.origin.x,y:n.y-r.origin.y,z:n.z-r.origin.z},u=Math.hypot(o.x,o.y,o.z);if(r.type==="screen"&&u>0){let v={x:o.x/u,y:o.y/u,z:o.z/u};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,l=r.type==="screen"||c?1:2,m=r.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let d=r.cellCount*l;an(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let f=d/l;an(t,4)&&(f*=2),f=Math.max(1,Math.floor(f));let _=Math.max(l,f),p=Math.max(0,r.cellCount-_);return{saved:d,remainingCells:p}}var Rn,vh,ph=Ln({"src/combat/armor.ts"(){"use strict";B(),gh(),Rn=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(Rn||{}),vh={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 yh(e,t){return e.ownedWeapons.has(t)?(e.currentWeapon=t,!0):!1}var Te,un=Ln({"src/inventory/playerInventory.ts"(){"use strict";Nn(),B(),ph(),Te=(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))(Te||{})}});function wh(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var Gf,Ah=Ln({"src/combat/weapons/state.ts"(){"use strict";Gf=(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))(Gf||{})}}),Sh={};Xk(Sh,{ChangeWeapon:()=>QE,NoAmmoWeaponChange:()=>eb,setInstantSwitch:()=>JE,switchToBestWeapon:()=>kh});function JE(e){Wa=e}function QE(e,t){if(!e.client)return;let n=e.client;if(n.weaponstate!==2&&t){if(yh(n.inventory,t),n.weaponstate=1,n.gun_frame=0,Wa){n.weaponstate=0,n.weapon_think_time=0;return}n.weapon_think_time=0}}function eb(e){e.client&&kh(e)}function kh(e){if(!e.client)return;let t=e.client.inventory,n=null;t.ownedWeapons.has(K.BFG10K)&&t.ammo.counts[P.Cells]>=50?n=K.BFG10K:t.ownedWeapons.has(K.RocketLauncher)&&t.ammo.counts[P.Rockets]>=1?n=K.RocketLauncher:t.ownedWeapons.has(K.Railgun)&&t.ammo.counts[P.Slugs]>=1?n=K.Railgun:t.ownedWeapons.has(K.Chaingun)&&t.ammo.counts[P.Bullets]>=1?n=K.Chaingun:t.ownedWeapons.has(K.SuperShotgun)&&t.ammo.counts[P.Shells]>=2?n=K.SuperShotgun:t.ownedWeapons.has(K.Machinegun)&&t.ammo.counts[P.Bullets]>=1?n=K.Machinegun:t.ownedWeapons.has(K.Shotgun)&&t.ammo.counts[P.Shells]>=1?n=K.Shotgun:n=K.Blaster,n&&n!==t.currentWeapon&&(yh(t,n),e.client.weaponstate=1,e.client.gun_frame=0,Wa&&(e.client.weaponstate=0),e.client.weapon_think_time=0)}var Wa,tb=Ln({"src/combat/weapons/switching.ts"(){"use strict";un(),Nn(),Wa=!1}});B();un();Nn();var nb={...$};var fF=Object.freeze({aiflags:0,last_sighting:nb,trail_time:0,pausetime:0});var au=[{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}];B();B();B();B();var ib=20,rb=440,ab=940,Oc=32,sb=1<<24,Ia=1;var Eh=(e=>(e[e.Straight=0]="Straight",e[e.Sliding=1]="Sliding",e[e.Melee=2]="Melee",e[e.Missile=3]="Missile",e[e.Blind=4]="Blind",e))(Eh||{}),su=Eh;B();B();function Hf(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 ln(e,t){let n=Hf(e),i=Hf(t),r=Zk(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function ob(e){return e<=ib?"melee":e<=rb?"near":e<=ab?"mid":"far"}function mr(e,t){let{forward:n}=q(e.angles),i=G(D(t.origin,e.origin)),r=Ga(i,n);return(e.spawnflags&Ia)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function dn(e,t,n,i){if((t.flags&sb)!==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}B();function cb(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=vr(n)}function bh(e){e.angles.y=Uc(e.ideal_yaw)}function ub(e,t,n){e.enemy&&(e.goalentity=e.enemy,cb(e,e.enemy),bh(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function lb(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){ub(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 db(e,t,n,i){let r=ln(e,t),a=ob(r);return a==="far"||t.light_level<=5||!dn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||mr(e,t):a==="mid"?mr(e,t):!0}function mb(e,t,n,i,r){if((e.spawnflags&Ia)!==0){if(!dn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=D(t.origin,e.origin);return Re(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=vr(a),bh(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function fb(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Ia)===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&Ia)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function hb(e){return(e.flags&Oc)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&Oc)!==0:!!(e.enemy&&(e.enemy.flags&Oc)!==0)}function ou(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}=fb(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(hb(a))return!1;if(s){if(!mb(e,a,t,r,i))return!1}else{if(!db(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return lb(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}var Ic=18;function xh(e,t){if(t===0)return{x:0,y:0,z:0};let n=La(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Ka(e,t,n){let i=xh(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function gi(e,t){let n=Uc(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=Uc(n+a)}function g(e,t){Ka(e,e.angles.y,t)}function $a(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=vr(n)}function M(e,t,n){ou(e,n.targetAwareness,n,n.trace)||gi(e,t)}function L(e,t,n,i){if(!ou(e,i.targetAwareness,i,i.trace)&&($a(e,e.goalentity),gi(e,n),t!==0&&Ka(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&ln(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 ue(e,t,n){t!==0&&Ka(e,e.angles.y,t),(e.monsterinfo.aiflags&32768)===0&&gi(e,n)}function le(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}ou(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&$a(e,e.enemy??e.goalentity),gi(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Th(e,e.angles.y,t,i)}function _b(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&$a(e,t),gi(e,i),n!==0&&Ka(e,e.angles.y,n)}function me(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&$a(e,e.enemy),gi(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&Th(e,e.angles.y,t,i)}function Vf(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,rn);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&ah?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function Wf(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,rn).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,rn).fraction<1))return!0;return!1}function Th(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=xh(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,rn).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&&!Wf(e,i)?(e.origin.x=v.x,e.origin.y=v.y,e.origin.z=v.z,!1):((e.flags&3)===0&&Vf(e,i),!0)}if((e.flags&3)!==0)return!1;let o={...e.origin},u={...e.origin,z:e.origin.z+Ic},c=i.trace(e.origin,e.mins,e.maxs,u,e,rn);if(c.startsolid||c.allsolid)return!1;let l={x:u.x+r.x,y:u.y+r.y,z:u.z};if(i.trace(u,e.mins,e.maxs,l,e,rn).fraction<1)return!1;let d={x:l.x,y:l.y,z:l.z-Ic},f={x:d.x,y:d.y,z:d.z-Ic},_=i.trace(l,e.mins,e.maxs,d,e,rn);if(_.startsolid||_.allsolid)return!1;let p=_.endpos;return e.origin.x=p.x,e.origin.y=p.y,e.origin.z=p.z,Wf(e,i)?(Vf(e,i),!0):(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1)}B();B();var gb=au.filter(e=>e.save||e.type==="callback"),hF=new Map(gb.map(e=>[e.name,e]));B();B();ph();gh();B();function vb(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 pb(e,t,n,i,r){if(an(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=G(n),c=I(o,(t===e?1600:500)*i/s);return e.velocity=F(e.velocity,c),c}function yb(e,t,n,i,r){let a=i,s=0,o=0,u,c;if(e.powerArmor){let l=jE(i,r,t,n,e.powerArmor);s=l.saved,u=l.remainingCells,a-=s}if(e.regularArmor){let l=ZE(a,r,e.regularArmor);o=l.saved,c=l.remainingArmor,a-=o}return[Math.max(0,a),s,o,u,c]}function Kf(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,u,c,l,m){if(!e.takedamage)return null;let d=vb(n,l),f=s*d,_=o*d;if(!an(u,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=pb(e,n,i,_,u),[y,S,k,w,b]=yb(e,r,a,f,u);e.monsterinfo&&e.monsterinfo.freeze_time>l&&f>0&&(y=e.health+100,S=0,k=0),e.powerArmor&&w!==void 0&&(e.powerArmor.cellCount=w),e.regularArmor&&(e.regularArmor.armorCount=b??e.regularArmor.armorCount);let T=y;T>0&&(e.health-=T,m&&!an(u,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,se.temp_entity,Ae.BLOOD,r,a));let x=e.health<=0;return x?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:S,asave:k,knocked:v,killed:x,remainingCells:w,remainingArmor:b}}function cu(e,t,n,i,r,a,s,o,u,c={},l){let m=[],d=Kf(t),f=c.canDamage??(()=>!0);for(let _ of e){if(_===r||!_.takedamage||!f(_,t))continue;let p=_.mins&&_.maxs?qk(d,F(_.origin,_.mins),F(_.origin,_.maxs)):Kf(_),v=D(d,p),y=Re(v);if(a>0&&y>a)continue;let S=i-.5*y;if(S<=0)continue;let k=_===n?S*.5:S,w=G(D(_.origin,d)),b=fe(_,t,n,w,p,w,k,k,s|1,o,u,l);m.push({target:_,result:b,appliedDamage:k})}return m}var _F=pr();B();B();B();function Mh(e,t,n,i,r,a,s,o=0){let u=e.spawn();u.classname="rocket",u.movetype=8,u.solid=2,u.owner=t,u.origin={...n},u.velocity={x:i.x*s,y:i.y*s,z:i.z*s},u.mins={x:-4,y:-4,z:-4},u.maxs={x:4,y:4,z:4},u.touch=(c,l,m,d)=>{if(l===c.owner)return;l&&l.takedamage&&fe(l,c,c.owner,c.velocity,c.origin,m?m.normal:$,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let f=e.findByRadius(c.origin,120);cu(f,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,Ae.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(u)}function Xa(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 u=c=>{let l=e.findByRadius(c.origin,120);cu(l,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,se.temp_entity,Ae.GRENADE_EXPLOSION,c.origin),e.free(c)};o.touch=(c,l,m,d)=>{if(l!==c.owner){if(l&&l.takedamage){u(c);return}c.groundentity||e.sound(c,0,"weapons/grenlb1b.wav",1,1,0)}},o.think=c=>{u(c)},e.scheduleThink(o,e.timeSeconds+s),e.finalizeSpawn(o)}function yr(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=(u,c,l,m)=>{if(c!==u.owner){if(c&&c.takedamage)fe(c,u,u.owner,u.velocity,u.origin,l?l.normal:$,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(l){let d=Ae.BLASTER;s===58&&(d=Ae.BLUEHYPERBLASTER),e.multicast(u.origin,1,se.temp_entity,d,u.origin,l.normal)}e.free(u)}},e.finalizeSpawn(o),o}function wb(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,u,c,l)=>{if(u!==o.owner){if(u&&u.takedamage){fe(u,o,o.owner,o.velocity,o.origin,c?c.normal:$,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,se.temp_entity,Ae.WELDING_SPARKS,o.origin,$,228),e.free(o);return}e.sound(o,0,"weapons/ripphit.wav",1,1,0),c&&e.multicast(o.origin,1,se.temp_entity,Ae.WELDING_SPARKS,o.origin,c.normal,228)}},s.think=o=>{e.multicast(o.origin,1,se.temp_entity,Ae.WELDING_SPARKS,o.origin,$,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function Ab(e,t,n,i,r,a){yr(e,t,n,i,r,a,58)}function Sb(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=G(D(a,r)),o={x:r.x+s.x*2048,y:r.y+s.y*2048,z:r.z+s.z*2048},u=16,c=[],l=[],m={...r};try{for(let f=0;f<u;f++){let _=e.trace(m,null,null,o,t,Ve|nn|Mn|dr);if(!_.ent||_.fraction>=1||(_.ent.takedamage&&_.ent!==t.owner&&fe(_.ent,t,t.owner,s,_.endpos,$,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(_.ent.svflags&4)&&!_.ent.client&&_.ent.classname!=="misc_explobox"))break;c.push(_.ent),l.push(_.ent.solid),_.ent.solid=0,m={..._.endpos}}let d=e.trace(r,null,null,o,t,Ve);e.multicast(t.origin,2,se.temp_entity,Ae.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=l[d]}}function kb(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,ru).fraction<1||Sb(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function Eb(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=D(e.origin,r),s=Re(a),o=e.dmg_radius||100,u=(e.radius_dmg||200)*(1-Math.sqrt(s/o));u>0&&fe(i,e,e.owner,e.velocity,r,$,Math.floor(u),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 Rh(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=(u,c,l,m)=>{if(c===u.owner)return;c&&c.takedamage&&fe(c,u,u.owner,u.velocity,u.origin,l?l.normal:$,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(u.origin,100);cu(d,u,u.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,se.temp_entity,Ae.BFG_BIGEXPLOSION,u.origin),u.solid=0,u.touch=void 0,u.velocity=$,u.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),u.frame=0,u.enemy=c,u.think=(f,_)=>Eb(f,_),e.scheduleThink(u,e.timeSeconds+.1)},o.think=(u,c)=>kb(u,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function bb(e,t,n,i,r,a){let s=e.spawn();s.classname="flechette",s.owner=t,s.origin={...n},s.velocity={x:i.x*a,y:i.y*a,z:i.z*a},s.movetype=8,s.solid=2,s.modelindex=e.modelIndex("models/objects/projectile/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.angles=zn(i),s.touch=(o,u,c,l)=>{if(u!==o.owner){if(u&&u.takedamage){if(fe(u,o,o.owner,o.velocity,o.origin,c?c.normal:$,r,1,0,43,e.timeSeconds,e.multicast?e.multicast.bind(e):void 0),u.monsterinfo){let m=e.timeSeconds||0;u.monsterinfo.freeze_time=m+3}e.free(o);return}c&&e.multicast(o.origin,1,se.temp_entity,Ae.SPARKS,o.origin,c.normal),e.free(o)}},e.finalizeSpawn(s)}B();var gF=1/40;Nn();un();Ah();un();var xb=1;un();Ah();un();Nn();B();B();var Tb=22;function xt(e,t,n,i,r,a){let s=_i(t.origin),o={...s,z:s.z+(t.viewheight??Tb)},u=I(i,n.x),c=I(r,n.y),l=I(a,n.z),m=F(F(F(o,u),c),l),d=e.trace(o,null,null,m,t,ru);return d.fraction<1?{x:d.endpos.x-i.x,y:d.endpos.y-i.y,z:d.endpos.z-i.z}:m}var Mb=7,Rb=18,Lb=36,zb=39,Nb=5,Ob=28,Ib=52,Cb=57,Pb=3,Fb=23,Db=52,Ub=61,Bb=4,Gb=21,Hb=52,Vb=61,Wb=3,Kb=18,$b=51,Xb=56,Yb=3,qb=12,Zb=34,jb=38,Jb=5,Qb=9,ex=28,tx=32,nx=8,ix=32,rx=54,ax=58,sx=5,ox=16,cx=36,ux=39,lx=4,dx=8,mx=52,fx=55;var hx=46,_x=53;var gx=109,vx=117;var px=1;var sn=pr();function Tt(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 Mt(e){if(!e.client)return;let t=(e.client.pm_flags&2)!==0;e.client.anim_priority=px,t?(e.frame=gx-1,e.client.anim_end=vx):(e.frame=hx-1,e.client.anim_end=_x)}function Lh(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},u=e.trace(n,null,null,o,t,0);u.ent&&u.ent.takedamage?fe(u.ent,t,t,$,u.endpos,u.plane?u.plane.normal:$,r,a,16,s,e.time,e.multicast):u.plane&&e.multicast(u.endpos,1,se.temp_entity,Ae.GUNSHOT,u.endpos,u.plane.normal)}function Bc(e,t,n,i,r,a,s,o,u,c,l,m){for(let d=0;d<s;d++){let f=F(I(r,sn.crandom()*c),I(a,sn.crandom()*l)),_=F(i,f),p={x:n.x+_.x*8192,y:n.y+_.y*8192,z:n.z+_.z*8192},v=e.trace(n,null,null,p,t,0);v.ent&&v.ent.takedamage?fe(v.ent,t,t,$,v.endpos,v.plane?v.plane.normal:$,o,u,16,m,e.time,e.multicast):v.plane&&sn.frandom()>.9&&e.multicast(v.endpos,1,se.temp_entity,Ae.GUNSHOT,v.endpos,v.plane.normal)}}function yx(e,t,n,i,r,a){let s={...n},o={...n},u={x:n.x+i.x*8192,y:n.y+i.y*8192,z:n.z+i.z*8192},c=t,l=0,m=u;for(;l<16;){l++;let d=e.trace(o,null,null,u,c,0);if(m=d.endpos,d.fraction>=1||(d.ent&&d.ent.takedamage&&fe(d.ent,t,t,$,d.endpos,d.plane?d.plane.normal:$,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,se.temp_entity,Ae.RAILTRAIL,s,m)}function wx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Shells]<1)return;n.ammo.counts[P.Shells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,ch),Tt(t,-2,0,-2),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a);Bc(e,t,s,i,r,a,12,4,1,500,500,2)}function Ax(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Shells]<2)return;n.ammo.counts[P.Shells]-=2,e.multicast(t.origin,1,se.muzzleflash,t.index,fh),Tt(t,-4,0,-4),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a),{forward:o,right:u,up:c}=q({...t.angles,y:t.angles.y-5});Bc(e,t,s,o,u,c,10,6,1,700,700,3);let{forward:l,right:m,up:d}=q({...t.angles,y:t.angles.y+5});Bc(e,t,s,l,m,d,10,6,1,700,700,3)}function Sx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Bullets]<1)return;n.ammo.counts[P.Bullets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,oh),Tt(t,-1,sn.crandom()*.5,0),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a);Lh(e,t,s,i,8,1,4)}function kx(e,t){if(!t.client)return;let n=t.client.inventory,i=wh(t.client.weaponStates,K.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[P.Bullets]<a&&(a=n.ammo.counts[P.Bullets]),a===0)return;n.ammo.counts[P.Bullets]-=a;let s=e.deathmatch?6:8,o=1;Tt(t,-.5,sn.crandom()*(.5+a*.15),0),Mt(t);let{forward:u,right:c,up:l}=q(t.angles),m=xt(e,t,{x:8,y:8,z:-8},u,c,l);for(let f=0;f<a;f++){let _=F(I(c,sn.crandom()*4),I(l,sn.crandom()*4)),p=F(u,_);Lh(e,t,m,p,s,o,5)}let d=uh+a-1;e.multicast(t.origin,1,se.muzzleflash,t.index,d)}function Ex(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Slugs]<1)return;n.ammo.counts[P.Slugs]--,e.multicast(t.origin,1,se.muzzleflash,t.index,lh),Tt(t,-3,0,-3),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?100:125,u=e.deathmatch?200:225;yx(e,t,s,i,o,u)}function bx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Cells]<1)return;n.ammo.counts[P.Cells]--,e.multicast(t.origin,1,se.muzzleflash,t.index,_h),Tt(t,-.5,0,0),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a),o=e.deathmatch?15:20;yr(e.entities,t,s,i,o,1e3,10)}function xx(e,t){if(!t.client)return;e.multicast(t.origin,1,se.muzzleflash,t.index,sh),Tt(t,-.5,0,0),Mt(t);let{forward:n,right:i,up:r}=q(t.angles),a=xt(e,t,{x:8,y:8,z:-8},n,i,r);yr(e.entities,t,a,n,15,1500,1)}function Tx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Rockets]<1)return;n.ammo.counts[P.Rockets]--,e.multicast(t.origin,1,se.muzzleflash,t.index,dh),Tt(t,-2,0,-2),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a),o=100+e.random.irandom(21);Mh(e.entities,t,s,i,o,120,650)}function Mx(e,t){if(!t.client)return;let n=t.client.inventory;if(n.ammo.counts[P.Grenades]<1)return;n.ammo.counts[P.Grenades]--,e.multicast(t.origin,1,se.muzzleflash,t.index,mh),Tt(t,-2,0,-2),Mt(t);let{forward:i,right:r,up:a}=q(t.angles),s=xt(e,t,{x:8,y:8,z:-8},i,r,a);Xa(e.entities,t,s,i,120,600)}function Rx(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[P.Cells]<50)return;n.ammo.counts[P.Cells]-=50,e.sound(t,0,"weapons/bfg__f1y.wav",1,0,0)}if(a){e.multicast(t.origin,1,se.muzzleflash,t.index,hh),Tt(t,-5,0,-2),Mt(t);let{forward:s,right:o,up:u}=q(t.angles),c=xt(e,t,{x:8,y:8,z:-8},s,o,u),l=e.deathmatch?200:500;Rh(e.entities,t,c,s,l,400,200)}}function en(e){let t=.1;return e.client?.inventory.powerups.has(oe.TechHaste)&&(t*=.5),e.client?.inventory.powerups.has(oe.QuadFire)&&(t*=.25),t}function Gt(e,t,n,i,r,a,s,o,u){if(!e.client)return;let c=e.client,l=u.timeSeconds;if(c.weapon_think_time&&c.weapon_think_time<=l&&(c.weapon_think_time=0),!(c.weapon_think_time&&c.weapon_think_time>l)){if(c.weaponstate===1){if(c.gun_frame<t){c.gun_frame++,c.weapon_think_time=l+en(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+en(e);return}if(c.weaponstate===2){if(c.gun_frame<r){c.gun_frame++,c.weapon_think_time=l+en(e);return}Promise.resolve().then(()=>(tb(),Sh)).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=l+en(e),a){for(let m of a)if(c.gun_frame===m&&sn.frandom()<.9375)return}return}c.gun_frame=n+1,c.weapon_think_time=l+en(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=l+en(e);return}c.weaponstate=0,c.gun_frame=n+1,c.weapon_think_time=l+en(e);return}}}function uu(e,t,n,i,r,a,s,o){if(!e.client)return;let u=e.client,c=t+1;u.weaponstate===3?(u.gun_frame===n||u.gun_frame===i?u.gun_frame=c:u.gun_frame++,s&&s(e),u.buttons&1||(u.gun_frame=i+1,u.weaponstate=0),u.weapon_think_time=o.timeSeconds+en(e)):Gt(e,t,n,i,r,a,null,s,o)}var Lx=[38,43,51,61];function zx(e,t){let n=wh(e.client.weaponStates,K.Chaingun);!(e.client.buttons&xb)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0),uu(e,Bb,Gb,Hb,Vb,Lx,i=>kx(t.game,i),t)}var Nx=[22,28,34],Ox=[8];function Ix(e,t){Gt(e,Mb,Rb,Lb,zb,Nx,Ox,n=>wx(t.game,n),t)}var Cx=[29,42,57],Px=[22,28];function Fx(e,t){Gt(e,Nb,Ob,Ib,Cb,Cx,Px,n=>Ax(t.game,n),t)}var Dx=[23,45],Ux=[4,5,30,31];function Bx(e,t){Gt(e,Pb,Fb,Db,Ub,Dx,Ux,n=>Sx(t.game,n),t)}var Gx=[25,33],Hx=[4];function Vx(e,t){Gt(e,Yb,qb,Zb,jb,Gx,Hx,n=>Tx(t.game,n),t)}function Wx(e,t){uu(e,Jb,Qb,ex,tx,null,n=>bx(t.game,n),t)}var Kx=[56],$x=[4];function Xx(e,t){Gt(e,Wb,Kb,$b,Xb,Kx,$x,n=>Ex(t.game,n),t)}var Yx=[39,45,50,54],qx=[9,22];function Zx(e,t){Gt(e,nx,ix,rx,ax,Yx,qx,n=>Rx(t.game,n),t)}var jx=[34,51,59],Jx=[6];function Qx(e,t){Gt(e,sx,ox,cx,ux,jx,Jx,n=>Mx(t.game,n),t)}var e6=[19,32],t6=[5];function n6(e,t){Gt(e,lx,dx,mx,fx,e6,t6,n=>xx(t.game,n),t)}B();function i6(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 r6=24;function a6(e,t){if(!e.inUse||!e.takedamage||e===t.self)return!1;let n=(c,l,m)=>({x:Math.max(l.x,Math.min(c.x,m.x)),y:Math.max(l.y,Math.min(c.y,m.y)),z:Math.max(l.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=D(i,r),s=Re(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},u=G(D(o,t.start));return!(Ga(u,t.aim)<.7&&s>1)}function s6(e,t,n,i,r,a,s,o){let u={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},l={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,l),d={self:t,start:n,aim:i,reach:r},f=!1,_=(p,v,y)=>({x:Math.max(v.x,Math.min(p.x,y.x)),y:Math.max(v.y,Math.min(p.y,y.y)),z:Math.max(v.z,Math.min(p.z,y.z))});for(let p of m){if(!a6(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},y={x:p.origin.x+p.maxs.x,y:p.origin.y+p.maxs.y,z:p.origin.z+p.maxs.z},S=_(n,v,y);fe(p,t,t,i,S,I(i,-1),a,s/2,8,o,e.time,e.multicast),f=!0}return f}function o6(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=q(a||{x:0,y:0,z:0}),o={x:8,y:8,z:-4},u={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(u,1,se.temp_entity,Ae.CHAINFIST_SMOKE,u)}function c6(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=s6(e,t,r,a,r6,s,100,41);i6(t,-.5,0,0)}function u6(e,t){let n=t.game;if(uu(e,4,32,57,60,[],a=>{let s=a.client?a.client.v_angle:a.angles,u=q(s||{x:0,y:0,z:0}).forward,c={x:a.origin.x,y:a.origin.y,z:a.origin.z+(a.viewheight||0)},l=a.client?a.client.inventory:{ammo:{counts:[]}};if(c6(n,a,l,{},c,u),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&&o6(n,e)}}var vF={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:K.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5,think:n6},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:K.Shotgun,ammoType:P.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Ix},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:K.SuperShotgun,ammoType:P.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Fx},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:K.Machinegun,ammoType:P.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Bx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:K.Chaingun,ammoType:P.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:zx},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:K.HandGrenade,ammoType:P.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:K.GrenadeLauncher,ammoType:P.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1,think:Qx},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:K.RocketLauncher,ammoType:P.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1,think:Vx},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:K.HyperBlaster,ammoType:P.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:Wx},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:K.Railgun,ammoType:P.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5,think:Xx},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:K.BFG10K,ammoType:P.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1,think:Zx},weapon_chainfist:{type:"weapon",id:"weapon_chainfist",name:"Chainfist",weaponId:K.ChainFist,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.1,think:u6},weapon_boomer:{type:"weapon",id:"weapon_boomer",name:"Ion Ripper",weaponId:K.IonRipper,ammoType:P.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_phalanx:{type:"weapon",id:"weapon_phalanx",name:"Phalanx",weaponId:K.Phalanx,ammoType:P.MagSlugs,initialAmmo:50,pickupAmmo:50,fireRate:1},weapon_beam:{type:"weapon",id:"weapon_beam",name:"Plasma Beam",weaponId:K.PlasmaBeam,ammoType:P.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_etf_rifle:{type:"weapon",id:"weapon_etf_rifle",name:"ETF Rifle",weaponId:K.EtfRifle,ammoType:P.Flechettes,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_proxlauncher:{type:"weapon",id:"weapon_proxlauncher",name:"Prox Launcher",weaponId:K.ProxLauncher,ammoType:P.Prox,initialAmmo:5,pickupAmmo:5,fireRate:.8}};Nn();Nn();B();B();var Je=pr(),Gc=0,l6=1;function zh(e){let t=100*Je.crandom(),n=100*Je.crandom(),i=200+100*Je.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 Nh(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 Oh(e,t,n,i,r){e.groundentity&&(e.touch=void 0,n&&r.sound(e,0,"misc/fhit3.wav",1,1,0))}function ut(e,t,n,i,r=Gc){let a=e.spawn();a.classname="gib",a.origin={x:t.x+Je.crandom()*20,y:t.y+Je.crandom()*20,z:t.z+Je.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,l,m,d,f,_)=>{e.free(c)},a.clipmask=1;let o=1;r===Gc?(a.movetype=7,a.touch=(c,l,m,d)=>Oh(c,l,m,d,e),o=.5):(a.movetype=9,o=1);let u=zh(n);return a.velocity={x:u.x*o,y:u.y*o,z:u.z*o},Nh(a),a.avelocity={x:Je.frandom()*600,y:Je.frandom()*600,z:Je.frandom()*600},a.think=c=>{e.free(c)},e.scheduleThink(a,e.timeSeconds+10+Je.frandom()*10),e.finalizeSpawn(a),a}function d6(e,t,n){let i=e.spawn(),r;Je.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,u,c,l,m,d)=>{e.free(o)};let a=.5;i.movetype=7,i.touch=(o,u,c,l)=>Oh(o,u,c,l,e);let s=zh(n);return i.velocity={x:s.x*a,y:s.y*a,z:s.z*a},Nh(i),i.avelocity={x:0,y:Je.crandom()*600,z:0},i.think=o=>{e.free(o)},e.scheduleThink(i,e.timeSeconds+10+Je.frandom()*10),e.finalizeSpawn(i),i}function Ih(e,t,n,i=Gc){if(typeof n=="number"){let r=n;i===l6?(ut(e,t,r,"models/objects/debris1/tris.md2",i),ut(e,t,r,"models/objects/debris2/tris.md2",i),ut(e,t,r,"models/objects/debris3/tris.md2",i),ut(e,t,r,"models/objects/debris2/tris.md2",i)):(ut(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ut(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ut(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ut(e,t,r,"models/objects/gibs/sm_meat/tris.md2",i),ut(e,t,r,"models/objects/gibs/meat/tris.md2",i),ut(e,t,r,"models/objects/gibs/bone/tris.md2",i),d6(e,t,r))}else{let r=n;for(let a of r)for(let s=0;s<a.count;s++)ut(e,t,0,a.model,a.flags)}}B();B();function m6(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 f6(e,t){if(e.monsterinfo.freeze_time)if(e.monsterinfo.freeze_time>t.timeSeconds){e.renderfx|=li.ShellBlue|li.ShellGreen,e.nextthink=t.timeSeconds+.1;return}else e.monsterinfo.freeze_time=0,e.renderfx&=~(li.ShellBlue|li.ShellGreen);m6(e,t),e.nextthink<=t.timeSeconds&&(e.nextthink=t.timeSeconds+.1)}var Ya=.1,lr=80;var Ch=pr();function h6(){return Ch.frandom()}function Ph(e,t){return Math.floor(Ch.frandom()*(t-e+1)+e)}function ci(e,t,n){M(e,Ya,n)}function lt(e,t,n){L(e,t,Ya,n)}function ii(e,t,n){le(e,t,Ya,n)}function Se(e,t,n){me(e,t,Ya,n)}function J(e,t,n){g(e,t)}var fr={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function ht(e,t){t.sound(e,2,fr.footstep,1,1,0)}function Ca(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function _6(e,t){}var lu,Fh,g6,Dh,v6,p6,y6,w6,A6,Uh,S6;function k6(e,t){Ca(e,lu)}function E6(e,t){e.monsterinfo.aiflags&1||e.enemy||h6()>.15||(Ca(e,Fh),t.sound(e,1,fr.idle,1,2,0))}var b6=[{ai:ci,dist:0,think:E6},{ai:ci,dist:0},{ai:ci,dist:0},{ai:ci,dist:0},{ai:ci,dist:0}];lu={firstframe:0,lastframe:4,frames:b6,endfunc:null};var x6=Array.from({length:20},()=>({ai:ci,dist:0}));Fh={firstframe:5,lastframe:24,frames:x6,endfunc:k6};var T6=[{ai:lt,dist:9.1},{ai:lt,dist:6.3},{ai:lt,dist:4.9},{ai:lt,dist:6.7,think:ht},{ai:lt,dist:6},{ai:lt,dist:8.2},{ai:lt,dist:7.2},{ai:lt,dist:6.1},{ai:lt,dist:4.9},{ai:lt,dist:4.7,think:ht},{ai:lt,dist:4.7}];g6={firstframe:25,lastframe:35,frames:T6,endfunc:null};var M6=[{ai:ii,dist:21},{ai:ii,dist:11,think:ht},{ai:ii,dist:21},{ai:ii,dist:25,think:_6},{ai:ii,dist:18,think:ht},{ai:ii,dist:19}];Dh={firstframe:36,lastframe:41,frames:M6,endfunc:null};function wr(e,t){e.monsterinfo.aiflags&1?Ca(e,lu):Ca(e,Dh)}function Bh(e,t,n,i,r){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=q(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},u={x:a.x+s.x*lr,y:a.y+s.y*lr,z:a.z+s.z*lr},c=r.trace(a,null,null,u,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function R6(e,t){Bh(e,{x:lr,y:0,z:-24},Ph(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Gh(e,t){t.sound(e,1,fr.punch,1,1,0)}var L6=[{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:Gh},{ai:Se,dist:0,think:R6},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];v6={firstframe:67,lastframe:74,frames:L6,endfunc:wr};function z6(e,t){Bh(e,{x:lr,y:0,z:-4},Ph(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var N6=[{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0,think:ht},{ai:Se,dist:0},{ai:Se,dist:0,think:Gh},{ai:Se,dist:0},{ai:Se,dist:0,think:z6},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0},{ai:Se,dist:0}];p6={firstframe:75,lastframe:86,frames:N6,endfunc:wr};function O6(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 u=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-u/i);if(c<=0)continue;let l=Math.max(1,n*c*c),m=r*c*c,d=G(D(o.origin,e.origin));fe(o,e,t,d,o.origin,d,l,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function du(e,t){t.sound(e,1,fr.thud,1,1,0),t.sound(e,2,fr.explod,.75,1,0);let{forward:n,right:i}=q(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,se.temp_entity,Ae.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},O6(e,e,8,165,300,t)}function I6(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,du(e,r))}function mu(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function C6(e,t){if(!e.enemy)return;let n=D(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=G({x:n.x,y:n.y,z:0}),s=zn(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=(u,c,l,m)=>{I6(u,c,l,m,t),u.groundentity&&(u.frame=104,du(u,t),u.touch=void 0)},mu(e,t)}function P6(e,t){if(mu(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(du(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var F6=[{ai:Se,dist:0},{ai:Se,dist:0},{ai:J,dist:0,think:C6},{ai:J,dist:0,think:mu},{ai:J,dist:0,think:P6},{ai:J,dist:0,think:ht},{ai:J,dist:0},{ai:J,dist:0,think:ht},{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:ht}];y6={firstframe:87,lastframe:109,frames:F6,endfunc:wr};var D6=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];w6={firstframe:149,lastframe:152,frames:D6,endfunc:wr};var U6=Array.from({length:20},(e,t)=>({ai:J,dist:0,think:t%5===4?ht:void 0}));A6={firstframe:153,lastframe:172,frames:U6,endfunc:wr};function Hh(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Uh.lastframe,e.nextthink=-1,e.deadflag=2}var B6=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:ht},{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}];Uh={firstframe:173,lastframe:185,frames:B6,endfunc:Hh};var G6=[{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0,think:ht},{ai:J,dist:0},{ai:J,dist:0},{ai:J,dist:0}];S6={firstframe:186,lastframe:193,frames:G6,endfunc:Hh};B();function $f(){return 2*Math.random()-1}function Pa(e,t,n,i,r,a,s,o,u,c=0){let l=n;if(a>0||s>0){let f=zn(n),{right:_,up:p}=q(f),v=$f()*a,y=$f()*s;l={x:n.x+_.x*v+p.x*y,y:n.y+_.y*v+p.y*y,z:n.z+_.z*v+p.z*y},l=G(l)}let m=F(t,I(l,8192)),d=u.trace(t,m,$,$,e,Bt);!d.ent||d.fraction===1||fe(d.ent,e,e,l,d.endpos,d.plane?.normal||$,i,r,18,c,u.timeSeconds)}var on=Pa;function H6(e,t,n,i,r,a,s,o,u,c,l=2){for(let m=0;m<o;m++)on(e,t,n,i,r,a,s,u,c,l)}function Rt(e,t,n,i,r,a,s,o,u=1){yr(o,e,t,n,i,r,u)}function V6(e,t,n,i,r,a,s,o){Ab(o,e,t,n,i,r)}function W6(e,t,n,i,r,a,s,o){wb(o,e,t,n,i,r)}function K6(e,t,n,i,r,a,s){Xa(s,e,t,n,i,r)}function Ar(e,t,n,i,r,a,s){Mh(s,e,t,n,i,120,r)}function Vh(e,t,n,i,r,a,s,o,u){Rh(u,e,t,n,i,r,s)}function Wh(e,t,n,i,r,a,s){let o=F(t,I(n,8192)),u=s.trace(t,o,$,$,e,Bt);s.multicast(t,2,se.temp_entity,Ae.RAILTRAIL,t,u.endpos),u.ent&&u.ent.takedamage&&fe(u.ent,e,e,n,u.endpos,$,i,r,6,11,s.timeSeconds)}function Sr(e,t,n,i,r){if(!e.enemy)return!1;let{forward:a}=q(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,u=F(s,I(a,o)),c=r.trace(s,u,$,$,e,Bt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let l=G(D(c.endpos,s));return fe(c.ent,e,e,l,c.endpos,c.plane?.normal||$,n,i,0,0,r.timeSeconds),!0}return!1}function $6(e,t,n,i,r,a,s,o){Ar(e,t,n,i,r,a,o)}function Xf(e,t){let n={...e.origin},i=F(n,I(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let u=0;u<a;u++){let c=t.trace(r,i,$,$,e,Ve|nn|Mn|dr);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,$,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,se.temp_entity,Ae.LASER_SPARKS,10,c.endpos,c.plane?.normal||$,e.skin);break}if(c.ent&&(c.ent.takedamage||c.ent.client)){s.push(c.ent),o.push(c.ent.solid),c.ent.solid=0,r={...c.endpos};continue}break}}finally{for(let u=0;u<s.length;u++)s[u].solid=o[u]}t.linkentity(e)}function X6(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Hc(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?X6(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),Xf(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),Xf(a,r)}function Y6(e,t,n,i,r,a,s){bb(s,e,t,n,i,r)}B();var fu=.1,q6={x:0,y:30,z:-15},Z6={x:0,y:15,z:0},j6={x:0,y:-15,z:0},J6={x:0,y:-30,z:-15},Q6={x:30,y:20,z:0},e3={x:30,y:-20,z:0};function t3(e,t,n){M(e,fu,n)}function n3(e,t,n){L(e,t,fu,n)}function qa(e,t,n){me(e,t,fu,n)}function hu(e,t,n){g(e,t)}var _u,Kh,$h,i3,Xh,Yh,r3,a3,s3,qh;function o3(e){e.monsterinfo.current_move=_u}function c3(e){e.monsterinfo.current_move=Kh}function kr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=$h:e.monsterinfo.current_move=_u}function Zh(e){e.monsterinfo.current_move=Xh}function u3(e){e.enemy&&mr(e,e.enemy)&&Math.random()<=.7?Zh(e):e.monsterinfo.current_move=Yh}function Vc(e,t){let{forward:n,right:i,up:r}=q(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return F(F(F(a,s),o),u)}function l3(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Vc(e,Q6),i=G(D(e.enemy.origin,n));on(e,n,i,6,4,.1,.05,0,t,4);let r=Vc(e,e3),a=G(D(e.enemy.origin,r));on(e,r,a,6,4,.1,.05,0,t,4)}function d3(e,t){if(!e.enemy)return;let n=[q6,Z6,j6,J6],i=n[Math.floor(Math.random()*n.length)],r=Vc(e,i),a=G(D(e.enemy.origin,r));Ar(e,r,a,50,500,0,t)}function m3(e){e.monsterinfo.nextframe=qh.lastframe,e.nextthink=-1}var jh=Array.from({length:20},()=>({ai:n3,dist:10}));Kh={firstframe:0,lastframe:19,frames:jh,endfunc:c3};$h={firstframe:0,lastframe:19,frames:jh,endfunc:kr};var f3=Array.from({length:21},()=>({ai:t3,dist:0}));_u={firstframe:29,lastframe:49,frames:f3,endfunc:o3};var h3=Array.from({length:9},(e,t)=>({ai:qa,dist:2,think:t===8?Zh:null}));i3={firstframe:50,lastframe:58,frames:h3,endfunc:null};var _3=Array.from({length:6},()=>({ai:qa,dist:2,think:l3}));Xh={firstframe:59,lastframe:64,frames:_3,endfunc:u3};var g3=Array.from({length:4},()=>({ai:qa,dist:2}));Yh={firstframe:65,lastframe:68,frames:g3,endfunc:kr};var v3=Array.from({length:21},(e,t)=>({ai:qa,dist:2,think:t===12?d3:null}));r3={firstframe:69,lastframe:89,frames:v3,endfunc:kr};var p3=Array.from({length:18},()=>({ai:hu,dist:0}));a3={firstframe:90,lastframe:107,frames:p3,endfunc:kr};var y3=Array.from({length:4},()=>({ai:hu,dist:0}));s3={firstframe:108,lastframe:111,frames:y3,endfunc:kr};var w3=Array.from({length:49},()=>({ai:hu,dist:0}));qh={firstframe:112,lastframe:160,frames:w3,endfunc:m3};B();var Za=.1,gu=80,ja=Math.random;function Jh(e,t,n){M(e,Za,n)}function dt(e,t,n){L(e,t,Za,n)}function mt(e,t,n){le(e,t,Za,n)}function U(e,t,n){me(e,t,Za,n)}function Z(e,t,n){g(e,t)}var vu,A3,S3,Qh,e1,k3,E3,b3,x3,T3,M3,R3,L3,z3;function t1(e){e.monsterinfo.current_move=vu}function mn(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=vu:e.monsterinfo.current_move=Qh}function N3(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function O3(e,t){let n={x:gu,y:e.maxs.x,z:8};Sr(e,n,15+Math.floor(ja()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function I3(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function C3(e,t){let n={x:gu,y:e.mins.x,z:8};Sr(e,n,15+Math.floor(ja()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function n1(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function i1(e,t){Sr(e,{x:gu,y:0,z:8},10+Math.floor(ja()*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 r1(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=e1)}function Yf(e,t){if(!e.enemy)return;let n=q(e.angles).forward,i={...e.origin};i.z+=24;let r={...e.enemy.origin};if(t.trace(i,r,$,$,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,se.temp_entity,Ae.PARASITE_ATTACK,e,i,r);let s=D(i,r);fe(e.enemy,e,e,s,e.enemy.origin,$,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=q(e.angles).forward;e.enemy.velocity=I(o,-1200)}var qf=[{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}],Zf=[{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 P3(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=q(n.angles),s=n.frame-0;(s<0||s>=qf.length)&&(s=0);let o=qf[s],u=F(n.origin,I(r,o.x));u=F(u,I(i,o.y)),u=F(u,I(a,o.z));let c=G(D(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function F3(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:i,right:r,up:a}=q(n.angles),s=n.frame-0;(s<0||s>=Zf.length)&&(s=0);let o=Zf[s],u=F(n.origin,I(r,o.x));u=F(u,I(i,o.y)),u=F(u,I(a,o.z));let c=G(D(n.enemy.origin,u));e.origin=u,e.movedir=c,t.linkentity(e)}function Et(e,t){Hc(e,1,!1,P3,t),Hc(e,1,!0,F3,t)}function D3(e){ja()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function U3(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function B3(e){}function G3(e){e.monsterinfo.aiflags&=-17}var H3=Array.from({length:30},()=>({ai:Jh,dist:0}));vu={firstframe:162,lastframe:191,frames:H3,endfunc:t1};var V3=Array.from({length:30},()=>({ai:Jh,dist:0}));A3={firstframe:192,lastframe:221,frames:V3,endfunc:t1};var W3=[{ai:dt,dist:7},{ai:dt,dist:2},{ai:dt,dist:3},{ai:dt,dist:3},{ai:dt,dist:1},{ai:dt,dist:0},{ai:dt,dist:0},{ai:dt,dist:9},{ai:dt,dist:-4},{ai:dt,dist:-1},{ai:dt,dist:2}];S3={firstframe:0,lastframe:10,frames:W3,endfunc:null};var K3=[{ai:mt,dist:9},{ai:mt,dist:2},{ai:mt,dist:3},{ai:mt,dist:3},{ai:mt,dist:1},{ai:mt,dist:0},{ai:mt,dist:0},{ai:mt,dist:10},{ai:mt,dist:-4},{ai:mt,dist:-1},{ai:mt,dist:2}];Qh={firstframe:0,lastframe:10,frames:K3,endfunc:null};var $3=[{ai:U,dist:8},{ai:U,dist:3},{ai:U,dist:5},{ai:U,dist:0},{ai:U,dist:-3,think:N3},{ai:U,dist:0},{ai:U,dist:-5},{ai:U,dist:-7,think:O3},{ai:U,dist:0},{ai:U,dist:6,think:I3},{ai:U,dist:1},{ai:U,dist:2,think:C3},{ai:U,dist:-3},{ai:U,dist:6},{ai:U,dist:-1},{ai:U,dist:-3},{ai:U,dist:2},{ai:U,dist:-11}];e1={firstframe:53,lastframe:70,frames:$3,endfunc:mn};var X3=[{ai:U,dist:5},{ai:U,dist:-4},{ai:U,dist:-4},{ai:U,dist:-3},{ai:U,dist:0,think:n1},{ai:U,dist:0},{ai:U,dist:13,think:i1},{ai:U,dist:0},{ai:U,dist:2},{ai:U,dist:0},{ai:U,dist:-9,think:r1},{ai:U,dist:0},{ai:U,dist:4},{ai:U,dist:3},{ai:U,dist:2},{ai:U,dist:-3},{ai:U,dist:-6}];k3={firstframe:71,lastframe:87,frames:X3,endfunc:mn};var Y3=[{ai:U,dist:5},{ai:U,dist:-4},{ai:U,dist:-4},{ai:U,dist:-3},{ai:U,dist:0,think:n1},{ai:U,dist:0,think:Yf},{ai:U,dist:13},{ai:U,dist:0,think:i1},{ai:U,dist:2},{ai:U,dist:0,think:Yf},{ai:U,dist:-9,think:r1},{ai:U,dist:0},{ai:U,dist:4},{ai:U,dist:3},{ai:U,dist:2},{ai:U,dist:-3},{ai:U,dist:-6}];E3={firstframe:71,lastframe:87,frames:Y3,endfunc:mn};var q3=[{ai:U,dist:9,think:Et},{ai:U,dist:2,think:Et},{ai:U,dist:3,think:Et},{ai:U,dist:3,think:Et},{ai:U,dist:1,think:Et},{ai:U,dist:0,think:Et},{ai:U,dist:0,think:Et},{ai:U,dist:10,think:Et},{ai:U,dist:-4,think:Et},{ai:U,dist:-1,think:Et},{ai:U,dist:2,think:D3}];b3={firstframe:0,lastframe:10,frames:q3,endfunc:mn};var Z3=[{ai:Z,dist:-6},{ai:Z,dist:-2},{ai:Z,dist:-6},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:2},{ai:Z,dist:0},{ai:Z,dist:2},{ai:Z,dist:1},{ai:Z,dist:7},{ai:Z,dist:0},{ai:Z,dist:3},{ai:Z,dist:-1}];x3={firstframe:88,lastframe:108,frames:Z3,endfunc:mn};var j3=[{ai:Z,dist:-2},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:3},{ai:Z,dist:1},{ai:Z,dist:-2}];T3={firstframe:109,lastframe:116,frames:j3,endfunc:mn};var J3=[{ai:Z,dist:-2},{ai:Z,dist:2},{ai:Z,dist:1},{ai:Z,dist:3},{ai:Z,dist:0},{ai:Z,dist:-4}];M3={firstframe:117,lastframe:122,frames:J3,endfunc:mn};var Q3=Array.from({length:18},()=>({ai:Z,dist:0}));R3={firstframe:123,lastframe:140,frames:Q3,endfunc:a1};var e8=[{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:0},{ai:Z,dist:9},{ai:Z,dist:0}];L3={firstframe:141,lastframe:145,frames:e8,endfunc:a1};var t8=[{ai:Z,dist:0},{ai:Z,dist:-2,think:U3},{ai:Z,dist:17,think:B3},{ai:Z,dist:-3},{ai:Z,dist:-1,think:G3},{ai:Z,dist:-5},{ai:Z,dist:-6},{ai:Z,dist:-6}];z3={firstframe:146,lastframe:153,frames:t8,endfunc:mn};function a1(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}B();var Ja=.1,n8=80,vi=Math.random;function s1(e,t,n){M(e,Ja,n)}function i8(e,t,n){L(e,t,Ja,n)}function r8(e,t,n){le(e,t,Ja,n)}function j(e,t,n){me(e,t,Ja,n)}function pi(e,t,n){g(e,t)}var pu,o1,c1,a8,yu,Wc,s8,wu,u1,o8,c8,u8,l8,d8,m8,l1;function d1(e){e.monsterinfo.current_move=pu}function f8(e){e.monsterinfo.current_move=o1}function On(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=pu;return}e.monsterinfo.current_move=c1}function h8(e){e.monsterinfo.aiflags&4||e.enemy||vi()<=.3&&(e.monsterinfo.current_move=l1)}function _8(e,t){vi()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function g8(e,t){let n={x:n8,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Sr(e,n,10+Math.floor(vi()*6),100,t)}function v8(e,t){let{forward:n,right:i}=q(e.angles),r={x:0,y:20,z:40},a=F(e.origin,I(n,r.x)),s=I(i,r.y),o=F(a,s),u={...o,z:o.z+r.z},c=e.skin>1?500:650,l=!!e.monsterinfo.blindfire,m=$;if(l&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let d=D(m,u);!l&&e.enemy&&(vi()<.33||u.z<e.enemy.absmin.z?d={...d,z:d.z+e.enemy.viewheight}:d={...d,z:e.enemy.absmin.z+1-u.z});let f=G(d);e.skin>1?$6(e,u,f,50,c,0,.075,t):Ar(e,u,f,50,c,0,t)}function p8(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=D(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=zn(n).y}}function y8(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function w8(e){e.monsterinfo.current_move=yu}function A8(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Wc;return}if(e.enemy&&e.enemy.health>0&&vi()<=.6){e.monsterinfo.current_move=yu;return}e.monsterinfo.current_move=Wc}function S8(e){if(e.enemy&&e.enemy.health>0&&vi()<=.9){e.monsterinfo.current_move=wu;return}e.monsterinfo.current_move=u1}function k8(e){e.monsterinfo.current_move=wu}var E8=Array.from({length:30},(e,t)=>({ai:s1,dist:0,think:t===8?(n,i)=>_8(n,i):null}));l1={firstframe:201,lastframe:230,frames:E8,endfunc:d1};var b8=Array.from({length:30},(e,t)=>({ai:s1,dist:0,think:t===29?h8:null}));pu={firstframe:101,lastframe:130,frames:b8,endfunc:d1};var x8=Array.from({length:10},()=>({ai:i8,dist:6}));o1={firstframe:171,lastframe:180,frames:x8,endfunc:f8};var T8=Array.from({length:10},()=>({ai:r8,dist:12}));c1={firstframe:171,lastframe:180,frames:T8,endfunc:On};var M8=Array.from({length:5},()=>({ai:pi,dist:0}));o8={firstframe:90,lastframe:94,frames:M8,endfunc:On};var R8=Array.from({length:5},()=>({ai:pi,dist:0}));c8={firstframe:95,lastframe:99,frames:R8,endfunc:On};var L8=Array.from({length:21},()=>({ai:pi,dist:0}));u8={firstframe:100,lastframe:120,frames:L8,endfunc:On};var z8=Array.from({length:12},()=>({ai:pi,dist:0}));l8={firstframe:48,lastframe:59,frames:z8,endfunc:m1};var N8=Array.from({length:23},()=>({ai:pi,dist:0}));d8={firstframe:60,lastframe:82,frames:N8,endfunc:m1};function m1(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var O8=[{ai:j,dist:0,think:p8},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:4},{ai:j,dist:0},{ai:j,dist:-3},{ai:j,dist:3},{ai:j,dist:5},{ai:j,dist:7},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0},{ai:j,dist:0,think:w8}];a8={firstframe:0,lastframe:12,frames:O8,endfunc:null};var I8=[{ai:j,dist:19,think:v8},{ai:j,dist:-6},{ai:j,dist:-5},{ai:j,dist:-2},{ai:j,dist:-7},{ai:j,dist:0},{ai:j,dist:1},{ai:j,dist:10,think:y8},{ai:j,dist:4},{ai:j,dist:5},{ai:j,dist:6},{ai:j,dist:6},{ai:j,dist:4},{ai:j,dist:3,think:A8}];yu={firstframe:13,lastframe:26,frames:I8,endfunc:null};var C8=[{ai:j,dist:-3},{ai:j,dist:0},{ai:j,dist:-6},{ai:j,dist:-4},{ai:j,dist:-2}];Wc={firstframe:27,lastframe:31,frames:C8,endfunc:On};var P8=[{ai:j,dist:1},{ai:j,dist:8},{ai:j,dist:3}];s8={firstframe:32,lastframe:34,frames:P8,endfunc:k8};var F8=[{ai:j,dist:1},{ai:j,dist:7,think:g8},{ai:j,dist:-7},{ai:j,dist:1},{ai:j,dist:-1},{ai:j,dist:1},{ai:j,dist:0},{ai:j,dist:1},{ai:j,dist:-2,think:S8}];wu={firstframe:35,lastframe:43,frames:F8,endfunc:null};var D8=[{ai:j,dist:-6},{ai:j,dist:-1},{ai:j,dist:-6},{ai:j,dist:0}];u1={firstframe:44,lastframe:47,frames:D8,endfunc:On};var U8=Array.from({length:7},()=>({ai:pi,dist:0}));m8={firstframe:83,lastframe:89,frames:U8,endfunc:On};var Qa=.1,B8=80,G8=24;function H8(e,t,n){M(e,Qa,n)}function V8(e,t,n){L(e,t,Qa,n)}function f1(e,t,n){le(e,t,Qa,n)}function be(e,t,n){me(e,t,Qa,n)}function Au(e,t,n){g(e,t)}var W8,K8,h1,_1,$8,X8,Y8,q8;function Z8(e){e.monsterinfo.current_move=_1}function Su(e){e.monsterinfo.current_move=h1}function jf(e,t){Sr(e,{x:B8,y:0,z:0},5,0,t)}function j8(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var J8=[{ai:H8,dist:0}];W8={firstframe:41,lastframe:41,frames:J8,endfunc:null};var Q8=Array.from({length:24},()=>({ai:f1,dist:G8}));_1={firstframe:70,lastframe:93,frames:Q8,endfunc:null};var eT=Array.from({length:6},()=>({ai:f1,dist:8}));h1={firstframe:65,lastframe:70,frames:eT,endfunc:Z8};var tT=Array.from({length:24},()=>({ai:V8,dist:4}));K8={firstframe:41,lastframe:64,frames:tT,endfunc:null};var nT=Array.from({length:5},()=>({ai:Au,dist:0}));X8={firstframe:99,lastframe:103,frames:nT,endfunc:Su};var iT=Array.from({length:5},()=>({ai:Au,dist:0}));Y8={firstframe:94,lastframe:98,frames:iT,endfunc:Su};var rT=[{ai:be,dist:0,think:j8},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0,think:jf},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:0,think:jf},{ai:be,dist:0}];$8={firstframe:0,lastframe:19,frames:rT,endfunc:Su};function aT(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var sT=Array.from({length:56},()=>({ai:Au,dist:0}));q8={firstframe:104,lastframe:159,frames:sT,endfunc:aT};B();var es=.1;function oT(e,t,n){M(e,es,n)}function cT(e,t,n){L(e,t,es,n)}function uT(e,t,n){le(e,t,es,n)}function lT(e,t,n){me(e,t,es,n)}function g1(e,t,n){g(e,t)}var ku,v1,p1,dT,mT,y1;function fT(e){e.monsterinfo.current_move=ku}function hT(e){e.monsterinfo.current_move=v1}function Eu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=p1:e.monsterinfo.current_move=ku}function _T(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));Rt(e,n,i,5,1e3,0,0,t,1)}function gT(e){e.monsterinfo.nextframe=y1.lastframe,e.nextthink=-1}var vT=Array.from({length:46},()=>({ai:oT,dist:0}));ku={firstframe:0,lastframe:45,frames:vT,endfunc:fT};var pT=Array.from({length:46},()=>({ai:cT,dist:5}));v1={firstframe:0,lastframe:45,frames:pT,endfunc:hT};var yT=Array.from({length:46},()=>({ai:uT,dist:10}));p1={firstframe:0,lastframe:45,frames:yT,endfunc:Eu};var wT=Array.from({length:20},(e,t)=>({ai:lT,dist:0,think:t===10?_T:null}));dT={firstframe:46,lastframe:65,frames:wT,endfunc:Eu};var AT=Array.from({length:6},()=>({ai:g1,dist:0}));mT={firstframe:66,lastframe:71,frames:AT,endfunc:Eu};var ST=Array.from({length:10},()=>({ai:g1,dist:0}));y1={firstframe:84,lastframe:93,frames:ST,endfunc:gT};B();var ts=.1;function kT(e,t,n){M(e,ts,n)}function ET(e,t,n){L(e,t,ts,n)}function bT(e,t,n){le(e,t,ts,n)}function xT(e,t,n){me(e,t,ts,n)}function w1(e,t,n){g(e,t)}var bu,A1,S1,TT,MT,k1;function RT(e){e.monsterinfo.current_move=bu}function LT(e){e.monsterinfo.current_move=A1}function xu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=S1:e.monsterinfo.current_move=bu}function zT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));Rt(e,n,i,5,1e3,0,0,t,1)}function NT(e,t){if(!e.enemy)return;let n=5+Math.random()*5;ln(e,e.enemy)<=80&&mr(e,e.enemy)&&fe(e.enemy,e,e,G(D(e.enemy.origin,e.origin)),e.enemy.origin,$,n,5,2,0,t.timeSeconds)}function OT(e){e.monsterinfo.nextframe=k1.lastframe,e.nextthink=-1}var IT=Array.from({length:46},()=>({ai:kT,dist:0}));bu={firstframe:0,lastframe:45,frames:IT,endfunc:RT};var CT=Array.from({length:46},()=>({ai:ET,dist:5}));A1={firstframe:0,lastframe:45,frames:CT,endfunc:LT};var PT=Array.from({length:46},()=>({ai:bT,dist:10}));S1={firstframe:0,lastframe:45,frames:PT,endfunc:xu};var FT=Array.from({length:20},(e,t)=>({ai:xT,dist:0,think:t===10?zT:t===12?NT:null}));TT={firstframe:46,lastframe:65,frames:FT,endfunc:xu};var DT=Array.from({length:6},()=>({ai:w1,dist:0}));MT={firstframe:66,lastframe:71,frames:DT,endfunc:xu};var UT=Array.from({length:10},()=>({ai:w1,dist:0}));k1={firstframe:84,lastframe:93,frames:UT,endfunc:OT};B();var ns=.1;function BT(e,t,n){M(e,ns,n)}function GT(e,t,n){L(e,t,ns,n)}function HT(e,t,n){le(e,t,ns,n)}function E1(e,t,n){me(e,t,ns,n)}function b1(e,t,n){g(e,t)}var Tu,x1,T1,VT,WT,KT,M1;function $T(e){e.monsterinfo.current_move=Tu}function XT(e){e.monsterinfo.current_move=x1}function is(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=T1:e.monsterinfo.current_move=Tu}function YT(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function qT(e,t){if(!e.enemy||!mr(e,e.enemy))return;let n=ln(e,e.enemy);if(YT(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=G(D(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 ZT(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(D(e.enemy.origin,n));Wh(e,n,i,50,100,0,t)}function jT(e){e.monsterinfo.nextframe=M1.lastframe,e.nextthink=-1}var JT=Array.from({length:30},()=>({ai:BT,dist:0}));Tu={firstframe:0,lastframe:29,frames:JT,endfunc:$T};var QT=Array.from({length:40},()=>({ai:GT,dist:3}));x1={firstframe:30,lastframe:69,frames:QT,endfunc:XT};var eM=Array.from({length:20},()=>({ai:HT,dist:12}));T1={firstframe:70,lastframe:89,frames:eM,endfunc:is};var tM=Array.from({length:10},(e,t)=>({ai:E1,dist:0,think:t===5?qT:null}));VT={firstframe:90,lastframe:99,frames:tM,endfunc:is};var nM=Array.from({length:12},(e,t)=>({ai:E1,dist:0,think:t===6?ZT:null}));WT={firstframe:100,lastframe:111,frames:nM,endfunc:is};var iM=Array.from({length:6},()=>({ai:b1,dist:0}));KT={firstframe:112,lastframe:117,frames:iM,endfunc:is};var rM=Array.from({length:12},()=>({ai:b1,dist:0}));M1={firstframe:118,lastframe:129,frames:rM,endfunc:jT};B();var rs=.1;function R1(e,t,n){M(e,rs,n)}function aM(e,t,n){L(e,t,rs,n)}function L1(e,t,n){le(e,t,rs,n)}function as(e,t,n){me(e,t,rs,n)}function xe(e,t,n){g(e,t)}var Mu,z1,sM,N1,oM,cM,uM,Ru,O1,lM,dM,mM,I1,fM,C1;function hM(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function _M(e){e.monsterinfo.current_move=Mu}function gM(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=z1)}function In(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Mu:e.monsterinfo.current_move=N1}function vM(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function pM(e,t){e.monsterinfo.current_move=Ru}function yM(e,t){if(e.enemy&&e.enemy.health>0&&dn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=Ru;return}e.monsterinfo.current_move=O1}function wM(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=G(D(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),on(e,n,i,r,a,300,500,0,t,5)}function P1(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Xa(t,e,n,i,r,a)}function AM(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&P1(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function SM(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function kM(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function EM(e,t){if(!e.enemy)return;let n=D(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=G({x:n.x,y:n.y,z:0}),s=zn(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 bM(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 xM(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=C1)}var TM=Array.from({length:30},(e,t)=>({ai:R1,dist:0,think:t===29?gM:null}));Mu={firstframe:0,lastframe:29,frames:TM,endfunc:null};var MM=Array.from({length:40},(e,t)=>({ai:R1,dist:0,think:t===7?hM:null}));z1={firstframe:30,lastframe:69,frames:MM,endfunc:_M};var RM=[0,3,4,5,7,2,6,4,2,7,5,7,4],LM=RM.map(e=>({ai:aM,dist:e}));sM={firstframe:76,lastframe:88,frames:LM,endfunc:null};var zM=[26,9,9,9,15,10,13,6],NM=zM.map((e,t)=>({ai:L1,dist:e,think:t%4===0?xM:null}));N1={firstframe:94,lastframe:101,frames:NM,endfunc:null};var OM=[32,15,10,18,8,20],IM=OM.map(e=>({ai:L1,dist:e}));oM={firstframe:102,lastframe:107,frames:IM,endfunc:null};var CM=Array.from({length:21},(e,t)=>({ai:as,dist:0,think:[4,7,10,13].includes(t)?P1:null}));uM={firstframe:108,lastframe:128,frames:CM,endfunc:In};var PM=Array.from({length:7},(e,t)=>({ai:as,dist:0,think:t===0?vM:null}));cM={firstframe:137,lastframe:143,frames:PM,endfunc:pM};var FM=Array.from({length:8},()=>({ai:as,dist:0,think:wM}));Ru={firstframe:144,lastframe:151,frames:FM,endfunc:yM};var DM=Array.from({length:7},()=>({ai:as,dist:0}));O1={firstframe:152,lastframe:158,frames:DM,endfunc:In};var UM=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],BM=UM.map(e=>({ai:xe,dist:e}));lM={firstframe:159,lastframe:176,frames:BM,endfunc:In};var GM=[-2,11,6,2,-1,-7,-2,-7],HM=GM.map(e=>({ai:xe,dist:e}));dM={firstframe:177,lastframe:184,frames:HM,endfunc:In};var VM=[-3,1,1,0,1],WM=VM.map(e=>({ai:xe,dist:e}));mM={firstframe:185,lastframe:189,frames:WM,endfunc:In};var KM=[0,0,0,-7,-3,-5,8,6,0,0,0],$M=KM.map(e=>({ai:xe,dist:e}));function XM(e){e.monsterinfo.nextframe=I1.lastframe,e.nextthink=-1,e.solid=0}I1={firstframe:190,lastframe:200,frames:$M,endfunc:XM};var YM=[{ai:xe,dist:1,think:AM},{ai:xe,dist:1},{ai:xe,dist:1,think:SM},{ai:xe,dist:0},{ai:xe,dist:-1},{ai:xe,dist:-1},{ai:xe,dist:0,think:kM},{ai:xe,dist:-1}];fM={firstframe:201,lastframe:208,frames:YM,endfunc:In};var qM=[{ai:xe,dist:0,think:EM},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0,think:bM},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0},{ai:xe,dist:0}];C1={firstframe:209,lastframe:216,frames:qM,endfunc:In};B();var ss=.1;function ZM(e,t,n){M(e,ss,n)}function jM(e,t,n){L(e,t,ss,n)}function JM(e,t,n){le(e,t,ss,n)}function QM(e,t,n){me(e,t,ss,n)}function F1(e,t,n){g(e,t)}var Lu,D1,U1,e4,t4,B1;function n4(e){e.monsterinfo.current_move=Lu}function i4(e){e.monsterinfo.current_move=D1}function zu(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=U1:e.monsterinfo.current_move=Lu}function r4(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));Rt(e,n,i,5,1e3,0,0,t,1)}function a4(e){e.monsterinfo.nextframe=B1.lastframe,e.nextthink=-1}var s4=Array.from({length:46},()=>({ai:ZM,dist:0}));Lu={firstframe:0,lastframe:45,frames:s4,endfunc:n4};var o4=Array.from({length:46},()=>({ai:jM,dist:5}));D1={firstframe:0,lastframe:45,frames:o4,endfunc:i4};var c4=Array.from({length:46},()=>({ai:JM,dist:10}));U1={firstframe:0,lastframe:45,frames:c4,endfunc:zu};var u4=Array.from({length:20},(e,t)=>({ai:QM,dist:0,think:t===10?r4:null}));e4={firstframe:46,lastframe:65,frames:u4,endfunc:zu};var l4=Array.from({length:6},()=>({ai:F1,dist:0}));t4={firstframe:66,lastframe:71,frames:l4,endfunc:zu};var d4=Array.from({length:10},()=>({ai:F1,dist:0}));B1={firstframe:84,lastframe:93,frames:d4,endfunc:a4};B();var os=.1;function m4(e,t,n){M(e,os,n)}function f4(e,t,n){L(e,t,os,n)}function h4(e,t,n){le(e,t,os,n)}function _4(e,t,n){me(e,t,os,n)}function G1(e,t,n){g(e,t)}var Nu,H1,V1,g4,v4,W1;function p4(e){e.monsterinfo.current_move=Nu}function y4(e){e.monsterinfo.current_move=H1}function Ou(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=V1:e.monsterinfo.current_move=Nu}function w4(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=G(D(e.enemy.origin,n));Rt(e,n,i,5,1e3,0,0,t,1)}function A4(e){e.monsterinfo.nextframe=W1.lastframe,e.nextthink=-1}var S4=Array.from({length:46},()=>({ai:m4,dist:0}));Nu={firstframe:0,lastframe:45,frames:S4,endfunc:p4};var k4=Array.from({length:46},()=>({ai:f4,dist:5}));H1={firstframe:0,lastframe:45,frames:k4,endfunc:y4};var E4=Array.from({length:46},()=>({ai:h4,dist:10}));V1={firstframe:0,lastframe:45,frames:E4,endfunc:Ou};var b4=Array.from({length:20},(e,t)=>({ai:_4,dist:0,think:t===10?w4:null}));g4={firstframe:46,lastframe:65,frames:b4,endfunc:Ou};var x4=Array.from({length:6},()=>({ai:G1,dist:0}));v4={firstframe:66,lastframe:71,frames:x4,endfunc:Ou};var T4=Array.from({length:10},()=>({ai:G1,dist:0}));W1={firstframe:84,lastframe:93,frames:T4,endfunc:A4};B();var cs=.1;function M4(e,t,n){M(e,cs,n)}function R4(e,t,n){L(e,t,cs,n)}function L4(e,t,n){le(e,t,cs,n)}function z4(e,t,n){me(e,t,cs,n)}function Iu(e,t,n){g(e,t)}var Cu,K1,$1,N4,O4,X1,I4;function C4(e){e.monsterinfo.current_move=Cu}function P4(e){e.monsterinfo.current_move=K1}function us(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=$1:e.monsterinfo.current_move=Cu}function F4(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=G(D(i,n));on(e,n,r,5,2,.05,.05,0,t,4)}var D4=Array.from({length:22},()=>({ai:M4,dist:0}));Cu={firstframe:0,lastframe:21,frames:D4,endfunc:C4};var U4=Array.from({length:15},()=>({ai:R4,dist:4}));K1={firstframe:22,lastframe:36,frames:U4,endfunc:P4};var B4=Array.from({length:8},()=>({ai:L4,dist:12}));$1={firstframe:37,lastframe:44,frames:B4,endfunc:us};var G4=Array.from({length:15},(e,t)=>({ai:z4,dist:0,think:t>=5&&t<=7?F4:null}));N4={firstframe:45,lastframe:59,frames:G4,endfunc:us};var H4=Array.from({length:10},()=>({ai:Iu,dist:0}));O4={firstframe:60,lastframe:69,frames:H4,endfunc:us};var V4=Array.from({length:20},()=>({ai:Iu,dist:0}));function W4(e){e.monsterinfo.nextframe=X1.lastframe,e.nextthink=-1}X1={firstframe:70,lastframe:89,frames:V4,endfunc:W4};var K4=Array.from({length:5},()=>({ai:Iu,dist:0}));I4={firstframe:90,lastframe:94,frames:K4,endfunc:us};B();var Er=.1,$4={x:30,y:28,z:24},X4={x:26,y:16,z:24},Y4={x:26,y:-14,z:24};function q4(e,t,n){M(e,Er,n)}function Z4(e,t,n){L(e,t,Er,n)}function j4(e,t,n){le(e,t,Er,n)}function Y1(e,t,n){me(e,t,Er,n)}function yi(e,t,n){g(e,t)}var Pu,q1,Z1,j1,Fu,J1,Q1,e_,t_,Du,Kc;function n_(e){e.monsterinfo.current_move=Pu}function i_(e){e.monsterinfo.current_move=q1}function Ht(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Z1:e.monsterinfo.current_move=Pu}function J4(e){if(!e.enemy)return;let t=Math.random();t<=.3?e.monsterinfo.current_move=j1:t<=.6?e.monsterinfo.current_move=Fu:e.monsterinfo.current_move=J1}function Uu(e,t){let{forward:n,right:i,up:r}=q(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return F(F(F(a,s),o),u)}function Q4(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=Uu(e,$4),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(D(i,n));Vh(e,n,r,50,300,100,300,0,t)}function eR(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=Uu(e,Y4),i=G(D(e.pos1,n));Wh(e,n,i,50,100,0,t)}function tR(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function nR(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=Uu(e,X4),i=(e.monsterinfo.nextframe||0)-Fu.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=D(s,n),c={...zn(o)};i<=12?c.y-=5*(i-4):c.y-=40-5*(i-12),a=q(c).forward}else{let{forward:s}=q(e.angles);a=s}Rt(e,n,a,15,1e3,0,0,t,1)}function iR(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=Q1):i<=110?(r.engine.sound?.(e,0,"makron/pain2.wav",1,1,0),e.monsterinfo.current_move=e_):Math.random()<=.45&&(r.engine.sound?.(e,0,"makron/pain3.wav",1,1,0),e.monsterinfo.current_move=t_)))}function rR(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 aR(e,t){e.frame=346,e.model="models/monsters/boss3/rider/tris.md2",e.skin=1,e.think=rR,e.nextthink=t.timeSeconds+.1,t.sound(e,0,"makron/spine.wav",1,1,0),e.movetype=7;let{forward:n,up:i}=q(e.angles),r=I(i,120),a=I(n,-120);e.velocity=F(F(e.velocity,r),a),e.origin=F(e.origin,I(n,-10)),e.angles={...e.angles,x:90},e.avelocity=$,t.linkentity(e)}function sR(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,aR(n,t)}function oR(e,t){t.engine.sound?.(e,0,"makron/death.wav",1,1,0),sR(e,t),e.monsterinfo.current_move=Du,e.mins={x:-60,y:-60,z:0},e.maxs={x:60,y:60,z:48}}function cR(e){e.monsterinfo.nextframe=Du.lastframe,e.nextthink=-1}var uR=Array.from({length:60},()=>({ai:q4,dist:0}));Pu={firstframe:0,lastframe:59,frames:uR,endfunc:n_};var lR=Array.from({length:10},()=>({ai:Z4,dist:8}));q1={firstframe:60,lastframe:69,frames:lR,endfunc:i_};var dR=Array.from({length:10},()=>({ai:j4,dist:8}));Z1={firstframe:60,lastframe:69,frames:dR,endfunc:Ht};var mR=Array.from({length:8},(e,t)=>({ai:Y1,dist:0,think:t===3?Q4:null}));j1={firstframe:70,lastframe:77,frames:mR,endfunc:Ht};var fR=Array.from({length:26},(e,t)=>({ai:yi,dist:0,think:t>=4&&t<=20?nR:null}));Fu={firstframe:78,lastframe:103,frames:fR,endfunc:Ht};var hR=Array.from({length:16},(e,t)=>({ai:Y1,dist:0,think:t===7?tR:t===8?eR:null}));J1={firstframe:104,lastframe:119,frames:hR,endfunc:Ht};var _R=Array.from({length:4},()=>({ai:yi,dist:0}));Q1={firstframe:120,lastframe:123,frames:_R,endfunc:Ht};var gR=Array.from({length:4},()=>({ai:yi,dist:0}));e_={firstframe:124,lastframe:127,frames:gR,endfunc:Ht};var vR=Array.from({length:27},()=>({ai:yi,dist:0}));t_={firstframe:128,lastframe:154,frames:vR,endfunc:Ht};var pR=Array.from({length:95},()=>({ai:yi,dist:0}));Du={firstframe:155,lastframe:249,frames:pR,endfunc:cR};var yR=Array.from({length:13},()=>({ai:yi,dist:0}));Kc={firstframe:250,lastframe:262,frames:yR,endfunc:Ht};function wR(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)=>iR(n,i,r,a,t.entities),e.die=(n,i,r,a,s)=>{if(n.health<=-2e3){Ih(t.entities,n.origin,a),t.entities.free(n);return}n.deadflag=2,n.solid=0,oR(n,t.entities)},e.monsterinfo.stand=n_,e.monsterinfo.walk=i_,e.monsterinfo.run=Ht,e.monsterinfo.attack=J4,e.monsterinfo.sight=(n,i)=>{t.entities.sound?.(n,0,"makron/sight.wav",1,1,0),n.monsterinfo.current_move=Kc},e.think=f6,e.monsterinfo.current_move=Kc,e.nextthink=e.timestamp+Er}B();var ls=.1,AR={x:40,y:-20,z:20},SR={x:40,y:20,z:20},kR={x:30,y:0,z:40};function ER(e,t,n){M(e,ls,n)}function bR(e,t,n){L(e,t,ls,n)}function xR(e,t,n){le(e,t,ls,n)}function Bu(e,t,n){me(e,t,ls,n)}function br(e,t,n){g(e,t)}var Gu,r_,a_,Hu,$c,TR,MR,RR,LR,s_;function zR(e){e.monsterinfo.current_move=Gu}function NR(e){e.monsterinfo.current_move=r_}function wi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=a_:e.monsterinfo.current_move=Gu}function OR(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&dn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=Hu:e.monsterinfo.current_move=$c}function Xc(e,t){let{forward:n,right:i,up:r}=q(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return F(F(F(a,s),o),u)}function IR(e,t){if(!e.enemy)return;let n=Xc(e,SR),i=G(D(e.enemy.origin,n));Pa(e,n,i,6,4,.05,.05,0,t,4);let r=Xc(e,AR),a=G(D(e.enemy.origin,r));Pa(e,r,a,6,4,.05,.05,0,t,4)}function CR(e,t){if(!e.enemy)return;let n=Xc(e,kR),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=G(D(i,n));Vh(e,n,r,50,300,100,200,0,t)}function PR(e){e.monsterinfo.nextframe=s_.lastframe,e.nextthink=-1}function FR(e,t){let n=t.spawn();if(n.classname="monster_makron",n.origin={...e.origin},n.target=e.target,n.enemy=e.enemy,wR(n,{entities:t}),n.enemy&&n.enemy.health>0){let r=D(n.enemy.origin,n.origin);n.angles={...n.angles,y:vr(r)};let a=G(r),s=I(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 DR=Array.from({length:51},()=>({ai:ER,dist:0}));Gu={firstframe:0,lastframe:50,frames:DR,endfunc:zR};var UR=Array.from({length:14},()=>({ai:bR,dist:10}));r_={firstframe:51,lastframe:64,frames:UR,endfunc:NR};var BR=Array.from({length:14},()=>({ai:xR,dist:10}));a_={firstframe:51,lastframe:64,frames:BR,endfunc:wi};var GR=Array.from({length:8},()=>({ai:Bu,dist:0})),HR={firstframe:65,lastframe:72,frames:GR,endfunc:null},VR=Array.from({length:6},()=>({ai:Bu,dist:0,think:IR}));Hu={firstframe:73,lastframe:78,frames:VR,endfunc:OR};HR.endfunc=e=>{e.monsterinfo.current_move=Hu};var WR=Array.from({length:4},()=>({ai:br,dist:0}));$c={firstframe:79,lastframe:82,frames:WR,endfunc:wi};var KR=Array.from({length:13},(e,t)=>({ai:Bu,dist:0,think:t===6?CR:null}));TR={firstframe:83,lastframe:95,frames:KR,endfunc:wi};var $R=Array.from({length:3},()=>({ai:br,dist:0}));MR={firstframe:96,lastframe:98,frames:$R,endfunc:wi};var XR=Array.from({length:3},()=>({ai:br,dist:0}));RR={firstframe:99,lastframe:101,frames:XR,endfunc:wi};var YR=Array.from({length:25},()=>({ai:br,dist:0}));LR={firstframe:102,lastframe:126,frames:YR,endfunc:wi};var qR=Array.from({length:50},(e,t)=>({ai:br,dist:0,think:t===49?((n,i)=>{}):t===48?FR:null}));s_={firstframe:127,lastframe:176,frames:qR,endfunc:PR};var Vu=.1,ds=4,o_=8,ms=16,ZR=32,Wu=64,jR=0,JR=39,QR=40,eL=58,tL=59,c_=64,nL=93,iL=95,Ku=99,u_=159,l_=160,d_=172,m_=173,f_=198,rL=199,aL=209,sL=210,oL=226,$u=227,Xu=235,h_=236,Fa=244,cL=245,uL=251,lL=252,dL=266,mL=267,fL=281,__,g_,v_,p_,y_,xr,w_,A_,S_,k_,hL,_L,E_,b_,gL,vL,Yu,x_,pL="insane/insane11.wav",yL="insane/insane5.wav",wL="insane/insane7.wav",Jf=["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 Yc(e,t){t.sound(e,2,pL,1,1,0)}function AL(e,t){(e.spawnflags&Wu)===0&&t.sound(e,2,yL,1,1,0)}function qu(e,t){e.spawnflags&Wu||(e.monsterinfo.attack_finished??0)<t.timeSeconds&&(t.sound(e,2,wL,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2)}function fn(e,t){if(!(e.spawnflags&Wu)&&(e.monsterinfo.attack_finished??0)<t.timeSeconds){let n=Jf[Math.floor(Math.random()*Jf.length)];t.sound(e,2,n,1,1,0),e.monsterinfo.attack_finished=t.timeSeconds+1+Math.random()*2}}function et(e,t){}function T_(e,t){e.spawnflags&ZR||Math.random()<.3&&(Math.random()<.5?e.monsterinfo.current_move=v_:e.monsterinfo.current_move=y_)}function SL(e,t){e.spawnflags&ds&&e.spawnflags&ms||Math.random()<.5&&(e.monsterinfo.current_move=p_)}function Zu(e,t){e.monsterinfo.current_move=xr}function M_(e,t){Math.random()<.8?e.monsterinfo.current_move=Yu:e.monsterinfo.current_move=x_}function ju(e,t){e.spawnflags&o_?(e.monsterinfo.current_move=Yu,e.monsterinfo.aiflags|=1):e.spawnflags&ds&&e.spawnflags&ms?e.monsterinfo.current_move=xr:Math.random()<.5?e.monsterinfo.current_move=__:e.monsterinfo.current_move=g_}function Ju(e,t){if(e.spawnflags&ms&&e.frame===Fa){e.monsterinfo.current_move=xr;return}e.spawnflags&ds?e.monsterinfo.current_move=E_:Math.random()<=.5?e.monsterinfo.current_move=w_:e.monsterinfo.current_move=S_}function Tr(e,t){if(e.spawnflags&ms&&e.frame===Fa){e.monsterinfo.current_move=xr;return}let n=e.frame;e.spawnflags&ds||n>=h_&&n<=Fa||n>=$u&&n<=Xu||n>=Ku&&n<=u_?e.monsterinfo.current_move=b_:Math.random()<=.5?e.monsterinfo.current_move=A_:e.monsterinfo.current_move=k_}function R_(e,t){e.spawnflags&o_?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,Vu,a)},dist:t}}var kL=[h(M),h(M),h(M),h(M),h(M),h(M,0,T_)];__={firstframe:tL,lastframe:c_,frames:kL,endfunc:ju};var EL=[h(M,0,AL),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,T_)];g_={firstframe:c_,lastframe:nL,frames:EL,endfunc:ju};var bL=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,qu),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,2.7),h(g,4.1),h(g,6),h(g,7.6),h(g,3.6),h(g),h(g),h(g,0,Yc),h(g),h(g),h(g),h(g),h(g),h(g,0,Yc),h(g),h(g),h(g),h(g),h(g),h(g)];v_={firstframe:jR,lastframe:JR,frames:bL,endfunc:Zu};var xL=[h(g,-.7),h(g,-1.2),h(g,-1.5),h(g,-4.5),h(g,-3.5),h(g,-.2),h(g),h(g,-1.3),h(g,-3),h(g,-2),h(g),h(g),h(g),h(g,-3.3),h(g,-1.6),h(g,-.3),h(g),h(g),h(g)];p_={firstframe:QR,lastframe:eL,frames:xL,endfunc:ju};var TL=[h(g,.2),h(g,11.5),h(g,5.1),h(g,7.1),h(g)];y_={firstframe:iL,lastframe:Ku,frames:TL,endfunc:Zu};var ML=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,-1.7),h(g,-1.6),h(g),h(g),h(g),h(g,0,Yc),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,0,qu),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g,.5),h(g),h(g,-.2,fn),h(g),h(g,.2),h(g,.4),h(g,.6),h(g,.8),h(g,.7),h(g,0,SL)];xr={firstframe:Ku,lastframe:u_,frames:ML,endfunc:Zu};var qc=[h(L,0,fn),h(L,2.5),h(L,3.5),h(L,1.7),h(L,2.3),h(L,2.4),h(L,2.2,et),h(L,4.2),h(L,5.6),h(L,3.3),h(L,2.4),h(L,.9),h(L,0,et)];w_={firstframe:l_,lastframe:d_,frames:qc,endfunc:Ju};A_={firstframe:l_,lastframe:d_,frames:qc.map(e=>({ai:(t,n,i)=>{e.ai===qc[0].ai&&fn(t,i),le(t,n,Vu,i)},dist:e.dist})),endfunc:Tr};var Zc=[h(L,0,fn),h(L,3.4),h(L,3.6),h(L,2.9),h(L,2.2),h(L,2.6,et),h(L),h(L,.7),h(L,4.8),h(L,5.3),h(L,1.1),h(L,2,et),h(L,.5),h(L),h(L),h(L,4.9),h(L,6.7),h(L,3.8),h(L,2,et),h(L,.2),h(L),h(L,3.4),h(L,6.4),h(L,5),h(L,1.8,et),h(L)];S_={firstframe:m_,lastframe:f_,frames:Zc,endfunc:Ju};k_={firstframe:m_,lastframe:f_,frames:Zc.map(e=>({ai:(t,n,i)=>{e.ai===Zc[0].ai&&fn(t,i),le(t,n,Vu,i)},dist:e.dist})),endfunc:Tr};var RL=[h(g),h(g),h(g),h(g),h(g,0,et),h(g),h(g),h(g),h(g),h(g),h(g,0,et)];hL={firstframe:rL,lastframe:aL,frames:RL,endfunc:Tr};var LL=[h(g),h(g),h(g),h(g),h(g,0,et),h(g),h(g),h(g),h(g),h(g),h(g,0,et),h(g),h(g,0,et),h(g),h(g),h(g),h(g)];_L={firstframe:sL,lastframe:oL,frames:LL,endfunc:R_};var L_=[h(L,0,fn),h(L,1.5),h(L,2.1),h(L,3.6),h(L,2,et),h(L,.9),h(L,3),h(L,3.4),h(L,2.4,et)];E_={firstframe:$u,lastframe:Xu,frames:L_,endfunc:Ju};b_={firstframe:$u,lastframe:Xu,frames:L_,endfunc:Tr};var zL=[h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];gL={firstframe:h_,lastframe:Fa,frames:zL,endfunc:Tr};var NL=[h(g),h(g),h(g),h(g),h(g,0,fn),h(g),h(g)];vL={firstframe:cL,lastframe:uL,frames:NL,endfunc:R_};var OL=[h(g,0,qu),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];Yu={firstframe:lL,lastframe:dL,frames:OL,endfunc:M_};var IL=[h(g,0,fn),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g),h(g)];x_={firstframe:mL,lastframe:fL,frames:IL,endfunc:M_};B();B();var CL=.1,PL=0;var jc=0,z_=39,FL=40,DL=47,UL=48,BL=53,GL=54,HL=56,VL=57,WL=59,KL=60,$L=62,XL=63,YL=76,qL=77,ZL=93,jL=94,JL=100,QL=101,ez=113,tz=114,nz=117,N_,O_,I_,iz,rz,az,sz,oz,cz,uz,lz;function E(e,t=0,n){return{ai:(i,r,a)=>{n&&n(i,a),e(i,t,CL,a)},dist:t}}function Qf(e,t){e.monsterinfo.current_move=N_,t.timeSeconds<1&&(e.frame=jc+Math.floor(Math.random()*(z_-jc+1)))}function dz(e,t){e.monsterinfo.current_move=O_}function Ai(e,t){if(t.timeSeconds<e.pain_debounce_time&&!e.enemy){e.movetarget?dz(e,t):Qf(e,t);return}if(e.monsterinfo.aiflags&1){Qf(e,t);return}e.monsterinfo.current_move=I_}function mz(e,t){let n={x:0,y:0,z:0},r=q(e.angles).forward,a=_i(e.origin);a.z+=e.viewheight;let s;if(e.enemy){let o;e.enemy.health>0?(o=D(e.enemy.origin,I(e.enemy.velocity,.2)),o.z+=e.enemy.viewheight):(o=_i(e.enemy.absmin),o.z+=e.enemy.size.z/2+1),s=D(o,a),s=G(s)}else s=r;on(e,a,s,3,4,0,0,PL,t)}function C_(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 fz(e,t){mz(e,t);let n=e.monsterinfo.fire_wait??0;t.timeSeconds>=n?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}var hz=[E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M),E(M)];N_={firstframe:jc,lastframe:z_,frames:hz,endfunc:null};var _z=[E(L),E(L,6),E(L,10),E(L,3),E(L,2),E(L,7),E(L,10),E(L,1)];O_={firstframe:FL,lastframe:DL,frames:_z,endfunc:null};var gz=[E(le,4),E(le,15),E(le,15),E(le,8),E(le,20),E(le,15)];I_={firstframe:UL,lastframe:BL,frames:gz,endfunc:null};var vz=[E(g,-5),E(g,4),E(g,1)];iz={firstframe:GL,lastframe:HL,frames:vz,endfunc:Ai};var pz=[E(g,-4),E(g,4),E(g)];rz={firstframe:VL,lastframe:WL,frames:pz,endfunc:Ai};var yz=[E(g,-1),E(g,1),E(g,0)];az={firstframe:KL,lastframe:$L,frames:yz,endfunc:Ai};var wz=[E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue)];sz={firstframe:XL,lastframe:YL,frames:wz,endfunc:Ai};var Az=[E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue),E(ue)];oz={firstframe:qL,lastframe:ZL,frames:Az,endfunc:Ai};var Sz=[E(g),E(g),E(g,-13),E(g,14),E(g,3),E(g,-2),E(g,1)];cz={firstframe:jL,lastframe:JL,frames:Sz,endfunc:C_};var kz=[E(g),E(g,7),E(g,-6),E(g,-5),E(g,1),E(g),E(g,-1),E(g,-2),E(g,-1),E(g,-9),E(g,-13),E(g,-13),E(g)];uz={firstframe:QL,lastframe:ez,frames:kz,endfunc:C_};var Ez=[E(me,-2,fz),E(me,-2),E(me,3),E(me,2)];lz={firstframe:tz,lastframe:nz,frames:Ez,endfunc:Ai};B();B();var hr=.1;function bz(e,t,n){if(e.classname==="monster_medic"&&U_(e,n)){e.monsterinfo.current_move=Mr;return}M(e,hr,n)}function xz(e,t,n){L(e,t,hr,n)}function Tz(e,t,n){e.classname==="monster_medic"&&U_(e,n)?e.monsterinfo.current_move=Mr:le(e,t,hr,n)}function bt(e,t,n){me(e,t,hr,n)}function Qu(e,t,n){g(e,t)}var el,P_,Mr,Mz,F_,Rz,Lz,D_;function zz(e){e.monsterinfo.current_move=el}function Nz(e){e.monsterinfo.current_move=P_}function Rr(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&ln(e,e.enemy)<80){e.monsterinfo.current_move=F_;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Mr:e.monsterinfo.current_move=el}function Oz(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=G(D(e.enemy.origin,n));Rt(e,n,i,2,1e3,0,0,t,10)}function tn(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(ln(e,e.enemy)>400){e.monsterinfo.current_move=Mr;return}let i=q(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},u=F(e.origin,F(I(r,o.x),F(I(a,o.y),I(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,se.temp_entity,{te:Ae.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:u,end:c})}function Iz(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),tn(e,t)}function Cz(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(ln(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 U_(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,u,c,l)=>{let m=t.trace(a,s,o,u,c,l);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||!dn(e,a,r))return;let s=ln(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function Pz(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=q(e.angles),s=I(a.forward,64),o=F(e.origin,s),u={...o,z:o.z+8},c=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},u,e,Ve|nn|dr);if(c.fraction<1||c.startsolid||c.allsolid)return;let l=t.spawn();l.origin=u,l.angles={...e.angles},r(l,{entities:t,keyValues:{classname:i},warn:()=>{},free:d=>t.free(d)}),l.enemy=e.enemy,t.multicast(u,1,se.muzzleflash,{entId:l.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function Fz(e){e.monsterinfo.nextframe=D_.lastframe,e.nextthink=-1}var Dz=Array.from({length:30},()=>({ai:bz,dist:0}));el={firstframe:0,lastframe:29,frames:Dz,endfunc:zz};var Uz=Array.from({length:40},()=>({ai:xz,dist:3}));P_={firstframe:30,lastframe:69,frames:Uz,endfunc:Nz};var Bz=Array.from({length:20},()=>({ai:Tz,dist:12}));Mr={firstframe:70,lastframe:89,frames:Bz,endfunc:Rr};var Gz=Array.from({length:16},(e,t)=>({ai:bt,dist:0,think:t>=4&&t<=13?Oz:null}));Mz={firstframe:90,lastframe:105,frames:Gz,endfunc:Rr};var Hz=[{ai:bt,dist:0,think:Iz},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:tn},{ai:bt,dist:0,think:Cz}];F_={firstframe:106,lastframe:114,frames:Hz,endfunc:Rr};var Vz=Array.from({length:6},()=>({ai:Qu,dist:0}));Lz={firstframe:116,lastframe:121,frames:Vz,endfunc:Rr};var Wz=Array.from({length:23},(e,t)=>({ai:Qu,dist:0,think:t===11?Pz:null}));Rz={firstframe:122,lastframe:144,frames:Wz,endfunc:Rr};var Kz=Array.from({length:30},()=>({ai:Qu,dist:0}));D_={firstframe:161,lastframe:190,frames:Kz,endfunc:Fz};B();var Lr=.1;function X(e,t,n){M(e,Lr,n)}function je(e,t,n){L(e,t,Lr,n)}function ri(e,t,n){le(e,t,Lr,n)}function Qt(e,t,n){me(e,t,Lr,n)}function de(e,t,n){g(e,t)}function Cc(e,t,n){_b(e,null,t,Lr)}var B_,G_,Da,$z,Xz,Yz,qz,H_,V_;function Zz(e){e.monsterinfo.current_move=G_}function jz(e){e.monsterinfo.current_move=B_}function Si(e){e.monsterinfo.current_move=Da}function W_(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=D(e.enemy.origin,e.origin);if(Re(i)>100)return;let a=G(i);fe(e.enemy,e,e,a,e.enemy.origin,$,t,0,0,0,n.timeSeconds)}function Jz(e,t){W_(e,30,t)}function eh(e,t){W_(e,30,t)}function ui(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Da),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Da)}function Qz(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,G(e.velocity),e.origin,$,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function eN(e,t){let n=q(e.angles).forward;e.movetype=7,e.touch=Qz,e.velocity=F(I(n,300),{x:0,y:0,z:300}),e.velocity=F(I(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function tN(e){e.monsterinfo.nextframe=H_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var nN=[{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: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: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: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: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:0}];B_={firstframe:0,lastframe:50,frames:nN,endfunc:jz};var iN=[{ai:je,dist:3},{ai:je,dist:1},{ai:je,dist:5},{ai:je,dist:10},{ai:je,dist:13},{ai:je,dist:12},{ai:je,dist:0},{ai:je,dist:0},{ai:je,dist:5},{ai:je,dist:6},{ai:je,dist:16},{ai:je,dist:15},{ai:je,dist:6}];G_={firstframe:51,lastframe:63,frames:iN,endfunc:Zz};var rN=[{ai:ri,dist:20},{ai:ri,dist:15},{ai:ri,dist:35},{ai:ri,dist:20},{ai:ri,dist:10},{ai:ri,dist:20}];Da={firstframe:64,lastframe:69,frames:rN,endfunc:Si};var aN=[{ai:Qt,dist:0},{ai:Qt,dist:0},{ai:Qt,dist:0,think:eh},{ai:Qt,dist:0},{ai:Qt,dist:0,think:Jz},{ai:Qt,dist:0},{ai:Qt,dist:0,think:eh},{ai:Qt,dist:0}];$z={firstframe:70,lastframe:77,frames:aN,endfunc:Si};var sN=[{ai:Cc,dist:0},{ai:Cc,dist:0},{ai:Cc,dist:0,think:eN},{ai:de,dist:0,think:ui},{ai:de,dist:0,think:ui},{ai:de,dist:0,think:ui},{ai:de,dist:0,think:ui},{ai:de,dist:0,think:ui}];V_={firstframe:93,lastframe:100,frames:sN,endfunc:Si};V_.frames[3].ai=(e,t,n)=>{ui(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var oN=[{ai:de,dist:4},{ai:de,dist:-3},{ai:de,dist:-8},{ai:de,dist:2},{ai:de,dist:5}];Xz={firstframe:78,lastframe:82,frames:oN,endfunc:Si};var cN=[{ai:de,dist:-24},{ai:de,dist:11},{ai:de,dist:5},{ai:de,dist:-2}];Yz={firstframe:83,lastframe:86,frames:cN,endfunc:Si};var uN=[{ai:de,dist:11},{ai:de,dist:0},{ai:de,dist:-2},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];qz={firstframe:87,lastframe:92,frames:uN,endfunc:Si};var lN=[{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0},{ai:de,dist:0}];H_={firstframe:101,lastframe:109,frames:lN,endfunc:tN};B();var fs=.1,dN=()=>Math.random();function re(e,t,n){M(e,fs,n)}function Ft(e,t,n){L(e,t,fs,n)}function Dt(e,t,n){le(e,t,fs,n)}function ze(e,t,n){me(e,t,fs,n)}function Ne(e,t,n){g(e,t)}var tl,K_,$_,mN,fN,X_,Y_,hN,_N,nl,q_;function gN(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function vN(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function ai(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Jc(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function pN(e){e.monsterinfo.current_move=nl}function yN(e){dN()<=.8?e.monsterinfo.current_move=nl:e.monsterinfo.current_move=q_}function Z_(e){e.monsterinfo.current_move=tl}function il(e){e.monsterinfo.current_move=K_}function j_(e){e.monsterinfo.current_move=Y_}function J_(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=tl:e.monsterinfo.current_move=$_}function Pc(e,t){let n=D(t,e);if(Re(n)>256)return!1;let a=zn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function ft(e,t){if(!e.enemy)return;let n=q(e.angles),i=n.forward,r=n.right,a=n.up,s={x:24,y:0,z:6},o=F(e.origin,F(I(i,s.x),F(I(r,s.y),I(a,s.z)))),u=_i(e.enemy.origin);if(!Pc(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Pc(o,u)&&(u={...u,z:e.enemy.origin.z+e.enemy.mins.z+8},!Pc(o,u)))||t.trace(o,u,$,$,e,Bt).ent!==e.enemy)return;let l=2,m=e.frame;m===41?(l=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),l=2),t.multicast(e.origin,0,se.temp_entity,{te:Ae.PARASITE_ATTACK,entId:e.index,start:o,end:u});let d=G(D(o,u));fe(e.enemy,e,e,d,e.enemy.origin,$,l,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=l,e.health>e.max_health&&(e.health=e.max_health))}function wN(e){e.monsterinfo.nextframe=X_.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var AN=[{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:ai},{ai:re,dist:0},{ai:re,dist:0,think:ai},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:ai},{ai:re,dist:0},{ai:re,dist:0,think:ai},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:ai},{ai:re,dist:0},{ai:re,dist:0,think:ai}];tl={firstframe:83,lastframe:99,frames:AN,endfunc:Z_};var SN=[{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0}];_N={firstframe:100,lastframe:103,frames:SN,endfunc:pN};var kN=[{ai:re,dist:0,think:Jc},{ai:re,dist:0},{ai:re,dist:0},{ai:re,dist:0,think:Jc},{ai:re,dist:0},{ai:re,dist:0}];nl={firstframe:104,lastframe:109,frames:kN,endfunc:yN};var EN=[{ai:re,dist:0,think:Jc},{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}];q_={firstframe:110,lastframe:117,frames:EN,endfunc:Z_};var bN=[{ai:Dt,dist:0},{ai:Dt,dist:30}];Y_={firstframe:68,lastframe:69,frames:bN,endfunc:J_};var xN=[{ai:Dt,dist:30},{ai:Dt,dist:30},{ai:Dt,dist:22},{ai:Dt,dist:19},{ai:Dt,dist:24},{ai:Dt,dist:28},{ai:Dt,dist:25}];$_={firstframe:70,lastframe:76,frames:xN,endfunc:J_};var TN=[{ai:Ft,dist:0},{ai:Ft,dist:30,think:il}];hN={firstframe:68,lastframe:69,frames:TN,endfunc:il};var MN=[{ai:Ft,dist:30},{ai:Ft,dist:30},{ai:Ft,dist:22},{ai:Ft,dist:19},{ai:Ft,dist:24},{ai:Ft,dist:28},{ai:Ft,dist:25}];K_={firstframe:70,lastframe:76,frames:MN,endfunc:il};var RN=[{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:6},{ai:Ne,dist:16},{ai:Ne,dist:-6},{ai:Ne,dist:-7},{ai:Ne,dist:0}];fN={firstframe:57,lastframe:67,frames:RN,endfunc:j_};var LN=[{ai:ze,dist:0,think:gN},{ai:ze,dist:0},{ai:ze,dist:15,think:ft},{ai:ze,dist:0,think:ft},{ai:ze,dist:0,think:ft},{ai:ze,dist:0,think:ft},{ai:ze,dist:0,think:ft},{ai:ze,dist:-2,think:ft},{ai:ze,dist:-2,think:ft},{ai:ze,dist:-3,think:ft},{ai:ze,dist:-2,think:ft},{ai:ze,dist:0,think:ft},{ai:ze,dist:-1,think:ft},{ai:ze,dist:0,think:vN},{ai:ze,dist:-2},{ai:ze,dist:-2},{ai:ze,dist:-3},{ai:ze,dist:0}];mN={firstframe:39,lastframe:56,frames:LN,endfunc:j_};var zN=[{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}];X_={firstframe:32,lastframe:38,frames:zN,endfunc:wN};B();var hs=.1;var NN=2,ON=4;function IN(e,t,n){M(e,hs,n)}function CN(e,t,n){L(e,t,hs,n)}function PN(e,t,n){le(e,t,hs,n)}function Q_(e,t,n){me(e,t,hs,n)}function eg(e,t,n){g(e,t)}var rl,tg,ng,FN,DN,UN,ig;function BN(e){e.monsterinfo.current_move=rl}function GN(e){e.monsterinfo.current_move=tg}function _s(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ng:e.monsterinfo.current_move=rl}function zr(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Nr(e,t){if(!e.enemy){let{forward:i}=q(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 G(D(n,t))}function HN(e,t){if(!e.enemy)return;let n=zr(e),i=Nr(e,n);Rt(e,n,i,5,600,0,0,t,1)}function VN(e,t){if(!e.enemy)return;let n=zr(e),i=Nr(e,n),r=2,a=4,s=20,o=.15,u=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),H6(e,n,i,r,a,o,u,s,0,t,3)}function WN(e,t){if(!e.enemy)return;let n=zr(e),i=Nr(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),on(e,n,i,r,a,s,o,0,t,4)}function KN(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:i,right:r,up:a}=q(n.angles),s={...n.origin};s=F(s,I(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let u=G(D(o,s));e.origin=s,e.movedir=u,t.linkentity(e)}function $N(e,t){if(!e.enemy)return;let n=zr(e),i=Nr(e,n);W6(e,n,i,5,600,0,0,t)}function XN(e,t){if(!e.enemy)return;let n=zr(e),i=Nr(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),V6(e,n,i,r,a,0,0,t)}function YN(e,t){e.enemy&&Hc(e,1,!1,KN,t)}function qN(e,t){e.count<2?$N(e,t):e.count<4?XN(e,t):YN(e,t)}function rg(e,t){if(e.style===1){qN(e,t);return}e.spawnflags&NN?VN(e,t):e.spawnflags&ON?WN(e,t):HN(e,t)}var ZN=Array.from({length:30},()=>({ai:IN,dist:0}));rl={firstframe:0,lastframe:29,frames:ZN,endfunc:BN};var jN=Array.from({length:40},()=>({ai:CN,dist:2}));tg={firstframe:30,lastframe:69,frames:jN,endfunc:GN};var JN=Array.from({length:20},()=>({ai:PN,dist:10}));ng={firstframe:70,lastframe:89,frames:JN,endfunc:_s};var QN=Array.from({length:10},(e,t)=>({ai:Q_,dist:0,think:t===5?rg:null}));FN={firstframe:90,lastframe:99,frames:QN,endfunc:_s};var eO=Array.from({length:10},(e,t)=>({ai:Q_,dist:0,think:t>=4&&t<=8?rg:null}));DN={firstframe:90,lastframe:99,frames:eO,endfunc:_s};var tO=Array.from({length:6},()=>({ai:eg,dist:0}));UN={firstframe:100,lastframe:105,frames:tO,endfunc:_s};var nO=Array.from({length:10},()=>({ai:eg,dist:0}));function iO(e){e.monsterinfo.nextframe=ig.lastframe,e.nextthink=-1}ig={firstframe:106,lastframe:115,frames:nO,endfunc:iO};B();var ag=.1,rO={x:30,y:30,z:40},aO={x:30,y:-30,z:40},sO={x:20,y:0,z:70};function oO(e,t,n){M(e,ag,n)}function cO(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=sl:e.monsterinfo.current_move=gs}function al(e,t,n){me(e,t,ag,n)}function Or(e,t,n){g(e,t)}var gs,sl,uO,lO,sg,og,dO,mO,fO,cg;function hO(e){e.monsterinfo.current_move=gs}function Cn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=sl:e.monsterinfo.current_move=gs}function ol(e,t){let{forward:n,right:i,up:r}=q(e.angles),a={...e.origin},s=I(n,t.x),o=I(i,t.y),u=I(r,t.z);return F(F(F(a,s),o),u)}function _O(e,t){if(!e.enemy)return;let n=ol(e,aO),i=G(D(e.enemy.origin,n));Ar(e,n,i,50,650,0,t)}function gO(e,t){if(!e.enemy)return;let n=ol(e,sO),i=G(D(e.enemy.origin,n));K6(e,n,i,50,600,0,t)}function vO(e,t){if(!e.enemy)return;let n=ol(e,rO),i=G(D(e.enemy.origin,n));Pa(e,n,i,6,4,.05,.05,0,t,4)}function pO(e,t){let n=(i,r,a,s,o,u)=>{let c=t.trace(i,r,a,s,o,u);return{fraction:c.fraction,ent:c.ent}};e.enemy&&dn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=sg:e.monsterinfo.current_move=og}function yO(e){e.monsterinfo.nextframe=cg.lastframe,e.nextthink=-1}var wO=Array.from({length:60},()=>({ai:oO,dist:0}));gs={firstframe:0,lastframe:59,frames:wO,endfunc:hO};var AO=Array.from({length:18},()=>({ai:cO,dist:12}));sl={firstframe:60,lastframe:77,frames:AO,endfunc:Cn};var SO=Array.from({length:4},()=>({ai:Or,dist:0}));fO={firstframe:78,lastframe:81,frames:SO,endfunc:Cn};var kO=Array.from({length:4},()=>({ai:Or,dist:0}));mO={firstframe:82,lastframe:85,frames:kO,endfunc:Cn};var EO=Array.from({length:4},()=>({ai:Or,dist:0}));dO={firstframe:86,lastframe:89,frames:EO,endfunc:Cn};var bO=Array.from({length:24},()=>({ai:Or,dist:0}));cg={firstframe:90,lastframe:113,frames:bO,endfunc:yO};var xO=Array.from({length:6},(e,t)=>({ai:al,dist:0,think:t===0||t===3?gO:null}));lO={firstframe:114,lastframe:119,frames:xO,endfunc:Cn};var TO=Array.from({length:27},(e,t)=>({ai:al,dist:0,think:t===7||t===10||t===13?_O:null}));uO={firstframe:120,lastframe:146,frames:TO,endfunc:Cn};var MO=Array.from({length:6},()=>({ai:al,dist:0,think:vO}));sg={firstframe:147,lastframe:152,frames:MO,endfunc:pO};var RO=Array.from({length:14},()=>({ai:Or,dist:0}));og={firstframe:153,lastframe:166,frames:RO,endfunc:Cn};B();var cl=.1;function ug(e,t,n,i,r){let a=r.trace(t,n,$,$,e,Bt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return G(D(n,t));let s=F(n,I(i,-20)),o=r.trace(t,s,$,$,e,Bt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return G(D(s,t));let u=F(n,I(i,20)),c=r.trace(t,u,$,$,e,Bt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?G(D(u,t)):null}function lg(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=D(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=vr(n)}}function LO(e,t,n){M(e,cl,n)}function zO(e,t,n){L(e,t,cl,n)}function NO(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ll:e.monsterinfo.current_move=vs}function ul(e,t,n){me(e,t,cl,n)}function dg(e,t,n){g(e,t)}var vs,mg,ll,OO,IO,CO,PO,fg;function FO(e){e.monsterinfo.current_move=vs}function DO(e){e.monsterinfo.current_move=mg}function Ir(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ll:e.monsterinfo.current_move=vs}function UO(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:u}=q(o),c=e.monsterinfo.blind_fire_target,l=ug(e,n,c,u,t);if(!l)return;i=l}else i=G(D(e.enemy.origin,n));Rt(e,n,i,30,1e3,0,0,t,1)}function BO(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=G(D(e.enemy.origin,n));on(e,n,i,20,2,.05,.05,0,t,4)}function GO(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:u}=q(o),c=e.monsterinfo.blind_fire_target,l=ug(e,n,c,u,t);if(!l)return;i=l}else i=G(D(e.enemy.origin,n));Ar(e,n,i,50,650,0,t)}function HO(e){e.monsterinfo.nextframe=fg.lastframe,e.nextthink=-1}function VO(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),Ir(e)}var WO=Array.from({length:30},()=>({ai:LO,dist:0}));vs={firstframe:0,lastframe:29,frames:WO,endfunc:FO};var KO=Array.from({length:16},()=>({ai:zO,dist:5}));mg={firstframe:30,lastframe:45,frames:KO,endfunc:DO};var $O=Array.from({length:16},()=>({ai:NO,dist:10}));ll={firstframe:46,lastframe:61,frames:$O,endfunc:Ir};var XO=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=lg:t>5&&t<12&&(n=UO),{ai:ul,dist:0,think:n}});OO={firstframe:62,lastframe:77,frames:XO,endfunc:Ir};var YO=Array.from({length:20},(e,t)=>({ai:ul,dist:0,think:t%2===0&&t>5?BO:null}));IO={firstframe:78,lastframe:97,frames:YO,endfunc:Ir};var qO=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=lg:(t===8||t===12||t===16)&&(n=GO),{ai:ul,dist:0,think:n}});CO={firstframe:98,lastframe:115,frames:qO,endfunc:VO};var ZO=Array.from({length:6},()=>({ai:dg,dist:0}));PO={firstframe:116,lastframe:121,frames:ZO,endfunc:Ir};var jO=Array.from({length:16},()=>({ai:dg,dist:0}));fg={firstframe:122,lastframe:137,frames:jO,endfunc:HO};B();var dl=.1;function JO(e,t,n){M(e,dl,n)}function ml(e,t,n){le(e,t,dl,n)}function QO(e,t,n){me(e,t,dl,n)}var fl,hg,eI,tI,_g;function nI(e){e.monsterinfo.current_move=fl}function hl(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hg:e.monsterinfo.current_move=fl}function iI(e,t){if(!e.enemy)return;let n=q(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=G(D(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),Rt(e,i,r,2,1e3,1,0,t)}var rI=Array.from({length:1},()=>({ai:JO,dist:0}));fl={firstframe:0,lastframe:0,frames:rI,endfunc:nI};var aI=Array.from({length:1},()=>({ai:ml,dist:0}));hg={firstframe:0,lastframe:0,frames:aI,endfunc:hl};var sI=Array.from({length:8},(e,t)=>({ai:QO,dist:0,think:t===4?iI:void 0}));eI={firstframe:1,lastframe:8,frames:sI,endfunc:hl};var oI=Array.from({length:2},()=>({ai:ml,dist:0}));tI={firstframe:9,lastframe:10,frames:oI,endfunc:hl};var cI=Array.from({length:4},()=>({ai:ml,dist:0}));function uI(e){e.monsterinfo.nextframe=_g.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}_g={firstframe:11,lastframe:14,frames:cI,endfunc:uI};B();var ps=.1;var _r=()=>Math.random(),ys=(e,t)=>Math.floor(Math.random()*(t-e+1))+e;function ki(e,t,n){M(e,ps,n)}function si(e,t,n){L(e,t,ps,n)}function Qe(e,t,n){le(e,t,ps,n)}function Y(e,t,n){me(e,t,ps,n)}function We(e,t,n){g(e,t)}var _l,gg,vg,ws,gl,lI,pg,dI,yg,wg,Ag,Sg,kg,mI,fI,hI,_I,gI,vI,pI,yI,wI,AI,As=2,Eg=80,SI=100;var kI=8;var vl=32;function Ei(e,t){!(e.spawnflags&vl)&&e.waterlevel>=As&&PI(e)}function EI(e){e.waterlevel>=As?(e.flags|=2,e.monsterinfo.current_move=gg):e.monsterinfo.current_move!==gl&&(e.monsterinfo.current_move=_l)}function bg(e){e.flags|=2,e.monsterinfo.current_move=vg}function Ss(e,t){if(!e.enemy)return;let n=ys(5,10),i=100,r=D(e.enemy.origin,e.origin);Re(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck2.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,$,n,n,0,0,t.timeSeconds)):t.engine.sound?.(e,0,"gek/gk_atck1.wav",1,1,0)}function pl(e,t){if(!e.enemy)return;let n=ys(5,10),i=100,r=D(e.enemy.origin,e.origin);Re(r)<=i?(t.engine.sound?.(e,0,"gek/gk_atck3.wav",1,1,0),fe(e.enemy,e,e,G(r),e.enemy.origin,$,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=5,i=Eg,r=D(e.enemy.origin,e.origin);Re(r)<=i&&fe(e.enemy,e,e,G(r),e.enemy.origin,$,n,0,0,0,t.timeSeconds)}function bI(e){e.monsterinfo.current_move=gl}function xg(e){_r()>.75&&e.health<e.max_health&&(e.monsterinfo.nextframe=0)}function Tg(e,t){let n=ys(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 Mg(e,t){if(e.spawnflags&kI){let n=_r();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+=ys(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 Vt(e){!(e.spawnflags&vl)&&e.waterlevel>=As?e.monsterinfo.current_move=ws:e.monsterinfo.current_move=wg}function xI(e){!(e.spawnflags&vl)&&e.waterlevel>=As?e.monsterinfo.current_move=ws:e.monsterinfo.current_move=yg}function Rg(e){if(!e.enemy||e.enemy.health<=0)return;Re(D(e.enemy.origin,e.origin))<=Eg&&(e.frame===114?e.monsterinfo.current_move=Sg:e.frame===123&&(e.monsterinfo.current_move=Ag))}function TI(e,t,n,i,r,a){let s=yr(a,e,t,n,i,r,0);s.model="models/objects/loogy/tris.md2"}function MI(e,t){if(!e.enemy||e.enemy.health<=0)return;let n=q(e.angles),i=n.forward,r=n.right,a=n.up,s={x:-18,y:-.8,z:24},o=F(e.origin,F(I(i,s.x),F(I(r,s.y),I(a,s.z))));o.z+=2;let u=_i(e.enemy.origin);u.z+=e.enemy.viewheight||0;let c=G(D(u,o));TI(e,o,c,5,550,t),t.engine.sound?.(e,0,"gek/gk_atck4.wav",1,1,0)}function RI(e){if(_r()>.8&&e.health<e.max_health){e.monsterinfo.current_move=pg;return}if(e.enemy&&e.enemy.health>0){let t=Re(D(e.enemy.origin,e.origin));_r()>.7&&t<=SI&&(e.monsterinfo.current_move=kg)}}function LI(e,t,n,i){if(e.health<=0){e.touch=void 0;return}e.touch=void 0}function zI(e,t){let i=q(e.angles).forward;t.engine.sound?.(e,0,"gek/gk_sght1.wav",1,1,0),e.origin.z+=1,e.velocity=F(I(i,700),{x:0,y:0,z:250}),e.groundentity=null,e.touch=LI}function NI(e,t){if(e.groundentity){t.engine.sound?.(e,0,"mutant/thud1.wav",1,1,0),e.velocity=$;return}}function Tn(e){e.groundentity&&(e.velocity=$)}function OI(e,t){}function ks(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.nextthink=-1}function Lg(e,t){Ih(t,e.origin,20),e.deadflag=2}function II(e,t){_r()>.9&&Lg(e,t)}function CI(e){e.maxs.z=0}function PI(e){e.flags|=2,e.yaw_speed=10,e.viewheight=10,e.monsterinfo.current_move=ws,e.mins={x:-18,y:-18,z:-24},e.maxs={x:18,y:18,z:16}}var zg=Array(38).fill({ai:ki,dist:0});zg[38]={ai:ki,dist:0,think:Ei};_l={firstframe:0,lastframe:38,frames:zg,endfunc:null};var FI=Array(32).fill({ai:ki,dist:14});gg={firstframe:39,lastframe:70,frames:FI,endfunc:null};var DI=Array(32).fill({ai:Qe,dist:14});vg={firstframe:39,lastframe:70,frames:DI,endfunc:bg};var Es=Array(32).fill({ai:Qe,dist:14});Es[8]={ai:Qe,dist:18,think:Ss};Es[14]={ai:Qe,dist:24,think:pl};Es[20]={ai:Qe,dist:22,think:yl};ws={firstframe:39,lastframe:70,frames:Es,endfunc:bg};var wl=Array(32).fill({ai:ki,dist:0});wl[0]={ai:ki,dist:0,think:Mg};wl[31]={ai:ki,dist:0,think:xg};lI={firstframe:71,lastframe:102,frames:wl,endfunc:EI};var bs=Array(32).fill({ai:We,dist:0});bs[0]={ai:We,dist:0,think:Mg};bs[31]={ai:We,dist:0,think:xg};pg={firstframe:71,lastframe:102,frames:bs,endfunc:e=>XI(e,_l)};gl={firstframe:71,lastframe:102,frames:bs,endfunc:bI};var UI=[{ai:si,dist:3.8,think:Ei},{ai:si,dist:19.6},{ai:si,dist:25.5},{ai:si,dist:34.6,think:Tg},{ai:si,dist:27.3},{ai:si,dist:28.4}];dI={firstframe:103,lastframe:108,frames:UI,endfunc:null};var BI=[{ai:Qe,dist:3.8,think:Ei},{ai:Qe,dist:19.6},{ai:Qe,dist:25.5},{ai:Qe,dist:34.6,think:Tg},{ai:Qe,dist:27.3},{ai:Qe,dist:28.4}];yg={firstframe:103,lastframe:108,frames:BI,endfunc:null};var GI=[{ai:Qe,dist:.2},{ai:Qe,dist:19.7}];wg={firstframe:0,lastframe:1,frames:GI,endfunc:xI};var HI=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:MI},{ai:Y,dist:0,think:RI}];kg={firstframe:133,lastframe:139,frames:HI,endfunc:Vt};var VI=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:Ss},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:Rg}];Ag={firstframe:109,lastframe:117,frames:VI,endfunc:Vt};var WI=[{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:Ss},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:pl},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0,think:Rg}];Sg={firstframe:118,lastframe:126,frames:WI,endfunc:Vt};var Ng=[{ai:Y,dist:0},{ai:Y,dist:-.3},{ai:Y,dist:-1.1},{ai:Y,dist:-.2},{ai:Y,dist:6.7,think:zI},{ai:Y,dist:6.4},{ai:Y,dist:.1},{ai:Y,dist:28.3},{ai:Y,dist:24.1},{ai:Y,dist:31.7},{ai:Y,dist:35.9,think:NI},{ai:Y,dist:12.3,think:Tn},{ai:Y,dist:20.1,think:Tn},{ai:Y,dist:-1,think:Tn},{ai:Y,dist:2.5,think:Tn},{ai:Y,dist:.5,think:Tn},{ai:Y,dist:1.8,think:Tn},{ai:Y,dist:1.2,think:Tn},{ai:Y,dist:-.4,think:Ei}];mI={firstframe:140,lastframe:158,frames:Ng,endfunc:Vt};fI={firstframe:140,lastframe:158,frames:Ng,endfunc:Vt};var bi=Array(21).fill({ai:Y,dist:16});bi[0]={ai:Y,dist:16,think:OI};bi[4]={ai:Y,dist:16,think:yl};bi[9]={ai:Y,dist:16,think:yl};bi[13]={ai:Y,dist:16,think:Ss};bi[18]={ai:Y,dist:16,think:pl};hI={firstframe:159,lastframe:179,frames:bi,endfunc:Vt};var KI=Array(6).fill({ai:We,dist:0});_I={firstframe:180,lastframe:185,frames:KI,endfunc:Vt};var Og=Array(11).fill({ai:We,dist:0});Og[10]={ai:We,dist:0,think:Ei};gI={firstframe:186,lastframe:196,frames:Og,endfunc:Vt};var Ig=Array(13).fill({ai:We,dist:0});Ig[12]={ai:We,dist:0,think:Ei};vI={firstframe:197,lastframe:209,frames:Ig,endfunc:Vt};var Cg=Array(10).fill({ai:We,dist:0});Cg[5]={ai:We,dist:-7,think:CI};pI={firstframe:210,lastframe:219,frames:Cg,endfunc:ks};var Pg=Array(7).fill({ai:We,dist:0});Pg[5]={ai:We,dist:-7,think:II};yI={firstframe:220,lastframe:226,frames:Pg,endfunc:ks};var Fg=Array(35).fill({ai:We,dist:0});Fg[34]={ai:We,dist:0,think:Lg};wI={firstframe:227,lastframe:261,frames:Fg,endfunc:ks};var $I=Array(45).fill({ai:We,dist:0});AI={firstframe:262,lastframe:306,frames:$I,endfunc:ks};function XI(e,t){e.monsterinfo.current_move=t}B();var Al=.1,YI=()=>Math.random(),th=()=>Math.random();function qI(e,t,n){L(e,t,Al,n)}function ZI(e,t,n){le(e,t,Al,n)}function xs(e,t,n){me(e,t,Al,n)}function _t(e,t,n){g(e,t)}var gr,jI,Sl,Dg,Ug,JI,QI,eC,tC,nC,iC,rC,aC=1;function sC(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)&&dn(e,a,t.trace)){if(!r){r=a;continue}a.max_health<=r.max_health||(r=a)}return r}function oC(e,t){if(e.enemy)return;let n=sC(e,t);n?(e.enemy=n,e.monsterinfo.aiflags|=8192,Cr(e),void 0):YI()<.1&&t.engine.sound?.(e,0,"flyer/flysght1.wav",1,1,0)}function cC(e,t){if(!e.enemy||!e.enemy.inUse){e.monsterinfo.current_move=Sl;return}let n=q(e.angles),i=F(e.origin,F(I(n.forward,0),F(I(n.right,0),I(n.up,0)))),r=_i(e.enemy.origin);r.z+=e.enemy.viewheight||0;let a=G(D(r,i));Rt(e,i,a,15,1e3,aC,0,t)}function uC(e,t){if(!e.enemy||!e.enemy.inUse||e.enemy.health<=-40){e.monsterinfo.current_move=gr,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=gr,e.monsterinfo.aiflags&=-8193,e.enemy=null)}function lC(e,t){if(th()>.8){let n=th();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 Cr(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=gr:e.monsterinfo.current_move=Sl}function dC(e){e.monsterinfo.aiflags&8192?e.monsterinfo.current_move=Ug:e.monsterinfo.current_move=Dg}function kl(e){e.goalentity&&e.goalentity.health>0||(e.monsterinfo.current_move=gr)}var Bg=Array(19).fill({ai:_t,dist:0});Bg[18]={ai:_t,dist:0,think:oC};gr={firstframe:58,lastframe:76,frames:Bg,endfunc:null};var mC=[{ai:qI,dist:5}];jI={firstframe:0,lastframe:0,frames:mC,endfunc:null};var fC=[{ai:ZI,dist:10}];Sl={firstframe:0,lastframe:0,frames:fC,endfunc:null};var Gg=Array(31).fill({ai:xs,dist:0});Gg[20]={ai:xs,dist:0,think:cC};Dg={firstframe:121,lastframe:151,frames:Gg,endfunc:Cr};var hC=Array(6).fill({ai:xs,dist:0,think:uC});Ug={firstframe:115,lastframe:120,frames:hC,endfunc:null};var Hg=Array(10).fill({ai:_t,dist:0});Hg[9]={ai:_t,dist:0,think:kl};JI={firstframe:77,lastframe:86,frames:Hg,endfunc:null};var Vg=Array(7).fill({ai:_t,dist:0,think:lC});Vg[6]={ai:_t,dist:0,think:kl};QI={firstframe:87,lastframe:93,frames:Vg,endfunc:null};var Wg=Array(7).fill({ai:_t,dist:-2});Wg[6]={ai:_t,dist:-2,think:kl};eC={firstframe:94,lastframe:100,frames:Wg,endfunc:null};var _C=[{ai:xs,dist:0}];tC={firstframe:0,lastframe:0,frames:_C,endfunc:dC};var gC=[{ai:_t,dist:-1}];nC={firstframe:0,lastframe:0,frames:gC,endfunc:Cr};var vC=Array(8).fill({ai:_t,dist:0});iC={firstframe:107,lastframe:114,frames:vC,endfunc:Cr};var pC=Array(6).fill({ai:_t,dist:0});rC={firstframe:101,lastframe:106,frames:pC,endfunc:Cr};B();B();var El=.1;function yC(e,t,n){M(e,El,n)}function wC(e,t,n){L(e,t,El,n)}function AC(e,t,n){le(e,t,El,n)}var pF=Array.from({length:1},()=>({ai:yC,dist:0})),yF=Array.from({length:1},()=>({ai:wC,dist:5})),wF=Array.from({length:1},()=>({ai:AC,dist:10}));function Ye(e,t,n){e.monsterinfo.current_move=t}function Kg(e,t,n,i){let r=F(e.origin,I(n,t.x)),a=F(r,I(i,t.y));return F(a,{x:0,y:0,z:t.z})}B();var Ts=.1,SC=850,kC=600,$g=1,Xg=2,za=3,Yg=4,Na=5,Qc=6,qg=7,eu=8,EC=9,bC=10,xC=11,Zg={[$g]:{x:37,y:-4,z:12.5},[Xg]:{x:37,y:-4,z:12.5},[za]:{x:14,y:7,z:27.5},[Yg]:{x:14,y:7,z:27.5},[Na]:{x:14,y:7,z:27.5},[Qc]:{x:19,y:7,z:13.5},[qg]:{x:19,y:7,z:13.5},[eu]:{x:19,y:7,z:13.5},[EC]:{x:19,y:7,z:13.5},[bC]:{x:19,y:7,z:13.5},[xC]:{x:19,y:7,z:13.5}};function Pr(e,t,n){M(e,Ts,n)}function ye(e,t,n){L(e,t,Ts,n)}function oi(e,t,n){le(e,t,Ts,n)}function z(e,t,n){me(e,t,Ts,n)}function te(e,t,n){g(e,t)}var Ms,Rs,TC,jg,Jg,bl,xl,Qg,ev,Tl,cn,MC,Ua,RC,LC,zC,NC,OC,IC,CC,PC,FC,DC,Ml,tv,UC,nv,iv,rv,av,BC,Rl,sv;function ov(e,t){t.engine.sound?.(e,0,"guncmdr/gcdridle1.wav",1,1,0)}function cv(e,t){t.engine.sound?.(e,0,"guncmdr/gcdratck1.wav",1,1,0)}function GC(e,t){e.monsterinfo.aiflags&1||e.enemy||Math.random()<=.05&&Ye(e,Rs,t)}function HC(e,t){Ye(e,Ms,t)}function Ll(e){e.monsterinfo.aiflags&=-2049}function nt(e,t){Ll(e),e.monsterinfo.aiflags&1?Ye(e,Ms,t):Ye(e,jg,t)}function VC(e,t){if(!(e.monsterinfo.aiflags&1)&&e.enemy&&Re(D(e.enemy.origin,e.origin))>400&&g(e,8)){Ye(e,xl,t);return}Ye(e,bl,t)}function Ls(e,t){if(Ll(e),e.monsterinfo.attack_state=su.Straight,e.enemy&&e.enemy.health>0&&dn(e,e.enemy,t.trace)&&Math.random()<=.5){if(!(e.monsterinfo.aiflags&1)&&e.enemy&&Re(D(e.enemy.origin,e.origin))>400&&g(e,8)){Ye(e,xl,t);return}Ye(e,bl,t);return}Ye(e,Tl,t)}function Pe(e,t){if(!e.enemy||!e.enemy.inUse)return;let n;e.monsterinfo.current_move===Qg||e.monsterinfo.current_move===ev?n=Xg:n=$g;let{forward:i,right:r}=q(e.angles),a=Kg(e,Zg[n],i,r),s=G(D(e.enemy.origin,a)),o={...s};for(let u=0;u<3;u++)o.x+=(Math.random()-.5)*.05,o.y+=(Math.random()-.5)*.05,o.z+=(Math.random()-.5)*.05;s=G(o),Y6(e,a,s,4,800,n,t)}function fi(e,t){if(!e.enemy||!e.enemy.inUse)return;let n=0,i=0,r=e.frame;if(e.monsterinfo.current_move===cn){let f=r-cn.firstframe;f===4?(n=-.1,i=za):f===7?(n=0,i=Yg):f===10&&(n=.1,i=Na)}else if(e.monsterinfo.current_move===Ua){let f=r-Ua.firstframe;f===2?(n=-.1,i=Qc):f===5?(n=0,i=qg):f===8&&(n=.1,i=eu)}if(i===0)return;let{forward:a,right:s,up:o}=q(e.angles),u=Kg(e,Zg[i],a,s),c,l=0,m=e.enemy.origin;if(i>=Qc&&i<=eu&&(l-=.05),i>=za&&i<=Na){let f=D(m,e.origin),_=Re(f);if(_>512&&f.z<64&&f.z>-64){let v=f.z+(_-512);f={...f,z:v}}f=G(f);let p=f.z;p>.4?p=.4:p<-.5&&(p=-.5),e.enemy.absmin.z-e.absmax.z>16&&(p+=.5),l+=p}c=G(F(F(a,I(s,n)),I(o,l)));let d=i>=za&&i<=Na?SC:kC;Xa(t,e,u,c,50,d)}function WC(e,t){Ye(e,cn,t),e.monsterinfo.attack_state=su.Straight,e.frame=e.count}function uv(e,t){Ye(e,Ua,t),e.monsterinfo.attack_state=su.Straight,e.frame=e.count}function KC(e,t){e.monsterinfo.melee_debounce_time=t.timeSeconds+3,e.monsterinfo.attack&&e.monsterinfo.attack(e,t)}function $C(e,t){if(!e.enemy)return;Re(D(e.enemy.origin,e.origin))<100&&e.enemy.client&&e.enemy.velocity.z<270&&(e.enemy.velocity={...e.enemy.velocity,z:270})}function XC(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function YC(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function lv(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function qC(e,t){let{forward:n,up:i}=q(e.angles);e.velocity=F(e.velocity,I(n,100)),e.velocity=F(e.velocity,I(i,300))}function ZC(e,t){let{forward:n,up:i}=q(e.angles);e.velocity=F(e.velocity,I(n,150)),e.velocity=F(e.velocity,I(i,400))}function dv(e,t){e.groundentity===null?e.monsterinfo.nextframe=e.frame:e.monsterinfo.nextframe=e.frame+1}function jC(e,t){t.engine.sound?.(e,0,"weapons/rocklx1a.wav",1,1,0)}function JC(e,t){e.health<0&&Ye(e,nv,t)}function QC(e,t){e.health<0&&Math.random()<.5&&Ye(e,iv,t)}function e7(e,t){e.health<0&&Ye(e,Rl,t)}function zs(e,t){e.maxs={...e.maxs,z:-4*(e.monsterinfo.scale||1)}}function Pn(e,t){let n=e.monsterinfo.scale||1;e.mins=I({x:-16,y:-16,z:-24},n),e.maxs=I({x:16,y:16,z:-8},n),e.nextthink=-1,e.solid=0}Rs={firstframe:201,lastframe:254,frames:Array(54).fill({ai:Pr,dist:0}),endfunc:HC};Rs.frames[6]={ai:Pr,dist:0,think:ov};Rs.frames[10]={ai:Pr,dist:0,think:ov};Ms={firstframe:101,lastframe:140,frames:Array(40).fill({ai:Pr,dist:0}),endfunc:null};var t7=(e,t)=>GC(e,t);[9,19,29,39].forEach(e=>{Ms.frames[e]={ai:Pr,dist:0,think:t7}});TC={firstframe:101,lastframe:124,frames:[{ai:ye,dist:1.5},{ai:ye,dist:2.5},{ai:ye,dist:3},{ai:ye,dist:2.5},{ai:ye,dist:2.3},{ai:ye,dist:3},{ai:ye,dist:2.8},{ai:ye,dist:3.6},{ai:ye,dist:2.8},{ai:ye,dist:2.5},{ai:ye,dist:2.3},{ai:ye,dist:4.3},{ai:ye,dist:3},{ai:ye,dist:1.5},{ai:ye,dist:2.5},{ai:ye,dist:3.3},{ai:ye,dist:2.8},{ai:ye,dist:3},{ai:ye,dist:2},{ai:ye,dist:2},{ai:ye,dist:3.3},{ai:ye,dist:3.6},{ai:ye,dist:3.4},{ai:ye,dist:2.8}],endfunc:null};jg={firstframe:101,lastframe:106,frames:[{ai:oi,dist:15,think:Ll},{ai:oi,dist:16},{ai:oi,dist:20},{ai:oi,dist:18},{ai:oi,dist:24},{ai:oi,dist:13.5}],endfunc:null};Jg={firstframe:101,lastframe:106,frames:Array(6).fill({ai:z,dist:0}),endfunc:VC};Jg.frames[4].think=cv;bl={firstframe:107,lastframe:112,frames:Array(6).fill({ai:z,dist:0,think:Pe}),endfunc:Ls};xl={firstframe:201,lastframe:206,frames:[{ai:z,dist:15,think:Pe},{ai:z,dist:16,think:Pe},{ai:z,dist:20,think:Pe},{ai:z,dist:18,think:Pe},{ai:z,dist:24,think:Pe},{ai:z,dist:13.5,think:Pe}],endfunc:Ls};Qg={firstframe:401,lastframe:405,frames:[{ai:z,dist:10.2,think:Pe},{ai:z,dist:18,think:Pe},{ai:z,dist:7,think:Pe},{ai:z,dist:7.2,think:Pe},{ai:z,dist:-2,think:Pe}],endfunc:Ls};ev={firstframe:501,lastframe:505,frames:[{ai:z,dist:10.2,think:Pe},{ai:z,dist:18,think:Pe},{ai:z,dist:7,think:Pe},{ai:z,dist:7.2,think:Pe},{ai:z,dist:-2,think:Pe}],endfunc:Ls};Tl={firstframe:118,lastframe:124,frames:Array(7).fill({ai:z,dist:0}),endfunc:nt};Tl.frames[2].think=cv;cn={firstframe:201,lastframe:221,frames:Array(21).fill({ai:z,dist:0}),endfunc:nt};cn.frames[4].think=fi;cn.frames[7].think=fi;cn.frames[10].think=fi;cn.frames[13].think=lv;MC={firstframe:0,lastframe:5,frames:[{ai:z,dist:11},{ai:z,dist:12},{ai:z,dist:16},{ai:z,dist:16},{ai:z,dist:12},{ai:z,dist:11}],endfunc:WC};Ua={firstframe:302,lastframe:321,frames:[{ai:z,dist:-2},{ai:z,dist:-1.5},{ai:z,dist:-.5,think:fi},{ai:z,dist:-6},{ai:z,dist:-4},{ai:z,dist:-2.5,think:fi},{ai:z,dist:-7},{ai:z,dist:-3.5},{ai:z,dist:-1.1,think:fi},{ai:z,dist:-4.6},{ai:z,dist:1.9},{ai:z,dist:1},{ai:z,dist:-4.5},{ai:z,dist:3.2},{ai:z,dist:4.4},{ai:z,dist:-6.5},{ai:z,dist:-6.1},{ai:z,dist:3},{ai:z,dist:-.7},{ai:z,dist:-1}],endfunc:nt};RC={firstframe:601,lastframe:605,frames:[{ai:z,dist:10.2},{ai:z,dist:18},{ai:z,dist:7},{ai:z,dist:7.2},{ai:z,dist:-2}],endfunc:uv};LC={firstframe:701,lastframe:705,frames:[{ai:z,dist:10.2},{ai:z,dist:18},{ai:z,dist:7},{ai:z,dist:7.2},{ai:z,dist:-2}],endfunc:uv};zC={firstframe:801,lastframe:808,frames:[{ai:z,dist:-7.7},{ai:z,dist:-4.9},{ai:z,dist:12.6,think:$C},{ai:z,dist:0},{ai:z,dist:-3},{ai:z,dist:0},{ai:z,dist:-4.1},{ai:z,dist:8.6}],endfunc:KC};NC={firstframe:901,lastframe:919,frames:[{ai:te,dist:3.6},{ai:te,dist:5.6,think:XC},{ai:te,dist:8.4},{ai:te,dist:2,think:YC},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:9.5,think:jC},{ai:z,dist:-1.5},{ai:z,dist:0},{ai:z,dist:0,think:lv},{ai:z,dist:0},{ai:z,dist:11},{ai:z,dist:2},{ai:z,dist:5.6}],endfunc:nt};OC={firstframe:0,lastframe:9,frames:[{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:qC},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:dv},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0}],endfunc:nt};IC={firstframe:0,lastframe:9,frames:[{ai:te,dist:-8},{ai:te,dist:-4},{ai:te,dist:-4},{ai:te,dist:0,think:ZC},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0,think:dv},{ai:te,dist:0},{ai:te,dist:0},{ai:te,dist:0}],endfunc:nt};CC={firstframe:101,lastframe:104,frames:Array(4).fill({ai:te,dist:0}),endfunc:nt};PC={firstframe:201,lastframe:204,frames:Array(4).fill({ai:te,dist:0}),endfunc:nt};FC={firstframe:301,lastframe:304,frames:Array(4).fill({ai:te,dist:0}),endfunc:nt};DC={firstframe:401,lastframe:415,frames:Array(15).fill({ai:te,dist:0}),endfunc:nt};Ml={firstframe:501,lastframe:524,frames:Array(24).fill({ai:te,dist:0}),endfunc:nt};Ml.frames[5].think=QC;Ml.frames[8].think=JC;tv={firstframe:601,lastframe:632,frames:Array(32).fill({ai:te,dist:0}),endfunc:nt};tv.frames[6].think=e7;UC={firstframe:701,lastframe:714,frames:Array(14).fill({ai:te,dist:0}),endfunc:nt};nv={firstframe:101,lastframe:118,frames:Array(18).fill({ai:te,dist:0}),endfunc:Pn};iv={firstframe:201,lastframe:204,frames:Array(4).fill({ai:te,dist:0}),endfunc:Pn};rv={firstframe:301,lastframe:321,frames:Array(21).fill({ai:te,dist:0}),endfunc:Pn};rv.frames[2].think=zs;av={firstframe:401,lastframe:436,frames:Array(36).fill({ai:te,dist:0}),endfunc:Pn};av.frames[2].think=zs;BC={firstframe:501,lastframe:528,frames:Array(28).fill({ai:te,dist:0}),endfunc:Pn};Rl={firstframe:601,lastframe:614,frames:Array(14).fill({ai:te,dist:0}),endfunc:Pn};Rl.frames[0].think=zs;sv={firstframe:701,lastframe:730,frames:Array(30).fill({ai:te,dist:0}),endfunc:Pn};sv.frames[2].think=zs;var AF=new Map(au.map(e=>[e.name,e]));B();var n7=2166136261,i7=16777619;function mv(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,i7)>>>0;return n>>>0}function di(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return mv(e,r)}function tu(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return mv(e,n)}var Fc=2,r7=1;function tt(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function we(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function mi(e,t,n){return e===void 0?n:we(e,t)}function Ba(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Oa(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)we(n,`${t} element`);return e}function a7(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=tt(e,"level");return{frameNumber:mi(t.frameNumber,"level.frameNumber",0),timeSeconds:mi(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:mi(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:mi(t.deltaSeconds,"level.deltaSeconds",0)}}function s7(e){if(e===void 0)return new iu().getState();let t=tt(e,"rng"),n=tt(t.mt,"rng.mt"),i=Oa(n.state,"rng.mt.state");return{mt:{index:we(n.index,"rng.mt.index"),state:i}}}function o7(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=tt(t,`thinks[${n}]`);return{time:we(i.time,`thinks[${n}].time`),entityIndex:we(i.entityIndex,`thinks[${n}].entityIndex`)}})}function c7(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=tt(e,"awareness"),n=(i,r)=>i===null?null:we(i,r);return{frameNumber:we(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:we(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:we(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:we(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function u7(e){if(e===void 0)return{};let t=tt(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=tt(r,i),s={};for(let[o,u]of Object.entries(a))s[o]=we(u,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[we(a,`${i}[0]`),we(s,`${i}[1]`),we(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function l7(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let i=tt(t,`entities[${n}]`);return{index:we(i.index,`entities[${n}].index`),fields:u7(i.fields)}})}function d7(e){let t=tt(e,"pool");return{capacity:we(t.capacity,"pool.capacity"),activeOrder:Oa(t.activeOrder,"pool.activeOrder"),freeList:Oa(t.freeList,"pool.freeList"),pendingFree:Oa(t.pendingFree,"pool.pendingFree")}}function m7(e){let t=tt(e,"entities");return{timeSeconds:we(t.timeSeconds,"entities.timeSeconds"),pool:d7(t.pool),entities:l7(t.entities),thinks:o7(t.thinks),awareness:c7(t.awareness),crossLevelFlags:mi(t.crossLevelFlags,"entities.crossLevelFlags",0),crossUnitFlags:mi(t.crossUnitFlags,"entities.crossUnitFlags",0),level:{next_auto_save:0,health_bar_entities:[null,null,null,null]}}}function f7(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=tt(t,`cvars[${n}]`);return{name:Ba(i.name,`cvars[${n}].name`),value:Ba(i.value,`cvars[${n}].value`),flags:we(i.flags,`cvars[${n}].flags`)}})}function h7(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Ba(t,`configstrings[${n}]`))}function _7(e){return e===void 0?{}:tt(e,"gameState")}function Ut(e,t){if(t==null)return e;if(typeof t=="number")return di(e,t);if(typeof t=="string")return tu(e,t);if(typeof t=="boolean")return di(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=Ut(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=tu(n,r),n=Ut(n,t[r]);return n}return e}function g7(e){let t=n7;return t=di(t,e.version),t=di(t,e.timestamp),t=tu(t,e.map),t=di(t,e.difficulty),t=di(t,e.playtimeSeconds),t=Ut(t,e.gameState),t=Ut(t,e.level),t=Ut(t,e.rng),t=Ut(t,e.entities),t=Ut(t,e.cvars),t=Ut(t,e.configstrings),e.player&&(t=Ut(t,e.player)),t>>>0}function fv(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=tt(i,"save"),a=r.version??Fc,s=we(a,"version");if(s<r7)throw new Error(`Unsupported save version ${s}`);if(s>Fc&&!n)throw new Error(`Save version ${s} is newer than supported ${Fc}`);let o={version:s,timestamp:we(r.timestamp,"timestamp"),map:Ba(r.map,"map"),difficulty:we(r.difficulty,"difficulty"),playtimeSeconds:we(r.playtimeSeconds,"playtimeSeconds"),gameState:_7(r.gameState),level:a7(r.level),rng:s7(r.rng),entities:m7(r.entities),cvars:f7(r.cvars),configstrings:h7(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?we(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let u=g7(o);if(u!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${u}`)}return o}B();var SF=new Set(au.filter(e=>e.save).map(e=>e.name));var nh=globalThis.TextEncoder;function hi(e){return fv({...e},{allowNewerVersion:!0})}function v7(e){return nh?new nh().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var p7=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:hi(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:hi(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:hi(e.save)}))}},y7=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:hi(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:hi(t.save)}))}},zl=class cr{constructor(t={}){let{dbName:n=cr.DEFAULT_DB_NAME,storeName:i=cr.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new y7(r,n,i):this.adapter=new p7}async save(t,n,i={}){let r=hi(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:v7(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 fv(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(cr.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(cr.QUICK_SLOT,t)}};zl.DEFAULT_DB_NAME="quake2ts-saves";zl.DEFAULT_STORE="saves";zl.QUICK_SLOT="quicksave";B();un();B();B();var kF=pr();B();un();var EF=[{id:oe.QuadDamage,priority:1},{id:oe.Invulnerability,priority:2},{id:oe.EnviroSuit,priority:3},{id:oe.Rebreather,priority:4},{id:oe.Silencer,priority:5}];B();B();var w7=new Map,A7=["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"],hv=async(e,t)=>{for(let n of A7)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);w7.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var S7=new Map,k7=["d_left","d_right","d_up","d_down"],_v=async(e,t)=>{for(let n of k7)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);S7.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Nl=[],E7=0,gv=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);Nl.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Nl.length>0&&(E7=Nl[0].width),await F0(e,t),await hv(e,t),await _v(e,t)};var Ol=[{type:"null"},{type:"armor",id:Rn.BODY},{type:"armor",id:Rn.COMBAT},{type:"armor",id:Rn.JACKET},{type:"armor",id:Rn.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:K.Grapple},{type:"weapon",id:K.Blaster},{type:"weapon",id:K.ChainFist},{type:"weapon",id:K.Shotgun},{type:"weapon",id:K.SuperShotgun},{type:"weapon",id:K.Machinegun},{type:"weapon",id:K.EtfRifle},{type:"weapon",id:K.Chaingun},{type:"ammo",id:P.Grenades},{type:"ammo",id:P.Trap},{type:"ammo",id:P.Tesla},{type:"weapon",id:K.GrenadeLauncher},{type:"weapon",id:K.ProxLauncher},{type:"weapon",id:K.RocketLauncher},{type:"weapon",id:K.HyperBlaster},{type:"weapon",id:K.IonRipper},{type:"weapon",id:K.PlasmaBeam},{type:"weapon",id:K.Railgun},{type:"weapon",id:K.Phalanx},{type:"weapon",id:K.BFG10K},{type:"weapon",id:K.Disruptor},{type:"ammo",id:P.Shells},{type:"ammo",id:P.Bullets},{type:"ammo",id:P.Cells},{type:"ammo",id:P.Rockets},{type:"ammo",id:P.Slugs},{type:"ammo",id:P.MagSlugs},{type:"ammo",id:P.Flechettes},{type:"ammo",id:P.Prox},{type:"ammo",id:P.Nuke},{type:"ammo",id:P.Rounds},{type:"powerup",id:oe.QuadDamage},{type:"powerup",id:oe.QuadFire},{type:"powerup",id:oe.Invulnerability},{type:"powerup",id:oe.Invisibility},{type:"powerup",id:oe.Silencer},{type:"powerup",id:oe.Rebreather},{type:"powerup",id:oe.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:oe.Bandolier},{type:"powerup",id:oe.AmmoPack},{type:"powerup",id:oe.IRGoggles},{type:"powerup",id:oe.DoubleDamage},{type:"powerup",id:oe.SphereVengeance},{type:"powerup",id:oe.SphereHunter},{type:"powerup",id:oe.SphereDefender},{type:"powerup",id:oe.Doppelganger},{type:"powerup",id:oe.TagToken},{type:"key",id:Te.DataCD},{type:"key",id:Te.PowerCube},{type:"key",id:Te.ExplosiveCharges},{type:"key",id:Te.Yellow},{type:"key",id:Te.PowerCore},{type:"key",id:Te.Pyramid},{type:"key",id:Te.DataSpinner},{type:"key",id:Te.Pass},{type:"key",id:Te.Blue},{type:"key",id:Te.Red},{type:"key",id:Te.Green},{type:"key",id:Te.CommanderHead},{type:"key",id:Te.Airstrike},{type:"key",id:Te.NukeContainer},{type:"key",id:Te.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:Te.RedFlag},{type:"key",id:Te.BlueFlag},{type:"powerup",id:oe.TechResistance},{type:"powerup",id:oe.TechStrength},{type:"powerup",id:oe.TechHaste},{type:"powerup",id:oe.TechRegeneration},{type:"powerup",id:oe.Flashlight},{type:"powerup",id:oe.Compass}];function xi(e,t,n){return e+(t-e)*n}function Il(e,t,n){return xi(e,t,n)}function Ns(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(u=>[u.number,u]));for(let u of e){let c=o.get(u.number)??u,l=u.modelIndex??u.modelindex,m=u.skinNum??u.skinnum;if(l===void 0)continue;let d=i.getModelName(l);if(!d)continue;let f=s.getMd2Model(d)||s.getMd3Model(d);if(!f)continue;let _={x:xi(c.origin.x,u.origin.x,n),y:xi(c.origin.y,u.origin.y,n),z:xi(c.origin.z,u.origin.z,n)},p={x:Il(c.angles.x,u.angles.x,n),y:Il(c.angles.y,u.angles.y,n),z:Il(c.angles.z,u.angles.z,n)},v=u.frame,y=c.frame,S=c.scale!==void 0?c.scale:1,k=u.scale!==void 0?u.scale:1,w=xi(S,k,n),b=Q=>Q===void 0||Q===0?255:Q,T=b(c.alpha),x=b(u.alpha),O=xi(T,x,n)/255,A=_e.create();_e.translate(A,A,[_.x,_.y,_.z]),_e.rotateZ(A,A,p.z*Math.PI/180),_e.rotateY(A,A,p.y*Math.PI/180),_e.rotateX(A,A,p.x*Math.PI/180),_e.scale(A,A,[w,w,w]);let C=m!==void 0&&m>0?i.getImageName(m):void 0,V,ne=u.renderfx??0;(ne&(ot.ShellGreen|ot.ShellBlue))===(ot.ShellGreen|ot.ShellBlue)?V=[0,1,1,1]:ne&ot.ShellRed?V=[1,0,0,1]:ne&ot.ShellGreen?V=[0,1,0,1]:ne&ot.ShellBlue?V=[0,0,1,1]:ne&ot.ShellDouble?V=[1,1,0,1]:ne&ot.ShellHalfDam&&(V=[.5,.5,.5,1]),f.header.magic===844121161?a.push({type:"md2",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,skin:C,alpha:O,tint:V}):f.header.magic===860898377&&a.push({type:"md3",model:f,blend:{frame0:y,frame1:v,lerp:n},transform:A,alpha:O,tint:V})}return a}var b7=32768,Os=class{constructor(t,n){this.configstrings=new Array(b7).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,u){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&Rm){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=Gn();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&$o&&(t.modelindex=n.modelindex),i&qo&&(t.modelindex2=n.modelindex2),i&Zo&&(t.modelindex3=n.modelindex3),i&jo&&(t.modelindex4=n.modelindex4),i&Ho&&(t.frame=n.frame),i&Yo&&(t.frame=n.frame),(i&ea||i&ia)&&(t.skinnum=n.skinnum),(i&Qr||i&na)&&(t.effects=n.effects),(i&Jr||i&ta)&&(t.renderfx=n.renderfx),i&Do&&(t.origin.x=n.origin.x),i&Uo&&(t.origin.y=n.origin.y),i&Wo&&(t.origin.z=n.origin.z),i&Ko&&(t.angles.x=n.angles.x),i&Bo&&(t.angles.y=n.angles.y),i&Go&&(t.angles.z=n.angles.z),i&Jo&&(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&Qo&&(t.sound=n.sound),i&Vo&&(t.event=n.event),i&ec&&(t.solid=n.solid),i&Xo&&(t.alpha=n.alpha),i&tc&&(t.scale=n.scale),i&nc&&(t.instanceBits=n.instanceBits),i&ic&&(t.loopVolume=n.loopVolume),r&rc&&(t.loopAttenuation=n.loopAttenuation),r&ac&&(t.owner=n.owner),r&sc&&(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 u=i??1,c=r??1,l=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,u,c,l):o&&this.imports.engine.audio.positioned_sound(o,n,u,c)}onTempEntity(t,n,i,r,a,s,o,u,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=Zt,c=va(this.stats,nr.QuadDamage)?4:1;switch(n){case jm:r=-2,o={x:-2,y:0,z:0};break;case r0:r=-4,o={x:-4,y:0,z:0};break;case Zm:r=-1,a=Math.random()-.5;break;case Jm:case Qm:case e0:r=-.5,a=Math.random()-.5;break;case t0:r=-3,o={x:-3,y:0,z:0};break;case n0:case i0:r=-2,o={x:-2,y:0,z:0};break;case a0:r=-5,o={x:-2,y:0,z:0};break;case s0:case qm: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 u=0;u<this.inventory.length;u++){let c=this.inventory[u];if(c<=0)continue;if(u>=Ol.length)break;let l=Ol[u];switch(l.type){case"weapon":i.ownedWeapons.add(l.id);break;case"ammo":i.ammo.counts[l.id]||(i.ammo.counts[l.id]=0),i.ammo.counts[l.id]=c;break;case"armor":i.armor={armorType:l.id,armorCount:c};break;case"powerup":i.powerups.set(l.id,c);break;case"key":i.keys.add(l.id);break;case"health":break;case"item":i.items.add(l.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:tr.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:Zt,kick_origin:Zt,gunoffset:Zt,gunangles:Zt,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 Ct();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 bn(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 bn(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 Ns(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 Ti=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=ke.Models&&t<ke.Models+Ji){let i=t-ke.Models;this.models[i]=n}else if(t>=ke.Sounds&&t<ke.Sounds+Qi){let i=t-ke.Sounds;this.sounds[i]=n}else if(t>=ke.Images&&t<ke.Images+er){let i=t-ke.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 Is=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 Cs=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} (${vv(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} (${vv(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 vv(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 Ps=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 Fr=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 Ds=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 Us=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 pv(e,t,n,i){if(!t.activeMenu)return;let r=t.activeMenu,a=n/2,s=i/2,o=20,u=r.items.length*o+40,c=s-u/2;e.drawfillRect(0,0,n,i,[0,0,0,.7]),e.drawCenterString(c,r.title),r.items.forEach((l,m)=>{let d=c+40+m*o,f=l.label;if(l.type==="input"&&l.getValue){if(f+=`: ${l.getValue()}`,m===t.selectedIndex){let _=Date.now();Math.floor(_/500)%2===0&&(f+="_")}}else l.type==="toggle"&&l.getValue&&(f+=`: ${l.getValue()}`);if(m===t.selectedIndex){let y=f.replace(/\^[0-9]/g,"").length*8,S=(n-y)/2;e.drawString(S-16,d,"\r")}e.drawCenterString(d,f)})}var Dr=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&ji.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 Bs=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 Gs=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 u=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,r*u,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let c=Math.floor(u*100);t.drawCenterString(o+a+10,`${c}%`)}};var Hs=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 Vs=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 Ws=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 Ws,this.options=t,this.netchan=new _0,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>Ym&&this.commandHistory.shift(),this.prediction&&this.prediction.enqueueCommand(n);let i=new gc;i.writeByte(En.move),i.writeByte(0),i.writeLong(this.latestServerFrame),f0(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 h0(i.buffer);this.parser=new oc(r,this),this.parser.parseMessage()}}handleDisconnect(){console.log("Disconnected from server."),this.state=0}sendChallenge(){let t=new ir;t.writeByte(En.stringcmd),t.writeString("getchallenge");let n=this.netchan.transmit(t.getData());this.driver.send(n)}sendConnect(t){let n=new ir;n.writeByte(En.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 ${jr} ${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 ir;o.writeByte(En.stringcmd),o.writeString("new");let u=this.netchan.transmit(o.getData());this.driver.send(u),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 ir;t.writeByte(En.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={...Ct(),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,u,c){}onLayout(t){}onInventory(t){}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){this.disconnect()}onReconnect(){}onDownload(t,n,i){}};var $s=class{constructor(t){this.isVisible=!0;this.playback=t}render(t,n,i){if(!this.isVisible)return;let a=this.playback.getState()===Yi.Playing,s=60,o=i-s;t.drawfillRect(0,o,n,s,[0,0,0,.5]);let c=o+(s-24)/2,l=20,m=a?"PAUSE":"PLAY";t.drawString(l,c,m);let f=`Speed: ${this.playback.getSpeed()}x`;t.drawCenterString(c,f);let _=this.playback.getCurrentTime(),y=`${this.formatTime(_)} / --:--`,S=n-150;t.drawString(S,c,y);let k=o+5,w=4,b=n-40,T=20;t.drawfillRect(T,k,b,w,[.3,.3,.3,1]);let N=b*0;t.drawfillRect(T,k,N,w,[1,1,1,1]);let O=T+N;t.drawfillRect(O-2,k-2,4,w+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()===Yi.Playing?this.playback.pause():this.playback.getState()===Yi.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 x7=[{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"}],Fn=class{constructor(t=x7){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 yv(){return new Fn}function Cl(e){return e}function Ur(e){return e.trim().toLowerCase()}var T7=250,Pl=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}}},Xs=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(Xs||{}),M7={"+attack":kt.Attack,"+use":kt.Use,"+holster":kt.Holster,"+jump":kt.Jump,"+crouch":kt.Crouch},R7=new Map(Object.values(Xs).map(e=>[Ur(e),e]));function L7(e){return R7.get(Ur(e))}function Br(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Mi=class{constructor(t={},n=new Fn){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??Bm,this.sideSpeed=t.sideSpeed??Gm,this.upSpeed=t.upSpeed??Hm,this.yawSpeed=t.yawSpeed??Vm,this.pitchSpeed=t.pitchSpeed??Wm,this.sensitivity=t.sensitivity??Km,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),u=this.sample("+lookup",t,n),l={x:(this.sample("+lookdown",t,n).fraction-u.fraction)*a,y:(o.fraction-s.fraction)*r,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let C=this.gamepadLook.y*(this.invertGamepadY?-1:1);l={x:l.x+C*a*this.gamepadLookScale,y:l.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let C=this.touchLook.y*(this.invertMouseY?-1:1);l={x:l.x+C*a,y:l.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let C=this.sampleMouseDelta(),V=Xm(C,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});l={x:l.x+V.x,y:l.y+V.y,z:0}}let m=$m(this.viewAngles,l);this.viewAngles=m;let d=this.sample("+forward",t,n),f=this.sample("+back",t,n),_=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),v=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),S=this.sample("+speed",t,n),k=this.sample("+jump",t,n),w=this.sample("+crouch",t,n),b=this.runByDefault?S.active?.5:1:S.active?1:.5,T=this.forwardSpeed*(d.fraction-f.fraction)*b,x=this.sideSpeed*(p.fraction-_.fraction)*b,N=this.upSpeed*(v.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(T+=this.forwardSpeed*this.gamepadMove.y*b,x+=this.sideSpeed*this.gamepadMove.x*b),(this.touchMove.x!==0||this.touchMove.y!==0)&&(T+=this.forwardSpeed*this.touchMove.y*b,x+=this.sideSpeed*this.touchMove.x*b),this.jumpAddsUpMove&&k.fraction>0&&(N+=this.upSpeed*k.fraction),this.crouchAddsDownMove&&w.fraction>0&&(N-=this.upSpeed*w.fraction),T=this.clampMove(T,this.forwardSpeed),x=this.clampMove(x,this.sideSpeed),N=this.clampMove(N,this.upSpeed);let O=this.collectButtonBits(t,n),A=Math.min(Math.max(Math.round(t),1),T7);return(this.anyPressed||O!==kt.None)&&(O|=kt.Any),this.anyPressed=!1,this.sequence++,{msec:A,buttons:O,angles:{...this.viewAngles},forwardmove:T,sidemove:x,upmove:N,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 u=0;u<o.length;u++){let c=o[u];if(!c)continue;let l=c.pressed||c.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,u);l&&i.add(m);let d=this.gamepadButtons.get(m)??!1;l!==d&&(this.applyCommand(this.bindings.getBinding(m),l,m,t),this.gamepadButtons.set(m,l))}}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=L7(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=kt.None;for(let[r,a]of Object.entries(M7)){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 Pl,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 Ys=class{constructor(t,n=new Mi(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 qs={x:0,y:0,z:0},wv=(i=>(i[i.Normal=0]="Normal",i[i.DemoPlayback=1]="DemoPlayback",i[i.Multiplayer=2]="Multiplayer",i))(wv||{});function z7(e){let t=R=>{let H={x:0,y:0,z:0};return e.engine.trace(R,R,H,H).contents||0},n=new Ea(e.engine.trace,t),i=new ka,r=new zm,a=new $s(r),s=new Os(e);s.setView(i);let o=!1,u=null,c=0,l=new Ps,m=new Gs,d=new Hs,f=new Vs,_=new Dr(new Bs),p,v,y=new Ti,S,k=0,w=!1,T=P0(e,{get tickRate(){return 10},get frameTimeMs(){return S?.timeMs??0},get serverFrame(){return s.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return y},getClientName:R=>`Player ${R}`,getKeyBinding:R=>`[${R}]`,get inAutoDemo(){return w}}),x=C0(T),N=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 ne}}),O=new Us(l,N);s.setCallbacks({onCenterPrint:R=>x.ParseCenterPrint(R,0,!1),onPrint:(R,H)=>x.NotifyMessage(0,H,!1),onConfigString:(R,H)=>{y.set(R,H),x.ParseConfigString(R,H)},onServerData:(R,H)=>{H&&H>0?r.setFrameDuration(1e3/H):r.setFrameDuration(100)}}),r.setHandler(s);let A,C,V,ne=90,Q=!1;if(e.host){v=new Fr(l,e.host),p=new Ds(l,v,e.host);let R=new Map;if(e.host.cvars){for(let H of e.host.cvars.list())R.set(H.name,{value:H.string,setValue:ae=>e.host.cvars.setValue(H.name,ae)});_.loadCvars(R)}}if(e.host?.commands&&(e.host.commands.register("playdemo",R=>{if(R.length<1){console.log("usage: playdemo <filename>");return}let H=R[0];console.log(`playdemo: ${H}`),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=D0();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",()=>{l.isActive()?l.closeAll():p&&l.pushMenu(p.createPauseMenu())},"Toggle the main/pause menu"),e.host.commands.register("connect",R=>{if(R.length<1){console.log("usage: connect <address>");return}let H=R[0];console.log(`Connecting to ${H}...`),N.connect(H).catch(ae=>{console.error("Failed to connect:",ae),d.show("Connection Failed",ae instanceof Error?ae.message:"Unknown error")})},"Connect to a multiplayer server"),e.host.commands.register("disconnect",()=>{N.disconnect(),console.log("Disconnected.")},"Disconnect from server"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:ji.Archive,onChange:H=>{let ae=H.number;isNaN(ae)||(ne=Math.max(1,Math.min(179,ae)))},description:"Field of view"});let R=e.host.cvars.get("fov");if(R){let H=R.number;isNaN(H)||(ne=Math.max(1,Math.min(179,H)))}}return{loadingScreen:m,errorDialog:d,init(R){this.Init(R)},Init(R){S=R,R?.state&&n.setAuthoritative(R),x.Init(),e.engine.assets&&e.engine.renderer&&(m.start(100,"Loading assets..."),gv(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&&(l.isActive()||document.body.requestPointerLock?.())})},predict(R){return l.isActive(),N.isConnected()&&N.sendCommand(R),n.enqueueCommand(R)},handleInput(R,H){if(o&&a.handleInput(R,H))return!0;if(!l.isActive())return!1;if(!H)return!0;let ae=R.toLowerCase();return ae==="arrowup"||ae==="w"?l.handleInput("up"):ae==="arrowdown"||ae==="s"?l.handleInput("down"):ae==="arrowleft"||ae==="a"?l.handleInput("left"):ae==="arrowright"||ae==="d"?l.handleInput("right"):ae==="enter"||ae===" "?l.handleInput("select"):ae==="escape"?l.getState().activeMenu?.parent?l.handleInput("back"):!1:R.length===1?l.handleInput("char",R):R==="Backspace"?l.handleInput("left"):!0},toggleMenu(){if(l.isActive()){if(l.closeAll(),e.host?.cvars){let R=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));_.saveCvars(R)}}else p&&l.pushMenu(p.createPauseMenu())},createMainMenu(R,H,ae,Lt,Be){let Ie=new Cs(l,H,ae,Lt,Be),gt=v;if(!gt){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");gt=new Fr(l,e.host)}let it=e.engine.assets,Av={findByExtension:Dn=>it?it.listFiles(Dn):[]},Sv=new Fs(l,Av,Dn=>{console.log(`Starting map: ${Dn}`),e.host?.commands.execute(`map ${Dn}`)}),kv=new Is(l,Ie,{...R,optionsFactory:gt,mapsFactory:Sv,multiplayerFactory:O,onSetDifficulty:Dn=>{e.host?.cvars&&e.host.cvars.setValue("skill",Dn.toString())}});return{menuSystem:l,factory:kv}},render(R){let H=[];if(o){let Be=R.nowMs,Ie=k>0?Math.max(0,Be-k):0;k=Be,r.update(Ie),A=s.getPredictionState(r.getCurrentTime());let gt=100;if(H=s.getRenderableEntities(1,y),A){let it=s.getDemoCamera(1);it&&(A.origin=it.origin,A.viewAngles=it.angles,it.fov&&(A.fov=it.fov))}}else k=R.nowMs,R.latest?.state&&(n.setAuthoritative(R.latest),S=R.latest),R.previous?.state&&R.latest?.state?(A=bn(R.previous.state,R.latest.state,R.alpha),R.latest.state.packetEntities&&R.previous.state.packetEntities&&(H=Ns(R.latest.state.packetEntities,R.previous.state.packetEntities,R.alpha,y,e))):A=R.latest?.state??R.previous?.state??n.getPredictedState();let ae=R.latest&&R.previous?Math.max(0,R.latest.timeMs-R.previous.timeMs):0;C=i.sample(A,ae);let Lt={};if(A){let{origin:Be,viewAngles:Ie}=A;V=new Xd,V.position=ve.fromValues(Be.x,Be.y,Be.z);let gt=C?.offset??{x:0,y:0,z:0};ve.add(V.position,V.position,[gt.x,gt.y,gt.z]);let it=C?.angles??{x:0,y:0,z:0};V.angles=ve.fromValues(Ie.x+it.x,Ie.y+it.y,Ie.z+it.z),o&&A.fov?V.fov=A.fov:V.fov=Q?40:ne,V.aspect=4/3,e.engine.renderer&&(V.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&V){let Be;if(e.engine.assets){let Ie=y.getModelName(1);if(Ie){let gt=e.engine.assets.getMap(Ie)}}e.engine.renderer.renderFrame({camera:V,world:Be,dlights:[]},H)}if(e.engine.renderer&&A&&A.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},Ie=R.latest?.timeMs??0;this.DrawHUD(Be,Ie)}return Lt},DrawHUD(R,H){if(!e.engine.renderer)return;let ae=e.engine.renderer,Lt=ae.width,Be=ae.height;if(A&&A.client){let Ie={origin:A.origin,velocity:A.velocity,viewAngles:A.viewAngles,onGround:Jn(A.pmFlags,It.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:qs,kick_origin:qs,gunoffset:qs,gunangles:qs,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};Ie.stats[He.STAT_HEALTH]=A.health??0,Ie.stats[He.STAT_AMMO]=A.ammo??0,Ie.stats[He.STAT_ARMOR]=A.armor??0,ae.begin2D(),x.DrawHUD(0,null,{x:0,y:0,width:Lt,height:Be},{x:0,y:0,width:Lt,height:Be},1,0,Ie),ae.end2D()}l.isActive()&&pv(e.engine.renderer,l.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(x.Shutdown(),S=void 0,A=void 0,e.host?.cvars){let R=e.host.cvars.list().map(H=>({name:H.name,value:H.string,flags:H.flags}));_.saveCvars(R)}},get prediction(){return n},get lastRendered(){return A},get view(){return i},get lastView(){return C},get camera(){return V},demoPlayback:r,get isDemoPlaying(){return o},get currentDemoName(){return u},get mode(){return c},startDemoPlayback(R,H){r.loadDemo(R),r.setHandler(s),o=!0,u=H,c=1,k=0,y.clear()},stopDemoPlayback(){r.stop(),o=!1,u=null,c=0},ParseCenterPrint(R){x.ParseCenterPrint(R,0,!1)},ParseNotify(R){x.NotifyMessage(0,R,!1)},showSubtitle(R,H){x.ShowSubtitle(R,H)},ParseConfigString(R,H){y.set(R,H),x.ParseConfigString(R,H)},demoHandler:s,multiplayer:N,configStrings:y}}return Mv(N7);})();
178
178
  /*! Bundled license information:
179
179
 
180
180
  pako/dist/pako.esm.mjs: