quake2ts 0.0.239 → 0.0.241
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +6 -6
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +1 -1
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +1 -1
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/browser/index.global.js +1 -1
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +1 -1
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +1 -1
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/parser.d.ts +1 -1
- package/packages/engine/dist/types/demo/parser.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +2 -2
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +77 -44
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +77 -44
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/funcs.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var Zr=Object.defineProperty;var _h=Object.getOwnPropertyDescriptor;var gh=Object.getOwnPropertyNames;var ph=Object.prototype.hasOwnProperty;var jr=(e,t)=>{for(var n in t)Zr(e,n,{get:t[n],enumerable:!0})},vh=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of gh(t))!ph.call(e,r)&&r!==n&&Zr(e,r,{get:()=>t[r],enumerable:!(i=_h(t,r))||i.enumerable});return e};var yh=e=>vh(Zr({},"__esModule",{value:!0}),e);var pT={};jr(pT,{ClientConfigStrings:()=>Sn,ClientPrediction:()=>Qi,InputAction:()=>$r,InputBindings:()=>Gt,InputCommandBuffer:()=>Xr,InputController:()=>An,ViewEffects:()=>Ji,createClient:()=>gT,createDefaultBindings:()=>fh,interpolatePredictionState:()=>tn,normalizeCommand:()=>vi,normalizeInputCode:()=>Do});var j=1e-6,Le=typeof Float32Array<"u"?Float32Array:Array,qr=Math.random;function xi(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var yT=Math.PI/180,wT=180/Math.PI;var q={};jr(q,{add:()=>r0,adjoint:()=>Th,clone:()=>xh,copy:()=>Sh,create:()=>wh,decompose:()=>Wh,determinant:()=>Mh,equals:()=>c0,exactEquals:()=>o0,frob:()=>i0,fromQuat:()=>Xh,fromQuat2:()=>Gh,fromRotation:()=>Dh,fromRotationTranslation:()=>Vo,fromRotationTranslationScale:()=>Kh,fromRotationTranslationScaleOrigin:()=>$h,fromScaling:()=>Ph,fromTranslation:()=>Ch,fromValues:()=>Ah,fromXRotation:()=>Fh,fromYRotation:()=>Uh,fromZRotation:()=>Bh,frustum:()=>Yh,getRotation:()=>Vh,getScaling:()=>Wo,getTranslation:()=>Hh,identity:()=>Go,invert:()=>bh,lookAt:()=>e0,mul:()=>l0,multiply:()=>Ho,multiplyScalar:()=>a0,multiplyScalarAndAdd:()=>s0,ortho:()=>Jh,orthoNO:()=>$o,orthoZO:()=>Qh,perspective:()=>Zh,perspectiveFromFieldOfView:()=>qh,perspectiveNO:()=>Ko,perspectiveZO:()=>jh,rotate:()=>Lh,rotateX:()=>Nh,rotateY:()=>Oh,rotateZ:()=>Ih,scale:()=>zh,set:()=>Eh,str:()=>n0,sub:()=>u0,subtract:()=>Xo,targetTo:()=>t0,translate:()=>Rh,transpose:()=>kh});function wh(){var e=new Le(16);return Le!=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 xh(e){var t=new Le(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 Sh(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 Ah(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,x){var _=new Le(16);return _[0]=e,_[1]=t,_[2]=n,_[3]=i,_[4]=r,_[5]=a,_[6]=s,_[7]=o,_[8]=l,_[9]=c,_[10]=u,_[11]=m,_[12]=d,_[13]=h,_[14]=f,_[15]=x,_}function Eh(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,x,_){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]=h,e[13]=f,e[14]=x,e[15]=_,e}function Go(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 kh(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 bh(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],h=t[11],f=t[12],x=t[13],_=t[14],v=t[15],y=n*o-i*s,S=n*l-r*s,g=n*c-a*s,A=i*l-r*o,b=i*c-a*o,k=r*c-a*l,p=u*x-m*f,E=u*_-d*f,w=u*v-h*f,T=m*_-d*x,U=m*v-h*x,B=d*v-h*_,N=y*B-S*U+g*T+A*w-b*E+k*p;return N?(N=1/N,e[0]=(o*B-l*U+c*T)*N,e[1]=(r*U-i*B-a*T)*N,e[2]=(x*k-_*b+v*A)*N,e[3]=(d*b-m*k-h*A)*N,e[4]=(l*w-s*B-c*E)*N,e[5]=(n*B-r*w+a*E)*N,e[6]=(_*g-f*k-v*S)*N,e[7]=(u*k-d*g+h*S)*N,e[8]=(s*U-o*w+c*p)*N,e[9]=(i*w-n*U-a*p)*N,e[10]=(f*b-x*g+v*y)*N,e[11]=(m*g-u*b-h*y)*N,e[12]=(o*E-s*T-l*p)*N,e[13]=(n*T-i*E+r*p)*N,e[14]=(x*S-f*A-_*y)*N,e[15]=(u*A-m*S+d*y)*N,e):null}function Th(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],h=t[11],f=t[12],x=t[13],_=t[14],v=t[15],y=n*o-i*s,S=n*l-r*s,g=n*c-a*s,A=i*l-r*o,b=i*c-a*o,k=r*c-a*l,p=u*x-m*f,E=u*_-d*f,w=u*v-h*f,T=m*_-d*x,U=m*v-h*x,B=d*v-h*_;return e[0]=o*B-l*U+c*T,e[1]=r*U-i*B-a*T,e[2]=x*k-_*b+v*A,e[3]=d*b-m*k-h*A,e[4]=l*w-s*B-c*E,e[5]=n*B-r*w+a*E,e[6]=_*g-f*k-v*S,e[7]=u*k-d*g+h*S,e[8]=s*U-o*w+c*p,e[9]=i*w-n*U-a*p,e[10]=f*b-x*g+v*y,e[11]=m*g-u*b-h*y,e[12]=o*E-s*T-l*p,e[13]=n*T-i*E+r*p,e[14]=x*S-f*A-_*y,e[15]=u*A-m*S+d*y,e}function Mh(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],h=e[12],f=e[13],x=e[14],_=e[15],v=t*s-n*a,y=t*o-i*a,S=n*o-i*s,g=c*f-u*h,A=c*x-m*h,b=u*x-m*f,k=t*b-n*A+i*g,p=a*b-s*A+o*g,E=c*S-u*y+m*v,w=h*S-f*y+x*v;return l*k-r*p+_*E-d*w}function Ho(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],h=t[10],f=t[11],x=t[12],_=t[13],v=t[14],y=t[15],S=n[0],g=n[1],A=n[2],b=n[3];return e[0]=S*i+g*o+A*m+b*x,e[1]=S*r+g*l+A*d+b*_,e[2]=S*a+g*c+A*h+b*v,e[3]=S*s+g*u+A*f+b*y,S=n[4],g=n[5],A=n[6],b=n[7],e[4]=S*i+g*o+A*m+b*x,e[5]=S*r+g*l+A*d+b*_,e[6]=S*a+g*c+A*h+b*v,e[7]=S*s+g*u+A*f+b*y,S=n[8],g=n[9],A=n[10],b=n[11],e[8]=S*i+g*o+A*m+b*x,e[9]=S*r+g*l+A*d+b*_,e[10]=S*a+g*c+A*h+b*v,e[11]=S*s+g*u+A*f+b*y,S=n[12],g=n[13],A=n[14],b=n[15],e[12]=S*i+g*o+A*m+b*x,e[13]=S*r+g*l+A*d+b*_,e[14]=S*a+g*c+A*h+b*v,e[15]=S*s+g*u+A*f+b*y,e}function Rh(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,h,f,x,_,v;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],h=t[7],f=t[8],x=t[9],_=t[10],v=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]=h,e[8]=f,e[9]=x,e[10]=_,e[11]=v,e[12]=s*i+u*r+f*a+t[12],e[13]=o*i+m*r+x*a+t[13],e[14]=l*i+d*r+_*a+t[14],e[15]=c*i+h*r+v*a+t[15]),e}function zh(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 Lh(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,h,f,x,_,v,y,S,g,A,b,k,p,E,w,T,U,B,N,Q;return o<j?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],h=t[2],f=t[3],x=t[4],_=t[5],v=t[6],y=t[7],S=t[8],g=t[9],A=t[10],b=t[11],k=r*r*u+c,p=a*r*u+s*l,E=s*r*u-a*l,w=r*a*u-s*l,T=a*a*u+c,U=s*a*u+r*l,B=r*s*u+a*l,N=a*s*u-r*l,Q=s*s*u+c,e[0]=m*k+x*p+S*E,e[1]=d*k+_*p+g*E,e[2]=h*k+v*p+A*E,e[3]=f*k+y*p+b*E,e[4]=m*w+x*T+S*U,e[5]=d*w+_*T+g*U,e[6]=h*w+v*T+A*U,e[7]=f*w+y*T+b*U,e[8]=m*B+x*N+S*Q,e[9]=d*B+_*N+g*Q,e[10]=h*B+v*N+A*Q,e[11]=f*B+y*N+b*Q,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Nh(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 Oh(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 Ih(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 Ch(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 Ph(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 Dh(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<j?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 Fh(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 Uh(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 Bh(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 Vo(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,h=r*l,f=r*c,x=a*c,_=s*o,v=s*l,y=s*c;return e[0]=1-(h+x),e[1]=m+y,e[2]=d-v,e[3]=0,e[4]=m-y,e[5]=1-(u+x),e[6]=f+_,e[7]=0,e[8]=d+v,e[9]=f-_,e[10]=1-(u+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Gh(e,t){var n=new Le(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),Vo(e,t,n),e}function Hh(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Wo(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 Vh(e,t){var n=new Le(3);Wo(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,h=t[9]*r,f=t[10]*a,x=s+u+f,_=0;return x>0?(_=Math.sqrt(x+1)*2,e[3]=.25*_,e[0]=(m-h)/_,e[1]=(d-l)/_,e[2]=(o-c)/_):s>u&&s>f?(_=Math.sqrt(1+s-u-f)*2,e[3]=(m-h)/_,e[0]=.25*_,e[1]=(o+c)/_,e[2]=(d+l)/_):u>f?(_=Math.sqrt(1+u-s-f)*2,e[3]=(d-l)/_,e[0]=(o+c)/_,e[1]=.25*_,e[2]=(m+h)/_):(_=Math.sqrt(1+f-s-u)*2,e[3]=(o-c)/_,e[0]=(d+l)/_,e[1]=(m+h)/_,e[2]=.25*_),e}function Wh(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 h=1/n[0],f=1/n[1],x=1/n[2],_=r*h,v=a*f,y=s*x,S=o*h,g=l*f,A=c*x,b=u*h,k=m*f,p=d*x,E=_+g+p,w=0;return E>0?(w=Math.sqrt(E+1)*2,e[3]=.25*w,e[0]=(A-k)/w,e[1]=(b-y)/w,e[2]=(v-S)/w):_>g&&_>p?(w=Math.sqrt(1+_-g-p)*2,e[3]=(A-k)/w,e[0]=.25*w,e[1]=(v+S)/w,e[2]=(b+y)/w):g>p?(w=Math.sqrt(1+g-_-p)*2,e[3]=(b-y)/w,e[0]=(v+S)/w,e[1]=.25*w,e[2]=(A+k)/w):(w=Math.sqrt(1+p-_-g)*2,e[3]=(v-S)/w,e[0]=(b+y)/w,e[1]=(A+k)/w,e[2]=.25*w),e}function Kh(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,h=r*u,f=a*c,x=a*u,_=s*u,v=o*l,y=o*c,S=o*u,g=i[0],A=i[1],b=i[2];return e[0]=(1-(f+_))*g,e[1]=(d+S)*g,e[2]=(h-y)*g,e[3]=0,e[4]=(d-S)*A,e[5]=(1-(m+_))*A,e[6]=(x+v)*A,e[7]=0,e[8]=(h+y)*b,e[9]=(x-v)*b,e[10]=(1-(m+f))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function $h(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,h=a*u,f=a*m,x=s*u,_=s*m,v=o*m,y=l*c,S=l*u,g=l*m,A=i[0],b=i[1],k=i[2],p=r[0],E=r[1],w=r[2],T=(1-(x+v))*A,U=(h+g)*A,B=(f-S)*A,N=(h-g)*b,Q=(1-(d+v))*b,Ce=(_+y)*b,kt=(f+S)*k,wi=(_-y)*k,Qe=(1-(d+x))*k;return e[0]=T,e[1]=U,e[2]=B,e[3]=0,e[4]=N,e[5]=Q,e[6]=Ce,e[7]=0,e[8]=kt,e[9]=wi,e[10]=Qe,e[11]=0,e[12]=n[0]+p-(T*p+N*E+kt*w),e[13]=n[1]+E-(U*p+Q*E+wi*w),e[14]=n[2]+w-(B*p+Ce*E+Qe*w),e[15]=1,e}function Xh(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,h=r*o,f=r*l,x=a*s,_=a*o,v=a*l;return e[0]=1-m-f,e[1]=u+v,e[2]=d-_,e[3]=0,e[4]=u-v,e[5]=1-c-f,e[6]=h+x,e[7]=0,e[8]=d+_,e[9]=h-x,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Yh(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 Ko(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 Zh=Ko;function jh(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 qh(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 $o(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 Jh=$o;function Qh(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 e0(e,t,n,i){var r,a,s,o,l,c,u,m,d,h,f=t[0],x=t[1],_=t[2],v=i[0],y=i[1],S=i[2],g=n[0],A=n[1],b=n[2];return Math.abs(f-g)<j&&Math.abs(x-A)<j&&Math.abs(_-b)<j?Go(e):(u=f-g,m=x-A,d=_-b,h=1/Math.sqrt(u*u+m*m+d*d),u*=h,m*=h,d*=h,r=y*d-S*m,a=S*u-v*d,s=v*m-y*u,h=Math.sqrt(r*r+a*a+s*s),h?(h=1/h,r*=h,a*=h,s*=h):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,h=Math.sqrt(o*o+l*l+c*c),h?(h=1/h,o*=h,l*=h,c*=h):(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*f+a*x+s*_),e[13]=-(o*f+l*x+c*_),e[14]=-(u*f+m*x+d*_),e[15]=1,e)}function t0(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],h=u*u+m*m+d*d;h>0&&(h=1/Math.sqrt(h),u*=h,m*=h,d*=h);var f=l*d-c*m,x=c*u-o*d,_=o*m-l*u;return h=f*f+x*x+_*_,h>0&&(h=1/Math.sqrt(h),f*=h,x*=h,_*=h),e[0]=f,e[1]=x,e[2]=_,e[3]=0,e[4]=m*_-d*x,e[5]=d*f-u*_,e[6]=u*x-m*f,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 n0(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 i0(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 r0(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 Xo(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 a0(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 s0(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 o0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function c0(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],h=e[11],f=e[12],x=e[13],_=e[14],v=e[15],y=t[0],S=t[1],g=t[2],A=t[3],b=t[4],k=t[5],p=t[6],E=t[7],w=t[8],T=t[9],U=t[10],B=t[11],N=t[12],Q=t[13],Ce=t[14],kt=t[15];return Math.abs(n-y)<=j*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(i-S)<=j*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(r-g)<=j*Math.max(1,Math.abs(r),Math.abs(g))&&Math.abs(a-A)<=j*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(s-b)<=j*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-k)<=j*Math.max(1,Math.abs(o),Math.abs(k))&&Math.abs(l-p)<=j*Math.max(1,Math.abs(l),Math.abs(p))&&Math.abs(c-E)<=j*Math.max(1,Math.abs(c),Math.abs(E))&&Math.abs(u-w)<=j*Math.max(1,Math.abs(u),Math.abs(w))&&Math.abs(m-T)<=j*Math.max(1,Math.abs(m),Math.abs(T))&&Math.abs(d-U)<=j*Math.max(1,Math.abs(d),Math.abs(U))&&Math.abs(h-B)<=j*Math.max(1,Math.abs(h),Math.abs(B))&&Math.abs(f-N)<=j*Math.max(1,Math.abs(f),Math.abs(N))&&Math.abs(x-Q)<=j*Math.max(1,Math.abs(x),Math.abs(Q))&&Math.abs(_-Ce)<=j*Math.max(1,Math.abs(_),Math.abs(Ce))&&Math.abs(v-kt)<=j*Math.max(1,Math.abs(v),Math.abs(kt))}var l0=Ho,u0=Xo;var ee={};jr(ee,{add:()=>_0,angle:()=>F0,bezier:()=>z0,ceil:()=>g0,clone:()=>d0,copy:()=>h0,create:()=>Yo,cross:()=>b0,dist:()=>$0,distance:()=>Qo,div:()=>K0,divide:()=>Jo,dot:()=>Jr,equals:()=>H0,exactEquals:()=>G0,floor:()=>p0,forEach:()=>j0,fromValues:()=>m0,hermite:()=>R0,inverse:()=>E0,len:()=>Y0,length:()=>Zo,lerp:()=>T0,max:()=>y0,min:()=>v0,mul:()=>W0,multiply:()=>qo,negate:()=>A0,normalize:()=>k0,random:()=>L0,rotateX:()=>C0,rotateY:()=>P0,rotateZ:()=>D0,round:()=>w0,scale:()=>x0,scaleAndAdd:()=>S0,set:()=>f0,slerp:()=>M0,sqrDist:()=>X0,sqrLen:()=>Z0,squaredDistance:()=>ec,squaredLength:()=>tc,str:()=>B0,sub:()=>V0,subtract:()=>jo,transformMat3:()=>O0,transformMat4:()=>N0,transformQuat:()=>I0,zero:()=>U0});function Yo(){var e=new Le(3);return Le!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function d0(e){var t=new Le(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Zo(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function m0(e,t,n){var i=new Le(3);return i[0]=e,i[1]=t,i[2]=n,i}function h0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function f0(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function _0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function jo(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function qo(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Jo(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function g0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function p0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function v0(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 y0(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 w0(e,t){return e[0]=xi(t[0]),e[1]=xi(t[1]),e[2]=xi(t[2]),e}function x0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function S0(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 Qo(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 ec(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 tc(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function A0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function E0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function k0(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 Jr(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function b0(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 T0(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 M0(e,t,n,i){var r=Math.acos(Math.min(Math.max(Jr(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 R0(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 z0(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 L0(e,t){t=t===void 0?1:t;var n=qr()*2*Math.PI,i=qr()*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 N0(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 O0(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 I0(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 C0(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 P0(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 D0(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 F0(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&&Jr(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function U0(e){return e[0]=0,e[1]=0,e[2]=0,e}function B0(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function G0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function H0(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)<=j*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=j*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=j*Math.max(1,Math.abs(r),Math.abs(o))}var V0=jo,W0=qo,K0=Jo,$0=Qo,X0=ec,Y0=Zo,Z0=tc,j0=(function(){var e=Yo();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 q0=Object.defineProperty,Wc=(e,t)=>{for(var n in t)q0(e,n,{get:t[n],enumerable:!0})};var ST=Math.PI/180;var J0=Math.PI/180,AT=180/Math.PI,kn=J0,Q0=[[-.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 $e=1,ht=2;var ba=8,Ta=16,ef=32;var tf=16384;var Di=65536,Kc=1<<17,nf=1<<18,rf=1<<19,af=1<<20,sf=1<<21,of=1<<22,cf=1<<23,ET=1<<24,Fi=1<<25,lf=1<<26,kT=1<<27,bT=1<<28,TT=1<<29,Ui=1<<30,MT=1<<31;var RT=1<<25,zT=1<<28,LT=1<<29,NT=1<<30,OT=1<<31,IT=$e|ht,CT=$e|Di|ht|Fi|Ui,PT=$e|Di|ht,DT=$e|Kc|ht|Fi|Ui,FT=ef|ba|Ta,UT=$e|Ta|ba,uf=$e|Fi|Ui|ht|lf,BT=nf|rf|af|sf|of|cf,GT=$e|ba|Ta|Fi|Ui,HT=$e|Di|ht,VT=$e|ht,WT=$e|Di|ht|Kc,KT=uf|tf,$T=Number.MAX_SAFE_INTEGER-1;var $c=256,df=256,mf=8192,hf=2048,ff=512,_f=256,gf=$c*2,pf=256,Qr=32;var Xc=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+mf]="Sounds",e[e.Images=e.Sounds+hf]="Images",e[e.Lights=e.Images+ff]="Lights",e[e.ShadowLights=e.Lights+df]="ShadowLights",e[e.Items=e.ShadowLights+pf]="Items",e[e.PlayerSkins=e.Items+_f]="PlayerSkins",e[e.General=e.PlayerSkins+$c]="General",e[e.WheelWeapons=e.General+gf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Qr]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Qr]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Qr]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Xc||{}),XT=Xc.MaxConfigStrings;var vf={};Wc(vf,{addReplayFrame:()=>Sf,createReplaySession:()=>xf,deserializeReplay:()=>wf,serializeReplay:()=>yf});function yf(e){return JSON.stringify(e,null,2)}function wf(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 xf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Sf(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var D=(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))(D||{}),R=(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))(R||{}),Af=12,Ef=9,YT=Math.ceil(Af*Ef/16),kf=23,bf=2,ZT=Math.ceil(kf*bf/16),Tf={};Wc(Tf,{U_ANGLE1:()=>If,U_ANGLE2:()=>Cf,U_ANGLE3:()=>Pf,U_EFFECTS:()=>Uf,U_EVENT:()=>Hf,U_FRAME:()=>Df,U_MODEL:()=>Rf,U_MODEL2:()=>Wf,U_MODEL3:()=>Kf,U_MODEL4:()=>$f,U_MOREBITS:()=>Vf,U_NUMBER:()=>Mf,U_ORIGIN1:()=>Lf,U_ORIGIN2:()=>Nf,U_ORIGIN3:()=>Of,U_REMOVE:()=>Xf,U_RENDERFX:()=>Bf,U_SKIN:()=>Ff,U_SOLID:()=>Gf,U_SOUND:()=>zf});var Mf=1,Rf=2,zf=4,Lf=8,Nf=16,Of=32,If=64,Cf=128,Pf=256,Df=512,Ff=1024,Uf=2048,Bf=4096,Gf=8192,Hf=16384,Vf=32768,Wf=1,Kf=2,$f=4,Xf=32768,_a=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=Q0[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Yc=(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))(Yc||{}),jT=Object.keys(Yc).length/2;function Yf(){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 qT=Yf();var JT=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 Zf=19,QT=8+Zf*8;var ga=4,ea=7*ga,e8=[{index:0,size:3,type:5126,stride:ea,offset:0},{index:1,size:2,type:5126,stride:ea,offset:3*ga},{index:2,size:2,type:5126,stride:ea,offset:5*ga}];var Zc=32;var t8=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var Zr=Object.defineProperty;var _h=Object.getOwnPropertyDescriptor;var gh=Object.getOwnPropertyNames;var ph=Object.prototype.hasOwnProperty;var jr=(e,t)=>{for(var n in t)Zr(e,n,{get:t[n],enumerable:!0})},vh=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of gh(t))!ph.call(e,r)&&r!==n&&Zr(e,r,{get:()=>t[r],enumerable:!(i=_h(t,r))||i.enumerable});return e};var yh=e=>vh(Zr({},"__esModule",{value:!0}),e);var pT={};jr(pT,{ClientConfigStrings:()=>xn,ClientPrediction:()=>Qi,InputAction:()=>$r,InputBindings:()=>Gt,InputCommandBuffer:()=>Xr,InputController:()=>An,ViewEffects:()=>Ji,createClient:()=>gT,createDefaultBindings:()=>fh,interpolatePredictionState:()=>tn,normalizeCommand:()=>vi,normalizeInputCode:()=>Do});var j=1e-6,Le=typeof Float32Array<"u"?Float32Array:Array,qr=Math.random;function Si(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var yT=Math.PI/180,wT=180/Math.PI;var q={};jr(q,{add:()=>r0,adjoint:()=>Th,clone:()=>Sh,copy:()=>xh,create:()=>wh,decompose:()=>Wh,determinant:()=>Mh,equals:()=>c0,exactEquals:()=>o0,frob:()=>i0,fromQuat:()=>Xh,fromQuat2:()=>Gh,fromRotation:()=>Dh,fromRotationTranslation:()=>Vo,fromRotationTranslationScale:()=>Kh,fromRotationTranslationScaleOrigin:()=>$h,fromScaling:()=>Ph,fromTranslation:()=>Ch,fromValues:()=>Ah,fromXRotation:()=>Fh,fromYRotation:()=>Uh,fromZRotation:()=>Bh,frustum:()=>Yh,getRotation:()=>Vh,getScaling:()=>Wo,getTranslation:()=>Hh,identity:()=>Go,invert:()=>bh,lookAt:()=>e0,mul:()=>l0,multiply:()=>Ho,multiplyScalar:()=>a0,multiplyScalarAndAdd:()=>s0,ortho:()=>Jh,orthoNO:()=>$o,orthoZO:()=>Qh,perspective:()=>Zh,perspectiveFromFieldOfView:()=>qh,perspectiveNO:()=>Ko,perspectiveZO:()=>jh,rotate:()=>Lh,rotateX:()=>Nh,rotateY:()=>Oh,rotateZ:()=>Ih,scale:()=>zh,set:()=>Eh,str:()=>n0,sub:()=>u0,subtract:()=>Xo,targetTo:()=>t0,translate:()=>Rh,transpose:()=>kh});function wh(){var e=new Le(16);return Le!=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 Sh(e){var t=new Le(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 xh(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 Ah(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,S){var _=new Le(16);return _[0]=e,_[1]=t,_[2]=n,_[3]=i,_[4]=r,_[5]=a,_[6]=s,_[7]=o,_[8]=l,_[9]=c,_[10]=u,_[11]=m,_[12]=d,_[13]=h,_[14]=f,_[15]=S,_}function Eh(e,t,n,i,r,a,s,o,l,c,u,m,d,h,f,S,_){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]=h,e[13]=f,e[14]=S,e[15]=_,e}function Go(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 kh(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 bh(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],h=t[11],f=t[12],S=t[13],_=t[14],v=t[15],y=n*o-i*s,x=n*l-r*s,g=n*c-a*s,A=i*l-r*o,b=i*c-a*o,k=r*c-a*l,p=u*S-m*f,E=u*_-d*f,w=u*v-h*f,T=m*_-d*S,U=m*v-h*S,B=d*v-h*_,N=y*B-x*U+g*T+A*w-b*E+k*p;return N?(N=1/N,e[0]=(o*B-l*U+c*T)*N,e[1]=(r*U-i*B-a*T)*N,e[2]=(S*k-_*b+v*A)*N,e[3]=(d*b-m*k-h*A)*N,e[4]=(l*w-s*B-c*E)*N,e[5]=(n*B-r*w+a*E)*N,e[6]=(_*g-f*k-v*x)*N,e[7]=(u*k-d*g+h*x)*N,e[8]=(s*U-o*w+c*p)*N,e[9]=(i*w-n*U-a*p)*N,e[10]=(f*b-S*g+v*y)*N,e[11]=(m*g-u*b-h*y)*N,e[12]=(o*E-s*T-l*p)*N,e[13]=(n*T-i*E+r*p)*N,e[14]=(S*x-f*A-_*y)*N,e[15]=(u*A-m*x+d*y)*N,e):null}function Th(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],h=t[11],f=t[12],S=t[13],_=t[14],v=t[15],y=n*o-i*s,x=n*l-r*s,g=n*c-a*s,A=i*l-r*o,b=i*c-a*o,k=r*c-a*l,p=u*S-m*f,E=u*_-d*f,w=u*v-h*f,T=m*_-d*S,U=m*v-h*S,B=d*v-h*_;return e[0]=o*B-l*U+c*T,e[1]=r*U-i*B-a*T,e[2]=S*k-_*b+v*A,e[3]=d*b-m*k-h*A,e[4]=l*w-s*B-c*E,e[5]=n*B-r*w+a*E,e[6]=_*g-f*k-v*x,e[7]=u*k-d*g+h*x,e[8]=s*U-o*w+c*p,e[9]=i*w-n*U-a*p,e[10]=f*b-S*g+v*y,e[11]=m*g-u*b-h*y,e[12]=o*E-s*T-l*p,e[13]=n*T-i*E+r*p,e[14]=S*x-f*A-_*y,e[15]=u*A-m*x+d*y,e}function Mh(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],h=e[12],f=e[13],S=e[14],_=e[15],v=t*s-n*a,y=t*o-i*a,x=n*o-i*s,g=c*f-u*h,A=c*S-m*h,b=u*S-m*f,k=t*b-n*A+i*g,p=a*b-s*A+o*g,E=c*x-u*y+m*v,w=h*x-f*y+S*v;return l*k-r*p+_*E-d*w}function Ho(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],h=t[10],f=t[11],S=t[12],_=t[13],v=t[14],y=t[15],x=n[0],g=n[1],A=n[2],b=n[3];return e[0]=x*i+g*o+A*m+b*S,e[1]=x*r+g*l+A*d+b*_,e[2]=x*a+g*c+A*h+b*v,e[3]=x*s+g*u+A*f+b*y,x=n[4],g=n[5],A=n[6],b=n[7],e[4]=x*i+g*o+A*m+b*S,e[5]=x*r+g*l+A*d+b*_,e[6]=x*a+g*c+A*h+b*v,e[7]=x*s+g*u+A*f+b*y,x=n[8],g=n[9],A=n[10],b=n[11],e[8]=x*i+g*o+A*m+b*S,e[9]=x*r+g*l+A*d+b*_,e[10]=x*a+g*c+A*h+b*v,e[11]=x*s+g*u+A*f+b*y,x=n[12],g=n[13],A=n[14],b=n[15],e[12]=x*i+g*o+A*m+b*S,e[13]=x*r+g*l+A*d+b*_,e[14]=x*a+g*c+A*h+b*v,e[15]=x*s+g*u+A*f+b*y,e}function Rh(e,t,n){var i=n[0],r=n[1],a=n[2],s,o,l,c,u,m,d,h,f,S,_,v;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],h=t[7],f=t[8],S=t[9],_=t[10],v=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]=h,e[8]=f,e[9]=S,e[10]=_,e[11]=v,e[12]=s*i+u*r+f*a+t[12],e[13]=o*i+m*r+S*a+t[13],e[14]=l*i+d*r+_*a+t[14],e[15]=c*i+h*r+v*a+t[15]),e}function zh(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 Lh(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,h,f,S,_,v,y,x,g,A,b,k,p,E,w,T,U,B,N,Q;return o<j?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],h=t[2],f=t[3],S=t[4],_=t[5],v=t[6],y=t[7],x=t[8],g=t[9],A=t[10],b=t[11],k=r*r*u+c,p=a*r*u+s*l,E=s*r*u-a*l,w=r*a*u-s*l,T=a*a*u+c,U=s*a*u+r*l,B=r*s*u+a*l,N=a*s*u-r*l,Q=s*s*u+c,e[0]=m*k+S*p+x*E,e[1]=d*k+_*p+g*E,e[2]=h*k+v*p+A*E,e[3]=f*k+y*p+b*E,e[4]=m*w+S*T+x*U,e[5]=d*w+_*T+g*U,e[6]=h*w+v*T+A*U,e[7]=f*w+y*T+b*U,e[8]=m*B+S*N+x*Q,e[9]=d*B+_*N+g*Q,e[10]=h*B+v*N+A*Q,e[11]=f*B+y*N+b*Q,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Nh(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 Oh(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 Ih(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 Ch(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 Ph(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 Dh(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<j?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 Fh(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 Uh(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 Bh(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 Vo(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,h=r*l,f=r*c,S=a*c,_=s*o,v=s*l,y=s*c;return e[0]=1-(h+S),e[1]=m+y,e[2]=d-v,e[3]=0,e[4]=m-y,e[5]=1-(u+S),e[6]=f+_,e[7]=0,e[8]=d+v,e[9]=f-_,e[10]=1-(u+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function Gh(e,t){var n=new Le(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),Vo(e,t,n),e}function Hh(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Wo(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 Vh(e,t){var n=new Le(3);Wo(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,h=t[9]*r,f=t[10]*a,S=s+u+f,_=0;return S>0?(_=Math.sqrt(S+1)*2,e[3]=.25*_,e[0]=(m-h)/_,e[1]=(d-l)/_,e[2]=(o-c)/_):s>u&&s>f?(_=Math.sqrt(1+s-u-f)*2,e[3]=(m-h)/_,e[0]=.25*_,e[1]=(o+c)/_,e[2]=(d+l)/_):u>f?(_=Math.sqrt(1+u-s-f)*2,e[3]=(d-l)/_,e[0]=(o+c)/_,e[1]=.25*_,e[2]=(m+h)/_):(_=Math.sqrt(1+f-s-u)*2,e[3]=(o-c)/_,e[0]=(d+l)/_,e[1]=(m+h)/_,e[2]=.25*_),e}function Wh(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 h=1/n[0],f=1/n[1],S=1/n[2],_=r*h,v=a*f,y=s*S,x=o*h,g=l*f,A=c*S,b=u*h,k=m*f,p=d*S,E=_+g+p,w=0;return E>0?(w=Math.sqrt(E+1)*2,e[3]=.25*w,e[0]=(A-k)/w,e[1]=(b-y)/w,e[2]=(v-x)/w):_>g&&_>p?(w=Math.sqrt(1+_-g-p)*2,e[3]=(A-k)/w,e[0]=.25*w,e[1]=(v+x)/w,e[2]=(b+y)/w):g>p?(w=Math.sqrt(1+g-_-p)*2,e[3]=(b-y)/w,e[0]=(v+x)/w,e[1]=.25*w,e[2]=(A+k)/w):(w=Math.sqrt(1+p-_-g)*2,e[3]=(v-x)/w,e[0]=(b+y)/w,e[1]=(A+k)/w,e[2]=.25*w),e}function Kh(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,h=r*u,f=a*c,S=a*u,_=s*u,v=o*l,y=o*c,x=o*u,g=i[0],A=i[1],b=i[2];return e[0]=(1-(f+_))*g,e[1]=(d+x)*g,e[2]=(h-y)*g,e[3]=0,e[4]=(d-x)*A,e[5]=(1-(m+_))*A,e[6]=(S+v)*A,e[7]=0,e[8]=(h+y)*b,e[9]=(S-v)*b,e[10]=(1-(m+f))*b,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function $h(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,h=a*u,f=a*m,S=s*u,_=s*m,v=o*m,y=l*c,x=l*u,g=l*m,A=i[0],b=i[1],k=i[2],p=r[0],E=r[1],w=r[2],T=(1-(S+v))*A,U=(h+g)*A,B=(f-x)*A,N=(h-g)*b,Q=(1-(d+v))*b,Ce=(_+y)*b,kt=(f+x)*k,wi=(_-y)*k,Qe=(1-(d+S))*k;return e[0]=T,e[1]=U,e[2]=B,e[3]=0,e[4]=N,e[5]=Q,e[6]=Ce,e[7]=0,e[8]=kt,e[9]=wi,e[10]=Qe,e[11]=0,e[12]=n[0]+p-(T*p+N*E+kt*w),e[13]=n[1]+E-(U*p+Q*E+wi*w),e[14]=n[2]+w-(B*p+Ce*E+Qe*w),e[15]=1,e}function Xh(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,h=r*o,f=r*l,S=a*s,_=a*o,v=a*l;return e[0]=1-m-f,e[1]=u+v,e[2]=d-_,e[3]=0,e[4]=u-v,e[5]=1-c-f,e[6]=h+S,e[7]=0,e[8]=d+_,e[9]=h-S,e[10]=1-c-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Yh(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 Ko(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 Zh=Ko;function jh(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 qh(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 $o(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 Jh=$o;function Qh(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 e0(e,t,n,i){var r,a,s,o,l,c,u,m,d,h,f=t[0],S=t[1],_=t[2],v=i[0],y=i[1],x=i[2],g=n[0],A=n[1],b=n[2];return Math.abs(f-g)<j&&Math.abs(S-A)<j&&Math.abs(_-b)<j?Go(e):(u=f-g,m=S-A,d=_-b,h=1/Math.sqrt(u*u+m*m+d*d),u*=h,m*=h,d*=h,r=y*d-x*m,a=x*u-v*d,s=v*m-y*u,h=Math.sqrt(r*r+a*a+s*s),h?(h=1/h,r*=h,a*=h,s*=h):(r=0,a=0,s=0),o=m*s-d*a,l=d*r-u*s,c=u*a-m*r,h=Math.sqrt(o*o+l*l+c*c),h?(h=1/h,o*=h,l*=h,c*=h):(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*f+a*S+s*_),e[13]=-(o*f+l*S+c*_),e[14]=-(u*f+m*S+d*_),e[15]=1,e)}function t0(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],h=u*u+m*m+d*d;h>0&&(h=1/Math.sqrt(h),u*=h,m*=h,d*=h);var f=l*d-c*m,S=c*u-o*d,_=o*m-l*u;return h=f*f+S*S+_*_,h>0&&(h=1/Math.sqrt(h),f*=h,S*=h,_*=h),e[0]=f,e[1]=S,e[2]=_,e[3]=0,e[4]=m*_-d*S,e[5]=d*f-u*_,e[6]=u*S-m*f,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 n0(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 i0(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 r0(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 Xo(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 a0(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 s0(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 o0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function c0(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],h=e[11],f=e[12],S=e[13],_=e[14],v=e[15],y=t[0],x=t[1],g=t[2],A=t[3],b=t[4],k=t[5],p=t[6],E=t[7],w=t[8],T=t[9],U=t[10],B=t[11],N=t[12],Q=t[13],Ce=t[14],kt=t[15];return Math.abs(n-y)<=j*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(i-x)<=j*Math.max(1,Math.abs(i),Math.abs(x))&&Math.abs(r-g)<=j*Math.max(1,Math.abs(r),Math.abs(g))&&Math.abs(a-A)<=j*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(s-b)<=j*Math.max(1,Math.abs(s),Math.abs(b))&&Math.abs(o-k)<=j*Math.max(1,Math.abs(o),Math.abs(k))&&Math.abs(l-p)<=j*Math.max(1,Math.abs(l),Math.abs(p))&&Math.abs(c-E)<=j*Math.max(1,Math.abs(c),Math.abs(E))&&Math.abs(u-w)<=j*Math.max(1,Math.abs(u),Math.abs(w))&&Math.abs(m-T)<=j*Math.max(1,Math.abs(m),Math.abs(T))&&Math.abs(d-U)<=j*Math.max(1,Math.abs(d),Math.abs(U))&&Math.abs(h-B)<=j*Math.max(1,Math.abs(h),Math.abs(B))&&Math.abs(f-N)<=j*Math.max(1,Math.abs(f),Math.abs(N))&&Math.abs(S-Q)<=j*Math.max(1,Math.abs(S),Math.abs(Q))&&Math.abs(_-Ce)<=j*Math.max(1,Math.abs(_),Math.abs(Ce))&&Math.abs(v-kt)<=j*Math.max(1,Math.abs(v),Math.abs(kt))}var l0=Ho,u0=Xo;var ee={};jr(ee,{add:()=>_0,angle:()=>F0,bezier:()=>z0,ceil:()=>g0,clone:()=>d0,copy:()=>h0,create:()=>Yo,cross:()=>b0,dist:()=>$0,distance:()=>Qo,div:()=>K0,divide:()=>Jo,dot:()=>Jr,equals:()=>H0,exactEquals:()=>G0,floor:()=>p0,forEach:()=>j0,fromValues:()=>m0,hermite:()=>R0,inverse:()=>E0,len:()=>Y0,length:()=>Zo,lerp:()=>T0,max:()=>y0,min:()=>v0,mul:()=>W0,multiply:()=>qo,negate:()=>A0,normalize:()=>k0,random:()=>L0,rotateX:()=>C0,rotateY:()=>P0,rotateZ:()=>D0,round:()=>w0,scale:()=>S0,scaleAndAdd:()=>x0,set:()=>f0,slerp:()=>M0,sqrDist:()=>X0,sqrLen:()=>Z0,squaredDistance:()=>ec,squaredLength:()=>tc,str:()=>B0,sub:()=>V0,subtract:()=>jo,transformMat3:()=>O0,transformMat4:()=>N0,transformQuat:()=>I0,zero:()=>U0});function Yo(){var e=new Le(3);return Le!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function d0(e){var t=new Le(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Zo(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function m0(e,t,n){var i=new Le(3);return i[0]=e,i[1]=t,i[2]=n,i}function h0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function f0(e,t,n,i){return e[0]=t,e[1]=n,e[2]=i,e}function _0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function jo(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function qo(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Jo(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function g0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function p0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function v0(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 y0(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 w0(e,t){return e[0]=Si(t[0]),e[1]=Si(t[1]),e[2]=Si(t[2]),e}function S0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function x0(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 Qo(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 ec(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 tc(e){var t=e[0],n=e[1],i=e[2];return t*t+n*n+i*i}function A0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function E0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function k0(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 Jr(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function b0(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 T0(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 M0(e,t,n,i){var r=Math.acos(Math.min(Math.max(Jr(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 R0(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 z0(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 L0(e,t){t=t===void 0?1:t;var n=qr()*2*Math.PI,i=qr()*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 N0(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 O0(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 I0(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 C0(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 P0(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 D0(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 F0(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&&Jr(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function U0(e){return e[0]=0,e[1]=0,e[2]=0,e}function B0(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function G0(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function H0(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)<=j*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=j*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=j*Math.max(1,Math.abs(r),Math.abs(o))}var V0=jo,W0=qo,K0=Jo,$0=Qo,X0=ec,Y0=Zo,Z0=tc,j0=(function(){var e=Yo();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 q0=Object.defineProperty,Wc=(e,t)=>{for(var n in t)q0(e,n,{get:t[n],enumerable:!0})};var xT=Math.PI/180;var J0=Math.PI/180,AT=180/Math.PI,kn=J0,Q0=[[-.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 $e=1,ht=2;var ba=8,Ta=16,ef=32;var tf=16384;var Di=65536,Kc=1<<17,nf=1<<18,rf=1<<19,af=1<<20,sf=1<<21,of=1<<22,cf=1<<23,ET=1<<24,Fi=1<<25,lf=1<<26,kT=1<<27,bT=1<<28,TT=1<<29,Ui=1<<30,MT=1<<31;var RT=1<<25,zT=1<<28,LT=1<<29,NT=1<<30,OT=1<<31,IT=$e|ht,CT=$e|Di|ht|Fi|Ui,PT=$e|Di|ht,DT=$e|Kc|ht|Fi|Ui,FT=ef|ba|Ta,UT=$e|Ta|ba,uf=$e|Fi|Ui|ht|lf,BT=nf|rf|af|sf|of|cf,GT=$e|ba|Ta|Fi|Ui,HT=$e|Di|ht,VT=$e|ht,WT=$e|Di|ht|Kc,KT=uf|tf,$T=Number.MAX_SAFE_INTEGER-1;var $c=256,df=256,mf=8192,hf=2048,ff=512,_f=256,gf=$c*2,pf=256,Qr=32;var Xc=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+mf]="Sounds",e[e.Images=e.Sounds+hf]="Images",e[e.Lights=e.Images+ff]="Lights",e[e.ShadowLights=e.Lights+df]="ShadowLights",e[e.Items=e.ShadowLights+pf]="Items",e[e.PlayerSkins=e.Items+_f]="PlayerSkins",e[e.General=e.PlayerSkins+$c]="General",e[e.WheelWeapons=e.General+gf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Qr]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Qr]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Qr]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(Xc||{}),XT=Xc.MaxConfigStrings;var vf={};Wc(vf,{addReplayFrame:()=>xf,createReplaySession:()=>Sf,deserializeReplay:()=>wf,serializeReplay:()=>yf});function yf(e){return JSON.stringify(e,null,2)}function wf(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 Sf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function xf(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var D=(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))(D||{}),R=(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))(R||{}),Af=12,Ef=9,YT=Math.ceil(Af*Ef/16),kf=23,bf=2,ZT=Math.ceil(kf*bf/16),Tf={};Wc(Tf,{U_ANGLE1:()=>If,U_ANGLE2:()=>Cf,U_ANGLE3:()=>Pf,U_EFFECTS:()=>Uf,U_EVENT:()=>Hf,U_FRAME:()=>Df,U_MODEL:()=>Rf,U_MODEL2:()=>Wf,U_MODEL3:()=>Kf,U_MODEL4:()=>$f,U_MOREBITS:()=>Vf,U_NUMBER:()=>Mf,U_ORIGIN1:()=>Lf,U_ORIGIN2:()=>Nf,U_ORIGIN3:()=>Of,U_REMOVE:()=>Xf,U_RENDERFX:()=>Bf,U_SKIN:()=>Ff,U_SOLID:()=>Gf,U_SOUND:()=>zf});var Mf=1,Rf=2,zf=4,Lf=8,Nf=16,Of=32,If=64,Cf=128,Pf=256,Df=512,Ff=1024,Uf=2048,Bf=4096,Gf=8192,Hf=16384,Vf=32768,Wf=1,Kf=2,$f=4,Xf=32768,_a=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=Q0[t];e.x=n[0],e.y=n[1],e.z=n[2]}},Yc=(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))(Yc||{}),jT=Object.keys(Yc).length/2;function Yf(){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 qT=Yf();var JT=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 Zf=19,QT=8+Zf*8;var ga=4,ea=7*ga,e8=[{index:0,size:3,type:5126,stride:ea,offset:0},{index:1,size:2,type:5126,stride:ea,offset:3*ga},{index:2,size:2,type:5126,stride:ea,offset:5*ga}];var Zc=32;var t8=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
|
|
4
4
|
struct DLight {
|
|
@@ -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 jc=class{constructor(){this._position=ee.create(),this._angles=ee.create(),this._bobAngles=ee.create(),this._bobOffset=ee.create(),this._kickAngles=ee.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=q.create(),this._projectionMatrix=q.create(),this._viewProjectionMatrix=q.create(),this._dirty=!0}get position(){return this._position}set position(e){ee.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ee.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ee.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ee.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ee.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=q.create();return q.perspective(t,e*kn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;q.perspective(this._projectionMatrix,this._fov*kn,this._aspect,this._near,this._far);let e=q.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*kn,a=n*kn,s=i*kn,o=q.create();q.identity(o),q.rotateZ(o,o,-a),q.rotateY(o,o,-r),q.rotateX(o,o,-s);let l=q.create();q.multiply(l,e,o);let c=ee.add(ee.create(),this._position,this._bobOffset),u=ee.negate(ee.create(),c),m=ee.create();ee.transformMat4(m,u,o);let d=ee.fromValues(m[1]||0,m[2]||0,m[0]||0);q.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],q.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var jf=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>262144)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 _a(t)}}reset(){this.offset=0}getOffset(){return this.offset}},qf=4,nc=0,ic=1,Jf=2;function Yt(e){let t=e.length;for(;--t>=0;)e[t]=0}var Qf=0,qc=1,e1=2,t1=3,n1=258,Ma=29,Bn=256,Nn=Bn+1+Ma,Kt=30,Ra=19,Jc=2*Nn+1,bt=15,ta=16,i1=7,za=256,Qc=16,el=17,tl=18,pa=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]),Ti=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]),r1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),nl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a1=512,tt=new Array((Nn+2)*2);Yt(tt);var Rn=new Array(Kt*2);Yt(Rn);var On=new Array(a1);Yt(On);var In=new Array(n1-t1+1);Yt(In);var La=new Array(Ma);Yt(La);var Mi=new Array(Kt);Yt(Mi);function na(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 il,rl,al;function ia(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var sl=e=>e<256?On[e]:On[256+(e>>>7)],Cn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ae=(e,t,n)=>{e.bi_valid>ta-n?(e.bi_buf|=t<<e.bi_valid&65535,Cn(e,e.bi_buf),e.bi_buf=t>>ta-e.bi_valid,e.bi_valid+=n-ta):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},Ve=(e,t,n)=>{Ae(e,n[t*2],n[t*2+1])},ol=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},s1=e=>{e.bi_valid===16?(Cn(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)},o1=(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,h,f,x=0;for(d=0;d<=bt;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Jc;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,x++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,h=0,u>=o&&(h=s[u-o]),f=n[u*2],e.opt_len+=f*(d+h),a&&(e.static_len+=f*(r[u*2+1]+h)));if(x!==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]--,x-=2}while(x>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--)}},cl=(e,t,n)=>{let i=new Array(bt+1),r=0,a,s;for(a=1;a<=bt;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]=ol(i[o]++,o))}},c1=()=>{let e,t,n,i,r,a=new Array(bt+1);for(n=0,i=0;i<Ma-1;i++)for(La[i]=n,e=0;e<1<<pa[i];e++)In[n++]=i;for(In[n-1]=i,r=0,i=0;i<16;i++)for(Mi[i]=r,e=0;e<1<<Ti[i];e++)On[r++]=i;for(r>>=7;i<Kt;i++)for(Mi[i]=r<<7,e=0;e<1<<Ti[i]-7;e++)On[256+r++]=i;for(t=0;t<=bt;t++)a[t]=0;for(e=0;e<=143;)tt[e*2+1]=8,e++,a[8]++;for(;e<=255;)tt[e*2+1]=9,e++,a[9]++;for(;e<=279;)tt[e*2+1]=7,e++,a[7]++;for(;e<=287;)tt[e*2+1]=8,e++,a[8]++;for(cl(tt,Nn+1,a),e=0;e<Kt;e++)Rn[e*2+1]=5,Rn[e*2]=ol(e,5);il=new na(tt,pa,Bn+1,Nn,bt),rl=new na(Rn,Ti,0,Kt,bt),al=new na(new Array(0),r1,0,Ra,i1)},ll=e=>{let t;for(t=0;t<Nn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Kt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Ra;t++)e.bl_tree[t*2]=0;e.dyn_ltree[za*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},ul=e=>{e.bi_valid>8?Cn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},rc=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ra=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&rc(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!rc(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},ac=(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?Ve(e,r,t):(s=In[r],Ve(e,s+Bn+1,t),o=pa[s],o!==0&&(r-=La[s],Ae(e,r,o)),i--,s=sl(i),Ve(e,s,n),o=Ti[s],o!==0&&(i-=Mi[s],Ae(e,i,o)));while(a<e.sym_next);Ve(e,za,t)},va=(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=Jc,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--)ra(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ra(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,ra(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],o1(e,t),cl(n,l,e.bl_count)},sc=(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[Qc*2]++):o<=10?e.bl_tree[el*2]++:e.bl_tree[tl*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},oc=(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 Ve(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(Ve(e,a,e.bl_tree),o--),Ve(e,Qc,e.bl_tree),Ae(e,o-3,2)):o<=10?(Ve(e,el,e.bl_tree),Ae(e,o-3,3)):(Ve(e,tl,e.bl_tree),Ae(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},l1=e=>{let t;for(sc(e,e.dyn_ltree,e.l_desc.max_code),sc(e,e.dyn_dtree,e.d_desc.max_code),va(e,e.bl_desc),t=Ra-1;t>=3&&e.bl_tree[nl[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},u1=(e,t,n,i)=>{let r;for(Ae(e,t-257,5),Ae(e,n-1,5),Ae(e,i-4,4),r=0;r<i;r++)Ae(e,e.bl_tree[nl[r]*2+1],3);oc(e,e.dyn_ltree,t-1),oc(e,e.dyn_dtree,n-1)},d1=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return nc;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return ic;for(n=32;n<Bn;n++)if(e.dyn_ltree[n*2]!==0)return ic;return nc},cc=!1,m1=e=>{cc||(c1(),cc=!0),e.l_desc=new ia(e.dyn_ltree,il),e.d_desc=new ia(e.dyn_dtree,rl),e.bl_desc=new ia(e.bl_tree,al),e.bi_buf=0,e.bi_valid=0,ll(e)},dl=(e,t,n,i)=>{Ae(e,(Qf<<1)+(i?1:0),3),ul(e),Cn(e,n),Cn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},h1=e=>{Ae(e,qc<<1,3),Ve(e,za,tt),s1(e)},f1=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Jf&&(e.strm.data_type=d1(e)),va(e,e.l_desc),va(e,e.d_desc),s=l1(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?dl(e,t,n,i):e.strategy===qf||a===r?(Ae(e,(qc<<1)+(i?1:0),3),ac(e,tt,Rn)):(Ae(e,(e1<<1)+(i?1:0),3),u1(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),ac(e,e.dyn_ltree,e.dyn_dtree)),ll(e),i&&ul(e)},_1=(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[(In[n]+Bn+1)*2]++,e.dyn_dtree[sl(t)*2]++),e.sym_next===e.sym_end),g1=m1,p1=dl,v1=f1,y1=_1,w1=h1,x1={_tr_init:g1,_tr_stored_block:p1,_tr_flush_block:v1,_tr_tally:y1,_tr_align:w1},S1=(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},Pn=S1,A1=()=>{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},E1=new Uint32Array(A1()),k1=(e,t,n,i)=>{let r=E1,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},_e=k1,Rt={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"},Nt={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:b1,_tr_stored_block:ya,_tr_flush_block:T1,_tr_tally:ut,_tr_align:M1}=x1,{Z_NO_FLUSH:dt,Z_PARTIAL_FLUSH:R1,Z_FULL_FLUSH:z1,Z_FINISH:Ne,Z_BLOCK:lc,Z_OK:ve,Z_STREAM_END:uc,Z_STREAM_ERROR:We,Z_DATA_ERROR:L1,Z_BUF_ERROR:aa,Z_DEFAULT_COMPRESSION:N1,Z_FILTERED:O1,Z_HUFFMAN_ONLY:Si,Z_RLE:I1,Z_FIXED:C1,Z_DEFAULT_STRATEGY:P1,Z_UNKNOWN:D1,Z_DEFLATED:Bi}=Nt,F1=9,U1=15,B1=8,G1=29,H1=256,wa=H1+1+G1,V1=30,W1=19,K1=2*wa+1,$1=15,W=3,lt=258,Ke=lt+W+1,X1=32,$t=42,Na=57,xa=69,Sa=73,Aa=91,Ea=103,Tt=113,Tn=666,we=1,Zt=2,zt=3,jt=4,Y1=3,Mt=(e,t)=>(e.msg=Rt[t],t),dc=e=>e*2-(e>4?9:0),ct=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Z1=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)},j1=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,mt=j1,be=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))},Te=(e,t)=>{T1(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,be(e.strm)},X=(e,t)=>{e.pending_buf[e.pending++]=t},bn=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},ka=(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=Pn(e.adler,t,r,n):e.state.wrap===2&&(e.adler=_e(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},ml=(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-Ke?e.strstart-(e.w_size-Ke):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+lt,h=c[i+s-1],f=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==f||c[r+s-1]!==h||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=lt-(d-i),i=d-lt,a>s){if(e.match_start=t,s=a,a>=o)break;h=c[i+s-1],f=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Xt=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ke)&&(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),Z1(e),i+=t),e.strm.avail_in===0)break;if(n=ka(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=W)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=mt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=mt(e,e.ins_h,e.window[r+W-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<W)););}while(e.lookahead<Ke&&e.strm.avail_in!==0)},hl=(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!==Ne||t===dt||i!==r+e.strm.avail_in)))break;s=t===Ne&&i===r+e.strm.avail_in?1:0,ya(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,be(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&&(ka(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?jt:t!==dt&&t!==Ne&&e.strm.avail_in===0&&e.strstart===e.block_start?Zt:(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&&(ka(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===Ne)&&t!==dt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Ne&&e.strm.avail_in===0&&i===r?1:0,ya(e,e.block_start,i,s),e.block_start+=i,be(e.strm)),s?zt:we)},sa=(e,t)=>{let n,i;for(;;){if(e.lookahead<Ke){if(Xt(e),e.lookahead<Ke&&t===dt)return we;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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-Ke&&(e.match_length=ml(e,n)),e.match_length>=W)if(i=ut(e,e.strstart-e.match_start,e.match_length-W),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=W){e.match_length--;do e.strstart++,e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=mt(e,e.ins_h,e.window[e.strstart+1]);else i=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=e.strstart<W-1?e.strstart:W-1,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},Ht=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<Ke){if(Xt(e),e.lookahead<Ke&&t===dt)return we;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=W-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-Ke&&(e.match_length=ml(e,n),e.match_length<=5&&(e.strategy===O1||e.match_length===W&&e.strstart-e.match_start>4096)&&(e.match_length=W-1)),e.prev_length>=W&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-W,i=ut(e,e.strstart-1-e.prev_match,e.prev_length-W),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=W-1,e.strstart++,i&&(Te(e,!1),e.strm.avail_out===0))return we}else if(e.match_available){if(i=ut(e,0,e.window[e.strstart-1]),i&&Te(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return we}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=ut(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<W-1?e.strstart:W-1,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},q1=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=lt){if(Xt(e),e.lookahead<=lt&&t===dt)return we;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=W&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+lt;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=lt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=W?(n=ut(e,1,e.match_length-W),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=0,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},J1=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Xt(e),e.lookahead===0)){if(t===dt)return we;break}if(e.match_length=0,n=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=0,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt};function He(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 Mn=[new He(0,0,0,0,hl),new He(4,4,8,4,sa),new He(4,5,16,8,sa),new He(4,6,32,32,sa),new He(4,4,16,16,Ht),new He(8,16,32,32,Ht),new He(8,16,128,128,Ht),new He(8,32,128,256,Ht),new He(32,128,258,1024,Ht),new He(32,258,258,4096,Ht)],Q1=e=>{e.window_size=2*e.w_size,ct(e.head),e.max_lazy_match=Mn[e.level].max_lazy,e.good_match=Mn[e.level].good_length,e.nice_match=Mn[e.level].nice_length,e.max_chain_length=Mn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=W-1,e.match_available=0,e.ins_h=0};function e_(){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=Bi,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(K1*2),this.dyn_dtree=new Uint16Array((2*V1+1)*2),this.bl_tree=new Uint16Array((2*W1+1)*2),ct(this.dyn_ltree),ct(this.dyn_dtree),ct(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array($1+1),this.heap=new Uint16Array(2*wa+1),ct(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*wa+1),ct(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 Gn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==$t&&t.status!==Na&&t.status!==xa&&t.status!==Sa&&t.status!==Aa&&t.status!==Ea&&t.status!==Tt&&t.status!==Tn?1:0},fl=e=>{if(Gn(e))return Mt(e,We);e.total_in=e.total_out=0,e.data_type=D1;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Na:t.wrap?$t:Tt,e.adler=t.wrap===2?0:1,t.last_flush=-2,b1(t),ve},_l=e=>{let t=fl(e);return t===ve&&Q1(e.state),t},t_=(e,t)=>Gn(e)||e.state.wrap!==2?We:(e.state.gzhead=t,ve),gl=(e,t,n,i,r,a)=>{if(!e)return We;let s=1;if(t===N1&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>F1||n!==Bi||i<8||i>15||t<0||t>9||a<0||a>C1||i===8&&s!==1)return Mt(e,We);i===8&&(i=9);let o=new e_;return e.state=o,o.strm=e,o.status=$t,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+W-1)/W),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,_l(e)},n_=(e,t)=>gl(e,t,Bi,U1,B1,P1),i_=(e,t)=>{if(Gn(e)||t>lc||t<0)return e?Mt(e,We):We;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Tn&&t!==Ne)return Mt(e,e.avail_out===0?aa:We);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(be(e),e.avail_out===0)return n.last_flush=-1,ve}else if(e.avail_in===0&&dc(t)<=dc(i)&&t!==Ne)return Mt(e,aa);if(n.status===Tn&&e.avail_in!==0)return Mt(e,aa);if(n.status===$t&&n.wrap===0&&(n.status=Tt),n.status===$t){let r=Bi+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=Si||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=X1),r+=31-r%31,bn(n,r),n.strstart!==0&&(bn(n,e.adler>>>16),bn(n,e.adler&65535)),e.adler=1,n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(n.status===Na){if(e.adler=0,X(n,31),X(n,139),X(n,8),n.gzhead)X(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)),X(n,n.gzhead.time&255),X(n,n.gzhead.time>>8&255),X(n,n.gzhead.time>>16&255),X(n,n.gzhead.time>>24&255),X(n,n.level===9?2:n.strategy>=Si||n.level<2?4:0),X(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(X(n,n.gzhead.extra.length&255),X(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=_e(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=xa;else if(X(n,0),X(n,0),X(n,0),X(n,0),X(n,0),X(n,n.level===9?2:n.strategy>=Si||n.level<2?4:0),X(n,Y1),n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(n.status===xa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,be(e),n.pending!==0)return n.last_flush=-1,ve;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=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Sa}if(n.status===Sa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),be(e),n.pending!==0)return n.last_flush=-1,ve;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,X(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Aa}if(n.status===Aa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),be(e),n.pending!==0)return n.last_flush=-1,ve;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,X(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=_e(e.adler,n.pending_buf,n.pending-r,r))}n.status=Ea}if(n.status===Ea){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(be(e),n.pending!==0))return n.last_flush=-1,ve;X(n,e.adler&255),X(n,e.adler>>8&255),e.adler=0}if(n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(e.avail_in!==0||n.lookahead!==0||t!==dt&&n.status!==Tn){let r=n.level===0?hl(n,t):n.strategy===Si?J1(n,t):n.strategy===I1?q1(n,t):Mn[n.level].func(n,t);if((r===zt||r===jt)&&(n.status=Tn),r===we||r===zt)return e.avail_out===0&&(n.last_flush=-1),ve;if(r===Zt&&(t===R1?M1(n):t!==lc&&(ya(n,0,0,!1),t===z1&&(ct(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),be(e),e.avail_out===0))return n.last_flush=-1,ve}return t!==Ne?ve:n.wrap<=0?uc:(n.wrap===2?(X(n,e.adler&255),X(n,e.adler>>8&255),X(n,e.adler>>16&255),X(n,e.adler>>24&255),X(n,e.total_in&255),X(n,e.total_in>>8&255),X(n,e.total_in>>16&255),X(n,e.total_in>>24&255)):(bn(n,e.adler>>>16),bn(n,e.adler&65535)),be(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ve:uc)},r_=e=>{if(Gn(e))return We;let t=e.state.status;return e.state=null,t===Tt?Mt(e,L1):ve},a_=(e,t)=>{let n=t.length;if(Gn(e))return We;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==$t||i.lookahead)return We;if(r===1&&(e.adler=Pn(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(ct(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,Xt(i);i.lookahead>=W;){let l=i.strstart,c=i.lookahead-(W-1);do i.ins_h=mt(i,i.ins_h,i.window[l+W-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=W-1,Xt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=W-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,ve},s_=n_,o_=gl,c_=_l,l_=fl,u_=t_,d_=i_,m_=r_,h_=a_,f_="pako deflate (from Nodeca project)",zn={deflateInit:s_,deflateInit2:o_,deflateReset:c_,deflateResetKeep:l_,deflateSetHeader:u_,deflate:d_,deflateEnd:m_,deflateSetDictionary:h_,deflateInfo:f_},__=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),g_=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)__(n,i)&&(e[i]=n[i])}}return e},p_=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},Gi={assign:g_,flattenChunks:p_},pl=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{pl=!1}var Dn=new Uint8Array(256);for(let e=0;e<256;e++)Dn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Dn[254]=Dn[254]=1;var v_=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},y_=(e,t)=>{if(t<65534&&e.subarray&&pl)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},w_=(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=Dn[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 y_(a,r)},x_=(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+Dn[e[n]]>t?n:t},Fn={string2buf:v_,buf2string:w_,utf8border:x_};function S_(){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 vl=S_,yl=Object.prototype.toString,{Z_NO_FLUSH:A_,Z_SYNC_FLUSH:E_,Z_FULL_FLUSH:k_,Z_FINISH:b_,Z_OK:Ri,Z_STREAM_END:T_,Z_DEFAULT_COMPRESSION:M_,Z_DEFAULT_STRATEGY:R_,Z_DEFLATED:z_}=Nt;function Hn(e){this.options=Gi.assign({level:M_,method:z_,chunkSize:16384,windowBits:15,memLevel:8,strategy:R_},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 vl,this.strm.avail_out=0;let n=zn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ri)throw new Error(Rt[n]);if(t.header&&zn.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Fn.string2buf(t.dictionary):yl.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=zn.deflateSetDictionary(this.strm,i),n!==Ri)throw new Error(Rt[n]);this._dict_set=!0}}Hn.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?b_:A_,typeof e=="string"?n.input=Fn.string2buf(e):yl.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===E_||a===k_)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=zn.deflate(n,a),r===T_)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=zn.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ri;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};Hn.prototype.onData=function(e){this.chunks.push(e)};Hn.prototype.onEnd=function(e){e===Ri&&(this.result=Gi.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Oa(e,t){let n=new Hn(t);if(n.push(e,!0),n.err)throw n.msg||Rt[n.err];return n.result}function L_(e,t){return t=t||{},t.raw=!0,Oa(e,t)}function N_(e,t){return t=t||{},t.gzip=!0,Oa(e,t)}var O_=Hn,I_=Oa,C_=L_,P_=N_,D_=Nt,F_={Deflate:O_,deflate:I_,deflateRaw:C_,gzip:P_,constants:D_},Ai=16209,U_=16191,B_=function(t,n){let i,r,a,s,o,l,c,u,m,d,h,f,x,_,v,y,S,g,A,b,k,p,E,w,T=t.state;i=t.next_in,E=t.input,r=i+(t.avail_in-5),a=t.next_out,w=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=T.dmax,c=T.wsize,u=T.whave,m=T.wnext,d=T.window,h=T.hold,f=T.bits,x=T.lencode,_=T.distcode,v=(1<<T.lenbits)-1,y=(1<<T.distbits)-1;e:do{f<15&&(h+=E[i++]<<f,f+=8,h+=E[i++]<<f,f+=8),S=x[h&v];t:for(;;){if(g=S>>>24,h>>>=g,f-=g,g=S>>>16&255,g===0)w[a++]=S&65535;else if(g&16){A=S&65535,g&=15,g&&(f<g&&(h+=E[i++]<<f,f+=8),A+=h&(1<<g)-1,h>>>=g,f-=g),f<15&&(h+=E[i++]<<f,f+=8,h+=E[i++]<<f,f+=8),S=_[h&y];n:for(;;){if(g=S>>>24,h>>>=g,f-=g,g=S>>>16&255,g&16){if(b=S&65535,g&=15,f<g&&(h+=E[i++]<<f,f+=8,f<g&&(h+=E[i++]<<f,f+=8)),b+=h&(1<<g)-1,b>l){t.msg="invalid distance too far back",T.mode=Ai;break e}if(h>>>=g,f-=g,g=a-s,b>g){if(g=b-g,g>u&&T.sane){t.msg="invalid distance too far back",T.mode=Ai;break e}if(k=0,p=d,m===0){if(k+=c-g,g<A){A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}}else if(m<g){if(k+=c+m-g,g-=m,g<A){A-=g;do w[a++]=d[k++];while(--g);if(k=0,m<A){g=m,A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}}}else if(k+=m-g,g<A){A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}for(;A>2;)w[a++]=p[k++],w[a++]=p[k++],w[a++]=p[k++],A-=3;A&&(w[a++]=p[k++],A>1&&(w[a++]=p[k++]))}else{k=a-b;do w[a++]=w[k++],w[a++]=w[k++],w[a++]=w[k++],A-=3;while(A>2);A&&(w[a++]=w[k++],A>1&&(w[a++]=w[k++]))}}else if((g&64)===0){S=_[(S&65535)+(h&(1<<g)-1)];continue n}else{t.msg="invalid distance code",T.mode=Ai;break e}break}}else if((g&64)===0){S=x[(S&65535)+(h&(1<<g)-1)];continue t}else if(g&32){T.mode=U_;break e}else{t.msg="invalid literal/length code",T.mode=Ai;break e}break}}while(i<r&&a<o);A=f>>3,i-=A,f-=A<<3,h&=(1<<f)-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),T.hold=h,T.bits=f},Vt=15,mc=852,hc=592,fc=0,oa=1,_c=2,G_=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]),H_=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]),V_=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]),W_=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]),K_=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,h=0,f=0,x=0,_=0,v=0,y=0,S,g,A,b,k,p=null,E,w=new Uint16Array(Vt+1),T=new Uint16Array(Vt+1),U=null,B,N,Q;for(c=0;c<=Vt;c++)w[c]=0;for(u=0;u<i;u++)w[t[n+u]]++;for(h=l,d=Vt;d>=1&&w[d]===0;d--);if(h>d&&(h=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&&w[m]===0;m++);for(h<m&&(h=m),_=1,c=1;c<=Vt;c++)if(_<<=1,_-=w[c],_<0)return-1;if(_>0&&(e===fc||d!==1))return-1;for(T[1]=0,c=1;c<Vt;c++)T[c+1]=T[c]+w[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[T[t[n+u]]++]=u);if(e===fc?(p=U=s,E=20):e===oa?(p=G_,U=H_,E=257):(p=V_,U=W_,E=0),y=0,u=0,c=m,k=a,f=h,x=0,A=-1,v=1<<h,b=v-1,e===oa&&v>mc||e===_c&&v>hc)return 1;for(;;){B=c-x,s[u]+1<E?(N=0,Q=s[u]):s[u]>=E?(N=U[s[u]-E],Q=p[s[u]-E]):(N=96,Q=0),S=1<<c-x,g=1<<f,m=g;do g-=S,r[k+(y>>x)+g]=B<<24|N<<16|Q|0;while(g!==0);for(S=1<<c-1;y&S;)S>>=1;if(S!==0?(y&=S-1,y+=S):y=0,u++,--w[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>h&&(y&b)!==A){for(x===0&&(x=h),k+=m,f=c-x,_=1<<f;f+x<d&&(_-=w[f+x],!(_<=0));)f++,_<<=1;if(v+=1<<f,e===oa&&v>mc||e===_c&&v>hc)return 1;A=y&b,r[A]=h<<24|f<<16|k-a|0}}return y!==0&&(r[k+y]=c-x<<24|64<<16|0),o.bits=h,0},Ln=K_,$_=0,wl=1,xl=2,{Z_FINISH:gc,Z_BLOCK:X_,Z_TREES:Ei,Z_OK:Lt,Z_STREAM_END:Y_,Z_NEED_DICT:Z_,Z_STREAM_ERROR:Oe,Z_DATA_ERROR:Sl,Z_MEM_ERROR:Al,Z_BUF_ERROR:j_,Z_DEFLATED:pc}=Nt,Hi=16180,vc=16181,yc=16182,wc=16183,xc=16184,Sc=16185,Ac=16186,Ec=16187,kc=16188,bc=16189,zi=16190,et=16191,ca=16192,Tc=16193,la=16194,Mc=16195,Rc=16196,zc=16197,Lc=16198,ki=16199,bi=16200,Nc=16201,Oc=16202,Ic=16203,Cc=16204,Pc=16205,ua=16206,Dc=16207,Fc=16208,te=16209,El=16210,kl=16211,q_=852,J_=592,Q_=15,eg=Q_,Uc=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function tg(){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 Ot=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Hi||t.mode>kl?1:0},bl=e=>{if(Ot(e))return Oe;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=Hi,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(q_),t.distcode=t.distdyn=new Int32Array(J_),t.sane=1,t.back=-1,Lt},Tl=e=>{if(Ot(e))return Oe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,bl(e)},Ml=(e,t)=>{let n;if(Ot(e))return Oe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Oe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Tl(e))},Rl=(e,t)=>{if(!e)return Oe;let n=new tg;e.state=n,n.strm=e,n.window=null,n.mode=Hi;let i=Ml(e,t);return i!==Lt&&(e.state=null),i},ng=e=>Rl(e,eg),Bc=!0,da,ma,ig=e=>{if(Bc){da=new Int32Array(512),ma=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(Ln(wl,e.lens,0,288,da,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ln(xl,e.lens,0,32,ma,0,e.work,{bits:5}),Bc=!1}e.lencode=da,e.lenbits=9,e.distcode=ma,e.distbits=5},zl=(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},rg=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,h,f,x,_=0,v,y,S,g,A,b,k,p,E=new Uint8Array(4),w,T,U=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ot(e)||!e.output||!e.input&&e.avail_in!==0)return Oe;n=e.state,n.mode===et&&(n.mode=ca),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,p=Lt;e:for(;;)switch(n.mode){case Hi:if(n.wrap===0){n.mode=ca;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,E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0),c=0,u=0,n.mode=vc;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=te;break}if((c&15)!==pc){e.msg="unknown compression method",n.mode=te;break}if(c>>>=4,u-=4,k=(c&15)+8,n.wbits===0&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=te;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?bc:et,c=0,u=0;break;case vc:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==pc){e.msg="unknown compression method",n.mode=te;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=te;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0,n.mode=yc;case yc: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&&(E[0]=c&255,E[1]=c>>>8&255,E[2]=c>>>16&255,E[3]=c>>>24&255,n.check=_e(n.check,E,4,0)),c=0,u=0,n.mode=wc;case wc: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&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0,n.mode=xc;case xc: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&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=Sc;case Sc:if(n.flags&1024&&(h=n.length,h>o&&(h=o),h&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+h),k)),n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,n.length-=h),n.length))break e;n.length=0,n.mode=Ac;case Ac:if(n.flags&2048){if(o===0)break e;h=0;do k=i[a+h++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k));while(k&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,k)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Ec;case Ec:if(n.flags&4096){if(o===0)break e;h=0;do k=i[a+h++],n.head&&k&&n.length<65536&&(n.head.comment+=String.fromCharCode(k));while(k&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,k)break e}else n.head&&(n.head.comment=null);n.mode=kc;case kc: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=te;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 bc:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=Uc(c),c=0,u=0,n.mode=zi;case zi: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,Z_;e.adler=n.check=1,n.mode=et;case et:if(t===X_||t===Ei)break e;case ca:if(n.last){c>>>=u&7,u-=u&7,n.mode=ua;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=Tc;break;case 1:if(ig(n),n.mode=ki,t===Ei){c>>>=2,u-=2;break e}break;case 2:n.mode=Rc;break;case 3:e.msg="invalid block type",n.mode=te}c>>>=2,u-=2;break;case Tc: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=te;break}if(n.length=c&65535,c=0,u=0,n.mode=la,t===Ei)break e;case la:n.mode=Mc;case Mc:if(h=n.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;r.set(i.subarray(a,a+h),s),o-=h,a+=h,l-=h,s+=h,n.length-=h;break}n.mode=et;break;case Rc: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=te;break}n.have=0,n.mode=zc;case zc:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[U[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[U[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,w={bits:n.lenbits},p=Ln($_,n.lens,0,19,n.lencode,0,n.work,w),n.lenbits=w.bits,p){e.msg="invalid code lengths set",n.mode=te;break}n.have=0,n.mode=Lc;case Lc:for(;n.have<n.nlen+n.ndist;){for(;_=n.lencode[c&(1<<n.lenbits)-1],v=_>>>24,y=_>>>16&255,S=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(S<16)c>>>=v,u-=v,n.lens[n.have++]=S;else{if(S===16){for(T=v+2;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=v,u-=v,n.have===0){e.msg="invalid bit length repeat",n.mode=te;break}k=n.lens[n.have-1],h=3+(c&3),c>>>=2,u-=2}else if(S===17){for(T=v+3;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,k=0,h=3+(c&7),c>>>=3,u-=3}else{for(T=v+7;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,k=0,h=11+(c&127),c>>>=7,u-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=te;break}for(;h--;)n.lens[n.have++]=k}}if(n.mode===te)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=te;break}if(n.lenbits=9,w={bits:n.lenbits},p=Ln(wl,n.lens,0,n.nlen,n.lencode,0,n.work,w),n.lenbits=w.bits,p){e.msg="invalid literal/lengths set",n.mode=te;break}if(n.distbits=6,n.distcode=n.distdyn,w={bits:n.distbits},p=Ln(xl,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,w),n.distbits=w.bits,p){e.msg="invalid distances set",n.mode=te;break}if(n.mode=ki,t===Ei)break e;case ki:n.mode=bi;case bi: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,B_(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;_=n.lencode[c&(1<<n.lenbits)-1],v=_>>>24,y=_>>>16&255,S=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(y&&(y&240)===0){for(g=v,A=y,b=S;_=n.lencode[b+((c&(1<<g+A)-1)>>g)],v=_>>>24,y=_>>>16&255,S=_&65535,!(g+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=g,u-=g,n.back+=g}if(c>>>=v,u-=v,n.back+=v,n.length=S,y===0){n.mode=Pc;break}if(y&32){n.back=-1,n.mode=et;break}if(y&64){e.msg="invalid literal/length code",n.mode=te;break}n.extra=y&15,n.mode=Nc;case Nc:if(n.extra){for(T=n.extra;u<T;){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=Oc;case Oc:for(;_=n.distcode[c&(1<<n.distbits)-1],v=_>>>24,y=_>>>16&255,S=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((y&240)===0){for(g=v,A=y,b=S;_=n.distcode[b+((c&(1<<g+A)-1)>>g)],v=_>>>24,y=_>>>16&255,S=_&65535,!(g+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=g,u-=g,n.back+=g}if(c>>>=v,u-=v,n.back+=v,y&64){e.msg="invalid distance code",n.mode=te;break}n.offset=S,n.extra=y&15,n.mode=Ic;case Ic:if(n.extra){for(T=n.extra;u<T;){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=te;break}n.mode=Cc;case Cc:if(l===0)break e;if(h=d-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=te;break}h>n.wnext?(h-=n.wnext,f=n.wsize-h):f=n.wnext-h,h>n.length&&(h=n.length),x=n.window}else x=r,f=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do r[s++]=x[f++];while(--h);n.length===0&&(n.mode=bi);break;case Pc:if(l===0)break e;r[s++]=n.length,l--,n.mode=bi;break;case ua: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?_e(n.check,r,d,s-d):Pn(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:Uc(c))!==n.check){e.msg="incorrect data check",n.mode=te;break}c=0,u=0}n.mode=Dc;case Dc: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=te;break}c=0,u=0}n.mode=Fc;case Fc:p=Y_;break e;case te:p=Sl;break e;case El:return Al;case kl:default:return Oe}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<te&&(n.mode<ua||t!==gc))&&zl(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?_e(n.check,r,d,e.next_out-d):Pn(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===et?128:0)+(n.mode===ki||n.mode===la?256:0),(m===0&&d===0||t===gc)&&p===Lt&&(p=j_),p},ag=e=>{if(Ot(e))return Oe;let t=e.state;return t.window&&(t.window=null),e.state=null,Lt},sg=(e,t)=>{if(Ot(e))return Oe;let n=e.state;return(n.wrap&2)===0?Oe:(n.head=t,t.done=!1,Lt)},og=(e,t)=>{let n=t.length,i,r,a;return Ot(e)||(i=e.state,i.wrap!==0&&i.mode!==zi)?Oe:i.mode===zi&&(r=1,r=Pn(r,t,n,0),r!==i.check)?Sl:(a=zl(e,t,n,n),a?(i.mode=El,Al):(i.havedict=1,Lt))},cg=Tl,lg=Ml,ug=bl,dg=ng,mg=Rl,hg=rg,fg=ag,_g=sg,gg=og,pg="pako inflate (from Nodeca project)",nt={inflateReset:cg,inflateReset2:lg,inflateResetKeep:ug,inflateInit:dg,inflateInit2:mg,inflate:hg,inflateEnd:fg,inflateGetHeader:_g,inflateSetDictionary:gg,inflateInfo:pg};function vg(){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 yg=vg,Ll=Object.prototype.toString,{Z_NO_FLUSH:wg,Z_FINISH:xg,Z_OK:Un,Z_STREAM_END:ha,Z_NEED_DICT:fa,Z_STREAM_ERROR:Sg,Z_DATA_ERROR:Gc,Z_MEM_ERROR:Ag}=Nt;function Vn(e){this.options=Gi.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 vl,this.strm.avail_out=0;let n=nt.inflateInit2(this.strm,t.windowBits);if(n!==Un)throw new Error(Rt[n]);if(this.header=new yg,nt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Fn.string2buf(t.dictionary):Ll.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=nt.inflateSetDictionary(this.strm,t.dictionary),n!==Un)))throw new Error(Rt[n])}Vn.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?xg:wg,Ll.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=nt.inflate(n,s),a===fa&&r&&(a=nt.inflateSetDictionary(n,r),a===Un?a=nt.inflate(n,s):a===Gc&&(a=fa));n.avail_in>0&&a===ha&&n.state.wrap>0&&e[n.next_in]!==0;)nt.inflateReset(n),a=nt.inflate(n,s);switch(a){case Sg:case Gc:case fa:case Ag:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===ha))if(this.options.to==="string"){let l=Fn.utf8border(n.output,n.next_out),c=n.next_out-l,u=Fn.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===Un&&o===0)){if(a===ha)return a=nt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Vn.prototype.onData=function(e){this.chunks.push(e)};Vn.prototype.onEnd=function(e){e===Un&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Gi.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ia(e,t){let n=new Vn(t);if(n.push(e),n.err)throw n.msg||Rt[n.err];return n.result}function Eg(e,t){return t=t||{},t.raw=!0,Ia(e,t)}var kg=Vn,bg=Ia,Tg=Eg,Mg=Ia,Rg=Nt,zg={Inflate:kg,inflate:bg,inflateRaw:Tg,ungzip:Mg,constants:Rg},{Deflate:Lg,deflate:Ng,deflateRaw:Og,gzip:Ig}=F_,{Inflate:Cg,inflate:Pg,inflateRaw:Dg,ungzip:Fg}=zg,Ug=Lg,Bg=Ng,Gg=Og,Hg=Ig,Vg=Cg,Wg=Pg,Kg=Dg,$g=Fg,Xg=Nt,Hc={Deflate:Ug,deflate:Bg,deflateRaw:Gg,gzip:Hg,Inflate:Vg,inflate:Wg,inflateRaw:Kg,ungzip:$g,constants:Xg},Yg=2023,Ca=1,Pa=2,Da=4,Fa=8,Ua=16,Ba=32,Nl=64,Zg=128,jg=256,Ga=512,Ha=1024,Va=2048,Li=4096,Ni=16384,qg=32768,Oi=65536,Wa=1<<17,Ii=1<<18,Ci=1<<19,Ka=1<<20,$a=1<<21,Xa=1<<22,Jg=1<<23,Ya=1<<24,Pi=1<<25,Za=1<<26,ja=1<<27;var Qg=1,ep=2,tp=128,Wt=()=>({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,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Vc=()=>({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}),np=class Ol{constructor(t,n){this.protocolVersion=0,this.isDemo=Qg,this.stream=t,this.handler=n}translateCommand(t){if(this.protocolVersion===0&&(t===7||t===12))return D.serverdata;if(this.protocolVersion===25){if(t>=7&&t<=15)return t+5;if(t===1)return D.print;if(t===2)return D.stufftext;if(t===3)return D.sound;if(t===4)return D.nop;if(t===5)return D.disconnect;if(t===6)return D.reconnect;if(t===16)return D.temp_entity}return this.protocolVersion===Yg,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 D.nop:break;case D.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case D.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case D.print:this.parsePrint();break;case D.serverdata:this.parseServerData();break;case D.configstring:this.parseConfigString();break;case D.spawnbaseline:this.parseSpawnBaseline();break;case D.centerprint:this.parseCenterPrint();break;case D.download:this.parseDownload();break;case D.frame:this.parseFrame();break;case D.packetentities:this.parsePacketEntities(!1);break;case D.deltapacketentities:this.parsePacketEntities(!0);break;case D.playerinfo:this.parsePlayerState();break;case D.stufftext:this.parseStuffText();break;case D.layout:this.parseLayout();break;case D.inventory:this.parseInventory();break;case D.sound:this.parseSound();break;case D.muzzleflash:this.parseMuzzleFlash();break;case D.muzzleflash2:this.parseMuzzleFlash2();break;case D.temp_entity:this.parseTempEntity();break;case D.splitclient:this.parseSplitClient();break;case D.configblast:this.parseConfigBlast();break;case D.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case D.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case D.damage:this.parseDamage();break;case D.locprint:this.parseLocPrint();break;case D.fog:this.parseFog();break;case D.waitingforplayers:this.parseWaitingForPlayers();break;case D.bot_chat:this.parseBotChat();break;case D.poi:this.parsePoi();break;case D.help_path:this.parseHelpPath();break;case D.muzzleflash3:this.parseMuzzleFlash3();break;case D.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(){this.protocolVersion=this.stream.readLong();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=Hc.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new _a(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=Hc.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new _a(r.buffer),s=new Ol(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)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers()}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()}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 R.EXPLOSION1:case R.EXPLOSION2:case R.ROCKET_EXPLOSION:case R.GRENADE_EXPLOSION:case R.ROCKET_EXPLOSION_WATER:case R.GRENADE_EXPLOSION_WATER:case R.BFG_EXPLOSION:case R.BFG_BIGEXPLOSION:case R.BOSSTPORT:case R.PLASMA_EXPLOSION:case R.PLAIN_EXPLOSION:case R.CHAINFIST_SMOKE:case R.TRACKER_EXPLOSION:case R.TELEPORT_EFFECT:case R.DBALL_GOAL:case R.NUKEBLAST:case R.WIDOWSPLASH:case R.EXPLOSION1_BIG:case R.EXPLOSION1_NP:this.stream.readPos(n);break;case R.GUNSHOT:case R.BLOOD:case R.BLASTER:case R.SHOTGUN:case R.SPARKS:case R.BULLET_SPARKS:case R.SCREEN_SPARKS:case R.SHIELD_SPARKS:case R.BLASTER2:case R.FLECHETTE:case R.MOREBLOOD:case R.ELECTRIC_SPARKS:case R.HEATBEAM_SPARKS:case R.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case R.SPLASH:case R.LASER_SPARKS:case R.WELDING_SPARKS:case R.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case R.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case R.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case R.RAILTRAIL:case R.BUBBLETRAIL:case R.BFG_LASER:case R.DEBUGTRAIL:case R.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case R.PARASITE_ATTACK:case R.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case R.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case R.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case R.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case R.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case R.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 R.WIDOWBEAMOUT:this.stream.readShort();case R.HEATBEAM:case R.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=Wt();this.parseDelta(Wt(),n,t.number,t.bits),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!==D.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);let o=this.parsePlayerState();if(this.isDemo===tp){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===ep&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=Vc(),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:Vc(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Wt();this.parseDelta(Wt(),i,n.number,n.bits),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&Zg&&(t|=this.stream.readByte()<<8),t&qg&&(t|=this.stream.readByte()<<16),t&Jg&&(t|=this.stream.readByte()<<24);let n;return t&jg?n=this.stream.readShort():n=this.stream.readByte(),{number:n,bits:t}}parseDelta(t,n,i,r){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.number=i,n.bits=r,r&Va&&(n.modelindex=this.stream.readByte()),r&Ka&&(n.modelindex2=this.stream.readByte()),r&$a&&(n.modelindex3=this.stream.readByte()),r&Xa&&(n.modelindex4=this.stream.readByte()),r&Ua&&(n.frame=this.stream.readByte()),r&Wa&&(n.frame=this.stream.readShort()),r&Oi&&r&Pi?n.skinnum=this.stream.readLong():r&Oi?n.skinnum=this.stream.readByte():r&Pi&&(n.skinnum=this.stream.readShort()),r&Ni&&r&Ci?n.effects=this.stream.readLong():r&Ni?n.effects=this.stream.readByte():r&Ci&&(n.effects=this.stream.readShort()),r&Li&&r&Ii?n.renderfx=this.stream.readLong():r&Li?n.renderfx=this.stream.readByte():r&Ii&&(n.renderfx=this.stream.readShort()),r&Ca&&(n.origin.x=this.stream.readCoord()),r&Pa&&(n.origin.y=this.stream.readCoord()),r&Ga&&(n.origin.z=this.stream.readCoord()),r&Ha&&(n.angles.x=this.stream.readAngle()),r&Da&&(n.angles.y=this.stream.readAngle()),r&Fa&&(n.angles.z=this.stream.readAngle()),r&Ya&&this.stream.readPos(n.old_origin),r&Za&&(n.sound=this.stream.readByte()),r&Ba?n.event=this.stream.readByte():n.event=0,r&ja&&(n.solid=this.stream.readShort())}},qa=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(qa||{}),Il=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new jf(e),this.state=0,this.accumulatedTime=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}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new np(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var ip=Object.defineProperty,Cl=(e,t)=>{for(var n in t)ip(e,n,{get:t[n],enumerable:!0})},ft={x:0,y:0,z:0};var u8=Math.PI/180;function Wn(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Jt(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Qt(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function rp(e){return Qt(e,e)}function Vi(e){return Math.sqrt(rp(e))}function Pl(e){let t=Vi(e);return t===0?e:Jt(e,1/t)}var Dl=0,Fl=1,Ul=2,ap=Math.PI/180,d8=180/Math.PI;function Ja(e,t){switch(t){case Dl:return e.x;case Fl:return e.y;case Ul:default:return e.z}}function Qa(e){return e*ap}function qt(e){let t=e%360;return t<0?360+t:t}function ts(e){let t=Qa(Ja(e,Fl)),n=Qa(Ja(e,Dl)),i=Qa(Ja(e,Ul)),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 Xe=1,_t=2;var ns=8,is=16,sp=32;var op=16384;var Wi=65536,Bl=1<<17,cp=1<<18,lp=1<<19,up=1<<20,dp=1<<21,mp=1<<22,hp=1<<23,m8=1<<24,Ki=1<<25,fp=1<<26,h8=1<<27,f8=1<<28,_8=1<<29,$i=1<<30,g8=1<<31;var p8=1<<25,v8=1<<28,y8=1<<29,w8=1<<30,x8=1<<31;var S8=Xe|_t,A8=Xe|Wi|_t|Ki|$i,E8=Xe|Wi|_t,k8=Xe|Bl|_t|Ki|$i,b8=sp|ns|is,T8=Xe|is|ns,_p=Xe|Ki|$i|_t|fp,M8=cp|lp|up|dp|mp|hp,R8=Xe|ns|is|Ki|$i,z8=Xe|Wi|_t,L8=Xe|_t,N8=Xe|Wi|_t|Bl,O8=_p|op;var I8=Number.MAX_SAFE_INTEGER-1;var Kn=(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))(Kn||{});var Gl=256;var gp=256,$n=8192,Xn=2048,Yn=512,pp=256,vp=Gl*2,yp=256,es=32;var re=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+$n]="Sounds",e[e.Images=e.Sounds+Xn]="Images",e[e.Lights=e.Images+Yn]="Lights",e[e.ShadowLights=e.Lights+gp]="ShadowLights",e[e.Items=e.ShadowLights+yp]="Items",e[e.PlayerSkins=e.Items+pp]="PlayerSkins",e[e.General=e.PlayerSkins+Gl]="General",e[e.WheelWeapons=e.General+vp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+es]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+es]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+es]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(re||{}),C8=re.MaxConfigStrings;var wp={};Cl(wp,{addReplayFrame:()=>Ep,createReplaySession:()=>Ap,deserializeReplay:()=>Sp,serializeReplay:()=>xp});function xp(e){return JSON.stringify(e,null,2)}function Sp(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 Ap(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Ep(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var It=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(It||{});var Ie=(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))(Ie||{});function it(e,t){return(e&t)!==0}var Xi=(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))(Xi||{}),Ye=(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))(Ye||{});function Hl(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Vi(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let f=u<l?l:u;m+=f*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let h=d/u;return Jt(t,h)}function rs(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Qt(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 Vl(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Math.min(i,30),o=Qt(t,n),l=s-o;if(l<=0)return t;let c=r*i*a;return c>l&&(c=l),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function Wl(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=Vi(a);if(s>r){let o=r/s;a=Jt(a,o),s=r}return{wishdir:s===0?a:Pl(a),wishspeed:s}}function Kl(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};i.upmove>10?a=Wn(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Wn(a,{x:0,y:0,z:i.upmove}):a=Wn(a,{x:0,y:0,z:10});let s=Vi(a);if(s>r){let o=r/s;a=Jt(a,o),s=r}return s*=.5,{wishdir:s===0?a:Pl(a),wishspeed:s}}function kp(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function bp(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function as(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=kp(n,i),r={...r,x:bp(r.x)});let a=ts(r);return{viewangles:r,...a}}var $l=200,Xl=200,Yl=200,Zl=140,jl=150,ql=3;function Tp(e){let t=qt(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Jl(e,t){return{x:Tp(e.x+t.x),y:qt(e.y+t.y),z:qt(e.z+t.z)}}function Ql(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 eu=0,tu=1,nu=2,iu=3,ru=4,au=5,su=6,ou=7,cu=8;var lu=11,uu=12,du=13;function Mp(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 Rp(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(Mp(e,t,a)&o)>>>s}var ss=(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))(ss||{}),Pe=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Pe||{}),zp=12,Lp=9,P8=Math.ceil(zp*Lp/16),mu=23,hu=2,D8=Math.ceil(mu*hu/16),Np={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,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};function fu(e,t){let n;return typeof t=="number"?n=t:n=Np[t],n===void 0||n<0||n>=mu?0:Rp(e,41,n,hu)}var Op={};Cl(Op,{U_ANGLE1:()=>Bp,U_ANGLE2:()=>Gp,U_ANGLE3:()=>Hp,U_EFFECTS:()=>Kp,U_EVENT:()=>Yp,U_FRAME:()=>Vp,U_MODEL:()=>Cp,U_MODEL2:()=>jp,U_MODEL3:()=>qp,U_MODEL4:()=>Jp,U_MOREBITS:()=>Zp,U_NUMBER:()=>Ip,U_ORIGIN1:()=>Dp,U_ORIGIN2:()=>Fp,U_ORIGIN3:()=>Up,U_REMOVE:()=>Qp,U_RENDERFX:()=>$p,U_SKIN:()=>Wp,U_SOLID:()=>Xp,U_SOUND:()=>Pp});var Ip=1,Cp=2,Pp=4,Dp=8,Fp=16,Up=32,Bp=64,Gp=128,Hp=256,Vp=512,Wp=1024,Kp=2048,$p=4096,Xp=8192,Yp=16384,Zp=32768,jp=1,qp=2,Jp=4,Qp=32768;var _u=(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))(_u||{}),F8=Object.keys(_u).length/2;var ev=Object.defineProperty,tv=(e,t)=>{for(var n in t)ev(e,n,{get:t[n],enumerable:!0})},Zi=null,Yi=[1,1,1,1],gu=["ch1","ch2","ch3"],os=[null,null,null],nv=e=>{for(let t=0;t<gu.length;t++){let n=gu[t];try{os[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{os[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
-
`)}}}Zi=os[0]},iv=(e,t,n)=>{if(Zi){let i=e.Draw_GetPicSize(Zi),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,Zi,{x:Yi[0],y:Yi[1],z:Yi[2]},Yi[3])}},
|
|
169
|
+
}`;var jc=class{constructor(){this._position=ee.create(),this._angles=ee.create(),this._bobAngles=ee.create(),this._bobOffset=ee.create(),this._kickAngles=ee.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=q.create(),this._projectionMatrix=q.create(),this._viewProjectionMatrix=q.create(),this._dirty=!0}get position(){return this._position}set position(e){ee.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){ee.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){ee.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){ee.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){ee.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=q.create();return q.perspective(t,e*kn,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;q.perspective(this._projectionMatrix,this._fov*kn,this._aspect,this._near,this._far);let e=q.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*kn,a=n*kn,s=i*kn,o=q.create();q.identity(o),q.rotateZ(o,o,-a),q.rotateY(o,o,-r),q.rotateX(o,o,-s);let l=q.create();q.multiply(l,e,o);let c=ee.add(ee.create(),this._position,this._bobOffset),u=ee.negate(ee.create(),c),m=ee.create();ee.transformMat4(m,u,o);let d=ee.fromValues(m[1]||0,m[2]||0,m[0]||0);q.copy(this._viewMatrix,l),this._viewMatrix[12]=d[0],this._viewMatrix[13]=d[1],this._viewMatrix[14]=d[2],q.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var jf=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>262144)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 _a(t)}}reset(){this.offset=0}getOffset(){return this.offset}},qf=4,nc=0,ic=1,Jf=2;function Yt(e){let t=e.length;for(;--t>=0;)e[t]=0}var Qf=0,qc=1,e1=2,t1=3,n1=258,Ma=29,Bn=256,Nn=Bn+1+Ma,Kt=30,Ra=19,Jc=2*Nn+1,bt=15,ta=16,i1=7,za=256,Qc=16,el=17,tl=18,pa=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]),Ti=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]),r1=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),nl=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a1=512,tt=new Array((Nn+2)*2);Yt(tt);var Rn=new Array(Kt*2);Yt(Rn);var On=new Array(a1);Yt(On);var In=new Array(n1-t1+1);Yt(In);var La=new Array(Ma);Yt(La);var Mi=new Array(Kt);Yt(Mi);function na(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 il,rl,al;function ia(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}var sl=e=>e<256?On[e]:On[256+(e>>>7)],Cn=(e,t)=>{e.pending_buf[e.pending++]=t&255,e.pending_buf[e.pending++]=t>>>8&255},Ae=(e,t,n)=>{e.bi_valid>ta-n?(e.bi_buf|=t<<e.bi_valid&65535,Cn(e,e.bi_buf),e.bi_buf=t>>ta-e.bi_valid,e.bi_valid+=n-ta):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=n)},Ve=(e,t,n)=>{Ae(e,n[t*2],n[t*2+1])},ol=(e,t)=>{let n=0;do n|=e&1,e>>>=1,n<<=1;while(--t>0);return n>>>1},s1=e=>{e.bi_valid===16?(Cn(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)},o1=(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,h,f,S=0;for(d=0;d<=bt;d++)e.bl_count[d]=0;for(n[e.heap[e.heap_max]*2+1]=0,c=e.heap_max+1;c<Jc;c++)u=e.heap[c],d=n[n[u*2+1]*2+1]+1,d>l&&(d=l,S++),n[u*2+1]=d,!(u>i)&&(e.bl_count[d]++,h=0,u>=o&&(h=s[u-o]),f=n[u*2],e.opt_len+=f*(d+h),a&&(e.static_len+=f*(r[u*2+1]+h)));if(S!==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]--,S-=2}while(S>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--)}},cl=(e,t,n)=>{let i=new Array(bt+1),r=0,a,s;for(a=1;a<=bt;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]=ol(i[o]++,o))}},c1=()=>{let e,t,n,i,r,a=new Array(bt+1);for(n=0,i=0;i<Ma-1;i++)for(La[i]=n,e=0;e<1<<pa[i];e++)In[n++]=i;for(In[n-1]=i,r=0,i=0;i<16;i++)for(Mi[i]=r,e=0;e<1<<Ti[i];e++)On[r++]=i;for(r>>=7;i<Kt;i++)for(Mi[i]=r<<7,e=0;e<1<<Ti[i]-7;e++)On[256+r++]=i;for(t=0;t<=bt;t++)a[t]=0;for(e=0;e<=143;)tt[e*2+1]=8,e++,a[8]++;for(;e<=255;)tt[e*2+1]=9,e++,a[9]++;for(;e<=279;)tt[e*2+1]=7,e++,a[7]++;for(;e<=287;)tt[e*2+1]=8,e++,a[8]++;for(cl(tt,Nn+1,a),e=0;e<Kt;e++)Rn[e*2+1]=5,Rn[e*2]=ol(e,5);il=new na(tt,pa,Bn+1,Nn,bt),rl=new na(Rn,Ti,0,Kt,bt),al=new na(new Array(0),r1,0,Ra,i1)},ll=e=>{let t;for(t=0;t<Nn;t++)e.dyn_ltree[t*2]=0;for(t=0;t<Kt;t++)e.dyn_dtree[t*2]=0;for(t=0;t<Ra;t++)e.bl_tree[t*2]=0;e.dyn_ltree[za*2]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},ul=e=>{e.bi_valid>8?Cn(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},rc=(e,t,n,i)=>{let r=t*2,a=n*2;return e[r]<e[a]||e[r]===e[a]&&i[t]<=i[n]},ra=(e,t,n)=>{let i=e.heap[n],r=n<<1;for(;r<=e.heap_len&&(r<e.heap_len&&rc(t,e.heap[r+1],e.heap[r],e.depth)&&r++,!rc(t,i,e.heap[r],e.depth));)e.heap[n]=e.heap[r],n=r,r<<=1;e.heap[n]=i},ac=(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?Ve(e,r,t):(s=In[r],Ve(e,s+Bn+1,t),o=pa[s],o!==0&&(r-=La[s],Ae(e,r,o)),i--,s=sl(i),Ve(e,s,n),o=Ti[s],o!==0&&(i-=Mi[s],Ae(e,i,o)));while(a<e.sym_next);Ve(e,za,t)},va=(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=Jc,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--)ra(e,n,s);c=a;do s=e.heap[1],e.heap[1]=e.heap[e.heap_len--],ra(e,n,1),o=e.heap[1],e.heap[--e.heap_max]=s,e.heap[--e.heap_max]=o,n[c*2]=n[s*2]+n[o*2],e.depth[c]=(e.depth[s]>=e.depth[o]?e.depth[s]:e.depth[o])+1,n[s*2+1]=n[o*2+1]=c,e.heap[1]=c++,ra(e,n,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],o1(e,t),cl(n,l,e.bl_count)},sc=(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[Qc*2]++):o<=10?e.bl_tree[el*2]++:e.bl_tree[tl*2]++,o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4))},oc=(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 Ve(e,a,e.bl_tree);while(--o!==0);else a!==0?(a!==r&&(Ve(e,a,e.bl_tree),o--),Ve(e,Qc,e.bl_tree),Ae(e,o-3,2)):o<=10?(Ve(e,el,e.bl_tree),Ae(e,o-3,3)):(Ve(e,tl,e.bl_tree),Ae(e,o-11,7));o=0,r=a,s===0?(l=138,c=3):a===s?(l=6,c=3):(l=7,c=4)}},l1=e=>{let t;for(sc(e,e.dyn_ltree,e.l_desc.max_code),sc(e,e.dyn_dtree,e.d_desc.max_code),va(e,e.bl_desc),t=Ra-1;t>=3&&e.bl_tree[nl[t]*2+1]===0;t--);return e.opt_len+=3*(t+1)+5+5+4,t},u1=(e,t,n,i)=>{let r;for(Ae(e,t-257,5),Ae(e,n-1,5),Ae(e,i-4,4),r=0;r<i;r++)Ae(e,e.bl_tree[nl[r]*2+1],3);oc(e,e.dyn_ltree,t-1),oc(e,e.dyn_dtree,n-1)},d1=e=>{let t=4093624447,n;for(n=0;n<=31;n++,t>>>=1)if(t&1&&e.dyn_ltree[n*2]!==0)return nc;if(e.dyn_ltree[18]!==0||e.dyn_ltree[20]!==0||e.dyn_ltree[26]!==0)return ic;for(n=32;n<Bn;n++)if(e.dyn_ltree[n*2]!==0)return ic;return nc},cc=!1,m1=e=>{cc||(c1(),cc=!0),e.l_desc=new ia(e.dyn_ltree,il),e.d_desc=new ia(e.dyn_dtree,rl),e.bl_desc=new ia(e.bl_tree,al),e.bi_buf=0,e.bi_valid=0,ll(e)},dl=(e,t,n,i)=>{Ae(e,(Qf<<1)+(i?1:0),3),ul(e),Cn(e,n),Cn(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n},h1=e=>{Ae(e,qc<<1,3),Ve(e,za,tt),s1(e)},f1=(e,t,n,i)=>{let r,a,s=0;e.level>0?(e.strm.data_type===Jf&&(e.strm.data_type=d1(e)),va(e,e.l_desc),va(e,e.d_desc),s=l1(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?dl(e,t,n,i):e.strategy===qf||a===r?(Ae(e,(qc<<1)+(i?1:0),3),ac(e,tt,Rn)):(Ae(e,(e1<<1)+(i?1:0),3),u1(e,e.l_desc.max_code+1,e.d_desc.max_code+1,s+1),ac(e,e.dyn_ltree,e.dyn_dtree)),ll(e),i&&ul(e)},_1=(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[(In[n]+Bn+1)*2]++,e.dyn_dtree[sl(t)*2]++),e.sym_next===e.sym_end),g1=m1,p1=dl,v1=f1,y1=_1,w1=h1,S1={_tr_init:g1,_tr_stored_block:p1,_tr_flush_block:v1,_tr_tally:y1,_tr_align:w1},x1=(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},Pn=x1,A1=()=>{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},E1=new Uint32Array(A1()),k1=(e,t,n,i)=>{let r=E1,a=i+n;e^=-1;for(let s=i;s<a;s++)e=e>>>8^r[(e^t[s])&255];return e^-1},_e=k1,Rt={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"},Nt={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:b1,_tr_stored_block:ya,_tr_flush_block:T1,_tr_tally:ut,_tr_align:M1}=S1,{Z_NO_FLUSH:dt,Z_PARTIAL_FLUSH:R1,Z_FULL_FLUSH:z1,Z_FINISH:Ne,Z_BLOCK:lc,Z_OK:ve,Z_STREAM_END:uc,Z_STREAM_ERROR:We,Z_DATA_ERROR:L1,Z_BUF_ERROR:aa,Z_DEFAULT_COMPRESSION:N1,Z_FILTERED:O1,Z_HUFFMAN_ONLY:xi,Z_RLE:I1,Z_FIXED:C1,Z_DEFAULT_STRATEGY:P1,Z_UNKNOWN:D1,Z_DEFLATED:Bi}=Nt,F1=9,U1=15,B1=8,G1=29,H1=256,wa=H1+1+G1,V1=30,W1=19,K1=2*wa+1,$1=15,W=3,lt=258,Ke=lt+W+1,X1=32,$t=42,Na=57,Sa=69,xa=73,Aa=91,Ea=103,Tt=113,Tn=666,we=1,Zt=2,zt=3,jt=4,Y1=3,Mt=(e,t)=>(e.msg=Rt[t],t),dc=e=>e*2-(e>4?9:0),ct=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Z1=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)},j1=(e,t,n)=>(t<<e.hash_shift^n)&e.hash_mask,mt=j1,be=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))},Te=(e,t)=>{T1(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,be(e.strm)},X=(e,t)=>{e.pending_buf[e.pending++]=t},bn=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=t&255},ka=(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=Pn(e.adler,t,r,n):e.state.wrap===2&&(e.adler=_e(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},ml=(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-Ke?e.strstart-(e.w_size-Ke):0,c=e.window,u=e.w_mask,m=e.prev,d=e.strstart+lt,h=c[i+s-1],f=c[i+s];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do if(r=t,!(c[r+s]!==f||c[r+s-1]!==h||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=lt-(d-i),i=d-lt,a>s){if(e.match_start=t,s=a,a>=o)break;h=c[i+s-1],f=c[i+s]}}while((t=m[t&u])>l&&--n!==0);return s<=e.lookahead?s:e.lookahead},Xt=e=>{let t=e.w_size,n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-Ke)&&(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),Z1(e),i+=t),e.strm.avail_in===0)break;if(n=ka(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=W)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=mt(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=mt(e,e.ins_h,e.window[r+W-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<W)););}while(e.lookahead<Ke&&e.strm.avail_in!==0)},hl=(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!==Ne||t===dt||i!==r+e.strm.avail_in)))break;s=t===Ne&&i===r+e.strm.avail_in?1:0,ya(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,be(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&&(ka(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?jt:t!==dt&&t!==Ne&&e.strm.avail_in===0&&e.strstart===e.block_start?Zt:(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&&(ka(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===Ne)&&t!==dt&&e.strm.avail_in===0&&r<=a)&&(i=r>a?a:r,s=t===Ne&&e.strm.avail_in===0&&i===r?1:0,ya(e,e.block_start,i,s),e.block_start+=i,be(e.strm)),s?zt:we)},sa=(e,t)=>{let n,i;for(;;){if(e.lookahead<Ke){if(Xt(e),e.lookahead<Ke&&t===dt)return we;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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-Ke&&(e.match_length=ml(e,n)),e.match_length>=W)if(i=ut(e,e.strstart-e.match_start,e.match_length-W),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=W){e.match_length--;do e.strstart++,e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=mt(e,e.ins_h,e.window[e.strstart+1]);else i=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=e.strstart<W-1?e.strstart:W-1,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},Ht=(e,t)=>{let n,i,r;for(;;){if(e.lookahead<Ke){if(Xt(e),e.lookahead<Ke&&t===dt)return we;if(e.lookahead===0)break}if(n=0,e.lookahead>=W&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=W-1,n!==0&&e.prev_length<e.max_lazy_match&&e.strstart-n<=e.w_size-Ke&&(e.match_length=ml(e,n),e.match_length<=5&&(e.strategy===O1||e.match_length===W&&e.strstart-e.match_start>4096)&&(e.match_length=W-1)),e.prev_length>=W&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-W,i=ut(e,e.strstart-1-e.prev_match,e.prev_length-W),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=r&&(e.ins_h=mt(e,e.ins_h,e.window[e.strstart+W-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=W-1,e.strstart++,i&&(Te(e,!1),e.strm.avail_out===0))return we}else if(e.match_available){if(i=ut(e,0,e.window[e.strstart-1]),i&&Te(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return we}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=ut(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<W-1?e.strstart:W-1,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},q1=(e,t)=>{let n,i,r,a,s=e.window;for(;;){if(e.lookahead<=lt){if(Xt(e),e.lookahead<=lt&&t===dt)return we;if(e.lookahead===0)break}if(e.match_length=0,e.lookahead>=W&&e.strstart>0&&(r=e.strstart-1,i=s[r],i===s[++r]&&i===s[++r]&&i===s[++r])){a=e.strstart+lt;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=lt-(a-r),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=W?(n=ut(e,1,e.match_length-W),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=0,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt},J1=(e,t)=>{let n;for(;;){if(e.lookahead===0&&(Xt(e),e.lookahead===0)){if(t===dt)return we;break}if(e.match_length=0,n=ut(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Te(e,!1),e.strm.avail_out===0))return we}return e.insert=0,t===Ne?(Te(e,!0),e.strm.avail_out===0?zt:jt):e.sym_next&&(Te(e,!1),e.strm.avail_out===0)?we:Zt};function He(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 Mn=[new He(0,0,0,0,hl),new He(4,4,8,4,sa),new He(4,5,16,8,sa),new He(4,6,32,32,sa),new He(4,4,16,16,Ht),new He(8,16,32,32,Ht),new He(8,16,128,128,Ht),new He(8,32,128,256,Ht),new He(32,128,258,1024,Ht),new He(32,258,258,4096,Ht)],Q1=e=>{e.window_size=2*e.w_size,ct(e.head),e.max_lazy_match=Mn[e.level].max_lazy,e.good_match=Mn[e.level].good_length,e.nice_match=Mn[e.level].nice_length,e.max_chain_length=Mn[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=W-1,e.match_available=0,e.ins_h=0};function e_(){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=Bi,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(K1*2),this.dyn_dtree=new Uint16Array((2*V1+1)*2),this.bl_tree=new Uint16Array((2*W1+1)*2),ct(this.dyn_ltree),ct(this.dyn_dtree),ct(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array($1+1),this.heap=new Uint16Array(2*wa+1),ct(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(2*wa+1),ct(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 Gn=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.status!==$t&&t.status!==Na&&t.status!==Sa&&t.status!==xa&&t.status!==Aa&&t.status!==Ea&&t.status!==Tt&&t.status!==Tn?1:0},fl=e=>{if(Gn(e))return Mt(e,We);e.total_in=e.total_out=0,e.data_type=D1;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap===2?Na:t.wrap?$t:Tt,e.adler=t.wrap===2?0:1,t.last_flush=-2,b1(t),ve},_l=e=>{let t=fl(e);return t===ve&&Q1(e.state),t},t_=(e,t)=>Gn(e)||e.state.wrap!==2?We:(e.state.gzhead=t,ve),gl=(e,t,n,i,r,a)=>{if(!e)return We;let s=1;if(t===N1&&(t=6),i<0?(s=0,i=-i):i>15&&(s=2,i-=16),r<1||r>F1||n!==Bi||i<8||i>15||t<0||t>9||a<0||a>C1||i===8&&s!==1)return Mt(e,We);i===8&&(i=9);let o=new e_;return e.state=o,o.strm=e,o.status=$t,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+W-1)/W),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,_l(e)},n_=(e,t)=>gl(e,t,Bi,U1,B1,P1),i_=(e,t)=>{if(Gn(e)||t>lc||t<0)return e?Mt(e,We):We;let n=e.state;if(!e.output||e.avail_in!==0&&!e.input||n.status===Tn&&t!==Ne)return Mt(e,e.avail_out===0?aa:We);let i=n.last_flush;if(n.last_flush=t,n.pending!==0){if(be(e),e.avail_out===0)return n.last_flush=-1,ve}else if(e.avail_in===0&&dc(t)<=dc(i)&&t!==Ne)return Mt(e,aa);if(n.status===Tn&&e.avail_in!==0)return Mt(e,aa);if(n.status===$t&&n.wrap===0&&(n.status=Tt),n.status===$t){let r=Bi+(n.w_bits-8<<4)<<8,a=-1;if(n.strategy>=xi||n.level<2?a=0:n.level<6?a=1:n.level===6?a=2:a=3,r|=a<<6,n.strstart!==0&&(r|=X1),r+=31-r%31,bn(n,r),n.strstart!==0&&(bn(n,e.adler>>>16),bn(n,e.adler&65535)),e.adler=1,n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(n.status===Na){if(e.adler=0,X(n,31),X(n,139),X(n,8),n.gzhead)X(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)),X(n,n.gzhead.time&255),X(n,n.gzhead.time>>8&255),X(n,n.gzhead.time>>16&255),X(n,n.gzhead.time>>24&255),X(n,n.level===9?2:n.strategy>=xi||n.level<2?4:0),X(n,n.gzhead.os&255),n.gzhead.extra&&n.gzhead.extra.length&&(X(n,n.gzhead.extra.length&255),X(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=_e(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=Sa;else if(X(n,0),X(n,0),X(n,0),X(n,0),X(n,0),X(n,n.level===9?2:n.strategy>=xi||n.level<2?4:0),X(n,Y1),n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(n.status===Sa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex+=o,be(e),n.pending!==0)return n.last_flush=-1,ve;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=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=xa}if(n.status===xa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),be(e),n.pending!==0)return n.last_flush=-1,ve;r=0}n.gzindex<n.gzhead.name.length?a=n.gzhead.name.charCodeAt(n.gzindex++)&255:a=0,X(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=_e(e.adler,n.pending_buf,n.pending-r,r)),n.gzindex=0}n.status=Aa}if(n.status===Aa){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=_e(e.adler,n.pending_buf,n.pending-r,r)),be(e),n.pending!==0)return n.last_flush=-1,ve;r=0}n.gzindex<n.gzhead.comment.length?a=n.gzhead.comment.charCodeAt(n.gzindex++)&255:a=0,X(n,a)}while(a!==0);n.gzhead.hcrc&&n.pending>r&&(e.adler=_e(e.adler,n.pending_buf,n.pending-r,r))}n.status=Ea}if(n.status===Ea){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(be(e),n.pending!==0))return n.last_flush=-1,ve;X(n,e.adler&255),X(n,e.adler>>8&255),e.adler=0}if(n.status=Tt,be(e),n.pending!==0)return n.last_flush=-1,ve}if(e.avail_in!==0||n.lookahead!==0||t!==dt&&n.status!==Tn){let r=n.level===0?hl(n,t):n.strategy===xi?J1(n,t):n.strategy===I1?q1(n,t):Mn[n.level].func(n,t);if((r===zt||r===jt)&&(n.status=Tn),r===we||r===zt)return e.avail_out===0&&(n.last_flush=-1),ve;if(r===Zt&&(t===R1?M1(n):t!==lc&&(ya(n,0,0,!1),t===z1&&(ct(n.head),n.lookahead===0&&(n.strstart=0,n.block_start=0,n.insert=0))),be(e),e.avail_out===0))return n.last_flush=-1,ve}return t!==Ne?ve:n.wrap<=0?uc:(n.wrap===2?(X(n,e.adler&255),X(n,e.adler>>8&255),X(n,e.adler>>16&255),X(n,e.adler>>24&255),X(n,e.total_in&255),X(n,e.total_in>>8&255),X(n,e.total_in>>16&255),X(n,e.total_in>>24&255)):(bn(n,e.adler>>>16),bn(n,e.adler&65535)),be(e),n.wrap>0&&(n.wrap=-n.wrap),n.pending!==0?ve:uc)},r_=e=>{if(Gn(e))return We;let t=e.state.status;return e.state=null,t===Tt?Mt(e,L1):ve},a_=(e,t)=>{let n=t.length;if(Gn(e))return We;let i=e.state,r=i.wrap;if(r===2||r===1&&i.status!==$t||i.lookahead)return We;if(r===1&&(e.adler=Pn(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){r===0&&(ct(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,Xt(i);i.lookahead>=W;){let l=i.strstart,c=i.lookahead-(W-1);do i.ins_h=mt(i,i.ins_h,i.window[l+W-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=W-1,Xt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=W-1,i.match_available=0,e.next_in=s,e.input=o,e.avail_in=a,i.wrap=r,ve},s_=n_,o_=gl,c_=_l,l_=fl,u_=t_,d_=i_,m_=r_,h_=a_,f_="pako deflate (from Nodeca project)",zn={deflateInit:s_,deflateInit2:o_,deflateReset:c_,deflateResetKeep:l_,deflateSetHeader:u_,deflate:d_,deflateEnd:m_,deflateSetDictionary:h_,deflateInfo:f_},__=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),g_=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)__(n,i)&&(e[i]=n[i])}}return e},p_=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},Gi={assign:g_,flattenChunks:p_},pl=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{pl=!1}var Dn=new Uint8Array(256);for(let e=0;e<256;e++)Dn[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Dn[254]=Dn[254]=1;var v_=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},y_=(e,t)=>{if(t<65534&&e.subarray&&pl)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},w_=(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=Dn[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 y_(a,r)},S_=(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+Dn[e[n]]>t?n:t},Fn={string2buf:v_,buf2string:w_,utf8border:S_};function x_(){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 vl=x_,yl=Object.prototype.toString,{Z_NO_FLUSH:A_,Z_SYNC_FLUSH:E_,Z_FULL_FLUSH:k_,Z_FINISH:b_,Z_OK:Ri,Z_STREAM_END:T_,Z_DEFAULT_COMPRESSION:M_,Z_DEFAULT_STRATEGY:R_,Z_DEFLATED:z_}=Nt;function Hn(e){this.options=Gi.assign({level:M_,method:z_,chunkSize:16384,windowBits:15,memLevel:8,strategy:R_},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 vl,this.strm.avail_out=0;let n=zn.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==Ri)throw new Error(Rt[n]);if(t.header&&zn.deflateSetHeader(this.strm,t.header),t.dictionary){let i;if(typeof t.dictionary=="string"?i=Fn.string2buf(t.dictionary):yl.call(t.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(t.dictionary):i=t.dictionary,n=zn.deflateSetDictionary(this.strm,i),n!==Ri)throw new Error(Rt[n]);this._dict_set=!0}}Hn.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?b_:A_,typeof e=="string"?n.input=Fn.string2buf(e):yl.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===E_||a===k_)&&n.avail_out<=6){this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;continue}if(r=zn.deflate(n,a),r===T_)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=zn.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===Ri;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};Hn.prototype.onData=function(e){this.chunks.push(e)};Hn.prototype.onEnd=function(e){e===Ri&&(this.result=Gi.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Oa(e,t){let n=new Hn(t);if(n.push(e,!0),n.err)throw n.msg||Rt[n.err];return n.result}function L_(e,t){return t=t||{},t.raw=!0,Oa(e,t)}function N_(e,t){return t=t||{},t.gzip=!0,Oa(e,t)}var O_=Hn,I_=Oa,C_=L_,P_=N_,D_=Nt,F_={Deflate:O_,deflate:I_,deflateRaw:C_,gzip:P_,constants:D_},Ai=16209,U_=16191,B_=function(t,n){let i,r,a,s,o,l,c,u,m,d,h,f,S,_,v,y,x,g,A,b,k,p,E,w,T=t.state;i=t.next_in,E=t.input,r=i+(t.avail_in-5),a=t.next_out,w=t.output,s=a-(n-t.avail_out),o=a+(t.avail_out-257),l=T.dmax,c=T.wsize,u=T.whave,m=T.wnext,d=T.window,h=T.hold,f=T.bits,S=T.lencode,_=T.distcode,v=(1<<T.lenbits)-1,y=(1<<T.distbits)-1;e:do{f<15&&(h+=E[i++]<<f,f+=8,h+=E[i++]<<f,f+=8),x=S[h&v];t:for(;;){if(g=x>>>24,h>>>=g,f-=g,g=x>>>16&255,g===0)w[a++]=x&65535;else if(g&16){A=x&65535,g&=15,g&&(f<g&&(h+=E[i++]<<f,f+=8),A+=h&(1<<g)-1,h>>>=g,f-=g),f<15&&(h+=E[i++]<<f,f+=8,h+=E[i++]<<f,f+=8),x=_[h&y];n:for(;;){if(g=x>>>24,h>>>=g,f-=g,g=x>>>16&255,g&16){if(b=x&65535,g&=15,f<g&&(h+=E[i++]<<f,f+=8,f<g&&(h+=E[i++]<<f,f+=8)),b+=h&(1<<g)-1,b>l){t.msg="invalid distance too far back",T.mode=Ai;break e}if(h>>>=g,f-=g,g=a-s,b>g){if(g=b-g,g>u&&T.sane){t.msg="invalid distance too far back",T.mode=Ai;break e}if(k=0,p=d,m===0){if(k+=c-g,g<A){A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}}else if(m<g){if(k+=c+m-g,g-=m,g<A){A-=g;do w[a++]=d[k++];while(--g);if(k=0,m<A){g=m,A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}}}else if(k+=m-g,g<A){A-=g;do w[a++]=d[k++];while(--g);k=a-b,p=w}for(;A>2;)w[a++]=p[k++],w[a++]=p[k++],w[a++]=p[k++],A-=3;A&&(w[a++]=p[k++],A>1&&(w[a++]=p[k++]))}else{k=a-b;do w[a++]=w[k++],w[a++]=w[k++],w[a++]=w[k++],A-=3;while(A>2);A&&(w[a++]=w[k++],A>1&&(w[a++]=w[k++]))}}else if((g&64)===0){x=_[(x&65535)+(h&(1<<g)-1)];continue n}else{t.msg="invalid distance code",T.mode=Ai;break e}break}}else if((g&64)===0){x=S[(x&65535)+(h&(1<<g)-1)];continue t}else if(g&32){T.mode=U_;break e}else{t.msg="invalid literal/length code",T.mode=Ai;break e}break}}while(i<r&&a<o);A=f>>3,i-=A,f-=A<<3,h&=(1<<f)-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),T.hold=h,T.bits=f},Vt=15,mc=852,hc=592,fc=0,oa=1,_c=2,G_=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]),H_=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]),V_=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]),W_=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]),K_=(e,t,n,i,r,a,s,o)=>{let l=o.bits,c=0,u=0,m=0,d=0,h=0,f=0,S=0,_=0,v=0,y=0,x,g,A,b,k,p=null,E,w=new Uint16Array(Vt+1),T=new Uint16Array(Vt+1),U=null,B,N,Q;for(c=0;c<=Vt;c++)w[c]=0;for(u=0;u<i;u++)w[t[n+u]]++;for(h=l,d=Vt;d>=1&&w[d]===0;d--);if(h>d&&(h=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&&w[m]===0;m++);for(h<m&&(h=m),_=1,c=1;c<=Vt;c++)if(_<<=1,_-=w[c],_<0)return-1;if(_>0&&(e===fc||d!==1))return-1;for(T[1]=0,c=1;c<Vt;c++)T[c+1]=T[c]+w[c];for(u=0;u<i;u++)t[n+u]!==0&&(s[T[t[n+u]]++]=u);if(e===fc?(p=U=s,E=20):e===oa?(p=G_,U=H_,E=257):(p=V_,U=W_,E=0),y=0,u=0,c=m,k=a,f=h,S=0,A=-1,v=1<<h,b=v-1,e===oa&&v>mc||e===_c&&v>hc)return 1;for(;;){B=c-S,s[u]+1<E?(N=0,Q=s[u]):s[u]>=E?(N=U[s[u]-E],Q=p[s[u]-E]):(N=96,Q=0),x=1<<c-S,g=1<<f,m=g;do g-=x,r[k+(y>>S)+g]=B<<24|N<<16|Q|0;while(g!==0);for(x=1<<c-1;y&x;)x>>=1;if(x!==0?(y&=x-1,y+=x):y=0,u++,--w[c]===0){if(c===d)break;c=t[n+s[u]]}if(c>h&&(y&b)!==A){for(S===0&&(S=h),k+=m,f=c-S,_=1<<f;f+S<d&&(_-=w[f+S],!(_<=0));)f++,_<<=1;if(v+=1<<f,e===oa&&v>mc||e===_c&&v>hc)return 1;A=y&b,r[A]=h<<24|f<<16|k-a|0}}return y!==0&&(r[k+y]=c-S<<24|64<<16|0),o.bits=h,0},Ln=K_,$_=0,wl=1,Sl=2,{Z_FINISH:gc,Z_BLOCK:X_,Z_TREES:Ei,Z_OK:Lt,Z_STREAM_END:Y_,Z_NEED_DICT:Z_,Z_STREAM_ERROR:Oe,Z_DATA_ERROR:xl,Z_MEM_ERROR:Al,Z_BUF_ERROR:j_,Z_DEFLATED:pc}=Nt,Hi=16180,vc=16181,yc=16182,wc=16183,Sc=16184,xc=16185,Ac=16186,Ec=16187,kc=16188,bc=16189,zi=16190,et=16191,ca=16192,Tc=16193,la=16194,Mc=16195,Rc=16196,zc=16197,Lc=16198,ki=16199,bi=16200,Nc=16201,Oc=16202,Ic=16203,Cc=16204,Pc=16205,ua=16206,Dc=16207,Fc=16208,te=16209,El=16210,kl=16211,q_=852,J_=592,Q_=15,eg=Q_,Uc=e=>(e>>>24&255)+(e>>>8&65280)+((e&65280)<<8)+((e&255)<<24);function tg(){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 Ot=e=>{if(!e)return 1;let t=e.state;return!t||t.strm!==e||t.mode<Hi||t.mode>kl?1:0},bl=e=>{if(Ot(e))return Oe;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=Hi,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(q_),t.distcode=t.distdyn=new Int32Array(J_),t.sane=1,t.back=-1,Lt},Tl=e=>{if(Ot(e))return Oe;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,bl(e)},Ml=(e,t)=>{let n;if(Ot(e))return Oe;let i=e.state;return t<0?(n=0,t=-t):(n=(t>>4)+5,t<48&&(t&=15)),t&&(t<8||t>15)?Oe:(i.window!==null&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Tl(e))},Rl=(e,t)=>{if(!e)return Oe;let n=new tg;e.state=n,n.strm=e,n.window=null,n.mode=Hi;let i=Ml(e,t);return i!==Lt&&(e.state=null),i},ng=e=>Rl(e,eg),Bc=!0,da,ma,ig=e=>{if(Bc){da=new Int32Array(512),ma=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(Ln(wl,e.lens,0,288,da,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;Ln(Sl,e.lens,0,32,ma,0,e.work,{bits:5}),Bc=!1}e.lencode=da,e.lenbits=9,e.distcode=ma,e.distbits=5},zl=(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},rg=(e,t)=>{let n,i,r,a,s,o,l,c,u,m,d,h,f,S,_=0,v,y,x,g,A,b,k,p,E=new Uint8Array(4),w,T,U=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ot(e)||!e.output||!e.input&&e.avail_in!==0)return Oe;n=e.state,n.mode===et&&(n.mode=ca),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,p=Lt;e:for(;;)switch(n.mode){case Hi:if(n.wrap===0){n.mode=ca;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,E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0),c=0,u=0,n.mode=vc;break}if(n.head&&(n.head.done=!1),!(n.wrap&1)||(((c&255)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=te;break}if((c&15)!==pc){e.msg="unknown compression method",n.mode=te;break}if(c>>>=4,u-=4,k=(c&15)+8,n.wbits===0&&(n.wbits=k),k>15||k>n.wbits){e.msg="invalid window size",n.mode=te;break}n.dmax=1<<n.wbits,n.flags=0,e.adler=n.check=1,n.mode=c&512?bc:et,c=0,u=0;break;case vc:for(;u<16;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(n.flags=c,(n.flags&255)!==pc){e.msg="unknown compression method",n.mode=te;break}if(n.flags&57344){e.msg="unknown header flags set",n.mode=te;break}n.head&&(n.head.text=c>>8&1),n.flags&512&&n.wrap&4&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0,n.mode=yc;case yc: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&&(E[0]=c&255,E[1]=c>>>8&255,E[2]=c>>>16&255,E[3]=c>>>24&255,n.check=_e(n.check,E,4,0)),c=0,u=0,n.mode=wc;case wc: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&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0,n.mode=Sc;case Sc: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&&(E[0]=c&255,E[1]=c>>>8&255,n.check=_e(n.check,E,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=xc;case xc:if(n.flags&1024&&(h=n.length,h>o&&(h=o),h&&(n.head&&(k=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(a,a+h),k)),n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,n.length-=h),n.length))break e;n.length=0,n.mode=Ac;case Ac:if(n.flags&2048){if(o===0)break e;h=0;do k=i[a+h++],n.head&&k&&n.length<65536&&(n.head.name+=String.fromCharCode(k));while(k&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,k)break e}else n.head&&(n.head.name=null);n.length=0,n.mode=Ec;case Ec:if(n.flags&4096){if(o===0)break e;h=0;do k=i[a+h++],n.head&&k&&n.length<65536&&(n.head.comment+=String.fromCharCode(k));while(k&&h<o);if(n.flags&512&&n.wrap&4&&(n.check=_e(n.check,i,h,a)),o-=h,a+=h,k)break e}else n.head&&(n.head.comment=null);n.mode=kc;case kc: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=te;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 bc:for(;u<32;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}e.adler=n.check=Uc(c),c=0,u=0,n.mode=zi;case zi: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,Z_;e.adler=n.check=1,n.mode=et;case et:if(t===X_||t===Ei)break e;case ca:if(n.last){c>>>=u&7,u-=u&7,n.mode=ua;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=Tc;break;case 1:if(ig(n),n.mode=ki,t===Ei){c>>>=2,u-=2;break e}break;case 2:n.mode=Rc;break;case 3:e.msg="invalid block type",n.mode=te}c>>>=2,u-=2;break;case Tc: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=te;break}if(n.length=c&65535,c=0,u=0,n.mode=la,t===Ei)break e;case la:n.mode=Mc;case Mc:if(h=n.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;r.set(i.subarray(a,a+h),s),o-=h,a+=h,l-=h,s+=h,n.length-=h;break}n.mode=et;break;case Rc: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=te;break}n.have=0,n.mode=zc;case zc:for(;n.have<n.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}n.lens[U[n.have++]]=c&7,c>>>=3,u-=3}for(;n.have<19;)n.lens[U[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,w={bits:n.lenbits},p=Ln($_,n.lens,0,19,n.lencode,0,n.work,w),n.lenbits=w.bits,p){e.msg="invalid code lengths set",n.mode=te;break}n.have=0,n.mode=Lc;case Lc:for(;n.have<n.nlen+n.ndist;){for(;_=n.lencode[c&(1<<n.lenbits)-1],v=_>>>24,y=_>>>16&255,x=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(x<16)c>>>=v,u-=v,n.lens[n.have++]=x;else{if(x===16){for(T=v+2;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(c>>>=v,u-=v,n.have===0){e.msg="invalid bit length repeat",n.mode=te;break}k=n.lens[n.have-1],h=3+(c&3),c>>>=2,u-=2}else if(x===17){for(T=v+3;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,k=0,h=3+(c&7),c>>>=3,u-=3}else{for(T=v+7;u<T;){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=v,u-=v,k=0,h=11+(c&127),c>>>=7,u-=7}if(n.have+h>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=te;break}for(;h--;)n.lens[n.have++]=k}}if(n.mode===te)break;if(n.lens[256]===0){e.msg="invalid code -- missing end-of-block",n.mode=te;break}if(n.lenbits=9,w={bits:n.lenbits},p=Ln(wl,n.lens,0,n.nlen,n.lencode,0,n.work,w),n.lenbits=w.bits,p){e.msg="invalid literal/lengths set",n.mode=te;break}if(n.distbits=6,n.distcode=n.distdyn,w={bits:n.distbits},p=Ln(Sl,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,w),n.distbits=w.bits,p){e.msg="invalid distances set",n.mode=te;break}if(n.mode=ki,t===Ei)break e;case ki:n.mode=bi;case bi: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,B_(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;_=n.lencode[c&(1<<n.lenbits)-1],v=_>>>24,y=_>>>16&255,x=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if(y&&(y&240)===0){for(g=v,A=y,b=x;_=n.lencode[b+((c&(1<<g+A)-1)>>g)],v=_>>>24,y=_>>>16&255,x=_&65535,!(g+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=g,u-=g,n.back+=g}if(c>>>=v,u-=v,n.back+=v,n.length=x,y===0){n.mode=Pc;break}if(y&32){n.back=-1,n.mode=et;break}if(y&64){e.msg="invalid literal/length code",n.mode=te;break}n.extra=y&15,n.mode=Nc;case Nc:if(n.extra){for(T=n.extra;u<T;){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=Oc;case Oc:for(;_=n.distcode[c&(1<<n.distbits)-1],v=_>>>24,y=_>>>16&255,x=_&65535,!(v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}if((y&240)===0){for(g=v,A=y,b=x;_=n.distcode[b+((c&(1<<g+A)-1)>>g)],v=_>>>24,y=_>>>16&255,x=_&65535,!(g+v<=u);){if(o===0)break e;o--,c+=i[a++]<<u,u+=8}c>>>=g,u-=g,n.back+=g}if(c>>>=v,u-=v,n.back+=v,y&64){e.msg="invalid distance code",n.mode=te;break}n.offset=x,n.extra=y&15,n.mode=Ic;case Ic:if(n.extra){for(T=n.extra;u<T;){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=te;break}n.mode=Cc;case Cc:if(l===0)break e;if(h=d-l,n.offset>h){if(h=n.offset-h,h>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=te;break}h>n.wnext?(h-=n.wnext,f=n.wsize-h):f=n.wnext-h,h>n.length&&(h=n.length),S=n.window}else S=r,f=s-n.offset,h=n.length;h>l&&(h=l),l-=h,n.length-=h;do r[s++]=S[f++];while(--h);n.length===0&&(n.mode=bi);break;case Pc:if(l===0)break e;r[s++]=n.length,l--,n.mode=bi;break;case ua: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?_e(n.check,r,d,s-d):Pn(n.check,r,d,s-d)),d=l,n.wrap&4&&(n.flags?c:Uc(c))!==n.check){e.msg="incorrect data check",n.mode=te;break}c=0,u=0}n.mode=Dc;case Dc: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=te;break}c=0,u=0}n.mode=Fc;case Fc:p=Y_;break e;case te:p=xl;break e;case El:return Al;case kl:default:return Oe}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<te&&(n.mode<ua||t!==gc))&&zl(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?_e(n.check,r,d,e.next_out-d):Pn(n.check,r,d,e.next_out-d)),e.data_type=n.bits+(n.last?64:0)+(n.mode===et?128:0)+(n.mode===ki||n.mode===la?256:0),(m===0&&d===0||t===gc)&&p===Lt&&(p=j_),p},ag=e=>{if(Ot(e))return Oe;let t=e.state;return t.window&&(t.window=null),e.state=null,Lt},sg=(e,t)=>{if(Ot(e))return Oe;let n=e.state;return(n.wrap&2)===0?Oe:(n.head=t,t.done=!1,Lt)},og=(e,t)=>{let n=t.length,i,r,a;return Ot(e)||(i=e.state,i.wrap!==0&&i.mode!==zi)?Oe:i.mode===zi&&(r=1,r=Pn(r,t,n,0),r!==i.check)?xl:(a=zl(e,t,n,n),a?(i.mode=El,Al):(i.havedict=1,Lt))},cg=Tl,lg=Ml,ug=bl,dg=ng,mg=Rl,hg=rg,fg=ag,_g=sg,gg=og,pg="pako inflate (from Nodeca project)",nt={inflateReset:cg,inflateReset2:lg,inflateResetKeep:ug,inflateInit:dg,inflateInit2:mg,inflate:hg,inflateEnd:fg,inflateGetHeader:_g,inflateSetDictionary:gg,inflateInfo:pg};function vg(){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 yg=vg,Ll=Object.prototype.toString,{Z_NO_FLUSH:wg,Z_FINISH:Sg,Z_OK:Un,Z_STREAM_END:ha,Z_NEED_DICT:fa,Z_STREAM_ERROR:xg,Z_DATA_ERROR:Gc,Z_MEM_ERROR:Ag}=Nt;function Vn(e){this.options=Gi.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 vl,this.strm.avail_out=0;let n=nt.inflateInit2(this.strm,t.windowBits);if(n!==Un)throw new Error(Rt[n]);if(this.header=new yg,nt.inflateGetHeader(this.strm,this.header),t.dictionary&&(typeof t.dictionary=="string"?t.dictionary=Fn.string2buf(t.dictionary):Ll.call(t.dictionary)==="[object ArrayBuffer]"&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=nt.inflateSetDictionary(this.strm,t.dictionary),n!==Un)))throw new Error(Rt[n])}Vn.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?Sg:wg,Ll.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=nt.inflate(n,s),a===fa&&r&&(a=nt.inflateSetDictionary(n,r),a===Un?a=nt.inflate(n,s):a===Gc&&(a=fa));n.avail_in>0&&a===ha&&n.state.wrap>0&&e[n.next_in]!==0;)nt.inflateReset(n),a=nt.inflate(n,s);switch(a){case xg:case Gc:case fa:case Ag:return this.onEnd(a),this.ended=!0,!1}if(o=n.avail_out,n.next_out&&(n.avail_out===0||a===ha))if(this.options.to==="string"){let l=Fn.utf8border(n.output,n.next_out),c=n.next_out-l,u=Fn.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===Un&&o===0)){if(a===ha)return a=nt.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,!0;if(n.avail_in===0)break}}return!0};Vn.prototype.onData=function(e){this.chunks.push(e)};Vn.prototype.onEnd=function(e){e===Un&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Gi.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};function Ia(e,t){let n=new Vn(t);if(n.push(e),n.err)throw n.msg||Rt[n.err];return n.result}function Eg(e,t){return t=t||{},t.raw=!0,Ia(e,t)}var kg=Vn,bg=Ia,Tg=Eg,Mg=Ia,Rg=Nt,zg={Inflate:kg,inflate:bg,inflateRaw:Tg,ungzip:Mg,constants:Rg},{Deflate:Lg,deflate:Ng,deflateRaw:Og,gzip:Ig}=F_,{Inflate:Cg,inflate:Pg,inflateRaw:Dg,ungzip:Fg}=zg,Ug=Lg,Bg=Ng,Gg=Og,Hg=Ig,Vg=Cg,Wg=Pg,Kg=Dg,$g=Fg,Xg=Nt,Hc={Deflate:Ug,deflate:Bg,deflateRaw:Gg,gzip:Hg,Inflate:Vg,inflate:Wg,inflateRaw:Kg,ungzip:$g,constants:Xg},Yg=2023,Ca=1,Pa=2,Da=4,Fa=8,Ua=16,Ba=32,Nl=64,Zg=128,jg=256,Ga=512,Ha=1024,Va=2048,Li=4096;var Ni=16384,qg=32768,Oi=65536,Wa=1<<17,Ii=1<<18,Ci=1<<19,Ka=1<<20,$a=1<<21,Xa=1<<22,Jg=1<<23,Ya=1<<24,Pi=1<<25,Za=1<<26,ja=1<<27,Qg=1,ep=2,tp=128,Wt=()=>({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,alpha:0,scale:0,instanceBits:0,loopVolume:0,loopAttenuation:0,owner:0,oldFrame:0}),Vc=()=>({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}),np=class Ol{constructor(t,n){this.protocolVersion=0,this.isDemo=Qg,this.stream=t,this.handler=n}translateCommand(t){if(this.protocolVersion===0&&(t===7||t===12))return D.serverdata;if(this.protocolVersion===25){if(t>=7&&t<=15)return t+5;if(t===1)return D.print;if(t===2)return D.stufftext;if(t===3)return D.sound;if(t===4)return D.nop;if(t===5)return D.disconnect;if(t===6)return D.reconnect;if(t===16)return D.temp_entity}return this.protocolVersion===Yg,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 D.nop:break;case D.disconnect:this.handler&&this.handler.onDisconnect&&this.handler.onDisconnect();break;case D.reconnect:this.handler&&this.handler.onReconnect&&this.handler.onReconnect();break;case D.print:this.parsePrint();break;case D.serverdata:this.parseServerData();break;case D.configstring:this.parseConfigString();break;case D.spawnbaseline:this.parseSpawnBaseline();break;case D.centerprint:this.parseCenterPrint();break;case D.download:this.parseDownload();break;case D.frame:this.parseFrame();break;case D.packetentities:this.parsePacketEntities(!1);break;case D.deltapacketentities:this.parsePacketEntities(!0);break;case D.playerinfo:this.parsePlayerState();break;case D.stufftext:this.parseStuffText();break;case D.layout:this.parseLayout();break;case D.inventory:this.parseInventory();break;case D.sound:this.parseSound();break;case D.muzzleflash:this.parseMuzzleFlash();break;case D.muzzleflash2:this.parseMuzzleFlash2();break;case D.temp_entity:this.parseTempEntity();break;case D.splitclient:this.parseSplitClient();break;case D.configblast:this.parseConfigBlast();break;case D.spawnbaselineblast:this.parseSpawnBaselineBlast();break;case D.level_restart:this.handler&&this.handler.onLevelRestart&&this.handler.onLevelRestart();break;case D.damage:this.parseDamage();break;case D.locprint:this.parseLocPrint();break;case D.fog:this.parseFog();break;case D.waitingforplayers:this.parseWaitingForPlayers();break;case D.bot_chat:this.parseBotChat();break;case D.poi:this.parsePoi();break;case D.help_path:this.parseHelpPath();break;case D.muzzleflash3:this.parseMuzzleFlash3();break;case D.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(){this.protocolVersion=this.stream.readLong();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=Hc.inflate(i);r.byteLength!==n&&console.warn(`svc_configblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new _a(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=Hc.inflate(i);r.byteLength!==n&&console.warn(`svc_spawnbaselineblast: Decompressed size mismatch. Expected ${n}, got ${r.byteLength}`);let a=new _a(r.buffer),s=new Ol(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)}parseWaitingForPlayers(){let t=this.stream.readByte();this.handler&&this.handler.onWaitingForPlayers&&this.handler.onWaitingForPlayers()}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()}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 R.EXPLOSION1:case R.EXPLOSION2:case R.ROCKET_EXPLOSION:case R.GRENADE_EXPLOSION:case R.ROCKET_EXPLOSION_WATER:case R.GRENADE_EXPLOSION_WATER:case R.BFG_EXPLOSION:case R.BFG_BIGEXPLOSION:case R.BOSSTPORT:case R.PLASMA_EXPLOSION:case R.PLAIN_EXPLOSION:case R.CHAINFIST_SMOKE:case R.TRACKER_EXPLOSION:case R.TELEPORT_EFFECT:case R.DBALL_GOAL:case R.NUKEBLAST:case R.WIDOWSPLASH:case R.EXPLOSION1_BIG:case R.EXPLOSION1_NP:this.stream.readPos(n);break;case R.GUNSHOT:case R.BLOOD:case R.BLASTER:case R.SHOTGUN:case R.SPARKS:case R.BULLET_SPARKS:case R.SCREEN_SPARKS:case R.SHIELD_SPARKS:case R.BLASTER2:case R.FLECHETTE:case R.MOREBLOOD:case R.ELECTRIC_SPARKS:case R.HEATBEAM_SPARKS:case R.HEATBEAM_STEAM:this.stream.readPos(n),this.stream.readDir(r);break;case R.SPLASH:case R.LASER_SPARKS:case R.WELDING_SPARKS:case R.TUNNEL_SPARKS:a=this.stream.readByte(),this.stream.readPos(n),this.stream.readDir(r),s=this.stream.readByte();break;case R.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readPos(i)):(this.stream.readPos(n),this.stream.readDir(r));break;case R.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(n),this.stream.readDir(r)):(this.stream.readPos(n),this.stream.readPos(i));break;case R.RAILTRAIL:case R.BUBBLETRAIL:case R.BFG_LASER:case R.DEBUGTRAIL:case R.BUBBLETRAIL2:this.stream.readPos(n),this.stream.readPos(i);break;case R.PARASITE_ATTACK:case R.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case R.GRAPPLE_CABLE:o=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i),this.stream.readPos(r);break;case R.LIGHTNING:l=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(n),this.stream.readPos(i);break;case R.FLASHLIGHT:this.stream.readPos(n),o=this.stream.readShort();break;case R.FORCEWALL:this.stream.readPos(n),this.stream.readPos(i),s=this.stream.readByte();break;case R.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 R.WIDOWBEAMOUT:this.stream.readShort();case R.HEATBEAM:case R.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=Wt();this.parseDelta(Wt(),n,t.number,t.bits),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!==D.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${s}`);let o=this.parsePlayerState();if(this.isDemo===tp){let l=this.stream.readByte();for(let c=0;c<l;c++)this.stream.readByte()}this.isDemo===ep&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:t,deltaFrame:n,surpressCount:i,areaBytes:r,areaBits:a,playerState:o,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let t=Vc(),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:Vc(),packetEntities:{delta:t,entities:n}})}collectPacketEntities(){let t=[];for(;;){let n=this.parseEntityBits();if(n.number===0)break;let i=Wt();this.parseDelta(Wt(),i,n.number,n.bits),t.push(i)}return t}parseEntityBits(){let t=this.stream.readByte();t&Zg&&(t|=this.stream.readByte()<<8),t&qg&&(t|=this.stream.readByte()<<16),t&Jg&&(t|=this.stream.readByte()<<24);let n;return t&jg?n=this.stream.readShort():n=this.stream.readByte(),{number:n,bits:t}}parseDelta(t,n,i,r){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.number=i,n.bits=r,r&Va&&(n.modelindex=this.stream.readByte()),r&Ka&&(n.modelindex2=this.stream.readByte()),r&$a&&(n.modelindex3=this.stream.readByte()),r&Xa&&(n.modelindex4=this.stream.readByte()),r&Ua&&(n.frame=this.stream.readByte()),r&Wa&&(n.frame=this.stream.readShort()),r&Oi&&r&Pi?n.skinnum=this.stream.readLong():r&Oi?n.skinnum=this.stream.readByte():r&Pi&&(n.skinnum=this.stream.readShort()),r&Ni&&r&Ci?n.effects=this.stream.readLong():r&Ni?n.effects=this.stream.readByte():r&Ci&&(n.effects=this.stream.readShort()),r&Li&&r&Ii?n.renderfx=this.stream.readLong():r&Li?n.renderfx=this.stream.readByte():r&Ii&&(n.renderfx=this.stream.readShort()),r&Ca&&(n.origin.x=this.stream.readCoord()),r&Pa&&(n.origin.y=this.stream.readCoord()),r&Ga&&(n.origin.z=this.stream.readCoord()),r&Ha&&(n.angles.x=this.stream.readAngle()),r&Da&&(n.angles.y=this.stream.readAngle()),r&Fa&&(n.angles.z=this.stream.readAngle()),r&Ya&&this.stream.readPos(n.old_origin),r&Za&&(n.sound=this.stream.readByte()),r&Ba?n.event=this.stream.readByte():n.event=0,r&ja&&(n.solid=this.stream.readShort())}},qa=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(qa||{}),Il=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new jf(e),this.state=0,this.accumulatedTime=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}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new np(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var ip=Object.defineProperty,Cl=(e,t)=>{for(var n in t)ip(e,n,{get:t[n],enumerable:!0})},ft={x:0,y:0,z:0};var u8=Math.PI/180;function Wn(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Jt(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Qt(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function rp(e){return Qt(e,e)}function Vi(e){return Math.sqrt(rp(e))}function Pl(e){let t=Vi(e);return t===0?e:Jt(e,1/t)}var Dl=0,Fl=1,Ul=2,ap=Math.PI/180,d8=180/Math.PI;function Ja(e,t){switch(t){case Dl:return e.x;case Fl:return e.y;case Ul:default:return e.z}}function Qa(e){return e*ap}function qt(e){let t=e%360;return t<0?360+t:t}function ts(e){let t=Qa(Ja(e,Fl)),n=Qa(Ja(e,Dl)),i=Qa(Ja(e,Ul)),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 Xe=1,_t=2;var ns=8,is=16,sp=32;var op=16384;var Wi=65536,Bl=1<<17,cp=1<<18,lp=1<<19,up=1<<20,dp=1<<21,mp=1<<22,hp=1<<23,m8=1<<24,Ki=1<<25,fp=1<<26,h8=1<<27,f8=1<<28,_8=1<<29,$i=1<<30,g8=1<<31;var p8=1<<25,v8=1<<28,y8=1<<29,w8=1<<30,S8=1<<31;var x8=Xe|_t,A8=Xe|Wi|_t|Ki|$i,E8=Xe|Wi|_t,k8=Xe|Bl|_t|Ki|$i,b8=sp|ns|is,T8=Xe|is|ns,_p=Xe|Ki|$i|_t|fp,M8=cp|lp|up|dp|mp|hp,R8=Xe|ns|is|Ki|$i,z8=Xe|Wi|_t,L8=Xe|_t,N8=Xe|Wi|_t|Bl,O8=_p|op;var I8=Number.MAX_SAFE_INTEGER-1;var Kn=(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))(Kn||{});var Gl=256;var gp=256,$n=8192,Xn=2048,Yn=512,pp=256,vp=Gl*2,yp=256,es=32;var re=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+$n]="Sounds",e[e.Images=e.Sounds+Xn]="Images",e[e.Lights=e.Images+Yn]="Lights",e[e.ShadowLights=e.Lights+gp]="ShadowLights",e[e.Items=e.ShadowLights+yp]="Items",e[e.PlayerSkins=e.Items+pp]="PlayerSkins",e[e.General=e.PlayerSkins+Gl]="General",e[e.WheelWeapons=e.General+vp]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+es]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+es]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+es]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(re||{}),C8=re.MaxConfigStrings;var wp={};Cl(wp,{addReplayFrame:()=>Ep,createReplaySession:()=>Ap,deserializeReplay:()=>xp,serializeReplay:()=>Sp});function Sp(e){return JSON.stringify(e,null,2)}function xp(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 Ap(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Ep(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var It=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(It||{});var Ie=(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))(Ie||{});function it(e,t){return(e&t)!==0}var Xi=(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))(Xi||{}),Ye=(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))(Ye||{});function Hl(e){let{velocity:t,frametime:n,onGround:i,groundIsSlick:r,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:l,pmWaterFriction:c}=e,u=Vi(t);if(u<1)return{x:0,y:0,z:t.z};let m=0;if(i&&!r||a){let f=u<l?l:u;m+=f*o*n}s>0&&!a&&(m+=u*c*s*n);let d=u-m;if(d<0&&(d=0),d===u)return t;let h=d/u;return Jt(t,h)}function rs(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Qt(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 Vl(e){let{velocity:t,wishdir:n,wishspeed:i,accel:r,frametime:a}=e,s=Math.min(i,30),o=Qt(t,n),l=s-o;if(l<=0)return t;let c=r*i*a;return c>l&&(c=l),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function Wl(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=Vi(a);if(s>r){let o=r/s;a=Jt(a,o),s=r}return{wishdir:s===0?a:Pl(a),wishspeed:s}}function Kl(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};i.upmove>10?a=Wn(a,{x:0,y:0,z:i.upmove}):i.upmove<-10?a=Wn(a,{x:0,y:0,z:i.upmove}):a=Wn(a,{x:0,y:0,z:10});let s=Vi(a);if(s>r){let o=r/s;a=Jt(a,o),s=r}return s*=.5,{wishdir:s===0?a:Pl(a),wishspeed:s}}function kp(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function bp(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function as(e){let{pmFlags:t,cmdAngles:n,deltaAngles:i}=e,r;(t&32)!==0?r={x:0,y:n.y+i.y,z:0}:(r=kp(n,i),r={...r,x:bp(r.x)});let a=ts(r);return{viewangles:r,...a}}var $l=200,Xl=200,Yl=200,Zl=140,jl=150,ql=3;function Tp(e){let t=qt(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Jl(e,t){return{x:Tp(e.x+t.x),y:qt(e.y+t.y),z:qt(e.z+t.z)}}function Ql(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 eu=0,tu=1,nu=2,iu=3,ru=4,au=5,su=6,ou=7,cu=8;var lu=11,uu=12,du=13;function Mp(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 Rp(e,t,n,i){let r=i*n,a=Math.floor(r/8),s=r%8,o=(1<<i)-1<<s;return(Mp(e,t,a)&o)>>>s}var ss=(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))(ss||{}),Pe=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Pe||{}),zp=12,Lp=9,P8=Math.ceil(zp*Lp/16),mu=23,hu=2,D8=Math.ceil(mu*hu/16),Np={power_screen:0,power_shield:1,quad:3,quad_fire:4,invulnerability:5,invisibility:6,silencer:7,rebreather:8,enviro_suit:9,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};function fu(e,t){let n;return typeof t=="number"?n=t:n=Np[t],n===void 0||n<0||n>=mu?0:Rp(e,41,n,hu)}var Op={};Cl(Op,{U_ANGLE1:()=>Bp,U_ANGLE2:()=>Gp,U_ANGLE3:()=>Hp,U_EFFECTS:()=>Kp,U_EVENT:()=>Yp,U_FRAME:()=>Vp,U_MODEL:()=>Cp,U_MODEL2:()=>jp,U_MODEL3:()=>qp,U_MODEL4:()=>Jp,U_MOREBITS:()=>Zp,U_NUMBER:()=>Ip,U_ORIGIN1:()=>Dp,U_ORIGIN2:()=>Fp,U_ORIGIN3:()=>Up,U_REMOVE:()=>Qp,U_RENDERFX:()=>$p,U_SKIN:()=>Wp,U_SOLID:()=>Xp,U_SOUND:()=>Pp});var Ip=1,Cp=2,Pp=4,Dp=8,Fp=16,Up=32,Bp=64,Gp=128,Hp=256,Vp=512,Wp=1024,Kp=2048,$p=4096,Xp=8192,Yp=16384,Zp=32768,jp=1,qp=2,Jp=4,Qp=32768;var _u=(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))(_u||{}),F8=Object.keys(_u).length/2;var ev=Object.defineProperty,tv=(e,t)=>{for(var n in t)ev(e,n,{get:t[n],enumerable:!0})},Zi=null,Yi=[1,1,1,1],gu=["ch1","ch2","ch3"],os=[null,null,null],nv=e=>{for(let t=0;t<gu.length;t++){let n=gu[t];try{os[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{os[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
170
|
+
`)}}}Zi=os[0]},iv=(e,t,n)=>{if(Zi){let i=e.Draw_GetPicSize(Zi),r=(t-i.width)/2,a=(n-i.height)/2;e.SCR_DrawColorPic(r,a,Zi,{x:Yi[0],y:Yi[1],z:Yi[2]},Yi[3])}},xu=new Map,rv=["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"],av=e=>{for(let t of rv)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);xu.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
171
171
|
`)}},sv=new Map,ov=["d_left","d_right","d_up","d_down"],cv=e=>{for(let t of ov)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);sv.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
172
|
-
`)}},lv=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},pu=3e3,vu=5e3,yu=4,uv=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:pu}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:vu}),this.notifyMessages.length>yu&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:pu}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:vu}),this.notifyMessages.length>yu&&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}},dv=3e3,mv=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:dv}}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)}},hv=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},fv=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=
|
|
172
|
+
`)}},lv=(e,t,n,i)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},pu=3e3,vu=5e3,yu=4,uv=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:pu}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:vu}),this.notifyMessages.length>yu&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:pu}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:vu}),this.notifyMessages.length>yu&&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}},dv=3e3,mv=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:dv}}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)}},hv=(e,t,n,i)=>{if(!t.blend)return;let[r,a,s,o]=t.blend},fv=(e,t,n,i)=>{if(!t.pickupIcon)return;let r=xu.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)}},cs=(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))}},_v=(e,t,n,i,r,a)=>{let s=t.stats[Pe.STAT_HEALTH]||0,o=t.stats[Pe.STAT_ARMOR]||0,l=t.stats[Pe.STAT_AMMO]||0,c=t.stats[Pe.STAT_ARMOR_ICON]||0,u;if(s<=25&&(u=[1,0,0,1]),n.length>0&&(cs(e,a.HEALTH_X,a.HEALTH_Y,s,n,i,u),cs(e,a.ARMOR_X,a.ARMOR_Y,o,n,i),cs(e,a.AMMO_X,a.AMMO_Y,l,n,i)),c>0){let m=e.get_configstring(re.Images+c);if(m){let d=e.Draw_RegisterPic(m);d&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,d)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Pe.STAT_SELECTED_ICON]||0;if(m>0){let d=e.get_configstring(re.Images+m);if(d){let h=e.Draw_RegisterPic(d);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}}}},ls=640,en=480,gv=(e,t)=>{let n=e/ls,i=t/en,r=Math.min(n,i);return{HEALTH_X:100*r,HEALTH_Y:t-(en-450)*r,ARMOR_X:200*r,ARMOR_Y:t-(en-450)*r,AMMO_X:e-(ls-540)*r,AMMO_Y:t-(en-450)*r,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*r,WEAPON_ICON_X:10*r,WEAPON_ICON_Y:t-(en-450)*r,POWERUP_X:e-(ls-610)*r,POWERUP_Y:t-(en-450)*r,scale:r}},ue=null,hs=[],Au=0,fs=new uv,Eu=new mv;function pv(e){ue=e}function vv(){if(ue){hs.length=0;for(let e=0;e<10;e++)try{let t=ue.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);hs.push(t),e===0&&(Au=ue.Draw_GetPicSize(t).width)}catch{ue.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
173
173
|
`)}nv(ue),av(ue),cv(ue)}}function yv(e,t,n,i,r,a,s){if(!ue){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=ue.CL_ClientTime(),l=gv(n.width,n.height);if(hv(ue,s,n.width,n.height),_v(ue,s,hs,Au,o,l),fv(ue,s,n.width,n.height),lv(ue,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)ue.SCR_DrawCenterString(u,m),u+=16}fs.drawCenterPrint(ue,o,l),fs.drawNotifications(ue,o),Eu.drawSubtitles(ue,o),iv(ue,n.width,n.height)}function qi(){return fs}function wv(){return Eu}function xv(e,t,n){t>=re.Models&&t<re.Models+$n?e.RegisterModel(n):t>=re.Sounds&&t<re.Sounds+Xn?e.RegisterSound(n):t>=re.Images&&t<re.Images+Yn&&e.Draw_RegisterPic(n)}var us=1e-6,ji=typeof Float32Array<"u"?Float32Array:Array,wu=Math.random;function ds(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var Sv={};tv(Sv,{add:()=>Tv,angle:()=>jv,bezier:()=>Hv,ceil:()=>Mv,clone:()=>Av,copy:()=>kv,create:()=>ku,cross:()=>Fv,dist:()=>ry,distance:()=>zu,div:()=>iy,divide:()=>Ru,dot:()=>_s,equals:()=>ey,exactEquals:()=>Qv,floor:()=>Rv,forEach:()=>cy,fromValues:()=>Ev,hermite:()=>Gv,inverse:()=>Pv,len:()=>sy,length:()=>bu,lerp:()=>Uv,max:()=>Lv,min:()=>zv,mul:()=>ny,multiply:()=>Mu,negate:()=>Cv,normalize:()=>Dv,random:()=>Vv,rotateX:()=>Xv,rotateY:()=>Yv,rotateZ:()=>Zv,round:()=>Nv,scale:()=>Ov,scaleAndAdd:()=>Iv,set:()=>bv,slerp:()=>Bv,sqrDist:()=>ay,sqrLen:()=>oy,squaredDistance:()=>Lu,squaredLength:()=>Nu,str:()=>Jv,sub:()=>ty,subtract:()=>Tu,transformMat3:()=>Kv,transformMat4:()=>Wv,transformQuat:()=>$v,zero:()=>qv});function ku(){var e=new ji(3);return ji!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Av(e){var t=new ji(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function bu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Ev(e,t,n){var i=new ji(3);return i[0]=e,i[1]=t,i[2]=n,i}function kv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function bv(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 Tu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Mu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Ru(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 zv(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 Lv(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]=ds(t[0]),e[1]=ds(t[1]),e[2]=ds(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 zu(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 Lu(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 Nu(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 Dv(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 _s(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Fv(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(_s(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=wu()*2*Math.PI,i=wu()*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 Zv(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 jv(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&&_s(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function qv(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 ey(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)<=us*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=us*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=us*Math.max(1,Math.abs(r),Math.abs(o))}var ty=Tu,ny=Mu,iy=Ru,ry=zu,ay=Lu,sy=bu,oy=Nu,cy=(function(){var e=ku();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 ly={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function uy(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 dy(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function my(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=dy(t,i,r),s=e+a,l=it(n,Ie.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 Ji=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...ly,...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}=ts(as({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??ft}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=it(e.pmFlags,Ie.OnGround),s=my(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=Qt(e.velocity,n)*this.settings.runPitch,l=Qt(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,h=this.bobFracSin*this.settings.bobRoll*r;it(e.pmFlags,Ie.Ducked)&&a&&(d*=6,h*=6),o+=Math.min(d,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),m+=h;let f=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),x=0,_=0,v=0,y=0,S=0;if(this.kick&&this.kick.remainingMs>0){let k=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));x+=k*this.kick.pitch,_+=k*this.kick.roll,this.kick.origin&&(v+=k*this.kick.origin.x,y+=k*this.kick.origin.y,S+=k*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let g={x:o+x,y:0,z:m+_},A={x:v,y,z:f+S},b={angles:g,offset:uy(A),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=b,b}},hy={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Ou=800,Ze={x:0,y:0,z:0},fy=250;function Ct(){return{origin:Ze,velocity:Ze,viewAngles:Ze,onGround:!1,pmFlags:Ie.OnGround,pmType:Xi.Normal,waterLevel:It.None,gravity:Ou,deltaAngles:Ze,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:Ze,kick_origin:Ze,gunoffset:Ze,gunangles:Ze,gunindex:0,pm_time:0,pm_type:Xi.Normal,pm_flags:Ie.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 xu(e){return e?{...Ct(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Ze,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Ct()}function Ee(e,t,n){return e+(t-e)*n}function ms(e,t,n){let i=qt(t-e);return i>180&&(i-=360),qt(e+i*n)}function tn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Ee(e.origin.x,t.origin.x,i),y:Ee(e.origin.y,t.origin.y,i),z:Ee(e.origin.z,t.origin.z,i)},velocity:{x:Ee(e.velocity.x,t.velocity.x,i),y:Ee(e.velocity.y,t.velocity.y,i),z:Ee(e.velocity.z,t.velocity.z,i)},viewAngles:{x:ms(e.viewAngles.x,t.viewAngles.x,i),y:ms(e.viewAngles.y,t.viewAngles.y,i),z:ms(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Ee(e.damageAlpha,t.damageAlpha,i),blend:[Ee(e.blend[0],t.blend[0],i),Ee(e.blend[1],t.blend[1],i),Ee(e.blend[2],t.blend[2],i),Ee(e.blend[3],t.blend[3],i)],health:Ee(e.health||0,t.health||0,i),armor:Ee(e.armor||0,t.armor||0,i),ammo:Ee(e.ammo||0,t.ammo||0,i)}}function _y(e,t,n,i){let r=Math.min(Math.max(t.msec,0),fy)/1e3,a=it(e.pmFlags,Ie.OnGround),s=it(e.pmFlags,Ie.OnLadder),o=Hl({velocity:e.velocity,frametime:r,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:l,forward:c,right:u}=as({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Ze}),m=e.waterLevel>It.None?Kl({forward:c,right:u,cmd:t,maxSpeed:n.pmWaterSpeed}):Wl({forward:c,right:u,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>It.None)o=rs({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:r});else if(a||s){let f=it(e.pmFlags,Ie.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,x=m.wishspeed>f?{wishdir:m.wishdir,wishspeed:f}:m;o=rs({velocity:o,wishdir:x.wishdir,wishspeed:x.wishspeed,accel:n.pmAccelerate,frametime:r})}else o=Vl({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmAirAccelerate,frametime:r}),o={...o,z:o.z-(e.gravity??Ou)*r};let h=i(e.origin,Wn(e.origin,Jt(o,r))).endpos;return{...e,origin:h,velocity:o,viewAngles:l}}var Qi=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:Ct()},this.commands=[],this.predicted=Ct(),this.settings={...hy,...t},this.trace=e,this.predicted=this.baseFrame.state??Ct()}setAuthoritative(e){let t=xu(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=xu(this.baseFrame.state);for(let t of this.commands)e=_y(e,t,this.settings,this.trace);return this.predicted=e,e}},ye=null;function gy(){if(!ye){console.error("CGame Init: cgame imports not set");return}ye.Com_Print(`===== CGame Initialization =====
|
|
174
|
+
`),u=n.height/2-c.length*10;for(let m of c)ue.SCR_DrawCenterString(u,m),u+=16}fs.drawCenterPrint(ue,o,l),fs.drawNotifications(ue,o),Eu.drawSubtitles(ue,o),iv(ue,n.width,n.height)}function qi(){return fs}function wv(){return Eu}function Sv(e,t,n){t>=re.Models&&t<re.Models+$n?e.RegisterModel(n):t>=re.Sounds&&t<re.Sounds+Xn?e.RegisterSound(n):t>=re.Images&&t<re.Images+Yn&&e.Draw_RegisterPic(n)}var us=1e-6,ji=typeof Float32Array<"u"?Float32Array:Array,wu=Math.random;function ds(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var xv={};tv(xv,{add:()=>Tv,angle:()=>jv,bezier:()=>Hv,ceil:()=>Mv,clone:()=>Av,copy:()=>kv,create:()=>ku,cross:()=>Fv,dist:()=>ry,distance:()=>zu,div:()=>iy,divide:()=>Ru,dot:()=>_s,equals:()=>ey,exactEquals:()=>Qv,floor:()=>Rv,forEach:()=>cy,fromValues:()=>Ev,hermite:()=>Gv,inverse:()=>Pv,len:()=>sy,length:()=>bu,lerp:()=>Uv,max:()=>Lv,min:()=>zv,mul:()=>ny,multiply:()=>Mu,negate:()=>Cv,normalize:()=>Dv,random:()=>Vv,rotateX:()=>Xv,rotateY:()=>Yv,rotateZ:()=>Zv,round:()=>Nv,scale:()=>Ov,scaleAndAdd:()=>Iv,set:()=>bv,slerp:()=>Bv,sqrDist:()=>ay,sqrLen:()=>oy,squaredDistance:()=>Lu,squaredLength:()=>Nu,str:()=>Jv,sub:()=>ty,subtract:()=>Tu,transformMat3:()=>Kv,transformMat4:()=>Wv,transformQuat:()=>$v,zero:()=>qv});function ku(){var e=new ji(3);return ji!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Av(e){var t=new ji(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function bu(e){var t=e[0],n=e[1],i=e[2];return Math.sqrt(t*t+n*n+i*i)}function Ev(e,t,n){var i=new ji(3);return i[0]=e,i[1]=t,i[2]=n,i}function kv(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function bv(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 Tu(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function Mu(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Ru(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 zv(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 Lv(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]=ds(t[0]),e[1]=ds(t[1]),e[2]=ds(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 zu(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 Lu(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 Nu(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 Dv(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 _s(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Fv(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(_s(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=wu()*2*Math.PI,i=wu()*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 Zv(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 jv(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&&_s(e,t)/l;return Math.acos(Math.min(Math.max(c,-1),1))}function qv(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 ey(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)<=us*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(i-s)<=us*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(r-o)<=us*Math.max(1,Math.abs(r),Math.abs(o))}var ty=Tu,ny=Mu,iy=Ru,ry=zu,ay=Lu,sy=bu,oy=Nu,cy=(function(){var e=ku();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 ly={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function uy(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 dy(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function my(e,t,n,i,r){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=dy(t,i,r),s=e+a,l=it(n,Ie.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 Ji=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...ly,...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}=ts(as({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??ft}).viewangles),r=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=it(e.pmFlags,Ie.OnGround),s=my(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=Qt(e.velocity,n)*this.settings.runPitch,l=Qt(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,h=this.bobFracSin*this.settings.bobRoll*r;it(e.pmFlags,Ie.Ducked)&&a&&(d*=6,h*=6),o+=Math.min(d,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),m+=h;let f=Math.min(this.bobFracSin*r*this.settings.bobUp,this.settings.maxBobHeight),S=0,_=0,v=0,y=0,x=0;if(this.kick&&this.kick.remainingMs>0){let k=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));S+=k*this.kick.pitch,_+=k*this.kick.roll,this.kick.origin&&(v+=k*this.kick.origin.x,y+=k*this.kick.origin.y,x+=k*this.kick.origin.z),this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let g={x:o+S,y:0,z:m+_},A={x:v,y,z:f+x},b={angles:g,offset:uy(A),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:r};return this.lastSample=b,b}},hy={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Ou=800,Ze={x:0,y:0,z:0},fy=250;function Ct(){return{origin:Ze,velocity:Ze,viewAngles:Ze,onGround:!1,pmFlags:Ie.OnGround,pmType:Xi.Normal,waterLevel:It.None,gravity:Ou,deltaAngles:Ze,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:Ze,kick_origin:Ze,gunoffset:Ze,gunangles:Ze,gunindex:0,pm_time:0,pm_type:Xi.Normal,pm_flags:Ie.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 Su(e){return e?{...Ct(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Ze,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:Ct()}function Ee(e,t,n){return e+(t-e)*n}function ms(e,t,n){let i=qt(t-e);return i>180&&(i-=360),qt(e+i*n)}function tn(e,t,n){let i=Math.max(0,Math.min(n,1));return{...t,origin:{x:Ee(e.origin.x,t.origin.x,i),y:Ee(e.origin.y,t.origin.y,i),z:Ee(e.origin.z,t.origin.z,i)},velocity:{x:Ee(e.velocity.x,t.velocity.x,i),y:Ee(e.velocity.y,t.velocity.y,i),z:Ee(e.velocity.z,t.velocity.z,i)},viewAngles:{x:ms(e.viewAngles.x,t.viewAngles.x,i),y:ms(e.viewAngles.y,t.viewAngles.y,i),z:ms(e.viewAngles.z,t.viewAngles.z,i)},damageAlpha:Ee(e.damageAlpha,t.damageAlpha,i),blend:[Ee(e.blend[0],t.blend[0],i),Ee(e.blend[1],t.blend[1],i),Ee(e.blend[2],t.blend[2],i),Ee(e.blend[3],t.blend[3],i)],health:Ee(e.health||0,t.health||0,i),armor:Ee(e.armor||0,t.armor||0,i),ammo:Ee(e.ammo||0,t.ammo||0,i)}}function _y(e,t,n,i){let r=Math.min(Math.max(t.msec,0),fy)/1e3,a=it(e.pmFlags,Ie.OnGround),s=it(e.pmFlags,Ie.OnLadder),o=Hl({velocity:e.velocity,frametime:r,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:l,forward:c,right:u}=as({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Ze}),m=e.waterLevel>It.None?Kl({forward:c,right:u,cmd:t,maxSpeed:n.pmWaterSpeed}):Wl({forward:c,right:u,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>It.None)o=rs({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:r});else if(a||s){let f=it(e.pmFlags,Ie.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,S=m.wishspeed>f?{wishdir:m.wishdir,wishspeed:f}:m;o=rs({velocity:o,wishdir:S.wishdir,wishspeed:S.wishspeed,accel:n.pmAccelerate,frametime:r})}else o=Vl({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmAirAccelerate,frametime:r}),o={...o,z:o.z-(e.gravity??Ou)*r};let h=i(e.origin,Wn(e.origin,Jt(o,r))).endpos;return{...e,origin:h,velocity:o,viewAngles:l}}var Qi=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:Ct()},this.commands=[],this.predicted=Ct(),this.settings={...hy,...t},this.trace=e,this.predicted=this.baseFrame.state??Ct()}setAuthoritative(e){let t=Su(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Su(this.baseFrame.state);for(let t of this.commands)e=_y(e,t,this.settings,this.trace);return this.predicted=e,e}},ye=null;function gy(){if(!ye){console.error("CGame Init: cgame imports not set");return}ye.Com_Print(`===== CGame Initialization =====
|
|
175
175
|
`),pv(ye),ye.Com_Print(`CGame initialized
|
|
176
176
|
`)}function py(){ye&&ye.Com_Print(`CGame shutdown
|
|
177
|
-
`),ye=null}function vy(e,t,n,i,r,a,s){yv(e,t,n,i,r,a,s)}function yy(){vv()}function wy(e){return 0}function xy(e){return 0}function Sy(e){return[]}function Ay(e,t){return 0}function Ey(e){return 0}function ky(e){return 0}function by(e){}function Ty(e,t){ye&&xv(ye,e,t)}function My(e,t,n){if(!ye)return;qi().setCenterPrint(e,ye.CL_ClientTime())}function Ry(e,t,n){if(!ye)return;qi().addNotification(t,n,ye.CL_ClientTime())}function zy(e){qi().clearNotifications()}function Ly(e){qi().clearCenterPrint()}function Ny(e,t){if(!ye)return;wv().addSubtitle(e,ye.CL_ClientTime())}function Oy(e){return{x:0,y:0,z:0}}function Iy(e){return null}function Iu(e){return ye=e,{Init:gy,Shutdown:py,DrawHUD:vy,TouchPics:yy,LayoutFlags:wy,GetActiveWeaponWheelWeapon:xy,GetOwnedWeaponWheelWeapons:Sy,GetWeaponWheelAmmoCount:Ay,GetPowerupWheelCount:Ey,GetHitMarkerDamage:ky,Pmove:by,ParseConfigString:Ty,ParseCenterPrint:My,NotifyMessage:Ry,ShowSubtitle:Ny,ClearNotify:zy,ClearCenterprint:Ly,GetMonsterFlashOffset:Oy,GetExtension:Iy}}function Cu(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_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 nn=null,gt=0;var Zn=!0,jn=["ch1","ch2","ch3"],rn=[null,null,null],Pu=async(e,t)=>{for(let n=0;n<jn.length;n++){let i=jn[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);rn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");rn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}nn=rn[0]};var Du=()=>{if(Zn?(gt++,gt>=jn.length&&(Zn=!1,gt=0)):(Zn=!0,gt=0),Zn){if(nn=rn[gt],!nn){let e=!1;for(let t=0;t<jn.length;t++){let n=(gt+t)%jn.length;if(rn[n]){gt=n,nn=rn[n],e=!0;break}}e||(nn=null)}}else nn=null;return Zn?gt:-1};var Cy=Object.defineProperty,Yu=(e,t)=>{for(var n in t)Cy(e,n,{get:t[n],enumerable:!0})},G={x:0,y:0,z:0};var Y8=Math.PI/180;function Py(e){return{x:e.x,y:e.y,z:e.z}}function H(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function L(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function V(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Zu(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Dy(e){return Zu(e,e)}function mn(e){return Math.sqrt(Dy(e))}function P(e){let t=mn(e);return t===0?e:V(e,1/t)}function Fy(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 Uy(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}var Ls=0,Ns=1,ju=2,By=Math.PI/180,Gy=180/Math.PI;function Jn(e,t){switch(t){case Ls:return e.x;case Ns:return e.y;case ju:default:return e.z}}function tr(e){return e*By}function Ss(e){return e*Gy}function As(e){let t=e%360;return t<0?360+t:t}function J(e){let t=tr(Jn(e,Ns)),n=tr(Jn(e,Ls)),i=tr(Jn(e,ju)),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 lr(e){let t=Jn(e,Ls),n=Jn(e,Ns);if(t===0)return n===0?0:n>0?90:270;let i=Ss(Math.atan2(n,t));return i<0?i+360:i}function hn(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=Ss(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=Ss(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var je=624,Hy=397,Vy=2567483615,Wy=2147483648,Ky=2147483647,gs=4294967296,$y=class{constructor(e=5489){this.state=new Uint32Array(je),this.index=je,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<je;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=je}nextUint32(){this.index>=je&&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<je;e++){let t=this.state[e]&Wy|this.state[(e+1)%je]&Ky,n=this.state[(e+Hy)%je]^t>>>1;(t&1)!==0&&(n^=Vy),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==je)throw new Error(`Expected ${je} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},qu=class{constructor(e={}){this.mt=new $y(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/gs}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=gs-gs%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)}};function Os(e){return new qu(e)}var ke=1,xt=2;var Is=8,Cs=16,Xy=32;var Yy=16384;var ur=65536,Ju=1<<17,Zy=1<<18,jy=1<<19,qy=1<<20,Jy=1<<21,Qy=1<<22,ew=1<<23,Z8=1<<24,Dt=1<<25,dr=1<<26,j8=1<<27,q8=1<<28,J8=1<<29,fn=1<<30,Q8=1<<31;var eM=1<<25,tM=1<<28,nM=1<<29,iM=1<<30,rM=1<<31,tw=ke|xt,aM=ke|ur|xt|Dt|fn,sM=ke|ur|xt,ir=ke|Ju|xt|Dt|fn,nw=Xy|Is|Cs,oM=ke|Cs|Is,yt=ke|Dt|fn|xt|dr,cM=Zy|jy|qy|Jy|Qy|ew,lM=ke|Is|Cs|Dt|fn,uM=ke|ur|xt,dM=ke|xt,mM=ke|ur|xt|Ju,hM=yt|Yy,fM=Number.MAX_SAFE_INTEGER-1;var Qu=256,iw=256,rw=8192,aw=2048,sw=512,ow=256,cw=Qu*2,lw=256,ps=32,ed=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+rw]="Sounds",e[e.Images=e.Sounds+aw]="Images",e[e.Lights=e.Images+sw]="Lights",e[e.ShadowLights=e.Lights+iw]="ShadowLights",e[e.Items=e.ShadowLights+lw]="Items",e[e.PlayerSkins=e.Items+ow]="PlayerSkins",e[e.General=e.PlayerSkins+Qu]="General",e[e.WheelWeapons=e.General+cw]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ps]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ps]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ps]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ed||{}),_M=ed.MaxConfigStrings,uw={};Yu(uw,{addReplayFrame:()=>fw,createReplaySession:()=>hw,deserializeReplay:()=>mw,serializeReplay:()=>dw});function dw(e){return JSON.stringify(e,null,2)}function mw(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 hw(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function fw(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var 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||{}),xe=(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))(xe||{});var Z=(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))(Z||{});var _w=12,gw=9,gM=Math.ceil(_w*gw/16),pw=23,vw=2,pM=Math.ceil(pw*vw/16);var yw={};Yu(yw,{U_ANGLE1:()=>bw,U_ANGLE2:()=>Tw,U_ANGLE3:()=>Mw,U_EFFECTS:()=>Lw,U_EVENT:()=>Iw,U_FRAME:()=>Rw,U_MODEL:()=>xw,U_MODEL2:()=>Pw,U_MODEL3:()=>Dw,U_MODEL4:()=>Fw,U_MOREBITS:()=>Cw,U_NUMBER:()=>ww,U_ORIGIN1:()=>Aw,U_ORIGIN2:()=>Ew,U_ORIGIN3:()=>kw,U_REMOVE:()=>Uw,U_RENDERFX:()=>Nw,U_SKIN:()=>zw,U_SOLID:()=>Ow,U_SOUND:()=>Sw});var ww=1,xw=2,Sw=4,Aw=8,Ew=16,kw=32,bw=64,Tw=128,Mw=256,Rw=512,zw=1024,Lw=2048,Nw=4096,Ow=8192,Iw=16384,Cw=32768,Pw=1,Dw=2,Fw=4,Uw=32768;var F=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="super_shotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="hand_grenade",e.GrenadeLauncher="grenade_launcher",e.RocketLauncher="rocket_launcher",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))(F||{}),$=(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))($||{}),vM=Object.keys($).length/2,Re=(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))(Re||{});function wt(e,t){return(e&t)!==0}var _n=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(_n||{}),Bw={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 Gw(e,t,n){if(e<=0||wt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Bw[n.armorType],r=wt(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 Hw(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(wt(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 _={x:o.x/l,y:o.y/l,z:o.z/l};if(_.x*s.x+_.y*s.y+_.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;wt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let h=d/u;wt(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let f=Math.max(u,h),x=Math.max(0,r.cellCount-f);return{saved:d,remainingCells:x}}var yM={[Re.Shells]:{id:Re.Shells,ammoType:$.Shells,quantity:10,weaponAmmo:!1},[Re.Bullets]:{id:Re.Bullets,ammoType:$.Bullets,quantity:50,weaponAmmo:!1},[Re.Rockets]:{id:Re.Rockets,ammoType:$.Rockets,quantity:5,weaponAmmo:!1},[Re.Grenades]:{id:Re.Grenades,ammoType:$.Grenades,quantity:5,weaponAmmo:!0},[Re.Cells]:{id:Re.Cells,ammoType:$.Cells,quantity:50,weaponAmmo:!1},[Re.Slugs]:{id:Re.Slugs,ammoType:$.Slugs,quantity:10,weaponAmmo:!1}};var me=(e=>(e.Blue="blue",e.Red="red",e.Green="green",e.Yellow="yellow",e.DataCD="data_cd",e.PowerCube="power_cube",e.ExplosiveCharges="explosive_charges",e.PowerCore="power_core",e.Pyramid="pyramid",e.DataSpinner="data_spinner",e.Pass="pass",e.CommanderHead="commander_head",e.Airstrike="airstrike",e.NukeContainer="nuke_container",e.Nuke="nuke",e.RedFlag="red_flag",e.BlueFlag="blue_flag",e))(me||{});var Vw={...G};var wM=Object.freeze({aiflags:0,last_sighting:Vw,trail_time:0,pausetime:0});var Ps=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],Ww=20,Kw=440,$w=940,vs=32,Xw=1<<24,rr=1;function Fu(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 St(e,t){let n=Fu(e),i=Fu(t),r=Uy(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Yw(e){return e<=Ww?"melee":e<=Kw?"near":e<=$w?"mid":"far"}function ei(e,t){let{forward:n}=J(e.angles),i=P(L(t.origin,e.origin)),r=Zu(i,n);return(e.spawnflags&rr)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function gn(e,t,n,i){if((t.flags&Xw)!==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}function Zw(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=lr(n)}function td(e){e.angles.y=As(e.ideal_yaw)}function jw(e,t,n){e.enemy&&(e.goalentity=e.enemy,Zw(e,e.enemy),td(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function qw(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){jw(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 Jw(e,t,n,i){let r=St(e,t),a=Yw(r);return a==="far"||t.light_level<=5||!gn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||ei(e,t):a==="mid"?ei(e,t):!0}function Qw(e,t,n,i,r){if((e.spawnflags&rr)!==0){if(!gn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=L(t.origin,e.origin);return mn(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=lr(a),td(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function ex(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&rr)===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&rr)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function tx(e){return(e.flags&vs)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&vs)!==0:!!(e.enemy&&(e.enemy.flags&vs)!==0)}function Ds(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}=ex(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(tx(a))return!1;if(s){if(!Qw(e,a,t,r,i))return!1}else{if(!Jw(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return qw(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function nd(e,t){if(t===0)return{x:0,y:0,z:0};let n=tr(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Fs(e,t,n){let i=nd(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ii(e,t){let n=As(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=As(n+a)}function le(e,t){Fs(e,e.angles.y,t)}function mr(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=lr(n)}function ae(e,t,n){Ds(e,n.targetAwareness,n,n.trace)||ii(e,t)}function he(e,t,n,i){if(!Ds(e,i.targetAwareness,i,i.trace)&&(mr(e,e.goalentity),ii(e,n),t!==0&&Fs(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&St(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 de(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Ds(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&mr(e,e.enemy??e.goalentity),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&id(e,e.angles.y,t,i)}function nx(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&mr(e,t),ii(e,i),n!==0&&Fs(e,e.angles.y,n)}function se(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&mr(e,e.enemy),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&id(e,e.angles.y,t,i)}function ix(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,ir);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&nw?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function rx(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,ir).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,ir).fraction<1))return!0;return!1}function id(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=nd(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,ir).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!rx(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&ix(e,i),!0)}var ax=Ps.filter(e=>e.save||e.type==="callback"),xM=new Map(ax.map(e=>[e.name,e]));var SM=1/40;function sx(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var ox=1;function cx(e,t){if(!e.client)return;let n=sx(e.client.weaponStates,F.Chaingun);!(e.client.buttons&ox)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var AM={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:F.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:F.Shotgun,ammoType:$.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:F.SuperShotgun,ammoType:$.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:F.Machinegun,ammoType:$.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:cx},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:F.Chaingun,ammoType:$.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:F.HandGrenade,ammoType:$.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:F.GrenadeLauncher,ammoType:$.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:F.RocketLauncher,ammoType:$.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:F.HyperBlaster,ammoType:$.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:F.Railgun,ammoType:$.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:F.BFG10K,ammoType:$.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function lx(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 ux(e,t,n,i,r){if(wt(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=P(n),c=V(o,(t===e?1600:500)*i/s);return e.velocity=H(e.velocity,c),c}function dx(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=Hw(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=Gw(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function Uu(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function fe(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=lx(n,u),h=s*d,f=o*d;if(!wt(l,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let _=ux(e,n,i,f,l),[v,y,S,g,A]=dx(e,r,a,h,l);e.powerArmor&&g!==void 0&&(e.powerArmor.cellCount=g),e.regularArmor&&(e.regularArmor.armorCount=A??e.regularArmor.armorCount);let b=v;b>0&&(e.health-=b,m&&!wt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,Se.temp_entity,xe.BLOOD,r,a));let k=e.health<=0;return k?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,b,r,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:y,asave:S,knocked:_,killed:k,remainingCells:g,remainingArmor:A}}function Us(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=Uu(t),h=c.canDamage??(()=>!0);for(let f of e){if(f===r||!f.takedamage||!h(f,t))continue;let x=f.mins&&f.maxs?Fy(d,H(f.origin,f.mins),H(f.origin,f.maxs)):Uu(f),_=L(d,x),v=mn(_);if(a>0&&v>a)continue;let y=i-.5*v;if(y<=0)continue;let S=f===n?y*.5:y,g=P(L(f.origin,d)),A=fe(f,t,n,g,x,g,S,S,s|1,o,l,u);m.push({target:f,result:A,appliedDamage:S})}return m}var EM=Os();var hr=.1,Qn=80;var rd=Os();function mx(){return rd.frandom()}function ad(e,t){return Math.floor(rd.frandom()*(t-e+1)+e)}function cn(e,t,n){ae(e,hr,n)}function De(e,t,n){he(e,t,hr,n)}function an(e,t,n){de(e,t,hr,n)}function ie(e,t,n){se(e,t,hr,n)}function C(e,t,n){le(e,t)}var ti={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 Ge(e,t){t.sound(e,2,ti.footstep,1,1,0)}function ar(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function hx(e,t){}var Bs,sd,fx,od,_x,gx,px,vx,yx,cd,wx;function xx(e,t){ar(e,Bs)}function Sx(e,t){e.monsterinfo.aiflags&1||e.enemy||mx()>.15||(ar(e,sd),t.sound(e,1,ti.idle,1,2,0))}var Ax=[{ai:cn,dist:0,think:Sx},{ai:cn,dist:0},{ai:cn,dist:0},{ai:cn,dist:0},{ai:cn,dist:0}];Bs={firstframe:0,lastframe:4,frames:Ax,endfunc:null};var Ex=Array.from({length:20},()=>({ai:cn,dist:0}));sd={firstframe:5,lastframe:24,frames:Ex,endfunc:xx};var kx=[{ai:De,dist:9.1},{ai:De,dist:6.3},{ai:De,dist:4.9},{ai:De,dist:6.7,think:Ge},{ai:De,dist:6},{ai:De,dist:8.2},{ai:De,dist:7.2},{ai:De,dist:6.1},{ai:De,dist:4.9},{ai:De,dist:4.7,think:Ge},{ai:De,dist:4.7}];fx={firstframe:25,lastframe:35,frames:kx,endfunc:null};var bx=[{ai:an,dist:21},{ai:an,dist:11,think:Ge},{ai:an,dist:21},{ai:an,dist:25,think:hx},{ai:an,dist:18,think:Ge},{ai:an,dist:19}];od={firstframe:36,lastframe:41,frames:bx,endfunc:null};function ri(e,t){e.monsterinfo.aiflags&1?ar(e,Bs):ar(e,od)}function ld(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*Qn,y:a.y+s.y*Qn,z:a.z+s.z*Qn},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function Tx(e,t){ld(e,{x:Qn,y:0,z:-24},ad(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function ud(e,t){t.sound(e,1,ti.punch,1,1,0)}var Mx=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:ud},{ai:ie,dist:0,think:Tx},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0}];_x={firstframe:67,lastframe:74,frames:Mx,endfunc:ri};function Rx(e,t){ld(e,{x:Qn,y:0,z:-4},ad(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var zx=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:Ge},{ai:ie,dist:0},{ai:ie,dist:0,think:ud},{ai:ie,dist:0},{ai:ie,dist:0,think:Rx},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0}];gx={firstframe:75,lastframe:86,frames:zx,endfunc:ri};function Lx(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=P(L(o.origin,e.origin));fe(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Gs(e,t){t.sound(e,1,ti.thud,1,1,0),t.sound(e,2,ti.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,Se.temp_entity,xe.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},Lx(e,e,8,165,300,t)}function Nx(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Gs(e,r))}function Hs(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Ox(e,t){if(!e.enemy)return;let n=L(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=P({x:n.x,y:n.y,z:0}),s=hn(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)=>{Nx(l,c,u,m,t),l.groundentity&&(l.frame=104,Gs(l,t),l.touch=void 0)},Hs(e,t)}function Ix(e,t){if(Hs(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Gs(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Cx=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:C,dist:0,think:Ox},{ai:C,dist:0,think:Hs},{ai:C,dist:0,think:Ix},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge}];px={firstframe:87,lastframe:109,frames:Cx,endfunc:ri};var Px=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];vx={firstframe:149,lastframe:152,frames:Px,endfunc:ri};var Dx=Array.from({length:20},(e,t)=>({ai:C,dist:0,think:t%5===4?Ge:void 0}));yx={firstframe:153,lastframe:172,frames:Dx,endfunc:ri};function dd(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=cd.lastframe,e.nextthink=-1,e.deadflag=2}var Fx=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];cd={firstframe:173,lastframe:185,frames:Fx,endfunc:dd};var Ux=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];wx={firstframe:186,lastframe:193,frames:Ux,endfunc:dd};function Bx(e,t,n,i,r,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&fe(u,c,c.owner,c.velocity,c.origin,m?m.normal:G,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(c.origin,120);Us(h,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Se.temp_entity,xe.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function md(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);Us(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,Se.temp_entity,xe.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 hd(e,t,n,i,r,a,s){let o=e.spawn();s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,m)=>{if(c!==l.owner){if(c&&c.takedamage)fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=xe.BLASTER;s===58&&(d=xe.BLUEHYPERBLASTER),e.multicast(l.origin,1,Se.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o)}function Gx(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&&l&&l.takedamage){fe(l,o,o.owner,o.velocity,o.origin,c?c.normal:G,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}},s.think=o=>{e.multicast(o.origin,1,Se.temp_entity,xe.WELDING_SPARKS,o.origin,G,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function Hx(e,t,n,i,r,a){hd(e,t,n,i,r,a,58)}function Vx(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=P(L(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 h=0;h<l;h++){let f=e.trace(m,null,null,o,t,ke|Dt|fn|dr);if(!f.ent||f.fraction>=1||(f.ent.takedamage&&f.ent!==t.owner&&fe(f.ent,t,t.owner,s,f.endpos,G,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(f.ent.svflags&4)&&!f.ent.client&&f.ent.classname!=="misc_explobox"))break;c.push(f.ent),u.push(f.ent.solid),f.ent.solid=0,m={...f.endpos}}let d=e.trace(r,null,null,o,t,ke);e.multicast(t.origin,2,Se.temp_entity,xe.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function Wx(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,tw).fraction<1||Vx(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function Kx(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=L(e.origin,r),s=mn(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&fe(i,e,e.owner,e.velocity,r,G,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 $x(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,m)=>{if(c===l.owner)return;c&&c.takedamage&&fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Us(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,Se.temp_entity,xe.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=G,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(h,f)=>Kx(h,f),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>Wx(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function Bu(){return 2*Math.random()-1}function sr(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let h=hn(n),{right:f,up:x}=J(h),_=Bu()*a,v=Bu()*s;u={x:n.x+f.x*_+x.x*v,y:n.y+f.y*_+x.y*v,z:n.z+f.z*_+x.z*v},u=P(u)}let m=H(t,V(u,8192)),d=l.trace(t,m,G,G,e,yt);!d.ent||d.fraction===1||fe(d.ent,e,e,u,d.endpos,d.plane?.normal||G,i,r,18,c,l.timeSeconds)}var Pt=sr;function Xx(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Pt(e,t,n,i,r,a,s,l,c,u)}function ot(e,t,n,i,r,a,s,o,l=1){hd(o,e,t,n,i,r,l)}function Yx(e,t,n,i,r,a,s,o){Hx(o,e,t,n,i,r)}function Zx(e,t,n,i,r,a,s,o){Gx(o,e,t,n,i,r)}function jx(e,t,n,i,r,a,s){md(s,e,t,n,i,r)}function ai(e,t,n,i,r,a,s){Bx(s,e,t,n,i,120,r)}function fd(e,t,n,i,r,a,s,o,l){$x(l,e,t,n,i,r,s)}function _d(e,t,n,i,r,a,s){let o=H(t,V(n,8192)),l=s.trace(t,o,G,G,e,yt);s.multicast(t,2,Se.temp_entity,xe.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&fe(l.ent,e,e,n,l.endpos,G,i,r,6,11,s.timeSeconds)}function si(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=H(s,V(a,o)),c=r.trace(s,l,G,G,e,yt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=P(L(c.endpos,s));return fe(c.ent,e,e,u,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds),!0}return!1}function qx(e,t,n,i,r,a,s,o){ai(e,t,n,i,r,a,o)}function Gu(e,t){let n={...e.origin},i=H(n,V(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,G,G,e,ke|Dt|fn|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,G,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,Se.temp_entity,xe.LASER_SPARKS,10,c.endpos,c.plane?.normal||G,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 Jx(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Es(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?Jx(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),Gu(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),Gu(a,r)}var Vs=.1,Qx={x:0,y:30,z:-15},eS={x:0,y:15,z:0},tS={x:0,y:-15,z:0},nS={x:0,y:-30,z:-15},iS={x:30,y:20,z:0},rS={x:30,y:-20,z:0};function aS(e,t,n){ae(e,Vs,n)}function sS(e,t,n){he(e,t,Vs,n)}function fr(e,t,n){se(e,t,Vs,n)}function Ws(e,t,n){le(e,t)}var Ks,gd,pd,oS,vd,yd,cS,lS,uS,wd;function dS(e){e.monsterinfo.current_move=Ks}function mS(e){e.monsterinfo.current_move=gd}function oi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=pd:e.monsterinfo.current_move=Ks}function xd(e){e.monsterinfo.current_move=vd}function hS(e){e.enemy&&ei(e,e.enemy)&&Math.random()<=.7?xd(e):e.monsterinfo.current_move=yd}function ks(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function fS(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=ks(e,iS),i=P(L(e.enemy.origin,n));Pt(e,n,i,6,4,.1,.05,0,t,4);let r=ks(e,rS),a=P(L(e.enemy.origin,r));Pt(e,r,a,6,4,.1,.05,0,t,4)}function _S(e,t){if(!e.enemy)return;let n=[Qx,eS,tS,nS],i=n[Math.floor(Math.random()*n.length)],r=ks(e,i),a=P(L(e.enemy.origin,r));ai(e,r,a,50,500,0,t)}function gS(e){e.monsterinfo.nextframe=wd.lastframe,e.nextthink=-1}var Sd=Array.from({length:20},()=>({ai:sS,dist:10}));gd={firstframe:0,lastframe:19,frames:Sd,endfunc:mS};pd={firstframe:0,lastframe:19,frames:Sd,endfunc:oi};var pS=Array.from({length:21},()=>({ai:aS,dist:0}));Ks={firstframe:29,lastframe:49,frames:pS,endfunc:dS};var vS=Array.from({length:9},(e,t)=>({ai:fr,dist:2,think:t===8?xd:null}));oS={firstframe:50,lastframe:58,frames:vS,endfunc:null};var yS=Array.from({length:6},()=>({ai:fr,dist:2,think:fS}));vd={firstframe:59,lastframe:64,frames:yS,endfunc:hS};var wS=Array.from({length:4},()=>({ai:fr,dist:2}));yd={firstframe:65,lastframe:68,frames:wS,endfunc:oi};var xS=Array.from({length:21},(e,t)=>({ai:fr,dist:2,think:t===12?_S:null}));cS={firstframe:69,lastframe:89,frames:xS,endfunc:oi};var SS=Array.from({length:18},()=>({ai:Ws,dist:0}));lS={firstframe:90,lastframe:107,frames:SS,endfunc:oi};var AS=Array.from({length:4},()=>({ai:Ws,dist:0}));uS={firstframe:108,lastframe:111,frames:AS,endfunc:oi};var ES=Array.from({length:49},()=>({ai:Ws,dist:0}));wd={firstframe:112,lastframe:160,frames:ES,endfunc:gS};var _r=.1,$s=80,gr=Math.random;function Ad(e,t,n){ae(e,_r,n)}function Fe(e,t,n){he(e,t,_r,n)}function Ue(e,t,n){de(e,t,_r,n)}function M(e,t,n){se(e,t,_r,n)}function O(e,t,n){le(e,t)}var Xs,kS,bS,Ed,kd,TS,MS,RS,zS,LS,NS,OS,IS,CS;function bd(e){e.monsterinfo.current_move=Xs}function At(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Xs:e.monsterinfo.current_move=Ed}function PS(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function DS(e,t){let n={x:$s,y:e.maxs.x,z:8};si(e,n,15+Math.floor(gr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function FS(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function US(e,t){let n={x:$s,y:e.mins.x,z:8};si(e,n,15+Math.floor(gr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Td(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Md(e,t){si(e,{x:$s,y:0,z:8},10+Math.floor(gr()*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 Rd(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=kd)}function Hu(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,G,G,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,xe.PARASITE_ATTACK,e,i,r);let s=L(i,r);fe(e.enemy,e,e,s,e.enemy.origin,G,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=J(e.angles).forward;e.enemy.velocity=V(o,-1200)}var Vu=[{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}],Wu=[{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 BS(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>=Vu.length)&&(s=0);let o=Vu[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=P(L(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function GS(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>=Wu.length)&&(s=0);let o=Wu[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=P(L(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function qe(e,t){Es(e,1,!1,BS,t),Es(e,1,!0,GS,t)}function HS(e){gr()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function VS(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function WS(e){}function KS(e){e.monsterinfo.aiflags&=-17}var $S=Array.from({length:30},()=>({ai:Ad,dist:0}));Xs={firstframe:162,lastframe:191,frames:$S,endfunc:bd};var XS=Array.from({length:30},()=>({ai:Ad,dist:0}));kS={firstframe:192,lastframe:221,frames:XS,endfunc:bd};var YS=[{ai:Fe,dist:7},{ai:Fe,dist:2},{ai:Fe,dist:3},{ai:Fe,dist:3},{ai:Fe,dist:1},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:9},{ai:Fe,dist:-4},{ai:Fe,dist:-1},{ai:Fe,dist:2}];bS={firstframe:0,lastframe:10,frames:YS,endfunc:null};var ZS=[{ai:Ue,dist:9},{ai:Ue,dist:2},{ai:Ue,dist:3},{ai:Ue,dist:3},{ai:Ue,dist:1},{ai:Ue,dist:0},{ai:Ue,dist:0},{ai:Ue,dist:10},{ai:Ue,dist:-4},{ai:Ue,dist:-1},{ai:Ue,dist:2}];Ed={firstframe:0,lastframe:10,frames:ZS,endfunc:null};var jS=[{ai:M,dist:8},{ai:M,dist:3},{ai:M,dist:5},{ai:M,dist:0},{ai:M,dist:-3,think:PS},{ai:M,dist:0},{ai:M,dist:-5},{ai:M,dist:-7,think:DS},{ai:M,dist:0},{ai:M,dist:6,think:FS},{ai:M,dist:1},{ai:M,dist:2,think:US},{ai:M,dist:-3},{ai:M,dist:6},{ai:M,dist:-1},{ai:M,dist:-3},{ai:M,dist:2},{ai:M,dist:-11}];kd={firstframe:53,lastframe:70,frames:jS,endfunc:At};var qS=[{ai:M,dist:5},{ai:M,dist:-4},{ai:M,dist:-4},{ai:M,dist:-3},{ai:M,dist:0,think:Td},{ai:M,dist:0},{ai:M,dist:13,think:Md},{ai:M,dist:0},{ai:M,dist:2},{ai:M,dist:0},{ai:M,dist:-9,think:Rd},{ai:M,dist:0},{ai:M,dist:4},{ai:M,dist:3},{ai:M,dist:2},{ai:M,dist:-3},{ai:M,dist:-6}];TS={firstframe:71,lastframe:87,frames:qS,endfunc:At};var JS=[{ai:M,dist:5},{ai:M,dist:-4},{ai:M,dist:-4},{ai:M,dist:-3},{ai:M,dist:0,think:Td},{ai:M,dist:0,think:Hu},{ai:M,dist:13},{ai:M,dist:0,think:Md},{ai:M,dist:2},{ai:M,dist:0,think:Hu},{ai:M,dist:-9,think:Rd},{ai:M,dist:0},{ai:M,dist:4},{ai:M,dist:3},{ai:M,dist:2},{ai:M,dist:-3},{ai:M,dist:-6}];MS={firstframe:71,lastframe:87,frames:JS,endfunc:At};var QS=[{ai:M,dist:9,think:qe},{ai:M,dist:2,think:qe},{ai:M,dist:3,think:qe},{ai:M,dist:3,think:qe},{ai:M,dist:1,think:qe},{ai:M,dist:0,think:qe},{ai:M,dist:0,think:qe},{ai:M,dist:10,think:qe},{ai:M,dist:-4,think:qe},{ai:M,dist:-1,think:qe},{ai:M,dist:2,think:HS}];RS={firstframe:0,lastframe:10,frames:QS,endfunc:At};var eA=[{ai:O,dist:-6},{ai:O,dist:-2},{ai:O,dist:-6},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:7},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:-1}];zS={firstframe:88,lastframe:108,frames:eA,endfunc:At};var tA=[{ai:O,dist:-2},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:1},{ai:O,dist:-2}];LS={firstframe:109,lastframe:116,frames:tA,endfunc:At};var nA=[{ai:O,dist:-2},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:3},{ai:O,dist:0},{ai:O,dist:-4}];NS={firstframe:117,lastframe:122,frames:nA,endfunc:At};var iA=Array.from({length:18},()=>({ai:O,dist:0}));OS={firstframe:123,lastframe:140,frames:iA,endfunc:zd};var rA=[{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:9},{ai:O,dist:0}];IS={firstframe:141,lastframe:145,frames:rA,endfunc:zd};var aA=[{ai:O,dist:0},{ai:O,dist:-2,think:VS},{ai:O,dist:17,think:WS},{ai:O,dist:-3},{ai:O,dist:-1,think:KS},{ai:O,dist:-5},{ai:O,dist:-6},{ai:O,dist:-6}];CS={firstframe:146,lastframe:153,frames:aA,endfunc:At};function zd(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var pr=.1,sA=80,pn=Math.random;function Ld(e,t,n){ae(e,pr,n)}function oA(e,t,n){he(e,t,pr,n)}function cA(e,t,n){de(e,t,pr,n)}function I(e,t,n){se(e,t,pr,n)}function vn(e,t,n){le(e,t)}var Ys,Nd,Od,lA,Zs,bs,uA,js,Id,dA,mA,hA,fA,_A,gA,Cd;function Pd(e){e.monsterinfo.current_move=Ys}function pA(e){e.monsterinfo.current_move=Nd}function Ft(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Ys;return}e.monsterinfo.current_move=Od}function vA(e){e.monsterinfo.aiflags&4||e.enemy||pn()<=.3&&(e.monsterinfo.current_move=Cd)}function yA(e,t){pn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function wA(e,t){let n={x:sA,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),si(e,n,10+Math.floor(pn()*6),100,t)}function xA(e,t){let{forward:n,right:i}=J(e.angles),r={x:0,y:20,z:40},a=H(e.origin,V(n,r.x)),s=V(i,r.y),o=H(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=G;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=L(m,l);!u&&e.enemy&&(pn()<.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 h=P(d);e.skin>1?qx(e,l,h,50,c,0,.075,t):ai(e,l,h,50,c,0,t)}function SA(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=L(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=hn(n).y}}function AA(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function EA(e){e.monsterinfo.current_move=Zs}function kA(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=bs;return}if(e.enemy&&e.enemy.health>0&&pn()<=.6){e.monsterinfo.current_move=Zs;return}e.monsterinfo.current_move=bs}function bA(e){if(e.enemy&&e.enemy.health>0&&pn()<=.9){e.monsterinfo.current_move=js;return}e.monsterinfo.current_move=Id}function TA(e){e.monsterinfo.current_move=js}var MA=Array.from({length:30},(e,t)=>({ai:Ld,dist:0,think:t===8?(n,i)=>yA(n,i):null}));Cd={firstframe:201,lastframe:230,frames:MA,endfunc:Pd};var RA=Array.from({length:30},(e,t)=>({ai:Ld,dist:0,think:t===29?vA:null}));Ys={firstframe:101,lastframe:130,frames:RA,endfunc:Pd};var zA=Array.from({length:10},()=>({ai:oA,dist:6}));Nd={firstframe:171,lastframe:180,frames:zA,endfunc:pA};var LA=Array.from({length:10},()=>({ai:cA,dist:12}));Od={firstframe:171,lastframe:180,frames:LA,endfunc:Ft};var NA=Array.from({length:5},()=>({ai:vn,dist:0}));dA={firstframe:90,lastframe:94,frames:NA,endfunc:Ft};var OA=Array.from({length:5},()=>({ai:vn,dist:0}));mA={firstframe:95,lastframe:99,frames:OA,endfunc:Ft};var IA=Array.from({length:21},()=>({ai:vn,dist:0}));hA={firstframe:100,lastframe:120,frames:IA,endfunc:Ft};var CA=Array.from({length:12},()=>({ai:vn,dist:0}));fA={firstframe:48,lastframe:59,frames:CA,endfunc:Dd};var PA=Array.from({length:23},()=>({ai:vn,dist:0}));_A={firstframe:60,lastframe:82,frames:PA,endfunc:Dd};function Dd(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var DA=[{ai:I,dist:0,think:SA},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:0},{ai:I,dist:-3},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:7},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:0,think:EA}];lA={firstframe:0,lastframe:12,frames:DA,endfunc:null};var FA=[{ai:I,dist:19,think:xA},{ai:I,dist:-6},{ai:I,dist:-5},{ai:I,dist:-2},{ai:I,dist:-7},{ai:I,dist:0},{ai:I,dist:1},{ai:I,dist:10,think:AA},{ai:I,dist:4},{ai:I,dist:5},{ai:I,dist:6},{ai:I,dist:6},{ai:I,dist:4},{ai:I,dist:3,think:kA}];Zs={firstframe:13,lastframe:26,frames:FA,endfunc:null};var UA=[{ai:I,dist:-3},{ai:I,dist:0},{ai:I,dist:-6},{ai:I,dist:-4},{ai:I,dist:-2}];bs={firstframe:27,lastframe:31,frames:UA,endfunc:Ft};var BA=[{ai:I,dist:1},{ai:I,dist:8},{ai:I,dist:3}];uA={firstframe:32,lastframe:34,frames:BA,endfunc:TA};var GA=[{ai:I,dist:1},{ai:I,dist:7,think:wA},{ai:I,dist:-7},{ai:I,dist:1},{ai:I,dist:-1},{ai:I,dist:1},{ai:I,dist:0},{ai:I,dist:1},{ai:I,dist:-2,think:bA}];js={firstframe:35,lastframe:43,frames:GA,endfunc:null};var HA=[{ai:I,dist:-6},{ai:I,dist:-1},{ai:I,dist:-6},{ai:I,dist:0}];Id={firstframe:44,lastframe:47,frames:HA,endfunc:Ft};var VA=Array.from({length:7},()=>({ai:vn,dist:0}));gA={firstframe:83,lastframe:89,frames:VA,endfunc:Ft};var vr=.1,WA=80,KA=24;function $A(e,t,n){ae(e,vr,n)}function XA(e,t,n){he(e,t,vr,n)}function Fd(e,t,n){de(e,t,vr,n)}function oe(e,t,n){se(e,t,vr,n)}function qs(e,t,n){le(e,t)}var YA,ZA,Ud,Bd,jA,qA,JA,QA;function e5(e){e.monsterinfo.current_move=Bd}function Js(e){e.monsterinfo.current_move=Ud}function Ku(e,t){si(e,{x:WA,y:0,z:0},5,0,t)}function t5(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var n5=[{ai:$A,dist:0}];YA={firstframe:41,lastframe:41,frames:n5,endfunc:null};var i5=Array.from({length:24},()=>({ai:Fd,dist:KA}));Bd={firstframe:70,lastframe:93,frames:i5,endfunc:null};var r5=Array.from({length:6},()=>({ai:Fd,dist:8}));Ud={firstframe:65,lastframe:70,frames:r5,endfunc:e5};var a5=Array.from({length:24},()=>({ai:XA,dist:4}));ZA={firstframe:41,lastframe:64,frames:a5,endfunc:null};var s5=Array.from({length:5},()=>({ai:qs,dist:0}));qA={firstframe:99,lastframe:103,frames:s5,endfunc:Js};var o5=Array.from({length:5},()=>({ai:qs,dist:0}));JA={firstframe:94,lastframe:98,frames:o5,endfunc:Js};var c5=[{ai:oe,dist:0,think:t5},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:Ku},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:Ku},{ai:oe,dist:0}];jA={firstframe:0,lastframe:19,frames:c5,endfunc:Js};function l5(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var u5=Array.from({length:56},()=>({ai:qs,dist:0}));QA={firstframe:104,lastframe:159,frames:u5,endfunc:l5};var yr=.1;function d5(e,t,n){ae(e,yr,n)}function m5(e,t,n){he(e,t,yr,n)}function h5(e,t,n){de(e,t,yr,n)}function f5(e,t,n){se(e,t,yr,n)}function Gd(e,t,n){le(e,t)}var Qs,Hd,Vd,_5,g5,Wd;function p5(e){e.monsterinfo.current_move=Qs}function v5(e){e.monsterinfo.current_move=Hd}function eo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vd:e.monsterinfo.current_move=Qs}function y5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function w5(e){e.monsterinfo.nextframe=Wd.lastframe,e.nextthink=-1}var x5=Array.from({length:46},()=>({ai:d5,dist:0}));Qs={firstframe:0,lastframe:45,frames:x5,endfunc:p5};var S5=Array.from({length:46},()=>({ai:m5,dist:5}));Hd={firstframe:0,lastframe:45,frames:S5,endfunc:v5};var A5=Array.from({length:46},()=>({ai:h5,dist:10}));Vd={firstframe:0,lastframe:45,frames:A5,endfunc:eo};var E5=Array.from({length:20},(e,t)=>({ai:f5,dist:0,think:t===10?y5:null}));_5={firstframe:46,lastframe:65,frames:E5,endfunc:eo};var k5=Array.from({length:6},()=>({ai:Gd,dist:0}));g5={firstframe:66,lastframe:71,frames:k5,endfunc:eo};var b5=Array.from({length:10},()=>({ai:Gd,dist:0}));Wd={firstframe:84,lastframe:93,frames:b5,endfunc:w5};var wr=.1;function T5(e,t,n){ae(e,wr,n)}function M5(e,t,n){he(e,t,wr,n)}function R5(e,t,n){de(e,t,wr,n)}function z5(e,t,n){se(e,t,wr,n)}function Kd(e,t,n){le(e,t)}var to,$d,Xd,L5,N5,Yd;function O5(e){e.monsterinfo.current_move=to}function I5(e){e.monsterinfo.current_move=$d}function no(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xd:e.monsterinfo.current_move=to}function C5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function P5(e,t){if(!e.enemy)return;let n=5+Math.random()*5;St(e,e.enemy)<=80&&ei(e,e.enemy)&&fe(e.enemy,e,e,P(L(e.enemy.origin,e.origin)),e.enemy.origin,G,n,5,2,0,t.timeSeconds)}function D5(e){e.monsterinfo.nextframe=Yd.lastframe,e.nextthink=-1}var F5=Array.from({length:46},()=>({ai:T5,dist:0}));to={firstframe:0,lastframe:45,frames:F5,endfunc:O5};var U5=Array.from({length:46},()=>({ai:M5,dist:5}));$d={firstframe:0,lastframe:45,frames:U5,endfunc:I5};var B5=Array.from({length:46},()=>({ai:R5,dist:10}));Xd={firstframe:0,lastframe:45,frames:B5,endfunc:no};var G5=Array.from({length:20},(e,t)=>({ai:z5,dist:0,think:t===10?C5:t===12?P5:null}));L5={firstframe:46,lastframe:65,frames:G5,endfunc:no};var H5=Array.from({length:6},()=>({ai:Kd,dist:0}));N5={firstframe:66,lastframe:71,frames:H5,endfunc:no};var V5=Array.from({length:10},()=>({ai:Kd,dist:0}));Yd={firstframe:84,lastframe:93,frames:V5,endfunc:D5};var xr=.1;function W5(e,t,n){ae(e,xr,n)}function K5(e,t,n){he(e,t,xr,n)}function $5(e,t,n){de(e,t,xr,n)}function Zd(e,t,n){se(e,t,xr,n)}function jd(e,t,n){le(e,t)}var io,qd,Jd,X5,Y5,Z5,Qd;function j5(e){e.monsterinfo.current_move=io}function q5(e){e.monsterinfo.current_move=qd}function Sr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Jd:e.monsterinfo.current_move=io}function J5(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Q5(e,t){if(!e.enemy||!ei(e,e.enemy))return;let n=St(e,e.enemy);if(J5(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(L(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 eE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(L(e.enemy.origin,n));_d(e,n,i,50,100,0,t)}function tE(e){e.monsterinfo.nextframe=Qd.lastframe,e.nextthink=-1}var nE=Array.from({length:30},()=>({ai:W5,dist:0}));io={firstframe:0,lastframe:29,frames:nE,endfunc:j5};var iE=Array.from({length:40},()=>({ai:K5,dist:3}));qd={firstframe:30,lastframe:69,frames:iE,endfunc:q5};var rE=Array.from({length:20},()=>({ai:$5,dist:12}));Jd={firstframe:70,lastframe:89,frames:rE,endfunc:Sr};var aE=Array.from({length:10},(e,t)=>({ai:Zd,dist:0,think:t===5?Q5:null}));X5={firstframe:90,lastframe:99,frames:aE,endfunc:Sr};var sE=Array.from({length:12},(e,t)=>({ai:Zd,dist:0,think:t===6?eE:null}));Y5={firstframe:100,lastframe:111,frames:sE,endfunc:Sr};var oE=Array.from({length:6},()=>({ai:jd,dist:0}));Z5={firstframe:112,lastframe:117,frames:oE,endfunc:Sr};var cE=Array.from({length:12},()=>({ai:jd,dist:0}));Qd={firstframe:118,lastframe:129,frames:cE,endfunc:tE};var Ar=.1;function em(e,t,n){ae(e,Ar,n)}function lE(e,t,n){he(e,t,Ar,n)}function tm(e,t,n){de(e,t,Ar,n)}function Er(e,t,n){se(e,t,Ar,n)}function ce(e,t,n){le(e,t)}var ro,nm,uE,im,dE,mE,hE,ao,rm,fE,_E,gE,am,pE,sm;function vE(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function yE(e){e.monsterinfo.current_move=ro}function wE(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=nm)}function Ut(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=ro:e.monsterinfo.current_move=im}function xE(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function SE(e,t){e.monsterinfo.current_move=ao}function AE(e,t){if(e.enemy&&e.enemy.health>0&&gn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=ao;return}e.monsterinfo.current_move=rm}function EE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=P(L(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Pt(e,n,i,r,a,300,500,0,t,5)}function om(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),md(t,e,n,i,r,a)}function kE(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&om(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function bE(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function TE(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function ME(e,t){if(!e.enemy)return;let n=L(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=P({x:n.x,y:n.y,z:0}),s=hn(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 RE(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 zE(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=sm)}var LE=Array.from({length:30},(e,t)=>({ai:em,dist:0,think:t===29?wE:null}));ro={firstframe:0,lastframe:29,frames:LE,endfunc:null};var NE=Array.from({length:40},(e,t)=>({ai:em,dist:0,think:t===7?vE:null}));nm={firstframe:30,lastframe:69,frames:NE,endfunc:yE};var OE=[0,3,4,5,7,2,6,4,2,7,5,7,4],IE=OE.map(e=>({ai:lE,dist:e}));uE={firstframe:76,lastframe:88,frames:IE,endfunc:null};var CE=[26,9,9,9,15,10,13,6],PE=CE.map((e,t)=>({ai:tm,dist:e,think:t%4===0?zE:null}));im={firstframe:94,lastframe:101,frames:PE,endfunc:null};var DE=[32,15,10,18,8,20],FE=DE.map(e=>({ai:tm,dist:e}));dE={firstframe:102,lastframe:107,frames:FE,endfunc:null};var UE=Array.from({length:21},(e,t)=>({ai:Er,dist:0,think:[4,7,10,13].includes(t)?om:null}));hE={firstframe:108,lastframe:128,frames:UE,endfunc:Ut};var BE=Array.from({length:7},(e,t)=>({ai:Er,dist:0,think:t===0?xE:null}));mE={firstframe:137,lastframe:143,frames:BE,endfunc:SE};var GE=Array.from({length:8},()=>({ai:Er,dist:0,think:EE}));ao={firstframe:144,lastframe:151,frames:GE,endfunc:AE};var HE=Array.from({length:7},()=>({ai:Er,dist:0}));rm={firstframe:152,lastframe:158,frames:HE,endfunc:Ut};var VE=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],WE=VE.map(e=>({ai:ce,dist:e}));fE={firstframe:159,lastframe:176,frames:WE,endfunc:Ut};var KE=[-2,11,6,2,-1,-7,-2,-7],$E=KE.map(e=>({ai:ce,dist:e}));_E={firstframe:177,lastframe:184,frames:$E,endfunc:Ut};var XE=[-3,1,1,0,1],YE=XE.map(e=>({ai:ce,dist:e}));gE={firstframe:185,lastframe:189,frames:YE,endfunc:Ut};var ZE=[0,0,0,-7,-3,-5,8,6,0,0,0],jE=ZE.map(e=>({ai:ce,dist:e}));function qE(e){e.monsterinfo.nextframe=am.lastframe,e.nextthink=-1,e.solid=0}am={firstframe:190,lastframe:200,frames:jE,endfunc:qE};var JE=[{ai:ce,dist:1,think:kE},{ai:ce,dist:1},{ai:ce,dist:1,think:bE},{ai:ce,dist:0},{ai:ce,dist:-1},{ai:ce,dist:-1},{ai:ce,dist:0,think:TE},{ai:ce,dist:-1}];pE={firstframe:201,lastframe:208,frames:JE,endfunc:Ut};var QE=[{ai:ce,dist:0,think:ME},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0,think:RE},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0}];sm={firstframe:209,lastframe:216,frames:QE,endfunc:Ut};var kr=.1;function ek(e,t,n){ae(e,kr,n)}function tk(e,t,n){he(e,t,kr,n)}function nk(e,t,n){de(e,t,kr,n)}function ik(e,t,n){se(e,t,kr,n)}function cm(e,t,n){le(e,t)}var so,lm,um,rk,ak,dm;function sk(e){e.monsterinfo.current_move=so}function ok(e){e.monsterinfo.current_move=lm}function oo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=um:e.monsterinfo.current_move=so}function ck(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function lk(e){e.monsterinfo.nextframe=dm.lastframe,e.nextthink=-1}var uk=Array.from({length:46},()=>({ai:ek,dist:0}));so={firstframe:0,lastframe:45,frames:uk,endfunc:sk};var dk=Array.from({length:46},()=>({ai:tk,dist:5}));lm={firstframe:0,lastframe:45,frames:dk,endfunc:ok};var mk=Array.from({length:46},()=>({ai:nk,dist:10}));um={firstframe:0,lastframe:45,frames:mk,endfunc:oo};var hk=Array.from({length:20},(e,t)=>({ai:ik,dist:0,think:t===10?ck:null}));rk={firstframe:46,lastframe:65,frames:hk,endfunc:oo};var fk=Array.from({length:6},()=>({ai:cm,dist:0}));ak={firstframe:66,lastframe:71,frames:fk,endfunc:oo};var _k=Array.from({length:10},()=>({ai:cm,dist:0}));dm={firstframe:84,lastframe:93,frames:_k,endfunc:lk};var br=.1;function gk(e,t,n){ae(e,br,n)}function pk(e,t,n){he(e,t,br,n)}function vk(e,t,n){de(e,t,br,n)}function yk(e,t,n){se(e,t,br,n)}function mm(e,t,n){le(e,t)}var co,hm,fm,wk,xk,_m;function Sk(e){e.monsterinfo.current_move=co}function Ak(e){e.monsterinfo.current_move=hm}function lo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fm:e.monsterinfo.current_move=co}function Ek(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function kk(e){e.monsterinfo.nextframe=_m.lastframe,e.nextthink=-1}var bk=Array.from({length:46},()=>({ai:gk,dist:0}));co={firstframe:0,lastframe:45,frames:bk,endfunc:Sk};var Tk=Array.from({length:46},()=>({ai:pk,dist:5}));hm={firstframe:0,lastframe:45,frames:Tk,endfunc:Ak};var Mk=Array.from({length:46},()=>({ai:vk,dist:10}));fm={firstframe:0,lastframe:45,frames:Mk,endfunc:lo};var Rk=Array.from({length:20},(e,t)=>({ai:yk,dist:0,think:t===10?Ek:null}));wk={firstframe:46,lastframe:65,frames:Rk,endfunc:lo};var zk=Array.from({length:6},()=>({ai:mm,dist:0}));xk={firstframe:66,lastframe:71,frames:zk,endfunc:lo};var Lk=Array.from({length:10},()=>({ai:mm,dist:0}));_m={firstframe:84,lastframe:93,frames:Lk,endfunc:kk};var Tr=.1;function Nk(e,t,n){ae(e,Tr,n)}function Ok(e,t,n){he(e,t,Tr,n)}function Ik(e,t,n){de(e,t,Tr,n)}function Ck(e,t,n){se(e,t,Tr,n)}function uo(e,t,n){le(e,t)}var mo,gm,pm,Pk,Dk,vm,Fk;function Uk(e){e.monsterinfo.current_move=mo}function Bk(e){e.monsterinfo.current_move=gm}function Mr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=pm:e.monsterinfo.current_move=mo}function Gk(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=P(L(i,n));Pt(e,n,r,5,2,.05,.05,0,t,4)}var Hk=Array.from({length:22},()=>({ai:Nk,dist:0}));mo={firstframe:0,lastframe:21,frames:Hk,endfunc:Uk};var Vk=Array.from({length:15},()=>({ai:Ok,dist:4}));gm={firstframe:22,lastframe:36,frames:Vk,endfunc:Bk};var Wk=Array.from({length:8},()=>({ai:Ik,dist:12}));pm={firstframe:37,lastframe:44,frames:Wk,endfunc:Mr};var Kk=Array.from({length:15},(e,t)=>({ai:Ck,dist:0,think:t>=5&&t<=7?Gk:null}));Pk={firstframe:45,lastframe:59,frames:Kk,endfunc:Mr};var $k=Array.from({length:10},()=>({ai:uo,dist:0}));Dk={firstframe:60,lastframe:69,frames:$k,endfunc:Mr};var Xk=Array.from({length:20},()=>({ai:uo,dist:0}));function Yk(e){e.monsterinfo.nextframe=vm.lastframe,e.nextthink=-1}vm={firstframe:70,lastframe:89,frames:Xk,endfunc:Yk};var Zk=Array.from({length:5},()=>({ai:uo,dist:0}));Fk={firstframe:90,lastframe:94,frames:Zk,endfunc:Mr};var Rr=.1,jk={x:40,y:-20,z:20},qk={x:40,y:20,z:20},Jk={x:30,y:0,z:40};function Qk(e,t,n){ae(e,Rr,n)}function e2(e,t,n){he(e,t,Rr,n)}function t2(e,t,n){de(e,t,Rr,n)}function ho(e,t,n){se(e,t,Rr,n)}function ci(e,t,n){le(e,t)}var fo,ym,wm,_o,Ts,n2,i2,r2,a2,xm;function s2(e){e.monsterinfo.current_move=fo}function o2(e){e.monsterinfo.current_move=ym}function yn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wm:e.monsterinfo.current_move=fo}function c2(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&&gn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=_o:e.monsterinfo.current_move=Ts}function Ms(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function l2(e,t){if(!e.enemy)return;let n=Ms(e,qk),i=P(L(e.enemy.origin,n));sr(e,n,i,6,4,.05,.05,0,t,4);let r=Ms(e,jk),a=P(L(e.enemy.origin,r));sr(e,r,a,6,4,.05,.05,0,t,4)}function u2(e,t){if(!e.enemy)return;let n=Ms(e,Jk),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=P(L(i,n));fd(e,n,r,50,300,100,200,0,t)}function d2(e){e.monsterinfo.nextframe=xm.lastframe,e.nextthink=-1}function m2(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var h2=Array.from({length:51},()=>({ai:Qk,dist:0}));fo={firstframe:0,lastframe:50,frames:h2,endfunc:s2};var f2=Array.from({length:14},()=>({ai:e2,dist:10}));ym={firstframe:51,lastframe:64,frames:f2,endfunc:o2};var _2=Array.from({length:14},()=>({ai:t2,dist:10}));wm={firstframe:51,lastframe:64,frames:_2,endfunc:yn};var g2=Array.from({length:8},()=>({ai:ho,dist:0})),p2={firstframe:65,lastframe:72,frames:g2,endfunc:null},v2=Array.from({length:6},()=>({ai:ho,dist:0,think:l2}));_o={firstframe:73,lastframe:78,frames:v2,endfunc:c2};p2.endfunc=e=>{e.monsterinfo.current_move=_o};var y2=Array.from({length:4},()=>({ai:ci,dist:0}));Ts={firstframe:79,lastframe:82,frames:y2,endfunc:yn};var w2=Array.from({length:13},(e,t)=>({ai:ho,dist:0,think:t===6?u2:null}));n2={firstframe:83,lastframe:95,frames:w2,endfunc:yn};var x2=Array.from({length:3},()=>({ai:ci,dist:0}));i2={firstframe:96,lastframe:98,frames:x2,endfunc:yn};var S2=Array.from({length:3},()=>({ai:ci,dist:0}));r2={firstframe:99,lastframe:101,frames:S2,endfunc:yn};var A2=Array.from({length:25},()=>({ai:ci,dist:0}));a2={firstframe:102,lastframe:126,frames:A2,endfunc:yn};var E2=Array.from({length:50},(e,t)=>({ai:ci,dist:0,think:t===49?((n,i)=>{}):t===48?m2:null}));xm={firstframe:127,lastframe:176,frames:E2,endfunc:d2};var zr=.1,k2={x:30,y:28,z:24},b2={x:26,y:16,z:24},T2={x:26,y:-14,z:24};function M2(e,t,n){ae(e,zr,n)}function R2(e,t,n){he(e,t,zr,n)}function z2(e,t,n){de(e,t,zr,n)}function Sm(e,t,n){se(e,t,zr,n)}function wn(e,t,n){le(e,t)}var go,Am,Em,L2,km,N2,O2,I2,C2,bm,P2;function D2(e){e.monsterinfo.current_move=go}function F2(e){e.monsterinfo.current_move=Am}function Et(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Em:e.monsterinfo.current_move=go}function po(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function U2(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=po(e,k2),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=P(L(i,n));fd(e,n,r,50,300,100,300,0,t)}function B2(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=po(e,T2),i=P(L(e.pos1,n));_d(e,n,i,50,100,0,t)}function G2(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function H2(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=po(e,b2),i=(e.monsterinfo.nextframe||0)-km.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=L(s,n),c={...hn(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}ot(e,n,a,15,1e3,0,0,t,1)}function V2(e){e.monsterinfo.nextframe=bm.lastframe,e.nextthink=-1}var W2=Array.from({length:60},()=>({ai:M2,dist:0}));go={firstframe:0,lastframe:59,frames:W2,endfunc:D2};var K2=Array.from({length:10},()=>({ai:R2,dist:8}));Am={firstframe:60,lastframe:69,frames:K2,endfunc:F2};var $2=Array.from({length:10},()=>({ai:z2,dist:8}));Em={firstframe:60,lastframe:69,frames:$2,endfunc:Et};var X2=Array.from({length:8},(e,t)=>({ai:Sm,dist:0,think:t===3?U2:null}));L2={firstframe:70,lastframe:77,frames:X2,endfunc:Et};var Y2=Array.from({length:26},(e,t)=>({ai:wn,dist:0,think:t>=4&&t<=20?H2:null}));km={firstframe:78,lastframe:103,frames:Y2,endfunc:Et};var Z2=Array.from({length:16},(e,t)=>({ai:Sm,dist:0,think:t===7?G2:t===8?B2:null}));N2={firstframe:104,lastframe:119,frames:Z2,endfunc:Et};var j2=Array.from({length:4},()=>({ai:wn,dist:0}));O2={firstframe:120,lastframe:123,frames:j2,endfunc:Et};var q2=Array.from({length:4},()=>({ai:wn,dist:0}));I2={firstframe:124,lastframe:127,frames:q2,endfunc:Et};var J2=Array.from({length:27},()=>({ai:wn,dist:0}));C2={firstframe:128,lastframe:154,frames:J2,endfunc:Et};var Q2=Array.from({length:95},()=>({ai:wn,dist:0}));bm={firstframe:155,lastframe:249,frames:Q2,endfunc:V2};var eb=Array.from({length:13},()=>({ai:wn,dist:0}));P2={firstframe:250,lastframe:262,frames:eb,endfunc:Et};var ni=.1;function tb(e,t,n){if(e.classname==="monster_medic"&&zm(e,n)){e.monsterinfo.current_move=li;return}ae(e,ni,n)}function nb(e,t,n){he(e,t,ni,n)}function ib(e,t,n){e.classname==="monster_medic"&&zm(e,n)?e.monsterinfo.current_move=li:de(e,t,ni,n)}function Je(e,t,n){se(e,t,ni,n)}function vo(e,t,n){le(e,t)}var yo,Tm,li,rb,Mm,ab,sb,Rm;function ob(e){e.monsterinfo.current_move=yo}function cb(e){e.monsterinfo.current_move=Tm}function ui(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&St(e,e.enemy)<80){e.monsterinfo.current_move=Mm;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=li:e.monsterinfo.current_move=yo}function lb(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=P(L(e.enemy.origin,n));ot(e,n,i,2,1e3,0,0,t,10)}function vt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(St(e,e.enemy)>400){e.monsterinfo.current_move=li;return}let i=J(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=H(e.origin,H(V(r,o.x),H(V(a,o.y),V(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,Se.temp_entity,{te:xe.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function ub(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),vt(e,t)}function db(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(St(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 zm(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||!gn(e,a,r))return;let s=St(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function mb(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=V(a.forward,64),o=H(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,ke|Dt|dr);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,Se.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function hb(e){e.monsterinfo.nextframe=Rm.lastframe,e.nextthink=-1}var fb=Array.from({length:30},()=>({ai:tb,dist:0}));yo={firstframe:0,lastframe:29,frames:fb,endfunc:ob};var _b=Array.from({length:40},()=>({ai:nb,dist:3}));Tm={firstframe:30,lastframe:69,frames:_b,endfunc:cb};var gb=Array.from({length:20},()=>({ai:ib,dist:12}));li={firstframe:70,lastframe:89,frames:gb,endfunc:ui};var pb=Array.from({length:16},(e,t)=>({ai:Je,dist:0,think:t>=4&&t<=13?lb:null}));rb={firstframe:90,lastframe:105,frames:pb,endfunc:ui};var vb=[{ai:Je,dist:0,think:ub},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:db}];Mm={firstframe:106,lastframe:114,frames:vb,endfunc:ui};var yb=Array.from({length:6},()=>({ai:vo,dist:0}));sb={firstframe:116,lastframe:121,frames:yb,endfunc:ui};var wb=Array.from({length:23},(e,t)=>({ai:vo,dist:0,think:t===11?mb:null}));ab={firstframe:122,lastframe:144,frames:wb,endfunc:ui};var xb=Array.from({length:30},()=>({ai:vo,dist:0}));Rm={firstframe:161,lastframe:190,frames:xb,endfunc:hb};var di=.1;function z(e,t,n){ae(e,di,n)}function Me(e,t,n){he(e,t,di,n)}function sn(e,t,n){de(e,t,di,n)}function pt(e,t,n){se(e,t,di,n)}function Y(e,t,n){le(e,t)}function ys(e,t,n){nx(e,null,t,di)}var Lm,Nm,or,Sb,Ab,Eb,kb,Om,Im;function bb(e){e.monsterinfo.current_move=Nm}function Tb(e){e.monsterinfo.current_move=Lm}function xn(e){e.monsterinfo.current_move=or}function Cm(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=L(e.enemy.origin,e.origin);if(mn(i)>100)return;let a=P(i);fe(e.enemy,e,e,a,e.enemy.origin,G,t,0,0,0,n.timeSeconds)}function Mb(e,t){Cm(e,30,t)}function $u(e,t){Cm(e,30,t)}function ln(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=or),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=or)}function Rb(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,P(e.velocity),e.origin,G,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function zb(e,t){let n=J(e.angles).forward;e.movetype=7,e.touch=Rb,e.velocity=H(V(n,300),{x:0,y:0,z:300}),e.velocity=H(V(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function Lb(e){e.monsterinfo.nextframe=Om.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Nb=[{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},{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},{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},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0}];Lm={firstframe:0,lastframe:50,frames:Nb,endfunc:Tb};var Ob=[{ai:Me,dist:3},{ai:Me,dist:1},{ai:Me,dist:5},{ai:Me,dist:10},{ai:Me,dist:13},{ai:Me,dist:12},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:5},{ai:Me,dist:6},{ai:Me,dist:16},{ai:Me,dist:15},{ai:Me,dist:6}];Nm={firstframe:51,lastframe:63,frames:Ob,endfunc:bb};var Ib=[{ai:sn,dist:20},{ai:sn,dist:15},{ai:sn,dist:35},{ai:sn,dist:20},{ai:sn,dist:10},{ai:sn,dist:20}];or={firstframe:64,lastframe:69,frames:Ib,endfunc:xn};var Cb=[{ai:pt,dist:0},{ai:pt,dist:0},{ai:pt,dist:0,think:$u},{ai:pt,dist:0},{ai:pt,dist:0,think:Mb},{ai:pt,dist:0},{ai:pt,dist:0,think:$u},{ai:pt,dist:0}];Sb={firstframe:70,lastframe:77,frames:Cb,endfunc:xn};var Pb=[{ai:ys,dist:0},{ai:ys,dist:0},{ai:ys,dist:0,think:zb},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln}];Im={firstframe:93,lastframe:100,frames:Pb,endfunc:xn};Im.frames[3].ai=(e,t,n)=>{ln(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var Db=[{ai:Y,dist:4},{ai:Y,dist:-3},{ai:Y,dist:-8},{ai:Y,dist:2},{ai:Y,dist:5}];Ab={firstframe:78,lastframe:82,frames:Db,endfunc:xn};var Fb=[{ai:Y,dist:-24},{ai:Y,dist:11},{ai:Y,dist:5},{ai:Y,dist:-2}];Eb={firstframe:83,lastframe:86,frames:Fb,endfunc:xn};var Ub=[{ai:Y,dist:11},{ai:Y,dist:0},{ai:Y,dist:-2},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0}];kb={firstframe:87,lastframe:92,frames:Ub,endfunc:xn};var Bb=[{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}];Om={firstframe:101,lastframe:109,frames:Bb,endfunc:Lb};var Lr=.1,Gb=()=>Math.random();function K(e,t,n){ae(e,Lr,n)}function rt(e,t,n){he(e,t,Lr,n)}function at(e,t,n){de(e,t,Lr,n)}function ge(e,t,n){se(e,t,Lr,n)}function pe(e,t,n){le(e,t)}var wo,Pm,Dm,Hb,Vb,Fm,Um,Wb,Kb,xo,Bm;function $b(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Xb(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function on(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Rs(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Yb(e){e.monsterinfo.current_move=xo}function Zb(e){Gb()<=.8?e.monsterinfo.current_move=xo:e.monsterinfo.current_move=Bm}function Gm(e){e.monsterinfo.current_move=wo}function So(e){e.monsterinfo.current_move=Pm}function Hm(e){e.monsterinfo.current_move=Um}function Vm(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=wo:e.monsterinfo.current_move=Dm}function ws(e,t){let n=L(t,e);if(mn(n)>256)return!1;let a=hn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Be(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=H(e.origin,H(V(i,s.x),H(V(r,s.y),V(a,s.z)))),l=Py(e.enemy.origin);if(!ws(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!ws(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!ws(o,l)))||t.trace(o,l,G,G,e,yt).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,Se.temp_entity,{te:xe.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=P(L(o,l));fe(e.enemy,e,e,d,e.enemy.origin,G,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 jb(e){e.monsterinfo.nextframe=Fm.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var qb=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on}];wo={firstframe:83,lastframe:99,frames:qb,endfunc:Gm};var Jb=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];Kb={firstframe:100,lastframe:103,frames:Jb,endfunc:Yb};var Qb=[{ai:K,dist:0,think:Rs},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Rs},{ai:K,dist:0},{ai:K,dist:0}];xo={firstframe:104,lastframe:109,frames:Qb,endfunc:Zb};var e6=[{ai:K,dist:0,think:Rs},{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}];Bm={firstframe:110,lastframe:117,frames:e6,endfunc:Gm};var t6=[{ai:at,dist:0},{ai:at,dist:30}];Um={firstframe:68,lastframe:69,frames:t6,endfunc:Vm};var n6=[{ai:at,dist:30},{ai:at,dist:30},{ai:at,dist:22},{ai:at,dist:19},{ai:at,dist:24},{ai:at,dist:28},{ai:at,dist:25}];Dm={firstframe:70,lastframe:76,frames:n6,endfunc:Vm};var i6=[{ai:rt,dist:0},{ai:rt,dist:30,think:So}];Wb={firstframe:68,lastframe:69,frames:i6,endfunc:So};var r6=[{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}];Pm={firstframe:70,lastframe:76,frames:r6,endfunc:So};var a6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:6},{ai:pe,dist:16},{ai:pe,dist:-6},{ai:pe,dist:-7},{ai:pe,dist:0}];Vb={firstframe:57,lastframe:67,frames:a6,endfunc:Hm};var s6=[{ai:ge,dist:0,think:$b},{ai:ge,dist:0},{ai:ge,dist:15,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:-3,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:-1,think:Be},{ai:ge,dist:0,think:Xb},{ai:ge,dist:-2},{ai:ge,dist:-2},{ai:ge,dist:-3},{ai:ge,dist:0}];Hb={firstframe:39,lastframe:56,frames:s6,endfunc:Hm};var o6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Fm={firstframe:32,lastframe:38,frames:o6,endfunc:jb};var Nr=.1;var c6=2,l6=4;function u6(e,t,n){ae(e,Nr,n)}function d6(e,t,n){he(e,t,Nr,n)}function m6(e,t,n){de(e,t,Nr,n)}function Wm(e,t,n){se(e,t,Nr,n)}function Km(e,t,n){le(e,t)}var Ao,$m,Xm,h6,f6,_6,Ym;function g6(e){e.monsterinfo.current_move=Ao}function p6(e){e.monsterinfo.current_move=$m}function Or(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xm:e.monsterinfo.current_move=Ao}function mi(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function hi(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 P(L(n,t))}function v6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n);ot(e,n,i,5,600,0,0,t,1)}function y6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),Xx(e,n,i,r,a,o,l,s,0,t,3)}function w6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Pt(e,n,i,r,a,s,o,0,t,4)}function x6(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=H(s,V(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=P(L(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function S6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n);Zx(e,n,i,5,600,0,0,t)}function A6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),Yx(e,n,i,r,a,0,0,t)}function E6(e,t){e.enemy&&Es(e,1,!1,x6,t)}function k6(e,t){e.count<2?S6(e,t):e.count<4?A6(e,t):E6(e,t)}function Zm(e,t){if(e.style===1){k6(e,t);return}e.spawnflags&c6?y6(e,t):e.spawnflags&l6?w6(e,t):v6(e,t)}var b6=Array.from({length:30},()=>({ai:u6,dist:0}));Ao={firstframe:0,lastframe:29,frames:b6,endfunc:g6};var T6=Array.from({length:40},()=>({ai:d6,dist:2}));$m={firstframe:30,lastframe:69,frames:T6,endfunc:p6};var M6=Array.from({length:20},()=>({ai:m6,dist:10}));Xm={firstframe:70,lastframe:89,frames:M6,endfunc:Or};var R6=Array.from({length:10},(e,t)=>({ai:Wm,dist:0,think:t===5?Zm:null}));h6={firstframe:90,lastframe:99,frames:R6,endfunc:Or};var z6=Array.from({length:10},(e,t)=>({ai:Wm,dist:0,think:t>=4&&t<=8?Zm:null}));f6={firstframe:90,lastframe:99,frames:z6,endfunc:Or};var L6=Array.from({length:6},()=>({ai:Km,dist:0}));_6={firstframe:100,lastframe:105,frames:L6,endfunc:Or};var N6=Array.from({length:10},()=>({ai:Km,dist:0}));function O6(e){e.monsterinfo.nextframe=Ym.lastframe,e.nextthink=-1}Ym={firstframe:106,lastframe:115,frames:N6,endfunc:O6};var jm=.1,I6={x:30,y:30,z:40},C6={x:30,y:-30,z:40},P6={x:20,y:0,z:70};function D6(e,t,n){ae(e,jm,n)}function F6(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ko:e.monsterinfo.current_move=Ir}function Eo(e,t,n){se(e,t,jm,n)}function fi(e,t,n){le(e,t)}var Ir,ko,U6,B6,qm,Jm,G6,H6,V6,Qm;function W6(e){e.monsterinfo.current_move=Ir}function Bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ko:e.monsterinfo.current_move=Ir}function bo(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function K6(e,t){if(!e.enemy)return;let n=bo(e,C6),i=P(L(e.enemy.origin,n));ai(e,n,i,50,650,0,t)}function $6(e,t){if(!e.enemy)return;let n=bo(e,P6),i=P(L(e.enemy.origin,n));jx(e,n,i,50,600,0,t)}function X6(e,t){if(!e.enemy)return;let n=bo(e,I6),i=P(L(e.enemy.origin,n));sr(e,n,i,6,4,.05,.05,0,t,4)}function Y6(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&&gn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=qm:e.monsterinfo.current_move=Jm}function Z6(e){e.monsterinfo.nextframe=Qm.lastframe,e.nextthink=-1}var j6=Array.from({length:60},()=>({ai:D6,dist:0}));Ir={firstframe:0,lastframe:59,frames:j6,endfunc:W6};var q6=Array.from({length:18},()=>({ai:F6,dist:12}));ko={firstframe:60,lastframe:77,frames:q6,endfunc:Bt};var J6=Array.from({length:4},()=>({ai:fi,dist:0}));V6={firstframe:78,lastframe:81,frames:J6,endfunc:Bt};var Q6=Array.from({length:4},()=>({ai:fi,dist:0}));H6={firstframe:82,lastframe:85,frames:Q6,endfunc:Bt};var e3=Array.from({length:4},()=>({ai:fi,dist:0}));G6={firstframe:86,lastframe:89,frames:e3,endfunc:Bt};var t3=Array.from({length:24},()=>({ai:fi,dist:0}));Qm={firstframe:90,lastframe:113,frames:t3,endfunc:Z6};var n3=Array.from({length:6},(e,t)=>({ai:Eo,dist:0,think:t===0||t===3?$6:null}));B6={firstframe:114,lastframe:119,frames:n3,endfunc:Bt};var i3=Array.from({length:27},(e,t)=>({ai:Eo,dist:0,think:t===7||t===10||t===13?K6:null}));U6={firstframe:120,lastframe:146,frames:i3,endfunc:Bt};var r3=Array.from({length:6},()=>({ai:Eo,dist:0,think:X6}));qm={firstframe:147,lastframe:152,frames:r3,endfunc:Y6};var a3=Array.from({length:14},()=>({ai:fi,dist:0}));Jm={firstframe:153,lastframe:166,frames:a3,endfunc:Bt};var To=.1;function eh(e,t,n,i,r){let a=r.trace(t,n,G,G,e,yt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return P(L(n,t));let s=H(n,V(i,-20)),o=r.trace(t,s,G,G,e,yt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return P(L(s,t));let l=H(n,V(i,20)),c=r.trace(t,l,G,G,e,yt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?P(L(l,t)):null}function th(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=L(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=lr(n)}}function s3(e,t,n){ae(e,To,n)}function o3(e,t,n){he(e,t,To,n)}function c3(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ro:e.monsterinfo.current_move=Cr}function Mo(e,t,n){se(e,t,To,n)}function nh(e,t,n){le(e,t)}var Cr,ih,Ro,l3,u3,d3,m3,rh;function h3(e){e.monsterinfo.current_move=Cr}function f3(e){e.monsterinfo.current_move=ih}function _i(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ro:e.monsterinfo.current_move=Cr}function _3(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=eh(e,n,c,l,t);if(!u)return;i=u}else i=P(L(e.enemy.origin,n));ot(e,n,i,30,1e3,0,0,t,1)}function g3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(L(e.enemy.origin,n));Pt(e,n,i,20,2,.05,.05,0,t,4)}function p3(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=eh(e,n,c,l,t);if(!u)return;i=u}else i=P(L(e.enemy.origin,n));ai(e,n,i,50,650,0,t)}function v3(e){e.monsterinfo.nextframe=rh.lastframe,e.nextthink=-1}function y3(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),_i(e)}var w3=Array.from({length:30},()=>({ai:s3,dist:0}));Cr={firstframe:0,lastframe:29,frames:w3,endfunc:h3};var x3=Array.from({length:16},()=>({ai:o3,dist:5}));ih={firstframe:30,lastframe:45,frames:x3,endfunc:f3};var S3=Array.from({length:16},()=>({ai:c3,dist:10}));Ro={firstframe:46,lastframe:61,frames:S3,endfunc:_i};var A3=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=th:t>5&&t<12&&(n=_3),{ai:Mo,dist:0,think:n}});l3={firstframe:62,lastframe:77,frames:A3,endfunc:_i};var E3=Array.from({length:20},(e,t)=>({ai:Mo,dist:0,think:t%2===0&&t>5?g3:null}));u3={firstframe:78,lastframe:97,frames:E3,endfunc:_i};var k3=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=th:(t===8||t===12||t===16)&&(n=p3),{ai:Mo,dist:0,think:n}});d3={firstframe:98,lastframe:115,frames:k3,endfunc:y3};var b3=Array.from({length:6},()=>({ai:nh,dist:0}));m3={firstframe:116,lastframe:121,frames:b3,endfunc:_i};var T3=Array.from({length:16},()=>({ai:nh,dist:0}));rh={firstframe:122,lastframe:137,frames:T3,endfunc:v3};var zo=.1;function M3(e,t,n){ae(e,zo,n)}function Lo(e,t,n){de(e,t,zo,n)}function R3(e,t,n){se(e,t,zo,n)}var No,ah,z3,L3,sh;function N3(e){e.monsterinfo.current_move=No}function Oo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ah:e.monsterinfo.current_move=No}function O3(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=P(L(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),ot(e,i,r,2,1e3,1,0,t)}var I3=Array.from({length:1},()=>({ai:M3,dist:0}));No={firstframe:0,lastframe:0,frames:I3,endfunc:N3};var C3=Array.from({length:1},()=>({ai:Lo,dist:0}));ah={firstframe:0,lastframe:0,frames:C3,endfunc:Oo};var P3=Array.from({length:8},(e,t)=>({ai:R3,dist:0,think:t===4?O3:void 0}));z3={firstframe:1,lastframe:8,frames:P3,endfunc:Oo};var D3=Array.from({length:2},()=>({ai:Lo,dist:0}));L3={firstframe:9,lastframe:10,frames:D3,endfunc:Oo};var F3=Array.from({length:4},()=>({ai:Lo,dist:0}));function U3(e){e.monsterinfo.nextframe=sh.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}sh={firstframe:11,lastframe:14,frames:F3,endfunc:U3};var kM=new Map(Ps.map(e=>[e.name,e]));var B3=2166136261,G3=16777619;function oh(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,G3)>>>0;return n>>>0}function un(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return oh(e,r)}function zs(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return oh(e,n)}var xs=2,H3=1;function ze(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ne(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function er(e,t,n){return e===void 0?n:ne(e,t)}function cr(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function nr(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ne(n,`${t} element`);return e}function V3(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=ze(e,"level");return{frameNumber:er(t.frameNumber,"level.frameNumber",0),timeSeconds:er(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:er(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:er(t.deltaSeconds,"level.deltaSeconds",0)}}function W3(e){if(e===void 0)return new qu().getState();let t=ze(e,"rng"),n=ze(t.mt,"rng.mt"),i=nr(n.state,"rng.mt.state");return{mt:{index:ne(n.index,"rng.mt.index"),state:i}}}function K3(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:ne(i.time,`thinks[${n}].time`),entityIndex:ne(i.entityIndex,`thinks[${n}].entityIndex`)}})}function $3(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:ne(i,r);return{frameNumber:ne(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ne(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ne(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ne(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function X3(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]=ne(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ne(a,`${i}[0]`),ne(s,`${i}[1]`),ne(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function Y3(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:ne(i.index,`entities[${n}].index`),fields:X3(i.fields)}})}function Z3(e){let t=ze(e,"pool");return{capacity:ne(t.capacity,"pool.capacity"),activeOrder:nr(t.activeOrder,"pool.activeOrder"),freeList:nr(t.freeList,"pool.freeList"),pendingFree:nr(t.pendingFree,"pool.pendingFree")}}function j3(e){let t=ze(e,"entities");return{timeSeconds:ne(t.timeSeconds,"entities.timeSeconds"),pool:Z3(t.pool),entities:Y3(t.entities),thinks:K3(t.thinks),awareness:$3(t.awareness)}}function q3(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:cr(i.name,`cvars[${n}].name`),value:cr(i.value,`cvars[${n}].value`),flags:ne(i.flags,`cvars[${n}].flags`)}})}function J3(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>cr(t,`configstrings[${n}]`))}function Q3(e){return e===void 0?{}:ze(e,"gameState")}function st(e,t){if(t==null)return e;if(typeof t=="number")return un(e,t);if(typeof t=="string")return zs(e,t);if(typeof t=="boolean")return un(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=st(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=zs(n,r),n=st(n,t[r]);return n}return e}function eT(e){let t=B3;return t=un(t,e.version),t=un(t,e.timestamp),t=zs(t,e.map),t=un(t,e.difficulty),t=un(t,e.playtimeSeconds),t=st(t,e.gameState),t=st(t,e.level),t=st(t,e.rng),t=st(t,e.entities),t=st(t,e.cvars),t=st(t,e.configstrings),e.player&&(t=st(t,e.player)),t>>>0}function ch(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=ze(i,"save"),a=r.version??xs,s=ne(a,"version");if(s<H3)throw new Error(`Unsupported save version ${s}`);if(s>xs&&!n)throw new Error(`Save version ${s} is newer than supported ${xs}`);let o={version:s,timestamp:ne(r.timestamp,"timestamp"),map:cr(r.map,"map"),difficulty:ne(r.difficulty,"difficulty"),playtimeSeconds:ne(r.playtimeSeconds,"playtimeSeconds"),gameState:Q3(r.gameState),level:V3(r.level),rng:W3(r.rng),entities:j3(r.entities),cvars:q3(r.cvars),configstrings:J3(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ne(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=eT(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var bM=new Set(Ps.filter(e=>e.save).map(e=>e.name));var Xu=globalThis.TextEncoder;function dn(e){return ch({...e},{allowNewerVersion:!0})}function tT(e){return Xu?new Xu().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var nT=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:dn(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:dn(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:dn(e.save)}))}},iT=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:dn(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:dn(t.save)}))}},Io=class qn{constructor(t={}){let{dbName:n=qn.DEFAULT_DB_NAME,storeName:i=qn.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new iT(r,n,i):this.adapter=new nT}async save(t,n,i={}){let r=dn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:tT(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 ch(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(qn.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(qn.QUICK_SLOT,t)}};Io.DEFAULT_DB_NAME="quake2ts-saves";Io.DEFAULT_STORE="saves";Io.QUICK_SLOT="quicksave";var TM=Os();var MM=[F.Blaster,F.Shotgun,F.SuperShotgun,F.Machinegun,F.Chaingun,F.GrenadeLauncher,F.RocketLauncher,F.HandGrenade,F.HyperBlaster,F.Railgun,F.BFG10K],RM=[{id:Z.QuadDamage,priority:1},{id:Z.Invulnerability,priority:2},{id:Z.EnviroSuit,priority:3},{id:Z.Rebreather,priority:4},{id:Z.Silencer,priority:5}];var rT=new Map,aT=["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"],lh=async(e,t)=>{for(let n of aT)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);rT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var sT=new Map,oT=["d_left","d_right","d_up","d_down"],uh=async(e,t)=>{for(let n of oT)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);sT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Co=[],cT=0,dh=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);Co.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Co.length>0&&(cT=Co[0].width),await Pu(e,t),await lh(e,t),await uh(e,t)};var Po=[{type:"null"},{type:"armor",id:_n.BODY},{type:"armor",id:_n.COMBAT},{type:"armor",id:_n.JACKET},{type:"armor",id:_n.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:F.Grapple},{type:"weapon",id:F.Blaster},{type:"weapon",id:F.ChainFist},{type:"weapon",id:F.Shotgun},{type:"weapon",id:F.SuperShotgun},{type:"weapon",id:F.Machinegun},{type:"weapon",id:F.EtfRifle},{type:"weapon",id:F.Chaingun},{type:"ammo",id:$.Grenades},{type:"ammo",id:$.Trap},{type:"ammo",id:$.Tesla},{type:"weapon",id:F.GrenadeLauncher},{type:"weapon",id:F.ProxLauncher},{type:"weapon",id:F.RocketLauncher},{type:"weapon",id:F.HyperBlaster},{type:"weapon",id:F.IonRipper},{type:"weapon",id:F.PlasmaBeam},{type:"weapon",id:F.Railgun},{type:"weapon",id:F.Phalanx},{type:"weapon",id:F.BFG10K},{type:"weapon",id:F.Disruptor},{type:"ammo",id:$.Shells},{type:"ammo",id:$.Bullets},{type:"ammo",id:$.Cells},{type:"ammo",id:$.Rockets},{type:"ammo",id:$.Slugs},{type:"ammo",id:$.MagSlugs},{type:"ammo",id:$.Flechettes},{type:"ammo",id:$.Prox},{type:"ammo",id:$.Nuke},{type:"ammo",id:$.Rounds},{type:"powerup",id:Z.QuadDamage},{type:"powerup",id:Z.QuadFire},{type:"powerup",id:Z.Invulnerability},{type:"powerup",id:Z.Invisibility},{type:"powerup",id:Z.Silencer},{type:"powerup",id:Z.Rebreather},{type:"powerup",id:Z.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:Z.Bandolier},{type:"powerup",id:Z.AmmoPack},{type:"powerup",id:Z.IRGoggles},{type:"powerup",id:Z.DoubleDamage},{type:"powerup",id:Z.SphereVengeance},{type:"powerup",id:Z.SphereHunter},{type:"powerup",id:Z.SphereDefender},{type:"powerup",id:Z.Doppelganger},{type:"powerup",id:Z.TagToken},{type:"key",id:me.DataCD},{type:"key",id:me.PowerCube},{type:"key",id:me.ExplosiveCharges},{type:"key",id:me.Yellow},{type:"key",id:me.PowerCore},{type:"key",id:me.Pyramid},{type:"key",id:me.DataSpinner},{type:"key",id:me.Pass},{type:"key",id:me.Blue},{type:"key",id:me.Red},{type:"key",id:me.Green},{type:"key",id:me.CommanderHead},{type:"key",id:me.Airstrike},{type:"key",id:me.NukeContainer},{type:"key",id:me.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:me.RedFlag},{type:"key",id:me.BlueFlag},{type:"powerup",id:Z.TechResistance},{type:"powerup",id:Z.TechStrength},{type:"powerup",id:Z.TechHaste},{type:"powerup",id:Z.TechRegeneration},{type:"powerup",id:Z.Flashlight},{type:"powerup",id:Z.Compass}];var lT=2048,Pr=class{constructor(t,n){this.configstrings=new Array(lT).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,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&Nl){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=Wt();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits;t.number=n.number,i&Va&&(t.modelindex=n.modelindex),i&Ka&&(t.modelindex2=n.modelindex2),i&$a&&(t.modelindex3=n.modelindex3),i&Xa&&(t.modelindex4=n.modelindex4),i&Ua&&(t.frame=n.frame),i&Wa&&(t.frame=n.frame),(i&Oi||i&Pi)&&(t.skinnum=n.skinnum),(i&Ni||i&Ci)&&(t.effects=n.effects),(i&Li||i&Ii)&&(t.renderfx=n.renderfx),i&Ca&&(t.origin.x=n.origin.x),i&Pa&&(t.origin.y=n.origin.y),i&Ga&&(t.origin.z=n.origin.z),i&Ha&&(t.angles.x=n.angles.x),i&Da&&(t.angles.y=n.angles.y),i&Fa&&(t.angles.z=n.angles.z),i&Ya&&(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&Za&&(t.sound=n.sound),i&Ba&&(t.event=n.event),i&ja&&(t.solid=n.solid),n.alpha!==0&&(t.alpha=n.alpha),n.scale!==0&&(t.scale=n.scale),n.instanceBits!==0&&(t.instanceBits=n.instanceBits),n.loopVolume!==0&&(t.loopVolume=n.loopVolume),n.loopAttenuation!==0&&(t.loopAttenuation=n.loopAttenuation),n.owner!==0&&(t.owner=n.owner),n.oldFrame!==0&&(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=ft,c=fu(this.stats,ss.QuadDamage)?4:1;switch(n){case nu:r=-2,o={x:-2,y:0,z:0};break;case lu:r=-4,o={x:-4,y:0,z:0};break;case tu:r=-1,a=Math.random()-.5;break;case iu:case ru:case au:r=-.5,a=Math.random()-.5;break;case su:r=-3,o={x:-3,y:0,z:0};break;case ou:case cu:r=-2,o={x:-2,y:0,z:0};break;case uu:r=-5,o={x:-2,y:0,z:0};break;case du:case eu: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)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(){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>=Po.length)break;let u=Po[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:It.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:ft,kick_origin:ft,gunoffset:ft,gunangles:ft,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>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return tn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Sn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=re.Models&&t<re.Models+$n){let i=t-re.Models;this.models[i]=n}else if(t>=re.Sounds&&t<re.Sounds+Xn){let i=t-re.Sounds;this.sounds[i]=n}else if(t>=re.Images&&t<re.Images+Yn){let i=t-re.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 Dr=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:"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 Fr=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} (${mh(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} (${mh(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 mh(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 Ur=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 gi=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 Br=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 Gr=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()}}]}}};function hh(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,h=u.label;if(u.type==="input"&&u.getValue){if(h+=`: ${u.getValue()}`,m===t.selectedIndex){let f=Date.now();Math.floor(f/500)%2===0&&(h+="_")}}else u.type==="toggle"&&u.getValue&&(h+=`: ${u.getValue()}`);if(m===t.selectedIndex){let v=h.replace(/\^[0-9]/g,"").length*8,y=(n-v)/2;e.drawString(y-16,d,"\r")}e.drawCenterString(d,h)})}var pi=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&Kn.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 Hr=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 Vr=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 Wr=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 Kr=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 uT=[{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"}],Gt=class{constructor(t=uT){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 fh(){return new Gt}function Do(e){return e}function vi(e){return e.trim().toLowerCase()}var dT=250,Fo=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}}},$r=(v=>(v.Forward="+forward",v.Back="+back",v.MoveLeft="+moveleft",v.MoveRight="+moveright",v.MoveUp="+moveup",v.MoveDown="+movedown",v.Jump="+jump",v.Crouch="+crouch",v.Attack="+attack",v.Use="+use",v.Holster="+holster",v.TurnLeft="+left",v.TurnRight="+right",v.LookUp="+lookup",v.LookDown="+lookdown",v.SpeedModifier="+speed",v.Zoom="+zoom",v))($r||{}),mT={"+attack":Ye.Attack,"+use":Ye.Use,"+holster":Ye.Holster,"+jump":Ye.Jump,"+crouch":Ye.Crouch},hT=new Map(Object.values($r).map(e=>[vi(e),e]));function fT(e){return hT.get(vi(e))}function yi(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var An=class{constructor(t={},n=new Gt){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??$l,this.sideSpeed=t.sideSpeed??Xl,this.upSpeed=t.upSpeed??Yl,this.yawSpeed=t.yawSpeed??Zl,this.pitchSpeed=t.pitchSpeed??jl,this.sensitivity=t.sensitivity??ql,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=yi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=yi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=yi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=yi()){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=yi(),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 T=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+T*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let T=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+T*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let T=this.sampleMouseDelta(),U=Ql(T,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+U.x,y:u.y+U.y,z:0}}let m=Jl(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),h=this.sample("+back",t,n),f=this.sample("+moveleft",t,n),x=this.sample("+moveright",t,n),_=this.sample("+moveup",t,n),v=this.sample("+movedown",t,n),y=this.sample("+speed",t,n),S=this.sample("+jump",t,n),g=this.sample("+crouch",t,n),A=this.runByDefault?y.active?.5:1:y.active?1:.5,b=this.forwardSpeed*(d.fraction-h.fraction)*A,k=this.sideSpeed*(x.fraction-f.fraction)*A,p=this.upSpeed*(_.fraction-v.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*A,k+=this.sideSpeed*this.gamepadMove.x*A),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*A,k+=this.sideSpeed*this.touchMove.x*A),this.jumpAddsUpMove&&S.fraction>0&&(p+=this.upSpeed*S.fraction),this.crouchAddsDownMove&&g.fraction>0&&(p-=this.upSpeed*g.fraction),b=this.clampMove(b,this.forwardSpeed),k=this.clampMove(k,this.sideSpeed),p=this.clampMove(p,this.upSpeed);let E=this.collectButtonBits(t,n),w=Math.min(Math.max(Math.round(t),1),dT);return(this.anyPressed||E!==Ye.None)&&(E|=Ye.Any),this.anyPressed=!1,{msec:w,buttons:E,angles:{...this.viewAngles},forwardmove:b,sidemove:k,upmove:p,serverFrame:i}}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=fT(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=Ye.None;for(let[r,a]of Object.entries(mT)){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 Fo,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 Xr=class{constructor(t,n=new An(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 Yr={x:0,y:0,z:0};function En(e,t,n){return e+(t-e)*n}function Uo(e,t,n){return En(e,t,n)}function _T(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=i.getModelName(l.modelIndex);if(!u)continue;let m=s.getMd2Model(u)||s.getMd3Model(u);if(!m)continue;let d={x:En(c.origin.x,l.origin.x,n),y:En(c.origin.y,l.origin.y,n),z:En(c.origin.z,l.origin.z,n)},h={x:Uo(c.angles.x,l.angles.x,n),y:Uo(c.angles.y,l.angles.y,n),z:Uo(c.angles.z,l.angles.z,n)},f=l.frame,x=c.frame,_=c.scale!==void 0?c.scale:1,v=l.scale!==void 0?l.scale:1,y=En(_,v,n),S=E=>E===void 0||E===0?255:E,g=S(c.alpha),A=S(l.alpha),k=En(g,A,n)/255,p=q.create();q.translate(p,p,[d.x,d.y,d.z]),q.rotateZ(p,p,h.z*Math.PI/180),q.rotateY(p,p,h.y*Math.PI/180),q.rotateX(p,p,h.x*Math.PI/180),q.scale(p,p,[y,y,y]),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:x,frame1:f,lerp:n},transform:p,skin:l.skinNum>0?i.getImageName(l.skinNum):void 0,alpha:k}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:x,frame1:f,lerp:n},transform:p,alpha:k})}return a}function gT(e){let t=new Qi(e.engine.trace),n=new Ji,i=new Il,r=new Pr(e);r.setView(n);let a=new Ur,s=new Vr,o=new Wr,l=new Kr,c=new pi(new Hr),u,m,d=new Sn,h,f=!1,_=Cu(e,{get tickRate(){return 10},get frameTimeMs(){return h?.timeMs??0},get serverFrame(){return r.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return d},getClientName:p=>`Player ${p}`,getKeyBinding:p=>`[${p}]`,get inAutoDemo(){return f}}),v=Iu(_);r.setCallbacks({onCenterPrint:p=>v.ParseCenterPrint(p,0,!1),onPrint:(p,E)=>v.NotifyMessage(0,E,!1),onConfigString:(p,E)=>{d.set(p,E),v.ParseConfigString(p,E)}}),i.setHandler(r);let y,S,g,A=90,b=!1;if(e.host){m=new gi(a,e.host),u=new Gr(a,m,e.host);let p=new Map;if(e.host.cvars){for(let E of e.host.cvars.list())p.set(E.name,{value:E.string,setValue:w=>e.host.cvars.setValue(E.name,w)});c.loadCvars(p)}}if(e.host?.commands&&(e.host.commands.register("playdemo",p=>{if(p.length<1){console.log("usage: playdemo <filename>");return}let E=p[0];console.log(`playdemo: ${E}`),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 p=Du();console.log(`Crosshair changed to index ${p}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{b=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{b=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():u&&a.pushMenu(u.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Kn.Archive,onChange:E=>{let w=E.number;isNaN(w)||(A=Math.max(1,Math.min(179,w)))},description:"Field of view"});let p=e.host.cvars.get("fov");if(p){let E=p.number;isNaN(E)||(A=Math.max(1,Math.min(179,E)))}}return{loadingScreen:s,errorDialog:o,init(p){this.Init(p)},Init(p){h=p,p?.state&&t.setAuthoritative(p),v.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),dh(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(p){return a.isActive(),t.enqueueCommand(p)},handleInput(p,E){if(!a.isActive())return!1;if(!E)return!0;let w=p.toLowerCase();return w==="arrowup"||w==="w"?a.handleInput("up"):w==="arrowdown"||w==="s"?a.handleInput("down"):w==="arrowleft"||w==="a"?a.handleInput("left"):w==="arrowright"||w==="d"?a.handleInput("right"):w==="enter"||w===" "?a.handleInput("select"):w==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:p.length===1?a.handleInput("char",p):p==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let p=e.host.cvars.list().map(E=>({name:E.name,value:E.string,flags:E.flags}));c.saveCvars(p)}}else u&&a.pushMenu(u.createPauseMenu())},createMainMenu(p,E,w,T,U){let B=new Fr(a,E,w,T,U),N=m;if(!N){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");N=new gi(a,e.host)}let Q=e.engine.assets,Ce={findByExtension:Qe=>Q?Q.listFiles(Qe):[]},kt=new Br(a,Ce,Qe=>{console.log(`Starting map: ${Qe}`),e.host?.commands.execute(`map ${Qe}`)}),wi=new Dr(a,B,{...p,optionsFactory:N,mapsFactory:kt,onSetDifficulty:Qe=>{e.host?.cvars&&e.host.cvars.setValue("skill",Qe.toString())}});return{menuSystem:a,factory:wi}},render(p){let E=i.getState(),w=[];E===qa.Playing?y=r.getPredictionState():(p.latest?.state&&(t.setAuthoritative(p.latest),h=p.latest),p.previous?.state&&p.latest?.state?(y=tn(p.previous.state,p.latest.state,p.alpha),p.latest.state.packetEntities&&p.previous.state.packetEntities&&(w=_T(p.latest.state.packetEntities,p.previous.state.packetEntities,p.alpha,d,e))):y=p.latest?.state??p.previous?.state??t.getPredictedState());let T=p.latest&&p.previous?Math.max(0,p.latest.timeMs-p.previous.timeMs):0;S=n.sample(y,T);let U={};if(y){let{origin:B,viewAngles:N}=y;g=new jc,g.position=ee.fromValues(B.x,B.y,B.z);let Q=S?.offset??{x:0,y:0,z:0};ee.add(g.position,g.position,[Q.x,Q.y,Q.z]);let Ce=S?.angles??{x:0,y:0,z:0};g.angles=ee.fromValues(N.x+Ce.x,N.y+Ce.y,N.z+Ce.z),g.fov=b?40:A,g.aspect=4/3,e.engine.renderer&&(g.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&g){let B;if(e.engine.assets){let N=d.getModelName(1);if(N){let Q=e.engine.assets.getMap(N)}}e.engine.renderer.renderFrame({camera:g,world:B,dlights:[]},w)}if(e.engine.renderer&&y&&y.client){let B=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},N=p.latest?.timeMs??0;this.DrawHUD(B,N)}return U},DrawHUD(p,E){if(!e.engine.renderer)return;let w=e.engine.renderer,T=w.width,U=w.height;if(y&&y.client){let B={origin:y.origin,velocity:y.velocity,viewAngles:y.viewAngles,onGround:it(y.pmFlags,Ie.OnGround),waterLevel:y.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:y.damageAlpha??0,damageIndicators:y.damageIndicators??[],blend:y.blend??[0,0,0,0],pickupIcon:y.pickupIcon,centerPrint:void 0,notify:void 0,stats:y.stats?[...y.stats]:new Array(32).fill(0),kick_angles:Yr,kick_origin:Yr,gunoffset:Yr,gunangles:Yr,gunindex:0,pm_type:y.pm_type??0,pm_time:y.pm_time??0,pm_flags:y.pmFlags,gun_frame:y.gun_frame??0,rdflags:y.rdflags??0,fov:y.fov??90};B.stats[Pe.STAT_HEALTH]=y.health??0,B.stats[Pe.STAT_AMMO]=y.ammo??0,B.stats[Pe.STAT_ARMOR]=y.armor??0,w.begin2D(),v.DrawHUD(0,null,{x:0,y:0,width:T,height:U},{x:0,y:0,width:T,height:U},1,0,B),w.end2D()}a.isActive()&&hh(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),y&&y.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,y.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(v.Shutdown(),h=void 0,y=void 0,e.host?.cvars){let p=e.host.cvars.list().map(E=>({name:E.name,value:E.string,flags:E.flags}));c.saveCvars(p)}},get prediction(){return t},get lastRendered(){return y},get view(){return n},get lastView(){return S},get camera(){return g},demoPlayback:i,ParseCenterPrint(p){v.ParseCenterPrint(p,0,!1)},ParseNotify(p){v.NotifyMessage(0,p,!1)},showSubtitle(p,E){v.ShowSubtitle(p,E)},ParseConfigString(p,E){d.set(p,E),v.ParseConfigString(p,E)},demoHandler:r,configStrings:d}}return yh(pT);})();
|
|
177
|
+
`),ye=null}function vy(e,t,n,i,r,a,s){yv(e,t,n,i,r,a,s)}function yy(){vv()}function wy(e){return 0}function Sy(e){return 0}function xy(e){return[]}function Ay(e,t){return 0}function Ey(e){return 0}function ky(e){return 0}function by(e){}function Ty(e,t){ye&&Sv(ye,e,t)}function My(e,t,n){if(!ye)return;qi().setCenterPrint(e,ye.CL_ClientTime())}function Ry(e,t,n){if(!ye)return;qi().addNotification(t,n,ye.CL_ClientTime())}function zy(e){qi().clearNotifications()}function Ly(e){qi().clearCenterPrint()}function Ny(e,t){if(!ye)return;wv().addSubtitle(e,ye.CL_ClientTime())}function Oy(e){return{x:0,y:0,z:0}}function Iy(e){return null}function Iu(e){return ye=e,{Init:gy,Shutdown:py,DrawHUD:vy,TouchPics:yy,LayoutFlags:wy,GetActiveWeaponWheelWeapon:Sy,GetOwnedWeaponWheelWeapons:xy,GetWeaponWheelAmmoCount:Ay,GetPowerupWheelCount:Ey,GetHitMarkerDamage:ky,Pmove:by,ParseConfigString:Ty,ParseCenterPrint:My,NotifyMessage:Ry,ShowSubtitle:Ny,ClearNotify:zy,ClearCenterprint:Ly,GetMonsterFlashOffset:Oy,GetExtension:Iy}}function Cu(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_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 nn=null,gt=0;var Zn=!0,jn=["ch1","ch2","ch3"],rn=[null,null,null],Pu=async(e,t)=>{for(let n=0;n<jn.length;n++){let i=jn[n];try{let r=await t.loadTexture(`pics/${i}.pcx`);rn[n]=e.registerTexture(i,r)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");rn[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}nn=rn[0]};var Du=()=>{if(Zn?(gt++,gt>=jn.length&&(Zn=!1,gt=0)):(Zn=!0,gt=0),Zn){if(nn=rn[gt],!nn){let e=!1;for(let t=0;t<jn.length;t++){let n=(gt+t)%jn.length;if(rn[n]){gt=n,nn=rn[n],e=!0;break}}e||(nn=null)}}else nn=null;return Zn?gt:-1};var Cy=Object.defineProperty,Yu=(e,t)=>{for(var n in t)Cy(e,n,{get:t[n],enumerable:!0})},G={x:0,y:0,z:0};var Y8=Math.PI/180;function Py(e){return{x:e.x,y:e.y,z:e.z}}function H(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function L(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function V(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function Zu(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Dy(e){return Zu(e,e)}function mn(e){return Math.sqrt(Dy(e))}function P(e){let t=mn(e);return t===0?e:V(e,1/t)}function Fy(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 Uy(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}var Ls=0,Ns=1,ju=2,By=Math.PI/180,Gy=180/Math.PI;function Jn(e,t){switch(t){case Ls:return e.x;case Ns:return e.y;case ju:default:return e.z}}function tr(e){return e*By}function xs(e){return e*Gy}function As(e){let t=e%360;return t<0?360+t:t}function J(e){let t=tr(Jn(e,Ns)),n=tr(Jn(e,Ls)),i=tr(Jn(e,ju)),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 lr(e){let t=Jn(e,Ls),n=Jn(e,Ns);if(t===0)return n===0?0:n>0?90:270;let i=xs(Math.atan2(n,t));return i<0?i+360:i}function hn(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=xs(Math.atan2(n,t)):n>0?r=90:r=270,r<0&&(r+=360);let a=Math.sqrt(t*t+n*n),s=xs(Math.atan2(i,a));return s<0&&(s+=360),{x:-s,y:r,z:0}}var je=624,Hy=397,Vy=2567483615,Wy=2147483648,Ky=2147483647,gs=4294967296,$y=class{constructor(e=5489){this.state=new Uint32Array(je),this.index=je,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<je;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=je}nextUint32(){this.index>=je&&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<je;e++){let t=this.state[e]&Wy|this.state[(e+1)%je]&Ky,n=this.state[(e+Hy)%je]^t>>>1;(t&1)!==0&&(n^=Vy),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==je)throw new Error(`Expected ${je} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},qu=class{constructor(e={}){this.mt=new $y(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/gs}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=gs-gs%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)}};function Os(e){return new qu(e)}var ke=1,St=2;var Is=8,Cs=16,Xy=32;var Yy=16384;var ur=65536,Ju=1<<17,Zy=1<<18,jy=1<<19,qy=1<<20,Jy=1<<21,Qy=1<<22,ew=1<<23,Z8=1<<24,Dt=1<<25,dr=1<<26,j8=1<<27,q8=1<<28,J8=1<<29,fn=1<<30,Q8=1<<31;var eM=1<<25,tM=1<<28,nM=1<<29,iM=1<<30,rM=1<<31,tw=ke|St,aM=ke|ur|St|Dt|fn,sM=ke|ur|St,ir=ke|Ju|St|Dt|fn,nw=Xy|Is|Cs,oM=ke|Cs|Is,yt=ke|Dt|fn|St|dr,cM=Zy|jy|qy|Jy|Qy|ew,lM=ke|Is|Cs|Dt|fn,uM=ke|ur|St,dM=ke|St,mM=ke|ur|St|Ju,hM=yt|Yy,fM=Number.MAX_SAFE_INTEGER-1;var Qu=256,iw=256,rw=8192,aw=2048,sw=512,ow=256,cw=Qu*2,lw=256,ps=32,ed=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+rw]="Sounds",e[e.Images=e.Sounds+aw]="Images",e[e.Lights=e.Images+sw]="Lights",e[e.ShadowLights=e.Lights+iw]="ShadowLights",e[e.Items=e.ShadowLights+lw]="Items",e[e.PlayerSkins=e.Items+ow]="PlayerSkins",e[e.General=e.PlayerSkins+Qu]="General",e[e.WheelWeapons=e.General+cw]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ps]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ps]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ps]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ed||{}),_M=ed.MaxConfigStrings,uw={};Yu(uw,{addReplayFrame:()=>fw,createReplaySession:()=>hw,deserializeReplay:()=>mw,serializeReplay:()=>dw});function dw(e){return JSON.stringify(e,null,2)}function mw(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 hw(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function fw(e,t,n,i){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-i})}var xe=(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))(xe||{}),Se=(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))(Se||{});var Z=(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))(Z||{});var _w=12,gw=9,gM=Math.ceil(_w*gw/16),pw=23,vw=2,pM=Math.ceil(pw*vw/16);var yw={};Yu(yw,{U_ANGLE1:()=>bw,U_ANGLE2:()=>Tw,U_ANGLE3:()=>Mw,U_EFFECTS:()=>Lw,U_EVENT:()=>Iw,U_FRAME:()=>Rw,U_MODEL:()=>Sw,U_MODEL2:()=>Pw,U_MODEL3:()=>Dw,U_MODEL4:()=>Fw,U_MOREBITS:()=>Cw,U_NUMBER:()=>ww,U_ORIGIN1:()=>Aw,U_ORIGIN2:()=>Ew,U_ORIGIN3:()=>kw,U_REMOVE:()=>Uw,U_RENDERFX:()=>Nw,U_SKIN:()=>zw,U_SOLID:()=>Ow,U_SOUND:()=>xw});var ww=1,Sw=2,xw=4,Aw=8,Ew=16,kw=32,bw=64,Tw=128,Mw=256,Rw=512,zw=1024,Lw=2048,Nw=4096,Ow=8192,Iw=16384,Cw=32768,Pw=1,Dw=2,Fw=4,Uw=32768;var F=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="super_shotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.HandGrenade="hand_grenade",e.GrenadeLauncher="grenade_launcher",e.RocketLauncher="rocket_launcher",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))(F||{}),$=(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))($||{}),vM=Object.keys($).length/2,Re=(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))(Re||{});function wt(e,t){return(e&t)!==0}var _n=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(_n||{}),Bw={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 Gw(e,t,n){if(e<=0||wt(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let i=Bw[n.armorType],r=wt(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 Hw(e,t,n,i,r,a={}){if(r.health<=0||e<=0)return{saved:0,remainingCells:r.cellCount};if(wt(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 _={x:o.x/l,y:o.y/l,z:o.z/l};if(_.x*s.x+_.y*s.y+_.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;wt(t,4)&&(d=Math.max(1,Math.floor(d/2))),d>m&&(d=Math.floor(m));let h=d/u;wt(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let f=Math.max(u,h),S=Math.max(0,r.cellCount-f);return{saved:d,remainingCells:S}}var yM={[Re.Shells]:{id:Re.Shells,ammoType:$.Shells,quantity:10,weaponAmmo:!1},[Re.Bullets]:{id:Re.Bullets,ammoType:$.Bullets,quantity:50,weaponAmmo:!1},[Re.Rockets]:{id:Re.Rockets,ammoType:$.Rockets,quantity:5,weaponAmmo:!1},[Re.Grenades]:{id:Re.Grenades,ammoType:$.Grenades,quantity:5,weaponAmmo:!0},[Re.Cells]:{id:Re.Cells,ammoType:$.Cells,quantity:50,weaponAmmo:!1},[Re.Slugs]:{id:Re.Slugs,ammoType:$.Slugs,quantity:10,weaponAmmo:!1}};var me=(e=>(e.Blue="blue",e.Red="red",e.Green="green",e.Yellow="yellow",e.DataCD="data_cd",e.PowerCube="power_cube",e.ExplosiveCharges="explosive_charges",e.PowerCore="power_core",e.Pyramid="pyramid",e.DataSpinner="data_spinner",e.Pass="pass",e.CommanderHead="commander_head",e.Airstrike="airstrike",e.NukeContainer="nuke_container",e.Nuke="nuke",e.RedFlag="red_flag",e.BlueFlag="blue_flag",e))(me||{});var Vw={...G};var wM=Object.freeze({aiflags:0,last_sighting:Vw,trail_time:0,pausetime:0});var Ps=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],Ww=20,Kw=440,$w=940,vs=32,Xw=1<<24,rr=1;function Fu(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 xt(e,t){let n=Fu(e),i=Fu(t),r=Uy(n.mins,n.maxs,i.mins,i.maxs);return Math.sqrt(r)}function Yw(e){return e<=Ww?"melee":e<=Kw?"near":e<=$w?"mid":"far"}function ei(e,t){let{forward:n}=J(e.angles),i=P(L(t.origin,e.origin)),r=Zu(i,n);return(e.spawnflags&rr)!==0&&e.trail_time===0&&e.enemy===null?r>.15:r>-.3}function gn(e,t,n,i){if((t.flags&Xw)!==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}function Zw(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=lr(n)}function td(e){e.angles.y=As(e.ideal_yaw)}function jw(e,t,n){e.enemy&&(e.goalentity=e.enemy,Zw(e,e.enemy),td(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function qw(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){jw(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 Jw(e,t,n,i){let r=xt(e,t),a=Yw(r);return a==="far"||t.light_level<=5||!gn(e,t,i,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||ei(e,t):a==="mid"?ei(e,t):!0}function Qw(e,t,n,i,r){if((e.spawnflags&rr)!==0){if(!gn(e,t,r))return!1}else if(i.canHear&&!i.canHear(e,t))return!1;let a=L(t.origin,e.origin);return mn(a)>1e3||i.areasConnected&&!i.areasConnected(e,t)?!1:(e.ideal_yaw=lr(a),td(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function eS(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&rr)===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&rr)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function tS(e){return(e.flags&vs)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&vs)!==0:!!(e.enemy&&(e.enemy.flags&vs)!==0)}function Ds(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}=eS(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(tS(a))return!1;if(s){if(!Qw(e,a,t,r,i))return!1}else{if(!Jw(e,a,t,i))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return qw(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function nd(e,t){if(t===0)return{x:0,y:0,z:0};let n=tr(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Fs(e,t,n){let i=nd(t,n),r=e.origin;return r.x+=i.x,r.y+=i.y,r.z+=i.z,!0}function ii(e,t){let n=As(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=As(n+a)}function le(e,t){Fs(e,e.angles.y,t)}function mr(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=lr(n)}function ae(e,t,n){Ds(e,n.targetAwareness,n,n.trace)||ii(e,t)}function he(e,t,n,i){if(!Ds(e,i.targetAwareness,i,i.trace)&&(mr(e,e.goalentity),ii(e,n),t!==0&&Fs(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&xt(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 de(e,t,n,i){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,i);return}Ds(e,i.targetAwareness,i,i.trace),(e.monsterinfo.aiflags&32768)===0&&mr(e,e.enemy??e.goalentity),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&id(e,e.angles.y,t,i)}function nS(e,t,n,i){t&&(e.monsterinfo.aiflags&32768)===0&&mr(e,t),ii(e,i),n!==0&&Fs(e,e.angles.y,n)}function se(e,t,n,i){(e.monsterinfo.aiflags&32768)===0&&mr(e,e.enemy),ii(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,i))&&t!==0&&id(e,e.angles.y,t,i)}function iS(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,ir);if(e.groundentity=i.ent,!e.groundentity&&!i.allsolid&&!i.startsolid&&i.fraction===1){let r=t.pointcontents(n);r&nw?(e.waterlevel=1,e.watertype=r):(e.waterlevel=0,e.watertype=0)}}function rS(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,ir).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,ir).fraction<1))return!0;return!1}function id(e,t,n,i){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let r=nd(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,ir).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!rS(e,i)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&iS(e,i),!0)}var aS=Ps.filter(e=>e.save||e.type==="callback"),SM=new Map(aS.map(e=>[e.name,e]));var xM=1/40;function sS(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var oS=1;function cS(e,t){if(!e.client)return;let n=sS(e.client.weaponStates,F.Chaingun);!(e.client.buttons&oS)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var AM={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:F.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:F.Shotgun,ammoType:$.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:F.SuperShotgun,ammoType:$.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:F.Machinegun,ammoType:$.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:cS},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:F.Chaingun,ammoType:$.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenades:{type:"weapon",id:"weapon_grenades",name:"Hand Grenade",weaponId:F.HandGrenade,ammoType:$.Grenades,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:F.GrenadeLauncher,ammoType:$.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:F.RocketLauncher,ammoType:$.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:F.HyperBlaster,ammoType:$.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:F.Railgun,ammoType:$.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:F.BFG10K,ammoType:$.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function lS(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 uS(e,t,n,i,r){if(wt(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=P(n),c=V(o,(t===e?1600:500)*i/s);return e.velocity=H(e.velocity,c),c}function dS(e,t,n,i,r){let a=i,s=0,o=0,l,c;if(e.powerArmor){let u=Hw(i,r,t,n,e.powerArmor);s=u.saved,l=u.remainingCells,a-=s}if(e.regularArmor){let u=Gw(a,r,e.regularArmor);o=u.saved,c=u.remainingArmor,a-=o}return[Math.max(0,a),s,o,l,c]}function Uu(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function fe(e,t,n,i,r,a,s,o,l,c,u,m){if(!e.takedamage)return null;let d=lS(n,u),h=s*d,f=o*d;if(!wt(l,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let _=uS(e,n,i,f,l),[v,y,x,g,A]=dS(e,r,a,h,l);e.powerArmor&&g!==void 0&&(e.powerArmor.cellCount=g),e.regularArmor&&(e.regularArmor.armorCount=A??e.regularArmor.armorCount);let b=v;b>0&&(e.health-=b,m&&!wt(l,1024)&&(e.classname==="player"||e.monsterinfo)&&m(r,1,xe.temp_entity,Se.BLOOD,r,a));let k=e.health<=0;return k?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,b,r,c):b>0&&e.pain&&e.pain(e,n,o,b,c),{take:b,psave:y,asave:x,knocked:_,killed:k,remainingCells:g,remainingArmor:A}}function Us(e,t,n,i,r,a,s,o,l,c={},u){let m=[],d=Uu(t),h=c.canDamage??(()=>!0);for(let f of e){if(f===r||!f.takedamage||!h(f,t))continue;let S=f.mins&&f.maxs?Fy(d,H(f.origin,f.mins),H(f.origin,f.maxs)):Uu(f),_=L(d,S),v=mn(_);if(a>0&&v>a)continue;let y=i-.5*v;if(y<=0)continue;let x=f===n?y*.5:y,g=P(L(f.origin,d)),A=fe(f,t,n,g,S,g,x,x,s|1,o,l,u);m.push({target:f,result:A,appliedDamage:x})}return m}var EM=Os();var hr=.1,Qn=80;var rd=Os();function mS(){return rd.frandom()}function ad(e,t){return Math.floor(rd.frandom()*(t-e+1)+e)}function cn(e,t,n){ae(e,hr,n)}function De(e,t,n){he(e,t,hr,n)}function an(e,t,n){de(e,t,hr,n)}function ie(e,t,n){se(e,t,hr,n)}function C(e,t,n){le(e,t)}var ti={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 Ge(e,t){t.sound(e,2,ti.footstep,1,1,0)}function ar(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function hS(e,t){}var Bs,sd,fS,od,_S,gS,pS,vS,yS,cd,wS;function SS(e,t){ar(e,Bs)}function xS(e,t){e.monsterinfo.aiflags&1||e.enemy||mS()>.15||(ar(e,sd),t.sound(e,1,ti.idle,1,2,0))}var AS=[{ai:cn,dist:0,think:xS},{ai:cn,dist:0},{ai:cn,dist:0},{ai:cn,dist:0},{ai:cn,dist:0}];Bs={firstframe:0,lastframe:4,frames:AS,endfunc:null};var ES=Array.from({length:20},()=>({ai:cn,dist:0}));sd={firstframe:5,lastframe:24,frames:ES,endfunc:SS};var kS=[{ai:De,dist:9.1},{ai:De,dist:6.3},{ai:De,dist:4.9},{ai:De,dist:6.7,think:Ge},{ai:De,dist:6},{ai:De,dist:8.2},{ai:De,dist:7.2},{ai:De,dist:6.1},{ai:De,dist:4.9},{ai:De,dist:4.7,think:Ge},{ai:De,dist:4.7}];fS={firstframe:25,lastframe:35,frames:kS,endfunc:null};var bS=[{ai:an,dist:21},{ai:an,dist:11,think:Ge},{ai:an,dist:21},{ai:an,dist:25,think:hS},{ai:an,dist:18,think:Ge},{ai:an,dist:19}];od={firstframe:36,lastframe:41,frames:bS,endfunc:null};function ri(e,t){e.monsterinfo.aiflags&1?ar(e,Bs):ar(e,od)}function ld(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*Qn,y:a.y+s.y*Qn,z:a.z+s.z*Qn},c=r.trace(a,null,null,l,e,536870913);return!c.ent||!c.ent.takedamage?!1:(fe(c.ent,e,e,s,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds,r.multicast.bind(r)),!0)}function TS(e,t){ld(e,{x:Qn,y:0,z:-24},ad(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function ud(e,t){t.sound(e,1,ti.punch,1,1,0)}var MS=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:ud},{ai:ie,dist:0,think:TS},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0}];_S={firstframe:67,lastframe:74,frames:MS,endfunc:ri};function RS(e,t){ld(e,{x:Qn,y:0,z:-4},ad(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var zS=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:Ge},{ai:ie,dist:0},{ai:ie,dist:0,think:ud},{ai:ie,dist:0},{ai:ie,dist:0,think:RS},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0}];gS={firstframe:75,lastframe:86,frames:zS,endfunc:ri};function LS(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=P(L(o.origin,e.origin));fe(o,e,t,d,o.origin,d,u,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Gs(e,t){t.sound(e,1,ti.thud,1,1,0),t.sound(e,2,ti.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,xe.temp_entity,Se.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},LS(e,e,8,165,300,t)}function NS(e,t,n,i,r){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Gs(e,r))}function Hs(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function OS(e,t){if(!e.enemy)return;let n=L(e.enemy.origin,e.origin),r=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=P({x:n.x,y:n.y,z:0}),s=hn(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)=>{NS(l,c,u,m,t),l.groundentity&&(l.frame=104,Gs(l,t),l.touch=void 0)},Hs(e,t)}function IS(e,t){if(Hs(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Gs(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var CS=[{ai:ie,dist:0},{ai:ie,dist:0},{ai:C,dist:0,think:OS},{ai:C,dist:0,think:Hs},{ai:C,dist:0,think:IS},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge}];pS={firstframe:87,lastframe:109,frames:CS,endfunc:ri};var PS=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];vS={firstframe:149,lastframe:152,frames:PS,endfunc:ri};var DS=Array.from({length:20},(e,t)=>({ai:C,dist:0,think:t%5===4?Ge:void 0}));yS={firstframe:153,lastframe:172,frames:DS,endfunc:ri};function dd(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=cd.lastframe,e.nextthink=-1,e.deadflag=2}var FS=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];cd={firstframe:173,lastframe:185,frames:FS,endfunc:dd};var US=[{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0,think:Ge},{ai:C,dist:0},{ai:C,dist:0},{ai:C,dist:0}];wS={firstframe:186,lastframe:193,frames:US,endfunc:dd};function BS(e,t,n,i,r,a,s,o=0){let l=e.spawn();l.classname="rocket",l.movetype=8,l.solid=2,l.owner=t,l.origin={...n},l.velocity={x:i.x*s,y:i.y*s,z:i.z*s},l.mins={x:-4,y:-4,z:-4},l.maxs={x:4,y:4,z:4},l.touch=(c,u,m,d)=>{if(u===c.owner)return;u&&u.takedamage&&fe(u,c,c.owner,c.velocity,c.origin,m?m.normal:G,r,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(c.origin,120);Us(h,c,c.owner,a,c.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,xe.temp_entity,Se.ROCKET_EXPLOSION,c.origin),e.free(c)},e.finalizeSpawn(l)}function md(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);Us(u,c,c.owner,r,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,xe.temp_entity,Se.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 hd(e,t,n,i,r,a,s){let o=e.spawn();s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(l,c,u,m)=>{if(c!==l.owner){if(c&&c.takedamage)fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,r,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(u){let d=Se.BLASTER;s===58&&(d=Se.BLUEHYPERBLASTER),e.multicast(l.origin,1,xe.temp_entity,d,l.origin,u.normal)}e.free(l)}},e.finalizeSpawn(o)}function GS(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&&l&&l.takedamage){fe(l,o,o.owner,o.velocity,o.origin,c?c.normal:G,r,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}},s.think=o=>{e.multicast(o.origin,1,xe.temp_entity,Se.WELDING_SPARKS,o.origin,G,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function HS(e,t,n,i,r,a){hd(e,t,n,i,r,a,58)}function VS(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=P(L(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 h=0;h<l;h++){let f=e.trace(m,null,null,o,t,ke|Dt|fn|dr);if(!f.ent||f.fraction>=1||(f.ent.takedamage&&f.ent!==t.owner&&fe(f.ent,t,t.owner,s,f.endpos,G,i,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(f.ent.svflags&4)&&!f.ent.client&&f.ent.classname!=="misc_explobox"))break;c.push(f.ent),u.push(f.ent.solid),f.ent.solid=0,m={...f.endpos}}let d=e.trace(r,null,null,o,t,ke);e.multicast(t.origin,2,xe.temp_entity,Se.BFG_LASER,r,d.endpos)}finally{for(let d=0;d<c.length;d++)c[d].solid=u[d]}}function WS(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,tw).fraction<1||VS(t,e,r,n)}t.scheduleThink(e,t.timeSeconds+.1)}function KS(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=L(e.origin,r),s=mn(a),o=e.dmg_radius||100,l=(e.radius_dmg||200)*(1-Math.sqrt(s/o));l>0&&fe(i,e,e.owner,e.velocity,r,G,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 $S(e,t,n,i,r,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:i.x*a,y:i.y*a,z:i.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=r,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(l,c,u,m)=>{if(c===l.owner)return;c&&c.takedamage&&fe(c,l,l.owner,l.velocity,l.origin,u?u.normal:G,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let d=e.findByRadius(l.origin,100);Us(d,l,l.owner,200,c,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(l.origin,2,xe.temp_entity,Se.BFG_BIGEXPLOSION,l.origin),l.solid=0,l.touch=void 0,l.velocity=G,l.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),l.frame=0,l.enemy=c,l.think=(h,f)=>KS(h,f),e.scheduleThink(l,e.timeSeconds+.1)},o.think=(l,c)=>WS(l,c),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function Bu(){return 2*Math.random()-1}function sr(e,t,n,i,r,a,s,o,l,c=0){let u=n;if(a>0||s>0){let h=hn(n),{right:f,up:S}=J(h),_=Bu()*a,v=Bu()*s;u={x:n.x+f.x*_+S.x*v,y:n.y+f.y*_+S.y*v,z:n.z+f.z*_+S.z*v},u=P(u)}let m=H(t,V(u,8192)),d=l.trace(t,m,G,G,e,yt);!d.ent||d.fraction===1||fe(d.ent,e,e,u,d.endpos,d.plane?.normal||G,i,r,18,c,l.timeSeconds)}var Pt=sr;function XS(e,t,n,i,r,a,s,o,l,c,u=2){for(let m=0;m<o;m++)Pt(e,t,n,i,r,a,s,l,c,u)}function ot(e,t,n,i,r,a,s,o,l=1){hd(o,e,t,n,i,r,l)}function YS(e,t,n,i,r,a,s,o){HS(o,e,t,n,i,r)}function ZS(e,t,n,i,r,a,s,o){GS(o,e,t,n,i,r)}function jS(e,t,n,i,r,a,s){md(s,e,t,n,i,r)}function ai(e,t,n,i,r,a,s){BS(s,e,t,n,i,120,r)}function fd(e,t,n,i,r,a,s,o,l){$S(l,e,t,n,i,r,s)}function _d(e,t,n,i,r,a,s){let o=H(t,V(n,8192)),l=s.trace(t,o,G,G,e,yt);s.multicast(t,2,xe.temp_entity,Se.RAILTRAIL,t,l.endpos),l.ent&&l.ent.takedamage&&fe(l.ent,e,e,n,l.endpos,G,i,r,6,11,s.timeSeconds)}function si(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=H(s,V(a,o)),c=r.trace(s,l,G,G,e,yt);if(c.ent===e.enemy||c.ent&&c.ent.takedamage){let u=P(L(c.endpos,s));return fe(c.ent,e,e,u,c.endpos,c.plane?.normal||G,n,i,0,0,r.timeSeconds),!0}return!1}function qS(e,t,n,i,r,a,s,o){ai(e,t,n,i,r,a,o)}function Gu(e,t){let n={...e.origin},i=H(n,V(e.movedir,2048)),r={...n},a=16,s=[],o=[];try{for(let l=0;l<a;l++){let c=t.trace(r,i,G,G,e,ke|Dt|fn|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,G,e.dmg,0,4,31,t.timeSeconds),c.ent&&c.ent.solid===3){t.multicast(c.endpos,1,xe.temp_entity,Se.LASER_SPARKS,10,c.endpos,c.plane?.normal||G,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 JS(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function Es(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?JS(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{i(s,o),Gu(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=r.timeSeconds+.2,a.nextthink=r.timeSeconds+.01,i(a,r),Gu(a,r)}var Vs=.1,QS={x:0,y:30,z:-15},ex={x:0,y:15,z:0},tx={x:0,y:-15,z:0},nx={x:0,y:-30,z:-15},ix={x:30,y:20,z:0},rx={x:30,y:-20,z:0};function ax(e,t,n){ae(e,Vs,n)}function sx(e,t,n){he(e,t,Vs,n)}function fr(e,t,n){se(e,t,Vs,n)}function Ws(e,t,n){le(e,t)}var Ks,gd,pd,ox,vd,yd,cx,lx,ux,wd;function dx(e){e.monsterinfo.current_move=Ks}function mx(e){e.monsterinfo.current_move=gd}function oi(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=pd:e.monsterinfo.current_move=Ks}function Sd(e){e.monsterinfo.current_move=vd}function hx(e){e.enemy&&ei(e,e.enemy)&&Math.random()<=.7?Sd(e):e.monsterinfo.current_move=yd}function ks(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function fx(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=ks(e,ix),i=P(L(e.enemy.origin,n));Pt(e,n,i,6,4,.1,.05,0,t,4);let r=ks(e,rx),a=P(L(e.enemy.origin,r));Pt(e,r,a,6,4,.1,.05,0,t,4)}function _x(e,t){if(!e.enemy)return;let n=[QS,ex,tx,nx],i=n[Math.floor(Math.random()*n.length)],r=ks(e,i),a=P(L(e.enemy.origin,r));ai(e,r,a,50,500,0,t)}function gx(e){e.monsterinfo.nextframe=wd.lastframe,e.nextthink=-1}var xd=Array.from({length:20},()=>({ai:sx,dist:10}));gd={firstframe:0,lastframe:19,frames:xd,endfunc:mx};pd={firstframe:0,lastframe:19,frames:xd,endfunc:oi};var px=Array.from({length:21},()=>({ai:ax,dist:0}));Ks={firstframe:29,lastframe:49,frames:px,endfunc:dx};var vx=Array.from({length:9},(e,t)=>({ai:fr,dist:2,think:t===8?Sd:null}));ox={firstframe:50,lastframe:58,frames:vx,endfunc:null};var yx=Array.from({length:6},()=>({ai:fr,dist:2,think:fx}));vd={firstframe:59,lastframe:64,frames:yx,endfunc:hx};var wx=Array.from({length:4},()=>({ai:fr,dist:2}));yd={firstframe:65,lastframe:68,frames:wx,endfunc:oi};var Sx=Array.from({length:21},(e,t)=>({ai:fr,dist:2,think:t===12?_x:null}));cx={firstframe:69,lastframe:89,frames:Sx,endfunc:oi};var xx=Array.from({length:18},()=>({ai:Ws,dist:0}));lx={firstframe:90,lastframe:107,frames:xx,endfunc:oi};var Ax=Array.from({length:4},()=>({ai:Ws,dist:0}));ux={firstframe:108,lastframe:111,frames:Ax,endfunc:oi};var Ex=Array.from({length:49},()=>({ai:Ws,dist:0}));wd={firstframe:112,lastframe:160,frames:Ex,endfunc:gx};var _r=.1,$s=80,gr=Math.random;function Ad(e,t,n){ae(e,_r,n)}function Fe(e,t,n){he(e,t,_r,n)}function Ue(e,t,n){de(e,t,_r,n)}function M(e,t,n){se(e,t,_r,n)}function O(e,t,n){le(e,t)}var Xs,kx,bx,Ed,kd,Tx,Mx,Rx,zx,Lx,Nx,Ox,Ix,Cx;function bd(e){e.monsterinfo.current_move=Xs}function At(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Xs:e.monsterinfo.current_move=Ed}function Px(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function Dx(e,t){let n={x:$s,y:e.maxs.x,z:8};si(e,n,15+Math.floor(gr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Fx(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function Ux(e,t){let n={x:$s,y:e.mins.x,z:8};si(e,n,15+Math.floor(gr()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Td(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Md(e,t){si(e,{x:$s,y:0,z:8},10+Math.floor(gr()*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 Rd(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=kd)}function Hu(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,G,G,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,xe.temp_entity,Se.PARASITE_ATTACK,e,i,r);let s=L(i,r);fe(e.enemy,e,e,s,e.enemy.origin,G,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=J(e.angles).forward;e.enemy.velocity=V(o,-1200)}var Vu=[{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}],Wu=[{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 Bx(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>=Vu.length)&&(s=0);let o=Vu[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=P(L(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function Gx(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>=Wu.length)&&(s=0);let o=Wu[s],l=H(n.origin,V(r,o.x));l=H(l,V(i,o.y)),l=H(l,V(a,o.z));let c=P(L(n.enemy.origin,l));e.origin=l,e.movedir=c,t.linkentity(e)}function qe(e,t){Es(e,1,!1,Bx,t),Es(e,1,!0,Gx,t)}function Hx(e){gr()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function Vx(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function Wx(e){}function Kx(e){e.monsterinfo.aiflags&=-17}var $x=Array.from({length:30},()=>({ai:Ad,dist:0}));Xs={firstframe:162,lastframe:191,frames:$x,endfunc:bd};var Xx=Array.from({length:30},()=>({ai:Ad,dist:0}));kx={firstframe:192,lastframe:221,frames:Xx,endfunc:bd};var Yx=[{ai:Fe,dist:7},{ai:Fe,dist:2},{ai:Fe,dist:3},{ai:Fe,dist:3},{ai:Fe,dist:1},{ai:Fe,dist:0},{ai:Fe,dist:0},{ai:Fe,dist:9},{ai:Fe,dist:-4},{ai:Fe,dist:-1},{ai:Fe,dist:2}];bx={firstframe:0,lastframe:10,frames:Yx,endfunc:null};var Zx=[{ai:Ue,dist:9},{ai:Ue,dist:2},{ai:Ue,dist:3},{ai:Ue,dist:3},{ai:Ue,dist:1},{ai:Ue,dist:0},{ai:Ue,dist:0},{ai:Ue,dist:10},{ai:Ue,dist:-4},{ai:Ue,dist:-1},{ai:Ue,dist:2}];Ed={firstframe:0,lastframe:10,frames:Zx,endfunc:null};var jx=[{ai:M,dist:8},{ai:M,dist:3},{ai:M,dist:5},{ai:M,dist:0},{ai:M,dist:-3,think:Px},{ai:M,dist:0},{ai:M,dist:-5},{ai:M,dist:-7,think:Dx},{ai:M,dist:0},{ai:M,dist:6,think:Fx},{ai:M,dist:1},{ai:M,dist:2,think:Ux},{ai:M,dist:-3},{ai:M,dist:6},{ai:M,dist:-1},{ai:M,dist:-3},{ai:M,dist:2},{ai:M,dist:-11}];kd={firstframe:53,lastframe:70,frames:jx,endfunc:At};var qx=[{ai:M,dist:5},{ai:M,dist:-4},{ai:M,dist:-4},{ai:M,dist:-3},{ai:M,dist:0,think:Td},{ai:M,dist:0},{ai:M,dist:13,think:Md},{ai:M,dist:0},{ai:M,dist:2},{ai:M,dist:0},{ai:M,dist:-9,think:Rd},{ai:M,dist:0},{ai:M,dist:4},{ai:M,dist:3},{ai:M,dist:2},{ai:M,dist:-3},{ai:M,dist:-6}];Tx={firstframe:71,lastframe:87,frames:qx,endfunc:At};var Jx=[{ai:M,dist:5},{ai:M,dist:-4},{ai:M,dist:-4},{ai:M,dist:-3},{ai:M,dist:0,think:Td},{ai:M,dist:0,think:Hu},{ai:M,dist:13},{ai:M,dist:0,think:Md},{ai:M,dist:2},{ai:M,dist:0,think:Hu},{ai:M,dist:-9,think:Rd},{ai:M,dist:0},{ai:M,dist:4},{ai:M,dist:3},{ai:M,dist:2},{ai:M,dist:-3},{ai:M,dist:-6}];Mx={firstframe:71,lastframe:87,frames:Jx,endfunc:At};var Qx=[{ai:M,dist:9,think:qe},{ai:M,dist:2,think:qe},{ai:M,dist:3,think:qe},{ai:M,dist:3,think:qe},{ai:M,dist:1,think:qe},{ai:M,dist:0,think:qe},{ai:M,dist:0,think:qe},{ai:M,dist:10,think:qe},{ai:M,dist:-4,think:qe},{ai:M,dist:-1,think:qe},{ai:M,dist:2,think:Hx}];Rx={firstframe:0,lastframe:10,frames:Qx,endfunc:At};var eA=[{ai:O,dist:-6},{ai:O,dist:-2},{ai:O,dist:-6},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:0},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:7},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:-1}];zx={firstframe:88,lastframe:108,frames:eA,endfunc:At};var tA=[{ai:O,dist:-2},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:3},{ai:O,dist:1},{ai:O,dist:-2}];Lx={firstframe:109,lastframe:116,frames:tA,endfunc:At};var nA=[{ai:O,dist:-2},{ai:O,dist:2},{ai:O,dist:1},{ai:O,dist:3},{ai:O,dist:0},{ai:O,dist:-4}];Nx={firstframe:117,lastframe:122,frames:nA,endfunc:At};var iA=Array.from({length:18},()=>({ai:O,dist:0}));Ox={firstframe:123,lastframe:140,frames:iA,endfunc:zd};var rA=[{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:0},{ai:O,dist:9},{ai:O,dist:0}];Ix={firstframe:141,lastframe:145,frames:rA,endfunc:zd};var aA=[{ai:O,dist:0},{ai:O,dist:-2,think:Vx},{ai:O,dist:17,think:Wx},{ai:O,dist:-3},{ai:O,dist:-1,think:Kx},{ai:O,dist:-5},{ai:O,dist:-6},{ai:O,dist:-6}];Cx={firstframe:146,lastframe:153,frames:aA,endfunc:At};function zd(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var pr=.1,sA=80,pn=Math.random;function Ld(e,t,n){ae(e,pr,n)}function oA(e,t,n){he(e,t,pr,n)}function cA(e,t,n){de(e,t,pr,n)}function I(e,t,n){se(e,t,pr,n)}function vn(e,t,n){le(e,t)}var Ys,Nd,Od,lA,Zs,bs,uA,js,Id,dA,mA,hA,fA,_A,gA,Cd;function Pd(e){e.monsterinfo.current_move=Ys}function pA(e){e.monsterinfo.current_move=Nd}function Ft(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Ys;return}e.monsterinfo.current_move=Od}function vA(e){e.monsterinfo.aiflags&4||e.enemy||pn()<=.3&&(e.monsterinfo.current_move=Cd)}function yA(e,t){pn()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function wA(e,t){let n={x:sA,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),si(e,n,10+Math.floor(pn()*6),100,t)}function SA(e,t){let{forward:n,right:i}=J(e.angles),r={x:0,y:20,z:40},a=H(e.origin,V(n,r.x)),s=V(i,r.y),o=H(a,s),l={...o,z:o.z+r.z},c=e.skin>1?500:650,u=!!e.monsterinfo.blindfire,m=G;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=L(m,l);!u&&e.enemy&&(pn()<.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 h=P(d);e.skin>1?qS(e,l,h,50,c,0,.075,t):ai(e,l,h,50,c,0,t)}function xA(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=L(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=hn(n).y}}function AA(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function EA(e){e.monsterinfo.current_move=Zs}function kA(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=bs;return}if(e.enemy&&e.enemy.health>0&&pn()<=.6){e.monsterinfo.current_move=Zs;return}e.monsterinfo.current_move=bs}function bA(e){if(e.enemy&&e.enemy.health>0&&pn()<=.9){e.monsterinfo.current_move=js;return}e.monsterinfo.current_move=Id}function TA(e){e.monsterinfo.current_move=js}var MA=Array.from({length:30},(e,t)=>({ai:Ld,dist:0,think:t===8?(n,i)=>yA(n,i):null}));Cd={firstframe:201,lastframe:230,frames:MA,endfunc:Pd};var RA=Array.from({length:30},(e,t)=>({ai:Ld,dist:0,think:t===29?vA:null}));Ys={firstframe:101,lastframe:130,frames:RA,endfunc:Pd};var zA=Array.from({length:10},()=>({ai:oA,dist:6}));Nd={firstframe:171,lastframe:180,frames:zA,endfunc:pA};var LA=Array.from({length:10},()=>({ai:cA,dist:12}));Od={firstframe:171,lastframe:180,frames:LA,endfunc:Ft};var NA=Array.from({length:5},()=>({ai:vn,dist:0}));dA={firstframe:90,lastframe:94,frames:NA,endfunc:Ft};var OA=Array.from({length:5},()=>({ai:vn,dist:0}));mA={firstframe:95,lastframe:99,frames:OA,endfunc:Ft};var IA=Array.from({length:21},()=>({ai:vn,dist:0}));hA={firstframe:100,lastframe:120,frames:IA,endfunc:Ft};var CA=Array.from({length:12},()=>({ai:vn,dist:0}));fA={firstframe:48,lastframe:59,frames:CA,endfunc:Dd};var PA=Array.from({length:23},()=>({ai:vn,dist:0}));_A={firstframe:60,lastframe:82,frames:PA,endfunc:Dd};function Dd(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var DA=[{ai:I,dist:0,think:xA},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:4},{ai:I,dist:0},{ai:I,dist:-3},{ai:I,dist:3},{ai:I,dist:5},{ai:I,dist:7},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:0},{ai:I,dist:0,think:EA}];lA={firstframe:0,lastframe:12,frames:DA,endfunc:null};var FA=[{ai:I,dist:19,think:SA},{ai:I,dist:-6},{ai:I,dist:-5},{ai:I,dist:-2},{ai:I,dist:-7},{ai:I,dist:0},{ai:I,dist:1},{ai:I,dist:10,think:AA},{ai:I,dist:4},{ai:I,dist:5},{ai:I,dist:6},{ai:I,dist:6},{ai:I,dist:4},{ai:I,dist:3,think:kA}];Zs={firstframe:13,lastframe:26,frames:FA,endfunc:null};var UA=[{ai:I,dist:-3},{ai:I,dist:0},{ai:I,dist:-6},{ai:I,dist:-4},{ai:I,dist:-2}];bs={firstframe:27,lastframe:31,frames:UA,endfunc:Ft};var BA=[{ai:I,dist:1},{ai:I,dist:8},{ai:I,dist:3}];uA={firstframe:32,lastframe:34,frames:BA,endfunc:TA};var GA=[{ai:I,dist:1},{ai:I,dist:7,think:wA},{ai:I,dist:-7},{ai:I,dist:1},{ai:I,dist:-1},{ai:I,dist:1},{ai:I,dist:0},{ai:I,dist:1},{ai:I,dist:-2,think:bA}];js={firstframe:35,lastframe:43,frames:GA,endfunc:null};var HA=[{ai:I,dist:-6},{ai:I,dist:-1},{ai:I,dist:-6},{ai:I,dist:0}];Id={firstframe:44,lastframe:47,frames:HA,endfunc:Ft};var VA=Array.from({length:7},()=>({ai:vn,dist:0}));gA={firstframe:83,lastframe:89,frames:VA,endfunc:Ft};var vr=.1,WA=80,KA=24;function $A(e,t,n){ae(e,vr,n)}function XA(e,t,n){he(e,t,vr,n)}function Fd(e,t,n){de(e,t,vr,n)}function oe(e,t,n){se(e,t,vr,n)}function qs(e,t,n){le(e,t)}var YA,ZA,Ud,Bd,jA,qA,JA,QA;function e5(e){e.monsterinfo.current_move=Bd}function Js(e){e.monsterinfo.current_move=Ud}function Ku(e,t){si(e,{x:WA,y:0,z:0},5,0,t)}function t5(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var n5=[{ai:$A,dist:0}];YA={firstframe:41,lastframe:41,frames:n5,endfunc:null};var i5=Array.from({length:24},()=>({ai:Fd,dist:KA}));Bd={firstframe:70,lastframe:93,frames:i5,endfunc:null};var r5=Array.from({length:6},()=>({ai:Fd,dist:8}));Ud={firstframe:65,lastframe:70,frames:r5,endfunc:e5};var a5=Array.from({length:24},()=>({ai:XA,dist:4}));ZA={firstframe:41,lastframe:64,frames:a5,endfunc:null};var s5=Array.from({length:5},()=>({ai:qs,dist:0}));qA={firstframe:99,lastframe:103,frames:s5,endfunc:Js};var o5=Array.from({length:5},()=>({ai:qs,dist:0}));JA={firstframe:94,lastframe:98,frames:o5,endfunc:Js};var c5=[{ai:oe,dist:0,think:t5},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:Ku},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0},{ai:oe,dist:0,think:Ku},{ai:oe,dist:0}];jA={firstframe:0,lastframe:19,frames:c5,endfunc:Js};function l5(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var u5=Array.from({length:56},()=>({ai:qs,dist:0}));QA={firstframe:104,lastframe:159,frames:u5,endfunc:l5};var yr=.1;function d5(e,t,n){ae(e,yr,n)}function m5(e,t,n){he(e,t,yr,n)}function h5(e,t,n){de(e,t,yr,n)}function f5(e,t,n){se(e,t,yr,n)}function Gd(e,t,n){le(e,t)}var Qs,Hd,Vd,_5,g5,Wd;function p5(e){e.monsterinfo.current_move=Qs}function v5(e){e.monsterinfo.current_move=Hd}function eo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Vd:e.monsterinfo.current_move=Qs}function y5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function w5(e){e.monsterinfo.nextframe=Wd.lastframe,e.nextthink=-1}var S5=Array.from({length:46},()=>({ai:d5,dist:0}));Qs={firstframe:0,lastframe:45,frames:S5,endfunc:p5};var x5=Array.from({length:46},()=>({ai:m5,dist:5}));Hd={firstframe:0,lastframe:45,frames:x5,endfunc:v5};var A5=Array.from({length:46},()=>({ai:h5,dist:10}));Vd={firstframe:0,lastframe:45,frames:A5,endfunc:eo};var E5=Array.from({length:20},(e,t)=>({ai:f5,dist:0,think:t===10?y5:null}));_5={firstframe:46,lastframe:65,frames:E5,endfunc:eo};var k5=Array.from({length:6},()=>({ai:Gd,dist:0}));g5={firstframe:66,lastframe:71,frames:k5,endfunc:eo};var b5=Array.from({length:10},()=>({ai:Gd,dist:0}));Wd={firstframe:84,lastframe:93,frames:b5,endfunc:w5};var wr=.1;function T5(e,t,n){ae(e,wr,n)}function M5(e,t,n){he(e,t,wr,n)}function R5(e,t,n){de(e,t,wr,n)}function z5(e,t,n){se(e,t,wr,n)}function Kd(e,t,n){le(e,t)}var to,$d,Xd,L5,N5,Yd;function O5(e){e.monsterinfo.current_move=to}function I5(e){e.monsterinfo.current_move=$d}function no(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xd:e.monsterinfo.current_move=to}function C5(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function P5(e,t){if(!e.enemy)return;let n=5+Math.random()*5;xt(e,e.enemy)<=80&&ei(e,e.enemy)&&fe(e.enemy,e,e,P(L(e.enemy.origin,e.origin)),e.enemy.origin,G,n,5,2,0,t.timeSeconds)}function D5(e){e.monsterinfo.nextframe=Yd.lastframe,e.nextthink=-1}var F5=Array.from({length:46},()=>({ai:T5,dist:0}));to={firstframe:0,lastframe:45,frames:F5,endfunc:O5};var U5=Array.from({length:46},()=>({ai:M5,dist:5}));$d={firstframe:0,lastframe:45,frames:U5,endfunc:I5};var B5=Array.from({length:46},()=>({ai:R5,dist:10}));Xd={firstframe:0,lastframe:45,frames:B5,endfunc:no};var G5=Array.from({length:20},(e,t)=>({ai:z5,dist:0,think:t===10?C5:t===12?P5:null}));L5={firstframe:46,lastframe:65,frames:G5,endfunc:no};var H5=Array.from({length:6},()=>({ai:Kd,dist:0}));N5={firstframe:66,lastframe:71,frames:H5,endfunc:no};var V5=Array.from({length:10},()=>({ai:Kd,dist:0}));Yd={firstframe:84,lastframe:93,frames:V5,endfunc:D5};var Sr=.1;function W5(e,t,n){ae(e,Sr,n)}function K5(e,t,n){he(e,t,Sr,n)}function $5(e,t,n){de(e,t,Sr,n)}function Zd(e,t,n){se(e,t,Sr,n)}function jd(e,t,n){le(e,t)}var io,qd,Jd,X5,Y5,Z5,Qd;function j5(e){e.monsterinfo.current_move=io}function q5(e){e.monsterinfo.current_move=qd}function xr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Jd:e.monsterinfo.current_move=io}function J5(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function Q5(e,t){if(!e.enemy||!ei(e,e.enemy))return;let n=xt(e,e.enemy);if(J5(n)!=="melee")return;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(L(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 eE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(L(e.enemy.origin,n));_d(e,n,i,50,100,0,t)}function tE(e){e.monsterinfo.nextframe=Qd.lastframe,e.nextthink=-1}var nE=Array.from({length:30},()=>({ai:W5,dist:0}));io={firstframe:0,lastframe:29,frames:nE,endfunc:j5};var iE=Array.from({length:40},()=>({ai:K5,dist:3}));qd={firstframe:30,lastframe:69,frames:iE,endfunc:q5};var rE=Array.from({length:20},()=>({ai:$5,dist:12}));Jd={firstframe:70,lastframe:89,frames:rE,endfunc:xr};var aE=Array.from({length:10},(e,t)=>({ai:Zd,dist:0,think:t===5?Q5:null}));X5={firstframe:90,lastframe:99,frames:aE,endfunc:xr};var sE=Array.from({length:12},(e,t)=>({ai:Zd,dist:0,think:t===6?eE:null}));Y5={firstframe:100,lastframe:111,frames:sE,endfunc:xr};var oE=Array.from({length:6},()=>({ai:jd,dist:0}));Z5={firstframe:112,lastframe:117,frames:oE,endfunc:xr};var cE=Array.from({length:12},()=>({ai:jd,dist:0}));Qd={firstframe:118,lastframe:129,frames:cE,endfunc:tE};var Ar=.1;function em(e,t,n){ae(e,Ar,n)}function lE(e,t,n){he(e,t,Ar,n)}function tm(e,t,n){de(e,t,Ar,n)}function Er(e,t,n){se(e,t,Ar,n)}function ce(e,t,n){le(e,t)}var ro,nm,uE,im,dE,mE,hE,ao,rm,fE,_E,gE,am,pE,sm;function vE(e,t){t.engine.sound?.(e,0,"gunner/gunidle1.wav",1,1,0)}function yE(e){e.monsterinfo.current_move=ro}function wE(e){e.monsterinfo.aiflags&1||Math.random()<=.05&&(e.monsterinfo.current_move=nm)}function Ut(e){e.monsterinfo.aiflags&1?e.monsterinfo.current_move=ro:e.monsterinfo.current_move=im}function SE(e,t){t.engine.sound?.(e,0,"gunner/gunatck1.wav",1,1,0)}function xE(e,t){e.monsterinfo.current_move=ao}function AE(e,t){if(e.enemy&&e.enemy.health>0&&gn(e,e.enemy,t.trace)&&Math.random()<=.5){e.monsterinfo.current_move=ao;return}e.monsterinfo.current_move=rm}function EE(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},i=P(L(e.enemy.origin,n)),r=3,a=4;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),Pt(e,n,i,r,a,300,500,0,t,5)}function om(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n)),r=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),md(t,e,n,i,r,a)}function kE(e,t){e.monsterinfo.aiflags&2048||(e.monsterinfo.aiflags|=2048,Math.random()>.5&&om(e,t),e.maxs={...e.maxs,z:e.maxs.z-32},e.takedamage=!0,e.monsterinfo.pausetime=t.timeSeconds+1)}function bE(e,t){t.timeSeconds>=e.monsterinfo.pausetime?e.monsterinfo.aiflags&=-129:e.monsterinfo.aiflags|=128}function TE(e,t){e.monsterinfo.aiflags&=-2049,e.maxs={...e.maxs,z:e.maxs.z+32},e.takedamage=!0}function ME(e,t){if(!e.enemy)return;let n=L(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),r=600,a=P({x:n.x,y:n.y,z:0}),s=hn(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 RE(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 zE(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=sm)}var LE=Array.from({length:30},(e,t)=>({ai:em,dist:0,think:t===29?wE:null}));ro={firstframe:0,lastframe:29,frames:LE,endfunc:null};var NE=Array.from({length:40},(e,t)=>({ai:em,dist:0,think:t===7?vE:null}));nm={firstframe:30,lastframe:69,frames:NE,endfunc:yE};var OE=[0,3,4,5,7,2,6,4,2,7,5,7,4],IE=OE.map(e=>({ai:lE,dist:e}));uE={firstframe:76,lastframe:88,frames:IE,endfunc:null};var CE=[26,9,9,9,15,10,13,6],PE=CE.map((e,t)=>({ai:tm,dist:e,think:t%4===0?zE:null}));im={firstframe:94,lastframe:101,frames:PE,endfunc:null};var DE=[32,15,10,18,8,20],FE=DE.map(e=>({ai:tm,dist:e}));dE={firstframe:102,lastframe:107,frames:FE,endfunc:null};var UE=Array.from({length:21},(e,t)=>({ai:Er,dist:0,think:[4,7,10,13].includes(t)?om:null}));hE={firstframe:108,lastframe:128,frames:UE,endfunc:Ut};var BE=Array.from({length:7},(e,t)=>({ai:Er,dist:0,think:t===0?SE:null}));mE={firstframe:137,lastframe:143,frames:BE,endfunc:xE};var GE=Array.from({length:8},()=>({ai:Er,dist:0,think:EE}));ao={firstframe:144,lastframe:151,frames:GE,endfunc:AE};var HE=Array.from({length:7},()=>({ai:Er,dist:0}));rm={firstframe:152,lastframe:158,frames:HE,endfunc:Ut};var VE=[2,0,-5,3,-1,0,0,0,0,1,1,2,1,0,-2,-2,0,0],WE=VE.map(e=>({ai:ce,dist:e}));fE={firstframe:159,lastframe:176,frames:WE,endfunc:Ut};var KE=[-2,11,6,2,-1,-7,-2,-7],$E=KE.map(e=>({ai:ce,dist:e}));_E={firstframe:177,lastframe:184,frames:$E,endfunc:Ut};var XE=[-3,1,1,0,1],YE=XE.map(e=>({ai:ce,dist:e}));gE={firstframe:185,lastframe:189,frames:YE,endfunc:Ut};var ZE=[0,0,0,-7,-3,-5,8,6,0,0,0],jE=ZE.map(e=>({ai:ce,dist:e}));function qE(e){e.monsterinfo.nextframe=am.lastframe,e.nextthink=-1,e.solid=0}am={firstframe:190,lastframe:200,frames:jE,endfunc:qE};var JE=[{ai:ce,dist:1,think:kE},{ai:ce,dist:1},{ai:ce,dist:1,think:bE},{ai:ce,dist:0},{ai:ce,dist:-1},{ai:ce,dist:-1},{ai:ce,dist:0,think:TE},{ai:ce,dist:-1}];pE={firstframe:201,lastframe:208,frames:JE,endfunc:Ut};var QE=[{ai:ce,dist:0,think:ME},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0,think:RE},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0},{ai:ce,dist:0}];sm={firstframe:209,lastframe:216,frames:QE,endfunc:Ut};var kr=.1;function ek(e,t,n){ae(e,kr,n)}function tk(e,t,n){he(e,t,kr,n)}function nk(e,t,n){de(e,t,kr,n)}function ik(e,t,n){se(e,t,kr,n)}function cm(e,t,n){le(e,t)}var so,lm,um,rk,ak,dm;function sk(e){e.monsterinfo.current_move=so}function ok(e){e.monsterinfo.current_move=lm}function oo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=um:e.monsterinfo.current_move=so}function ck(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function lk(e){e.monsterinfo.nextframe=dm.lastframe,e.nextthink=-1}var uk=Array.from({length:46},()=>({ai:ek,dist:0}));so={firstframe:0,lastframe:45,frames:uk,endfunc:sk};var dk=Array.from({length:46},()=>({ai:tk,dist:5}));lm={firstframe:0,lastframe:45,frames:dk,endfunc:ok};var mk=Array.from({length:46},()=>({ai:nk,dist:10}));um={firstframe:0,lastframe:45,frames:mk,endfunc:oo};var hk=Array.from({length:20},(e,t)=>({ai:ik,dist:0,think:t===10?ck:null}));rk={firstframe:46,lastframe:65,frames:hk,endfunc:oo};var fk=Array.from({length:6},()=>({ai:cm,dist:0}));ak={firstframe:66,lastframe:71,frames:fk,endfunc:oo};var _k=Array.from({length:10},()=>({ai:cm,dist:0}));dm={firstframe:84,lastframe:93,frames:_k,endfunc:lk};var br=.1;function gk(e,t,n){ae(e,br,n)}function pk(e,t,n){he(e,t,br,n)}function vk(e,t,n){de(e,t,br,n)}function yk(e,t,n){se(e,t,br,n)}function mm(e,t,n){le(e,t)}var co,hm,fm,wk,Sk,_m;function xk(e){e.monsterinfo.current_move=co}function Ak(e){e.monsterinfo.current_move=hm}function lo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fm:e.monsterinfo.current_move=co}function Ek(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},i=P(L(e.enemy.origin,n));ot(e,n,i,5,1e3,0,0,t,1)}function kk(e){e.monsterinfo.nextframe=_m.lastframe,e.nextthink=-1}var bk=Array.from({length:46},()=>({ai:gk,dist:0}));co={firstframe:0,lastframe:45,frames:bk,endfunc:xk};var Tk=Array.from({length:46},()=>({ai:pk,dist:5}));hm={firstframe:0,lastframe:45,frames:Tk,endfunc:Ak};var Mk=Array.from({length:46},()=>({ai:vk,dist:10}));fm={firstframe:0,lastframe:45,frames:Mk,endfunc:lo};var Rk=Array.from({length:20},(e,t)=>({ai:yk,dist:0,think:t===10?Ek:null}));wk={firstframe:46,lastframe:65,frames:Rk,endfunc:lo};var zk=Array.from({length:6},()=>({ai:mm,dist:0}));Sk={firstframe:66,lastframe:71,frames:zk,endfunc:lo};var Lk=Array.from({length:10},()=>({ai:mm,dist:0}));_m={firstframe:84,lastframe:93,frames:Lk,endfunc:kk};var Tr=.1;function Nk(e,t,n){ae(e,Tr,n)}function Ok(e,t,n){he(e,t,Tr,n)}function Ik(e,t,n){de(e,t,Tr,n)}function Ck(e,t,n){se(e,t,Tr,n)}function uo(e,t,n){le(e,t)}var mo,gm,pm,Pk,Dk,vm,Fk;function Uk(e){e.monsterinfo.current_move=mo}function Bk(e){e.monsterinfo.current_move=gm}function Mr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=pm:e.monsterinfo.current_move=mo}function Gk(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=P(L(i,n));Pt(e,n,r,5,2,.05,.05,0,t,4)}var Hk=Array.from({length:22},()=>({ai:Nk,dist:0}));mo={firstframe:0,lastframe:21,frames:Hk,endfunc:Uk};var Vk=Array.from({length:15},()=>({ai:Ok,dist:4}));gm={firstframe:22,lastframe:36,frames:Vk,endfunc:Bk};var Wk=Array.from({length:8},()=>({ai:Ik,dist:12}));pm={firstframe:37,lastframe:44,frames:Wk,endfunc:Mr};var Kk=Array.from({length:15},(e,t)=>({ai:Ck,dist:0,think:t>=5&&t<=7?Gk:null}));Pk={firstframe:45,lastframe:59,frames:Kk,endfunc:Mr};var $k=Array.from({length:10},()=>({ai:uo,dist:0}));Dk={firstframe:60,lastframe:69,frames:$k,endfunc:Mr};var Xk=Array.from({length:20},()=>({ai:uo,dist:0}));function Yk(e){e.monsterinfo.nextframe=vm.lastframe,e.nextthink=-1}vm={firstframe:70,lastframe:89,frames:Xk,endfunc:Yk};var Zk=Array.from({length:5},()=>({ai:uo,dist:0}));Fk={firstframe:90,lastframe:94,frames:Zk,endfunc:Mr};var Rr=.1,jk={x:40,y:-20,z:20},qk={x:40,y:20,z:20},Jk={x:30,y:0,z:40};function Qk(e,t,n){ae(e,Rr,n)}function e2(e,t,n){he(e,t,Rr,n)}function t2(e,t,n){de(e,t,Rr,n)}function ho(e,t,n){se(e,t,Rr,n)}function ci(e,t,n){le(e,t)}var fo,ym,wm,_o,Ts,n2,i2,r2,a2,Sm;function s2(e){e.monsterinfo.current_move=fo}function o2(e){e.monsterinfo.current_move=ym}function yn(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wm:e.monsterinfo.current_move=fo}function c2(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&&gn(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=_o:e.monsterinfo.current_move=Ts}function Ms(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function l2(e,t){if(!e.enemy)return;let n=Ms(e,qk),i=P(L(e.enemy.origin,n));sr(e,n,i,6,4,.05,.05,0,t,4);let r=Ms(e,jk),a=P(L(e.enemy.origin,r));sr(e,r,a,6,4,.05,.05,0,t,4)}function u2(e,t){if(!e.enemy)return;let n=Ms(e,Jk),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=P(L(i,n));fd(e,n,r,50,300,100,200,0,t)}function d2(e){e.monsterinfo.nextframe=Sm.lastframe,e.nextthink=-1}function m2(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var h2=Array.from({length:51},()=>({ai:Qk,dist:0}));fo={firstframe:0,lastframe:50,frames:h2,endfunc:s2};var f2=Array.from({length:14},()=>({ai:e2,dist:10}));ym={firstframe:51,lastframe:64,frames:f2,endfunc:o2};var _2=Array.from({length:14},()=>({ai:t2,dist:10}));wm={firstframe:51,lastframe:64,frames:_2,endfunc:yn};var g2=Array.from({length:8},()=>({ai:ho,dist:0})),p2={firstframe:65,lastframe:72,frames:g2,endfunc:null},v2=Array.from({length:6},()=>({ai:ho,dist:0,think:l2}));_o={firstframe:73,lastframe:78,frames:v2,endfunc:c2};p2.endfunc=e=>{e.monsterinfo.current_move=_o};var y2=Array.from({length:4},()=>({ai:ci,dist:0}));Ts={firstframe:79,lastframe:82,frames:y2,endfunc:yn};var w2=Array.from({length:13},(e,t)=>({ai:ho,dist:0,think:t===6?u2:null}));n2={firstframe:83,lastframe:95,frames:w2,endfunc:yn};var S2=Array.from({length:3},()=>({ai:ci,dist:0}));i2={firstframe:96,lastframe:98,frames:S2,endfunc:yn};var x2=Array.from({length:3},()=>({ai:ci,dist:0}));r2={firstframe:99,lastframe:101,frames:x2,endfunc:yn};var A2=Array.from({length:25},()=>({ai:ci,dist:0}));a2={firstframe:102,lastframe:126,frames:A2,endfunc:yn};var E2=Array.from({length:50},(e,t)=>({ai:ci,dist:0,think:t===49?((n,i)=>{}):t===48?m2:null}));Sm={firstframe:127,lastframe:176,frames:E2,endfunc:d2};var zr=.1,k2={x:30,y:28,z:24},b2={x:26,y:16,z:24},T2={x:26,y:-14,z:24};function M2(e,t,n){ae(e,zr,n)}function R2(e,t,n){he(e,t,zr,n)}function z2(e,t,n){de(e,t,zr,n)}function xm(e,t,n){se(e,t,zr,n)}function wn(e,t,n){le(e,t)}var go,Am,Em,L2,km,N2,O2,I2,C2,bm,P2;function D2(e){e.monsterinfo.current_move=go}function F2(e){e.monsterinfo.current_move=Am}function Et(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Em:e.monsterinfo.current_move=go}function po(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function U2(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=po(e,k2),i={...e.enemy.origin};i.z+=e.enemy.viewheight||0;let r=P(L(i,n));fd(e,n,r,50,300,100,300,0,t)}function B2(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=po(e,T2),i=P(L(e.pos1,n));_d(e,n,i,50,100,0,t)}function G2(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function H2(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=po(e,b2),i=(e.monsterinfo.nextframe||0)-km.firstframe,r=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=L(s,n),c={...hn(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}ot(e,n,a,15,1e3,0,0,t,1)}function V2(e){e.monsterinfo.nextframe=bm.lastframe,e.nextthink=-1}var W2=Array.from({length:60},()=>({ai:M2,dist:0}));go={firstframe:0,lastframe:59,frames:W2,endfunc:D2};var K2=Array.from({length:10},()=>({ai:R2,dist:8}));Am={firstframe:60,lastframe:69,frames:K2,endfunc:F2};var $2=Array.from({length:10},()=>({ai:z2,dist:8}));Em={firstframe:60,lastframe:69,frames:$2,endfunc:Et};var X2=Array.from({length:8},(e,t)=>({ai:xm,dist:0,think:t===3?U2:null}));L2={firstframe:70,lastframe:77,frames:X2,endfunc:Et};var Y2=Array.from({length:26},(e,t)=>({ai:wn,dist:0,think:t>=4&&t<=20?H2:null}));km={firstframe:78,lastframe:103,frames:Y2,endfunc:Et};var Z2=Array.from({length:16},(e,t)=>({ai:xm,dist:0,think:t===7?G2:t===8?B2:null}));N2={firstframe:104,lastframe:119,frames:Z2,endfunc:Et};var j2=Array.from({length:4},()=>({ai:wn,dist:0}));O2={firstframe:120,lastframe:123,frames:j2,endfunc:Et};var q2=Array.from({length:4},()=>({ai:wn,dist:0}));I2={firstframe:124,lastframe:127,frames:q2,endfunc:Et};var J2=Array.from({length:27},()=>({ai:wn,dist:0}));C2={firstframe:128,lastframe:154,frames:J2,endfunc:Et};var Q2=Array.from({length:95},()=>({ai:wn,dist:0}));bm={firstframe:155,lastframe:249,frames:Q2,endfunc:V2};var eb=Array.from({length:13},()=>({ai:wn,dist:0}));P2={firstframe:250,lastframe:262,frames:eb,endfunc:Et};var ni=.1;function tb(e,t,n){if(e.classname==="monster_medic"&&zm(e,n)){e.monsterinfo.current_move=li;return}ae(e,ni,n)}function nb(e,t,n){he(e,t,ni,n)}function ib(e,t,n){e.classname==="monster_medic"&&zm(e,n)?e.monsterinfo.current_move=li:de(e,t,ni,n)}function Je(e,t,n){se(e,t,ni,n)}function vo(e,t,n){le(e,t)}var yo,Tm,li,rb,Mm,ab,sb,Rm;function ob(e){e.monsterinfo.current_move=yo}function cb(e){e.monsterinfo.current_move=Tm}function ui(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&xt(e,e.enemy)<80){e.monsterinfo.current_move=Mm;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=li:e.monsterinfo.current_move=yo}function lb(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=P(L(e.enemy.origin,n));ot(e,n,i,2,1e3,0,0,t,10)}function vt(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(xt(e,e.enemy)>400){e.monsterinfo.current_move=li;return}let i=J(e.angles),r=i.forward,a=i.right,s=i.up,o={x:24,y:0,z:6},l=H(e.origin,H(V(r,o.x),H(V(a,o.y),V(s,o.z)))),c=e.enemy.origin;t.multicast(e.origin,1,xe.temp_entity,{te:Se.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:l,end:c})}function ub(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),vt(e,t)}function db(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,i=t.getSpawnFunction(n.classname);if(xt(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 zm(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||!gn(e,a,r))return;let s=xt(e,a);s<i&&(i=s,n=a)}),n?(e.enemy=n,!0):!1}function mb(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=V(a.forward,64),o=H(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,ke|Dt|dr);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,xe.muzzleflash,{entId:u.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function hb(e){e.monsterinfo.nextframe=Rm.lastframe,e.nextthink=-1}var fb=Array.from({length:30},()=>({ai:tb,dist:0}));yo={firstframe:0,lastframe:29,frames:fb,endfunc:ob};var _b=Array.from({length:40},()=>({ai:nb,dist:3}));Tm={firstframe:30,lastframe:69,frames:_b,endfunc:cb};var gb=Array.from({length:20},()=>({ai:ib,dist:12}));li={firstframe:70,lastframe:89,frames:gb,endfunc:ui};var pb=Array.from({length:16},(e,t)=>({ai:Je,dist:0,think:t>=4&&t<=13?lb:null}));rb={firstframe:90,lastframe:105,frames:pb,endfunc:ui};var vb=[{ai:Je,dist:0,think:ub},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:vt},{ai:Je,dist:0,think:db}];Mm={firstframe:106,lastframe:114,frames:vb,endfunc:ui};var yb=Array.from({length:6},()=>({ai:vo,dist:0}));sb={firstframe:116,lastframe:121,frames:yb,endfunc:ui};var wb=Array.from({length:23},(e,t)=>({ai:vo,dist:0,think:t===11?mb:null}));ab={firstframe:122,lastframe:144,frames:wb,endfunc:ui};var Sb=Array.from({length:30},()=>({ai:vo,dist:0}));Rm={firstframe:161,lastframe:190,frames:Sb,endfunc:hb};var di=.1;function z(e,t,n){ae(e,di,n)}function Me(e,t,n){he(e,t,di,n)}function sn(e,t,n){de(e,t,di,n)}function pt(e,t,n){se(e,t,di,n)}function Y(e,t,n){le(e,t)}function ys(e,t,n){nS(e,null,t,di)}var Lm,Nm,or,xb,Ab,Eb,kb,Om,Im;function bb(e){e.monsterinfo.current_move=Nm}function Tb(e){e.monsterinfo.current_move=Lm}function Sn(e){e.monsterinfo.current_move=or}function Cm(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let i=L(e.enemy.origin,e.origin);if(mn(i)>100)return;let a=P(i);fe(e.enemy,e,e,a,e.enemy.origin,G,t,0,0,0,n.timeSeconds)}function Mb(e,t){Cm(e,30,t)}function $u(e,t){Cm(e,30,t)}function ln(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=or),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=or)}function Rb(e,t,n,i){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),fe(t,e,e,P(e.velocity),e.origin,G,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function zb(e,t){let n=J(e.angles).forward;e.movetype=7,e.touch=Rb,e.velocity=H(V(n,300),{x:0,y:0,z:300}),e.velocity=H(V(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function Lb(e){e.monsterinfo.nextframe=Om.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Nb=[{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},{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},{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},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0}];Lm={firstframe:0,lastframe:50,frames:Nb,endfunc:Tb};var Ob=[{ai:Me,dist:3},{ai:Me,dist:1},{ai:Me,dist:5},{ai:Me,dist:10},{ai:Me,dist:13},{ai:Me,dist:12},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:5},{ai:Me,dist:6},{ai:Me,dist:16},{ai:Me,dist:15},{ai:Me,dist:6}];Nm={firstframe:51,lastframe:63,frames:Ob,endfunc:bb};var Ib=[{ai:sn,dist:20},{ai:sn,dist:15},{ai:sn,dist:35},{ai:sn,dist:20},{ai:sn,dist:10},{ai:sn,dist:20}];or={firstframe:64,lastframe:69,frames:Ib,endfunc:Sn};var Cb=[{ai:pt,dist:0},{ai:pt,dist:0},{ai:pt,dist:0,think:$u},{ai:pt,dist:0},{ai:pt,dist:0,think:Mb},{ai:pt,dist:0},{ai:pt,dist:0,think:$u},{ai:pt,dist:0}];xb={firstframe:70,lastframe:77,frames:Cb,endfunc:Sn};var Pb=[{ai:ys,dist:0},{ai:ys,dist:0},{ai:ys,dist:0,think:zb},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln},{ai:Y,dist:0,think:ln}];Im={firstframe:93,lastframe:100,frames:Pb,endfunc:Sn};Im.frames[3].ai=(e,t,n)=>{ln(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var Db=[{ai:Y,dist:4},{ai:Y,dist:-3},{ai:Y,dist:-8},{ai:Y,dist:2},{ai:Y,dist:5}];Ab={firstframe:78,lastframe:82,frames:Db,endfunc:Sn};var Fb=[{ai:Y,dist:-24},{ai:Y,dist:11},{ai:Y,dist:5},{ai:Y,dist:-2}];Eb={firstframe:83,lastframe:86,frames:Fb,endfunc:Sn};var Ub=[{ai:Y,dist:11},{ai:Y,dist:0},{ai:Y,dist:-2},{ai:Y,dist:0},{ai:Y,dist:0},{ai:Y,dist:0}];kb={firstframe:87,lastframe:92,frames:Ub,endfunc:Sn};var Bb=[{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}];Om={firstframe:101,lastframe:109,frames:Bb,endfunc:Lb};var Lr=.1,Gb=()=>Math.random();function K(e,t,n){ae(e,Lr,n)}function rt(e,t,n){he(e,t,Lr,n)}function at(e,t,n){de(e,t,Lr,n)}function ge(e,t,n){se(e,t,Lr,n)}function pe(e,t,n){le(e,t)}var wo,Pm,Dm,Hb,Vb,Fm,Um,Wb,Kb,So,Bm;function $b(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Xb(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function on(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Rs(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Yb(e){e.monsterinfo.current_move=So}function Zb(e){Gb()<=.8?e.monsterinfo.current_move=So:e.monsterinfo.current_move=Bm}function Gm(e){e.monsterinfo.current_move=wo}function xo(e){e.monsterinfo.current_move=Pm}function Hm(e){e.monsterinfo.current_move=Um}function Vm(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=wo:e.monsterinfo.current_move=Dm}function ws(e,t){let n=L(t,e);if(mn(n)>256)return!1;let a=hn(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Be(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=H(e.origin,H(V(i,s.x),H(V(r,s.y),V(a,s.z)))),l=Py(e.enemy.origin);if(!ws(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.maxs.z-8},!ws(o,l)&&(l={...l,z:e.enemy.origin.z+e.enemy.mins.z+8},!ws(o,l)))||t.trace(o,l,G,G,e,yt).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,xe.temp_entity,{te:Se.PARASITE_ATTACK,entId:e.index,start:o,end:l});let d=P(L(o,l));fe(e.enemy,e,e,d,e.enemy.origin,G,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 jb(e){e.monsterinfo.nextframe=Fm.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var qb=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:on},{ai:K,dist:0},{ai:K,dist:0,think:on}];wo={firstframe:83,lastframe:99,frames:qb,endfunc:Gm};var Jb=[{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0}];Kb={firstframe:100,lastframe:103,frames:Jb,endfunc:Yb};var Qb=[{ai:K,dist:0,think:Rs},{ai:K,dist:0},{ai:K,dist:0},{ai:K,dist:0,think:Rs},{ai:K,dist:0},{ai:K,dist:0}];So={firstframe:104,lastframe:109,frames:Qb,endfunc:Zb};var e6=[{ai:K,dist:0,think:Rs},{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}];Bm={firstframe:110,lastframe:117,frames:e6,endfunc:Gm};var t6=[{ai:at,dist:0},{ai:at,dist:30}];Um={firstframe:68,lastframe:69,frames:t6,endfunc:Vm};var n6=[{ai:at,dist:30},{ai:at,dist:30},{ai:at,dist:22},{ai:at,dist:19},{ai:at,dist:24},{ai:at,dist:28},{ai:at,dist:25}];Dm={firstframe:70,lastframe:76,frames:n6,endfunc:Vm};var i6=[{ai:rt,dist:0},{ai:rt,dist:30,think:xo}];Wb={firstframe:68,lastframe:69,frames:i6,endfunc:xo};var r6=[{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}];Pm={firstframe:70,lastframe:76,frames:r6,endfunc:xo};var a6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:6},{ai:pe,dist:16},{ai:pe,dist:-6},{ai:pe,dist:-7},{ai:pe,dist:0}];Vb={firstframe:57,lastframe:67,frames:a6,endfunc:Hm};var s6=[{ai:ge,dist:0,think:$b},{ai:ge,dist:0},{ai:ge,dist:15,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:-3,think:Be},{ai:ge,dist:-2,think:Be},{ai:ge,dist:0,think:Be},{ai:ge,dist:-1,think:Be},{ai:ge,dist:0,think:Xb},{ai:ge,dist:-2},{ai:ge,dist:-2},{ai:ge,dist:-3},{ai:ge,dist:0}];Hb={firstframe:39,lastframe:56,frames:s6,endfunc:Hm};var o6=[{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:0}];Fm={firstframe:32,lastframe:38,frames:o6,endfunc:jb};var Nr=.1;var c6=2,l6=4;function u6(e,t,n){ae(e,Nr,n)}function d6(e,t,n){he(e,t,Nr,n)}function m6(e,t,n){de(e,t,Nr,n)}function Wm(e,t,n){se(e,t,Nr,n)}function Km(e,t,n){le(e,t)}var Ao,$m,Xm,h6,f6,_6,Ym;function g6(e){e.monsterinfo.current_move=Ao}function p6(e){e.monsterinfo.current_move=$m}function Or(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Xm:e.monsterinfo.current_move=Ao}function mi(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function hi(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 P(L(n,t))}function v6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n);ot(e,n,i,5,600,0,0,t,1)}function y6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=2,a=4,s=20,o=.15,l=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),XS(e,n,i,r,a,o,l,s,0,t,3)}function w6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),Pt(e,n,i,r,a,s,o,0,t,4)}function S6(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=H(s,V(i,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let l=P(L(o,s));e.origin=s,e.movedir=l,t.linkentity(e)}function x6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n);ZS(e,n,i,5,600,0,0,t)}function A6(e,t){if(!e.enemy)return;let n=mi(e),i=hi(e,n),r=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),YS(e,n,i,r,a,0,0,t)}function E6(e,t){e.enemy&&Es(e,1,!1,S6,t)}function k6(e,t){e.count<2?x6(e,t):e.count<4?A6(e,t):E6(e,t)}function Zm(e,t){if(e.style===1){k6(e,t);return}e.spawnflags&c6?y6(e,t):e.spawnflags&l6?w6(e,t):v6(e,t)}var b6=Array.from({length:30},()=>({ai:u6,dist:0}));Ao={firstframe:0,lastframe:29,frames:b6,endfunc:g6};var T6=Array.from({length:40},()=>({ai:d6,dist:2}));$m={firstframe:30,lastframe:69,frames:T6,endfunc:p6};var M6=Array.from({length:20},()=>({ai:m6,dist:10}));Xm={firstframe:70,lastframe:89,frames:M6,endfunc:Or};var R6=Array.from({length:10},(e,t)=>({ai:Wm,dist:0,think:t===5?Zm:null}));h6={firstframe:90,lastframe:99,frames:R6,endfunc:Or};var z6=Array.from({length:10},(e,t)=>({ai:Wm,dist:0,think:t>=4&&t<=8?Zm:null}));f6={firstframe:90,lastframe:99,frames:z6,endfunc:Or};var L6=Array.from({length:6},()=>({ai:Km,dist:0}));_6={firstframe:100,lastframe:105,frames:L6,endfunc:Or};var N6=Array.from({length:10},()=>({ai:Km,dist:0}));function O6(e){e.monsterinfo.nextframe=Ym.lastframe,e.nextthink=-1}Ym={firstframe:106,lastframe:115,frames:N6,endfunc:O6};var jm=.1,I6={x:30,y:30,z:40},C6={x:30,y:-30,z:40},P6={x:20,y:0,z:70};function D6(e,t,n){ae(e,jm,n)}function F6(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ko:e.monsterinfo.current_move=Ir}function Eo(e,t,n){se(e,t,jm,n)}function fi(e,t,n){le(e,t)}var Ir,ko,U6,B6,qm,Jm,G6,H6,V6,Qm;function W6(e){e.monsterinfo.current_move=Ir}function Bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ko:e.monsterinfo.current_move=Ir}function bo(e,t){let{forward:n,right:i,up:r}=J(e.angles),a={...e.origin},s=V(n,t.x),o=V(i,t.y),l=V(r,t.z);return H(H(H(a,s),o),l)}function K6(e,t){if(!e.enemy)return;let n=bo(e,C6),i=P(L(e.enemy.origin,n));ai(e,n,i,50,650,0,t)}function $6(e,t){if(!e.enemy)return;let n=bo(e,P6),i=P(L(e.enemy.origin,n));jS(e,n,i,50,600,0,t)}function X6(e,t){if(!e.enemy)return;let n=bo(e,I6),i=P(L(e.enemy.origin,n));sr(e,n,i,6,4,.05,.05,0,t,4)}function Y6(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&&gn(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=qm:e.monsterinfo.current_move=Jm}function Z6(e){e.monsterinfo.nextframe=Qm.lastframe,e.nextthink=-1}var j6=Array.from({length:60},()=>({ai:D6,dist:0}));Ir={firstframe:0,lastframe:59,frames:j6,endfunc:W6};var q6=Array.from({length:18},()=>({ai:F6,dist:12}));ko={firstframe:60,lastframe:77,frames:q6,endfunc:Bt};var J6=Array.from({length:4},()=>({ai:fi,dist:0}));V6={firstframe:78,lastframe:81,frames:J6,endfunc:Bt};var Q6=Array.from({length:4},()=>({ai:fi,dist:0}));H6={firstframe:82,lastframe:85,frames:Q6,endfunc:Bt};var e3=Array.from({length:4},()=>({ai:fi,dist:0}));G6={firstframe:86,lastframe:89,frames:e3,endfunc:Bt};var t3=Array.from({length:24},()=>({ai:fi,dist:0}));Qm={firstframe:90,lastframe:113,frames:t3,endfunc:Z6};var n3=Array.from({length:6},(e,t)=>({ai:Eo,dist:0,think:t===0||t===3?$6:null}));B6={firstframe:114,lastframe:119,frames:n3,endfunc:Bt};var i3=Array.from({length:27},(e,t)=>({ai:Eo,dist:0,think:t===7||t===10||t===13?K6:null}));U6={firstframe:120,lastframe:146,frames:i3,endfunc:Bt};var r3=Array.from({length:6},()=>({ai:Eo,dist:0,think:X6}));qm={firstframe:147,lastframe:152,frames:r3,endfunc:Y6};var a3=Array.from({length:14},()=>({ai:fi,dist:0}));Jm={firstframe:153,lastframe:166,frames:a3,endfunc:Bt};var To=.1;function eh(e,t,n,i,r){let a=r.trace(t,n,G,G,e,yt);if(!a.startsolid&&!a.allsolid&&a.fraction>=.5)return P(L(n,t));let s=H(n,V(i,-20)),o=r.trace(t,s,G,G,e,yt);if(!o.startsolid&&!o.allsolid&&o.fraction>=.5)return P(L(s,t));let l=H(n,V(i,20)),c=r.trace(t,l,G,G,e,yt);return!c.startsolid&&!c.allsolid&&c.fraction>=.5?P(L(l,t)):null}function th(e,t){if(e.monsterinfo.aiflags&32768&&e.monsterinfo.blind_fire_target){let n=L(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=lr(n)}}function s3(e,t,n){ae(e,To,n)}function o3(e,t,n){he(e,t,To,n)}function c3(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ro:e.monsterinfo.current_move=Cr}function Mo(e,t,n){se(e,t,To,n)}function nh(e,t,n){le(e,t)}var Cr,ih,Ro,l3,u3,d3,m3,rh;function h3(e){e.monsterinfo.current_move=Cr}function f3(e){e.monsterinfo.current_move=ih}function _i(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ro:e.monsterinfo.current_move=Cr}function _3(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=eh(e,n,c,l,t);if(!u)return;i=u}else i=P(L(e.enemy.origin,n));ot(e,n,i,30,1e3,0,0,t,1)}function g3(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(L(e.enemy.origin,n));Pt(e,n,i,20,2,.05,.05,0,t,4)}function p3(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=eh(e,n,c,l,t);if(!u)return;i=u}else i=P(L(e.enemy.origin,n));ai(e,n,i,50,650,0,t)}function v3(e){e.monsterinfo.nextframe=rh.lastframe,e.nextthink=-1}function y3(e,t){e.monsterinfo.aiflags&32768&&(e.monsterinfo.aiflags&=-32769),_i(e)}var w3=Array.from({length:30},()=>({ai:s3,dist:0}));Cr={firstframe:0,lastframe:29,frames:w3,endfunc:h3};var S3=Array.from({length:16},()=>({ai:o3,dist:5}));ih={firstframe:30,lastframe:45,frames:S3,endfunc:f3};var x3=Array.from({length:16},()=>({ai:c3,dist:10}));Ro={firstframe:46,lastframe:61,frames:x3,endfunc:_i};var A3=Array.from({length:16},(e,t)=>{let n=null;return t===7?n=th:t>5&&t<12&&(n=_3),{ai:Mo,dist:0,think:n}});l3={firstframe:62,lastframe:77,frames:A3,endfunc:_i};var E3=Array.from({length:20},(e,t)=>({ai:Mo,dist:0,think:t%2===0&&t>5?g3:null}));u3={firstframe:78,lastframe:97,frames:E3,endfunc:_i};var k3=Array.from({length:18},(e,t)=>{let n=null;return t===0?n=th:(t===8||t===12||t===16)&&(n=p3),{ai:Mo,dist:0,think:n}});d3={firstframe:98,lastframe:115,frames:k3,endfunc:y3};var b3=Array.from({length:6},()=>({ai:nh,dist:0}));m3={firstframe:116,lastframe:121,frames:b3,endfunc:_i};var T3=Array.from({length:16},()=>({ai:nh,dist:0}));rh={firstframe:122,lastframe:137,frames:T3,endfunc:v3};var zo=.1;function M3(e,t,n){ae(e,zo,n)}function Lo(e,t,n){de(e,t,zo,n)}function R3(e,t,n){se(e,t,zo,n)}var No,ah,z3,L3,sh;function N3(e){e.monsterinfo.current_move=No}function Oo(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ah:e.monsterinfo.current_move=No}function O3(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=P(L(e.enemy.origin,i));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),ot(e,i,r,2,1e3,1,0,t)}var I3=Array.from({length:1},()=>({ai:M3,dist:0}));No={firstframe:0,lastframe:0,frames:I3,endfunc:N3};var C3=Array.from({length:1},()=>({ai:Lo,dist:0}));ah={firstframe:0,lastframe:0,frames:C3,endfunc:Oo};var P3=Array.from({length:8},(e,t)=>({ai:R3,dist:0,think:t===4?O3:void 0}));z3={firstframe:1,lastframe:8,frames:P3,endfunc:Oo};var D3=Array.from({length:2},()=>({ai:Lo,dist:0}));L3={firstframe:9,lastframe:10,frames:D3,endfunc:Oo};var F3=Array.from({length:4},()=>({ai:Lo,dist:0}));function U3(e){e.monsterinfo.nextframe=sh.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}sh={firstframe:11,lastframe:14,frames:F3,endfunc:U3};var kM=new Map(Ps.map(e=>[e.name,e]));var B3=2166136261,G3=16777619;function oh(e,t){let n=e>>>0;for(let i=0;i<t.length;i+=1)n^=t[i]&255,n=Math.imul(n,G3)>>>0;return n>>>0}function un(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let r=new Uint8Array(n);return oh(e,r)}function zs(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i)&255;return oh(e,n)}var Ss=2,H3=1;function ze(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function ne(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function er(e,t,n){return e===void 0?n:ne(e,t)}function cr(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function nr(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)ne(n,`${t} element`);return e}function V3(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=ze(e,"level");return{frameNumber:er(t.frameNumber,"level.frameNumber",0),timeSeconds:er(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:er(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:er(t.deltaSeconds,"level.deltaSeconds",0)}}function W3(e){if(e===void 0)return new qu().getState();let t=ze(e,"rng"),n=ze(t.mt,"rng.mt"),i=nr(n.state,"rng.mt.state");return{mt:{index:ne(n.index,"rng.mt.index"),state:i}}}function K3(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:ne(i.time,`thinks[${n}].time`),entityIndex:ne(i.entityIndex,`thinks[${n}].entityIndex`)}})}function $3(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:ne(i,r);return{frameNumber:ne(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:ne(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:ne(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:ne(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function X3(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]=ne(l,`${i}.${o}`);n[i]=s;break}if(Array.isArray(r)&&r.length===3){let[a,s,o]=r;n[i]=[ne(a,`${i}[0]`),ne(s,`${i}[1]`),ne(o,`${i}[2]`)];break}throw new Error(`Unsupported entity field value for ${i}`)}}}return n}function Y3(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:ne(i.index,`entities[${n}].index`),fields:X3(i.fields)}})}function Z3(e){let t=ze(e,"pool");return{capacity:ne(t.capacity,"pool.capacity"),activeOrder:nr(t.activeOrder,"pool.activeOrder"),freeList:nr(t.freeList,"pool.freeList"),pendingFree:nr(t.pendingFree,"pool.pendingFree")}}function j3(e){let t=ze(e,"entities");return{timeSeconds:ne(t.timeSeconds,"entities.timeSeconds"),pool:Z3(t.pool),entities:Y3(t.entities),thinks:K3(t.thinks),awareness:$3(t.awareness)}}function q3(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:cr(i.name,`cvars[${n}].name`),value:cr(i.value,`cvars[${n}].value`),flags:ne(i.flags,`cvars[${n}].flags`)}})}function J3(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>cr(t,`configstrings[${n}]`))}function Q3(e){return e===void 0?{}:ze(e,"gameState")}function st(e,t){if(t==null)return e;if(typeof t=="number")return un(e,t);if(typeof t=="string")return zs(e,t);if(typeof t=="boolean")return un(e,t?1:0);if(Array.isArray(t)){let n=e;for(let i of t)n=st(n,i);return n}if(typeof t=="object"){let n=e,i=Object.keys(t).sort();for(let r of i)n=zs(n,r),n=st(n,t[r]);return n}return e}function eT(e){let t=B3;return t=un(t,e.version),t=un(t,e.timestamp),t=zs(t,e.map),t=un(t,e.difficulty),t=un(t,e.playtimeSeconds),t=st(t,e.gameState),t=st(t,e.level),t=st(t,e.rng),t=st(t,e.entities),t=st(t,e.cvars),t=st(t,e.configstrings),e.player&&(t=st(t,e.player)),t>>>0}function ch(e,t={}){let{allowNewerVersion:n=!0}=t,i=typeof e=="string"?JSON.parse(e):e,r=ze(i,"save"),a=r.version??Ss,s=ne(a,"version");if(s<H3)throw new Error(`Unsupported save version ${s}`);if(s>Ss&&!n)throw new Error(`Save version ${s} is newer than supported ${Ss}`);let o={version:s,timestamp:ne(r.timestamp,"timestamp"),map:cr(r.map,"map"),difficulty:ne(r.difficulty,"difficulty"),playtimeSeconds:ne(r.playtimeSeconds,"playtimeSeconds"),gameState:Q3(r.gameState),level:V3(r.level),rng:W3(r.rng),entities:j3(r.entities),cvars:q3(r.cvars),configstrings:J3(r.configstrings),player:r.player?r.player:void 0,checksum:r.checksum!==void 0?ne(r.checksum,"checksum"):void 0};if(o.checksum!==void 0){let l=eT(o);if(l!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${l}`)}return o}var bM=new Set(Ps.filter(e=>e.save).map(e=>e.name));var Xu=globalThis.TextEncoder;function dn(e){return ch({...e},{allowNewerVersion:!0})}function tT(e){return Xu?new Xu().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var nT=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:dn(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:dn(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:dn(e.save)}))}},iT=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:dn(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:dn(t.save)}))}},Io=class qn{constructor(t={}){let{dbName:n=qn.DEFAULT_DB_NAME,storeName:i=qn.DEFAULT_STORE}=t,r=t.indexedDB??globalThis.indexedDB;r?this.adapter=new iT(r,n,i):this.adapter=new nT}async save(t,n,i={}){let r=dn(n),a={id:t,name:i.name??t,map:r.map,difficulty:r.difficulty,playtimeSeconds:r.playtimeSeconds,timestamp:r.timestamp,version:r.version,bytes:tT(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 ch(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(qn.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(qn.QUICK_SLOT,t)}};Io.DEFAULT_DB_NAME="quake2ts-saves";Io.DEFAULT_STORE="saves";Io.QUICK_SLOT="quicksave";var TM=Os();var MM=[F.Blaster,F.Shotgun,F.SuperShotgun,F.Machinegun,F.Chaingun,F.GrenadeLauncher,F.RocketLauncher,F.HandGrenade,F.HyperBlaster,F.Railgun,F.BFG10K],RM=[{id:Z.QuadDamage,priority:1},{id:Z.Invulnerability,priority:2},{id:Z.EnviroSuit,priority:3},{id:Z.Rebreather,priority:4},{id:Z.Silencer,priority:5}];var rT=new Map,aT=["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"],lh=async(e,t)=>{for(let n of aT)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);rT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var sT=new Map,oT=["d_left","d_right","d_up","d_down"],uh=async(e,t)=>{for(let n of oT)try{let i=await t.loadTexture(`pics/${n}.pcx`),r=e.registerTexture(n,i);sT.set(n,r)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Co=[],cT=0,dh=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);Co.push(r)}catch(i){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,i)}Co.length>0&&(cT=Co[0].width),await Pu(e,t),await lh(e,t),await uh(e,t)};var Po=[{type:"null"},{type:"armor",id:_n.BODY},{type:"armor",id:_n.COMBAT},{type:"armor",id:_n.JACKET},{type:"armor",id:_n.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:F.Grapple},{type:"weapon",id:F.Blaster},{type:"weapon",id:F.ChainFist},{type:"weapon",id:F.Shotgun},{type:"weapon",id:F.SuperShotgun},{type:"weapon",id:F.Machinegun},{type:"weapon",id:F.EtfRifle},{type:"weapon",id:F.Chaingun},{type:"ammo",id:$.Grenades},{type:"ammo",id:$.Trap},{type:"ammo",id:$.Tesla},{type:"weapon",id:F.GrenadeLauncher},{type:"weapon",id:F.ProxLauncher},{type:"weapon",id:F.RocketLauncher},{type:"weapon",id:F.HyperBlaster},{type:"weapon",id:F.IonRipper},{type:"weapon",id:F.PlasmaBeam},{type:"weapon",id:F.Railgun},{type:"weapon",id:F.Phalanx},{type:"weapon",id:F.BFG10K},{type:"weapon",id:F.Disruptor},{type:"ammo",id:$.Shells},{type:"ammo",id:$.Bullets},{type:"ammo",id:$.Cells},{type:"ammo",id:$.Rockets},{type:"ammo",id:$.Slugs},{type:"ammo",id:$.MagSlugs},{type:"ammo",id:$.Flechettes},{type:"ammo",id:$.Prox},{type:"ammo",id:$.Nuke},{type:"ammo",id:$.Rounds},{type:"powerup",id:Z.QuadDamage},{type:"powerup",id:Z.QuadFire},{type:"powerup",id:Z.Invulnerability},{type:"powerup",id:Z.Invisibility},{type:"powerup",id:Z.Silencer},{type:"powerup",id:Z.Rebreather},{type:"powerup",id:Z.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:Z.Bandolier},{type:"powerup",id:Z.AmmoPack},{type:"powerup",id:Z.IRGoggles},{type:"powerup",id:Z.DoubleDamage},{type:"powerup",id:Z.SphereVengeance},{type:"powerup",id:Z.SphereHunter},{type:"powerup",id:Z.SphereDefender},{type:"powerup",id:Z.Doppelganger},{type:"powerup",id:Z.TagToken},{type:"key",id:me.DataCD},{type:"key",id:me.PowerCube},{type:"key",id:me.ExplosiveCharges},{type:"key",id:me.Yellow},{type:"key",id:me.PowerCore},{type:"key",id:me.Pyramid},{type:"key",id:me.DataSpinner},{type:"key",id:me.Pass},{type:"key",id:me.Blue},{type:"key",id:me.Red},{type:"key",id:me.Green},{type:"key",id:me.CommanderHead},{type:"key",id:me.Airstrike},{type:"key",id:me.NukeContainer},{type:"key",id:me.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:me.RedFlag},{type:"key",id:me.BlueFlag},{type:"powerup",id:Z.TechResistance},{type:"powerup",id:Z.TechStrength},{type:"powerup",id:Z.TechHaste},{type:"powerup",id:Z.TechRegeneration},{type:"powerup",id:Z.Flashlight},{type:"powerup",id:Z.Compass}];var lT=2048,Pr=class{constructor(t,n){this.configstrings=new Array(lT).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.playerNum=0;this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}setView(t){this.view=t}onServerData(t,n,i,r,a,s){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null,this.playerNum=a}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,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&Nl){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=Wt();let o=structuredClone(s);this.applyDelta(o,r),i.set(a,o)}this.entities=i}applyDelta(t,n){let i=n.bits;t.number=n.number,i&Va&&(t.modelindex=n.modelindex),i&Ka&&(t.modelindex2=n.modelindex2),i&$a&&(t.modelindex3=n.modelindex3),i&Xa&&(t.modelindex4=n.modelindex4),i&Ua&&(t.frame=n.frame),i&Wa&&(t.frame=n.frame),(i&Oi||i&Pi)&&(t.skinnum=n.skinnum),(i&Ni||i&Ci)&&(t.effects=n.effects),(i&Li||i&Ii)&&(t.renderfx=n.renderfx),i&Ca&&(t.origin.x=n.origin.x),i&Pa&&(t.origin.y=n.origin.y),i&Ga&&(t.origin.z=n.origin.z),i&Ha&&(t.angles.x=n.angles.x),i&Da&&(t.angles.y=n.angles.y),i&Fa&&(t.angles.z=n.angles.z),i&Ya&&(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&Za&&(t.sound=n.sound),i&Ba&&(t.event=n.event),i&ja&&(t.solid=n.solid),n.alpha!==0&&(t.alpha=n.alpha),n.scale!==0&&(t.scale=n.scale),n.instanceBits!==0&&(t.instanceBits=n.instanceBits),n.loopVolume!==0&&(t.loopVolume=n.loopVolume),n.loopAttenuation!==0&&(t.loopAttenuation=n.loopAttenuation),n.owner!==0&&(t.owner=n.owner),n.oldFrame!==0&&(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=ft,c=fu(this.stats,ss.QuadDamage)?4:1;switch(n){case nu:r=-2,o={x:-2,y:0,z:0};break;case lu:r=-4,o={x:-4,y:0,z:0};break;case tu:r=-1,a=Math.random()-.5;break;case iu:case ru:case au:r=-.5,a=Math.random()-.5;break;case su:r=-3,o={x:-3,y:0,z:0};break;case ou:case cu:r=-2,o={x:-2,y:0,z:0};break;case uu:r=-5,o={x:-2,y:0,z:0};break;case du:case eu: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)}onLevelRestart(){this.callbacks?.onLevelRestart&&this.callbacks.onLevelRestart()}onWaitingForPlayers(){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>=Po.length)break;let u=Po[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:It.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:ft,kick_origin:ft,gunoffset:ft,gunangles:ft,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>=r&&t<=i){let a=(t-r)/(i-r),s=this.convertFrameToPredictionState(this.previousFrame);return tn(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var xn=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=re.Models&&t<re.Models+$n){let i=t-re.Models;this.models[i]=n}else if(t>=re.Sounds&&t<re.Sounds+Xn){let i=t-re.Sounds;this.sounds[i]=n}else if(t>=re.Images&&t<re.Images+Yn){let i=t-re.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 Dr=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:"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 Fr=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} (${mh(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} (${mh(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 mh(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 Ur=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 gi=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 Br=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 Gr=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()}}]}}};function hh(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,h=u.label;if(u.type==="input"&&u.getValue){if(h+=`: ${u.getValue()}`,m===t.selectedIndex){let f=Date.now();Math.floor(f/500)%2===0&&(h+="_")}}else u.type==="toggle"&&u.getValue&&(h+=`: ${u.getValue()}`);if(m===t.selectedIndex){let v=h.replace(/\^[0-9]/g,"").length*8,y=(n-v)/2;e.drawString(y-16,d,"\r")}e.drawCenterString(d,h)})}var pi=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&Kn.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 Hr=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 Vr=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 Wr=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 Kr=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 uT=[{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"}],Gt=class{constructor(t=uT){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 fh(){return new Gt}function Do(e){return e}function vi(e){return e.trim().toLowerCase()}var dT=250,Fo=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}}},$r=(v=>(v.Forward="+forward",v.Back="+back",v.MoveLeft="+moveleft",v.MoveRight="+moveright",v.MoveUp="+moveup",v.MoveDown="+movedown",v.Jump="+jump",v.Crouch="+crouch",v.Attack="+attack",v.Use="+use",v.Holster="+holster",v.TurnLeft="+left",v.TurnRight="+right",v.LookUp="+lookup",v.LookDown="+lookdown",v.SpeedModifier="+speed",v.Zoom="+zoom",v))($r||{}),mT={"+attack":Ye.Attack,"+use":Ye.Use,"+holster":Ye.Holster,"+jump":Ye.Jump,"+crouch":Ye.Crouch},hT=new Map(Object.values($r).map(e=>[vi(e),e]));function fT(e){return hT.get(vi(e))}function yi(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var An=class{constructor(t={},n=new Gt){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??$l,this.sideSpeed=t.sideSpeed??Xl,this.upSpeed=t.upSpeed??Yl,this.yawSpeed=t.yawSpeed??Zl,this.pitchSpeed=t.pitchSpeed??jl,this.sensitivity=t.sensitivity??ql,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=yi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!0,i,n)}handleKeyUp(t,n=yi()){let i=t,r=this.bindings.getBinding(i);r&&this.applyCommand(r,!1,i,n)}handleMouseButtonDown(t,n=yi()){let i=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(i),!0,i,n)}handleMouseButtonUp(t,n=yi()){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=yi(),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 T=this.gamepadLook.y*(this.invertGamepadY?-1:1);u={x:u.x+T*a*this.gamepadLookScale,y:u.y+this.gamepadLook.x*r*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let T=this.touchLook.y*(this.invertMouseY?-1:1);u={x:u.x+T*a,y:u.y+this.touchLook.x*r,z:0}}if(this.pointerLocked||!this.requirePointerLock){let T=this.sampleMouseDelta(),U=Ql(T,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});u={x:u.x+U.x,y:u.y+U.y,z:0}}let m=Jl(this.viewAngles,u);this.viewAngles=m;let d=this.sample("+forward",t,n),h=this.sample("+back",t,n),f=this.sample("+moveleft",t,n),S=this.sample("+moveright",t,n),_=this.sample("+moveup",t,n),v=this.sample("+movedown",t,n),y=this.sample("+speed",t,n),x=this.sample("+jump",t,n),g=this.sample("+crouch",t,n),A=this.runByDefault?y.active?.5:1:y.active?1:.5,b=this.forwardSpeed*(d.fraction-h.fraction)*A,k=this.sideSpeed*(S.fraction-f.fraction)*A,p=this.upSpeed*(_.fraction-v.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(b+=this.forwardSpeed*this.gamepadMove.y*A,k+=this.sideSpeed*this.gamepadMove.x*A),(this.touchMove.x!==0||this.touchMove.y!==0)&&(b+=this.forwardSpeed*this.touchMove.y*A,k+=this.sideSpeed*this.touchMove.x*A),this.jumpAddsUpMove&&x.fraction>0&&(p+=this.upSpeed*x.fraction),this.crouchAddsDownMove&&g.fraction>0&&(p-=this.upSpeed*g.fraction),b=this.clampMove(b,this.forwardSpeed),k=this.clampMove(k,this.sideSpeed),p=this.clampMove(p,this.upSpeed);let E=this.collectButtonBits(t,n),w=Math.min(Math.max(Math.round(t),1),dT);return(this.anyPressed||E!==Ye.None)&&(E|=Ye.Any),this.anyPressed=!1,{msec:w,buttons:E,angles:{...this.viewAngles},forwardmove:b,sidemove:k,upmove:p,serverFrame:i}}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=fT(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=Ye.None;for(let[r,a]of Object.entries(mT)){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 Fo,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 Xr=class{constructor(t,n=new An(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 Yr={x:0,y:0,z:0};function En(e,t,n){return e+(t-e)*n}function Uo(e,t,n){return En(e,t,n)}function _T(e,t,n,i,r){let a=[],s=r.engine.assets;if(!s)return a;let o=new Map(t.map(l=>[l.number,l]));for(let l of e){let c=o.get(l.number)??l,u=i.getModelName(l.modelIndex);if(!u)continue;let m=s.getMd2Model(u)||s.getMd3Model(u);if(!m)continue;let d={x:En(c.origin.x,l.origin.x,n),y:En(c.origin.y,l.origin.y,n),z:En(c.origin.z,l.origin.z,n)},h={x:Uo(c.angles.x,l.angles.x,n),y:Uo(c.angles.y,l.angles.y,n),z:Uo(c.angles.z,l.angles.z,n)},f=l.frame,S=c.frame,_=c.scale!==void 0?c.scale:1,v=l.scale!==void 0?l.scale:1,y=En(_,v,n),x=E=>E===void 0||E===0?255:E,g=x(c.alpha),A=x(l.alpha),k=En(g,A,n)/255,p=q.create();q.translate(p,p,[d.x,d.y,d.z]),q.rotateZ(p,p,h.z*Math.PI/180),q.rotateY(p,p,h.y*Math.PI/180),q.rotateX(p,p,h.x*Math.PI/180),q.scale(p,p,[y,y,y]),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:S,frame1:f,lerp:n},transform:p,skin:l.skinNum>0?i.getImageName(l.skinNum):void 0,alpha:k}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:S,frame1:f,lerp:n},transform:p,alpha:k})}return a}function gT(e){let t=new Qi(e.engine.trace),n=new Ji,i=new Il,r=new Pr(e);r.setView(n);let a=new Ur,s=new Vr,o=new Wr,l=new Kr,c=new pi(new Hr),u,m,d=new xn,h,f=!1,_=Cu(e,{get tickRate(){return 10},get frameTimeMs(){return h?.timeMs??0},get serverFrame(){return r.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return d},getClientName:p=>`Player ${p}`,getKeyBinding:p=>`[${p}]`,get inAutoDemo(){return f}}),v=Iu(_);r.setCallbacks({onCenterPrint:p=>v.ParseCenterPrint(p,0,!1),onPrint:(p,E)=>v.NotifyMessage(0,E,!1),onConfigString:(p,E)=>{d.set(p,E),v.ParseConfigString(p,E)}}),i.setHandler(r);let y,x,g,A=90,b=!1;if(e.host){m=new gi(a,e.host),u=new Gr(a,m,e.host);let p=new Map;if(e.host.cvars){for(let E of e.host.cvars.list())p.set(E.name,{value:E.string,setValue:w=>e.host.cvars.setValue(E.name,w)});c.loadCvars(p)}}if(e.host?.commands&&(e.host.commands.register("playdemo",p=>{if(p.length<1){console.log("usage: playdemo <filename>");return}let E=p[0];console.log(`playdemo: ${E}`),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 p=Du();console.log(`Crosshair changed to index ${p}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{b=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{b=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():u&&a.pushMenu(u.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Kn.Archive,onChange:E=>{let w=E.number;isNaN(w)||(A=Math.max(1,Math.min(179,w)))},description:"Field of view"});let p=e.host.cvars.get("fov");if(p){let E=p.number;isNaN(E)||(A=Math.max(1,Math.min(179,E)))}}return{loadingScreen:s,errorDialog:o,init(p){this.Init(p)},Init(p){h=p,p?.state&&t.setAuthoritative(p),v.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),dh(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(p){return a.isActive(),t.enqueueCommand(p)},handleInput(p,E){if(!a.isActive())return!1;if(!E)return!0;let w=p.toLowerCase();return w==="arrowup"||w==="w"?a.handleInput("up"):w==="arrowdown"||w==="s"?a.handleInput("down"):w==="arrowleft"||w==="a"?a.handleInput("left"):w==="arrowright"||w==="d"?a.handleInput("right"):w==="enter"||w===" "?a.handleInput("select"):w==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:p.length===1?a.handleInput("char",p):p==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let p=e.host.cvars.list().map(E=>({name:E.name,value:E.string,flags:E.flags}));c.saveCvars(p)}}else u&&a.pushMenu(u.createPauseMenu())},createMainMenu(p,E,w,T,U){let B=new Fr(a,E,w,T,U),N=m;if(!N){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");N=new gi(a,e.host)}let Q=e.engine.assets,Ce={findByExtension:Qe=>Q?Q.listFiles(Qe):[]},kt=new Br(a,Ce,Qe=>{console.log(`Starting map: ${Qe}`),e.host?.commands.execute(`map ${Qe}`)}),wi=new Dr(a,B,{...p,optionsFactory:N,mapsFactory:kt,onSetDifficulty:Qe=>{e.host?.cvars&&e.host.cvars.setValue("skill",Qe.toString())}});return{menuSystem:a,factory:wi}},render(p){let E=i.getState(),w=[];E===qa.Playing?y=r.getPredictionState():(p.latest?.state&&(t.setAuthoritative(p.latest),h=p.latest),p.previous?.state&&p.latest?.state?(y=tn(p.previous.state,p.latest.state,p.alpha),p.latest.state.packetEntities&&p.previous.state.packetEntities&&(w=_T(p.latest.state.packetEntities,p.previous.state.packetEntities,p.alpha,d,e))):y=p.latest?.state??p.previous?.state??t.getPredictedState());let T=p.latest&&p.previous?Math.max(0,p.latest.timeMs-p.previous.timeMs):0;x=n.sample(y,T);let U={};if(y){let{origin:B,viewAngles:N}=y;g=new jc,g.position=ee.fromValues(B.x,B.y,B.z);let Q=x?.offset??{x:0,y:0,z:0};ee.add(g.position,g.position,[Q.x,Q.y,Q.z]);let Ce=x?.angles??{x:0,y:0,z:0};g.angles=ee.fromValues(N.x+Ce.x,N.y+Ce.y,N.z+Ce.z),g.fov=b?40:A,g.aspect=4/3,e.engine.renderer&&(g.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&g){let B;if(e.engine.assets){let N=d.getModelName(1);if(N){let Q=e.engine.assets.getMap(N)}}e.engine.renderer.renderFrame({camera:g,world:B,dlights:[]},w)}if(e.engine.renderer&&y&&y.client){let B=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},N=p.latest?.timeMs??0;this.DrawHUD(B,N)}return U},DrawHUD(p,E){if(!e.engine.renderer)return;let w=e.engine.renderer,T=w.width,U=w.height;if(y&&y.client){let B={origin:y.origin,velocity:y.velocity,viewAngles:y.viewAngles,onGround:it(y.pmFlags,Ie.OnGround),waterLevel:y.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:y.damageAlpha??0,damageIndicators:y.damageIndicators??[],blend:y.blend??[0,0,0,0],pickupIcon:y.pickupIcon,centerPrint:void 0,notify:void 0,stats:y.stats?[...y.stats]:new Array(32).fill(0),kick_angles:Yr,kick_origin:Yr,gunoffset:Yr,gunangles:Yr,gunindex:0,pm_type:y.pm_type??0,pm_time:y.pm_time??0,pm_flags:y.pmFlags,gun_frame:y.gun_frame??0,rdflags:y.rdflags??0,fov:y.fov??90};B.stats[Pe.STAT_HEALTH]=y.health??0,B.stats[Pe.STAT_AMMO]=y.ammo??0,B.stats[Pe.STAT_ARMOR]=y.armor??0,w.begin2D(),v.DrawHUD(0,null,{x:0,y:0,width:T,height:U},{x:0,y:0,width:T,height:U},1,0,B),w.end2D()}a.isActive()&&hh(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),y&&y.client&&l.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,y.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(v.Shutdown(),h=void 0,y=void 0,e.host?.cvars){let p=e.host.cvars.list().map(E=>({name:E.name,value:E.string,flags:E.flags}));c.saveCvars(p)}},get prediction(){return t},get lastRendered(){return y},get view(){return n},get lastView(){return x},get camera(){return g},demoPlayback:i,ParseCenterPrint(p){v.ParseCenterPrint(p,0,!1)},ParseNotify(p){v.NotifyMessage(0,p,!1)},showSubtitle(p,E){v.ShowSubtitle(p,E)},ParseConfigString(p,E){d.set(p,E),v.ParseConfigString(p,E)},demoHandler:r,configStrings:d}}return yh(pT);})();
|
|
178
178
|
/*! Bundled license information:
|
|
179
179
|
|
|
180
180
|
pako/dist/pako.esm.mjs:
|