{"version":3,"file":"H8vv7XCJM.BwvK_9ds.mjs","names":["t","r","n","o","s","e","a","c","i","u","f","l","m","y","d","p","b","g","A","x","h","F","T","S","P","E","w","I","v","B","C","k","_","V","U","z","O","M","R","L","D","$","G","N","j","W","X","Y","lerp","re","se","ae","pe","c","i","r","g","b","localizedValues","_","t","className","Image","css"],"sources":["https:/ga.jspm.io/npm:twgl.js@5.5.4/dist/5.x/twgl-full.module.js","https:/framerusercontent.com/modules/1KI6LsDD7tGlV5jyRU9H/WZsfQTGEccqpaZtnaGTS/MeshGradient.js","https:/framerusercontent.com/modules/w5A9xilAs8Ul7pRH8Kb7/XeF29PEaW7rNf2mbG66t/H8vv7XCJM-0.js","https:/framerusercontent.com/modules/w5A9xilAs8Ul7pRH8Kb7/XeF29PEaW7rNf2mbG66t/H8vv7XCJM.js","https:/framerusercontent.com/modules/Kv8tvUWioa2A9knFlyxp/4vn3jb1PMgXXs9IaL8sM/H8vv7XCJM.js"],"sourcesContent":["/* @license twgl.js 5.5.4 Copyright (c) 2015, Gregg Tavares All Rights Reserved.\nAvailable via the MIT license.\nsee: http://github.com/greggman/twgl.js for details */\nlet e=Float32Array;\n/**\n * A JavaScript array with 3 values or a Float32Array with 3 values.\n * When created by the library will create the default type which is `Float32Array`\n * but can be set by calling {@link module:twgl/v3.setDefaultType}.\n * @typedef {(number[]|Float32Array)} Vec3\n * @memberOf module:twgl/v3\n */\n/**\n * Sets the type this library creates for a Vec3\n * @param {constructor} ctor the constructor for the type. Either `Float32Array` or `Array`\n * @return {constructor} previous constructor for Vec3\n * @memberOf module:twgl/v3\n */function setDefaultType$1(t){const r=e;e=t;return r}\n/**\n * Creates a vec3; may be called with x, y, z to set initial values.\n * @param {number} [x] Initial x value.\n * @param {number} [y] Initial y value.\n * @param {number} [z] Initial z value.\n * @return {module:twgl/v3.Vec3} the created vector\n * @memberOf module:twgl/v3\n */function create$1(t,r,n){const o=new e(3);t&&(o[0]=t);r&&(o[1]=r);n&&(o[2]=n);return o}\n/**\n * Adds two vectors; assumes a and b have the same dimension.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} A vector tha tis the sum of a and b.\n * @memberOf module:twgl/v3\n */function add(t,r,n){n=n||new e(3);n[0]=t[0]+r[0];n[1]=t[1]+r[1];n[2]=t[2]+r[2];return n}\n/**\n * Subtracts two vectors.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} A vector that is the difference of a and b.\n * @memberOf module:twgl/v3\n */function subtract(t,r,n){n=n||new e(3);n[0]=t[0]-r[0];n[1]=t[1]-r[1];n[2]=t[2]-r[2];return n}\n/**\n * Performs linear interpolation on two vectors.\n * Given vectors a and b and interpolation coefficient t, returns\n * a + t * (b - a).\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {number} t Interpolation coefficient.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The linear interpolated result.\n * @memberOf module:twgl/v3\n */function lerp(t,r,n,o){o=o||new e(3);o[0]=t[0]+n*(r[0]-t[0]);o[1]=t[1]+n*(r[1]-t[1]);o[2]=t[2]+n*(r[2]-t[2]);return o}\n/**\n * Performs linear interpolation on two vectors.\n * Given vectors a and b and interpolation coefficient vector t, returns\n * a + t * (b - a).\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} t Interpolation coefficients vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} the linear interpolated result.\n * @memberOf module:twgl/v3\n */function lerpV(t,r,n,o){o=o||new e(3);o[0]=t[0]+n[0]*(r[0]-t[0]);o[1]=t[1]+n[1]*(r[1]-t[1]);o[2]=t[2]+n[2]*(r[2]-t[2]);return o}\n/**\n * Return max values of two vectors.\n * Given vectors a and b returns\n * [max(a[0], b[0]), max(a[1], b[1]), max(a[2], b[2])].\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The max components vector.\n * @memberOf module:twgl/v3\n */function max(t,r,n){n=n||new e(3);n[0]=Math.max(t[0],r[0]);n[1]=Math.max(t[1],r[1]);n[2]=Math.max(t[2],r[2]);return n}\n/**\n * Return min values of two vectors.\n * Given vectors a and b returns\n * [min(a[0], b[0]), min(a[1], b[1]), min(a[2], b[2])].\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The min components vector.\n * @memberOf module:twgl/v3\n */function min(t,r,n){n=n||new e(3);n[0]=Math.min(t[0],r[0]);n[1]=Math.min(t[1],r[1]);n[2]=Math.min(t[2],r[2]);return n}\n/**\n * Multiplies a vector by a scalar.\n * @param {module:twgl/v3.Vec3} v The vector.\n * @param {number} k The scalar.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The scaled vector.\n * @memberOf module:twgl/v3\n */function mulScalar(t,r,n){n=n||new e(3);n[0]=t[0]*r;n[1]=t[1]*r;n[2]=t[2]*r;return n}\n/**\n * Divides a vector by a scalar.\n * @param {module:twgl/v3.Vec3} v The vector.\n * @param {number} k The scalar.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The scaled vector.\n * @memberOf module:twgl/v3\n */function divScalar(t,r,n){n=n||new e(3);n[0]=t[0]/r;n[1]=t[1]/r;n[2]=t[2]/r;return n}\n/**\n * Computes the cross product of two vectors; assumes both vectors have\n * three entries.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The vector of a cross b.\n * @memberOf module:twgl/v3\n */function cross(t,r,n){n=n||new e(3);const o=t[2]*r[0]-t[0]*r[2];const s=t[0]*r[1]-t[1]*r[0];n[0]=t[1]*r[2]-t[2]*r[1];n[1]=o;n[2]=s;return n}\n/**\n * Computes the dot product of two vectors; assumes both vectors have\n * three entries.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @return {number} dot product\n * @memberOf module:twgl/v3\n */function dot(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}\n/**\n * Computes the length of vector\n * @param {module:twgl/v3.Vec3} v vector.\n * @return {number} length of vector.\n * @memberOf module:twgl/v3\n */function length$1(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}\n/**\n * Computes the square of the length of vector\n * @param {module:twgl/v3.Vec3} v vector.\n * @return {number} square of the length of vector.\n * @memberOf module:twgl/v3\n */function lengthSq(e){return e[0]*e[0]+e[1]*e[1]+e[2]*e[2]}\n/**\n * Computes the distance between 2 points\n * @param {module:twgl/v3.Vec3} a vector.\n * @param {module:twgl/v3.Vec3} b vector.\n * @return {number} distance between a and b\n * @memberOf module:twgl/v3\n */function distance(e,t){const r=e[0]-t[0];const n=e[1]-t[1];const o=e[2]-t[2];return Math.sqrt(r*r+n*n+o*o)}\n/**\n * Computes the square of the distance between 2 points\n * @param {module:twgl/v3.Vec3} a vector.\n * @param {module:twgl/v3.Vec3} b vector.\n * @return {number} square of the distance between a and b\n * @memberOf module:twgl/v3\n */function distanceSq(e,t){const r=e[0]-t[0];const n=e[1]-t[1];const o=e[2]-t[2];return r*r+n*n+o*o}\n/**\n * Divides a vector by its Euclidean length and returns the quotient.\n * @param {module:twgl/v3.Vec3} a The vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The normalized vector.\n * @memberOf module:twgl/v3\n */function normalize(t,r){r=r||new e(3);const n=t[0]*t[0]+t[1]*t[1]+t[2]*t[2];const o=Math.sqrt(n);if(o>1e-5){r[0]=t[0]/o;r[1]=t[1]/o;r[2]=t[2]/o}else{r[0]=0;r[1]=0;r[2]=0}return r}\n/**\n * Negates a vector.\n * @param {module:twgl/v3.Vec3} v The vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} -v.\n * @memberOf module:twgl/v3\n */function negate$1(t,r){r=r||new e(3);r[0]=-t[0];r[1]=-t[1];r[2]=-t[2];return r}\n/**\n * Copies a vector.\n * @param {module:twgl/v3.Vec3} v The vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} A copy of v.\n * @memberOf module:twgl/v3\n */function copy$1(t,r){r=r||new e(3);r[0]=t[0];r[1]=t[1];r[2]=t[2];return r}\n/**\n * Multiplies a vector by another vector (component-wise); assumes a and\n * b have the same length.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The vector of products of entries of a and\n *     b.\n * @memberOf module:twgl/v3\n */function multiply$1(t,r,n){n=n||new e(3);n[0]=t[0]*r[0];n[1]=t[1]*r[1];n[2]=t[2]*r[2];return n}\n/**\n * Divides a vector by another vector (component-wise); assumes a and\n * b have the same length.\n * @param {module:twgl/v3.Vec3} a Operand vector.\n * @param {module:twgl/v3.Vec3} b Operand vector.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not new one is created.\n * @return {module:twgl/v3.Vec3} The vector of quotients of entries of a and\n *     b.\n * @memberOf module:twgl/v3\n */function divide(t,r,n){n=n||new e(3);n[0]=t[0]/r[0];n[1]=t[1]/r[1];n[2]=t[2]/r[2];return n}var t=Object.freeze({__proto__:null,add:add,copy:copy$1,create:create$1,cross:cross,distance:distance,distanceSq:distanceSq,divide:divide,divScalar:divScalar,dot:dot,lerp:lerp,lerpV:lerpV,length:length$1,lengthSq:lengthSq,max:max,min:min,mulScalar:mulScalar,multiply:multiply$1,negate:negate$1,normalize:normalize,setDefaultType:setDefaultType$1,subtract:subtract});let r=Float32Array;\n/**\n * A JavaScript array with 16 values or a Float32Array with 16 values.\n * When created by the library will create the default type which is `Float32Array`\n * but can be set by calling {@link module:twgl/m4.setDefaultType}.\n * @typedef {(number[]|Float32Array)} Mat4\n * @memberOf module:twgl/m4\n */\n/**\n * Sets the type this library creates for a Mat4\n * @param {constructor} ctor the constructor for the type. Either `Float32Array` or `Array`\n * @return {constructor} previous constructor for Mat4\n * @memberOf module:twgl/m4\n */function setDefaultType(e){const t=r;r=e;return t}\n/**\n * Negates a matrix.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} -m.\n * @memberOf module:twgl/m4\n */function negate(e,t){t=t||new r(16);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];return t}function create(){return new r(16).fill(0)}\n/**\n * Copies a matrix.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/m4.Mat4} [dst] The matrix. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} A copy of m.\n * @memberOf module:twgl/m4\n */function copy(e,t){t=t||new r(16);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];return t}\n/**\n * Creates an n-by-n identity matrix.\n *\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} An n-by-n identity matrix.\n * @memberOf module:twgl/m4\n */function identity(e){e=e||new r(16);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;return e}\n/**\n * Takes the transpose of a matrix.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The transpose of m.\n * @memberOf module:twgl/m4\n */function transpose(e,t){t=t||new r(16);if(t===e){let r;r=e[1];e[1]=e[4];e[4]=r;r=e[2];e[2]=e[8];e[8]=r;r=e[3];e[3]=e[12];e[12]=r;r=e[6];e[6]=e[9];e[9]=r;r=e[7];e[7]=e[13];e[13]=r;r=e[11];e[11]=e[14];e[14]=r;return t}const n=e[0];const o=e[1];const s=e[2];const a=e[3];const c=e[4];const i=e[5];const u=e[6];const f=e[7];const l=e[8];const m=e[9];const y=e[10];const d=e[11];const p=e[12];const b=e[13];const g=e[14];const A=e[15];t[0]=n;t[1]=c;t[2]=l;t[3]=p;t[4]=o;t[5]=i;t[6]=m;t[7]=b;t[8]=s;t[9]=u;t[10]=y;t[11]=g;t[12]=a;t[13]=f;t[14]=d;t[15]=A;return t}\n/**\n * Computes the inverse of a 4-by-4 matrix.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The inverse of m.\n * @memberOf module:twgl/m4\n */function inverse(e,t){t=t||new r(16);const n=e[0];const o=e[1];const s=e[2];const a=e[3];const c=e[4];const i=e[5];const u=e[6];const f=e[7];const l=e[8];const m=e[9];const y=e[10];const d=e[11];const p=e[12];const b=e[13];const g=e[14];const A=e[15];const x=y*A;const h=g*d;const F=u*A;const T=g*f;const S=u*d;const P=y*f;const E=s*A;const w=g*a;const I=s*d;const v=y*a;const B=s*f;const C=u*a;const k=l*b;const _=p*m;const V=c*b;const U=p*i;const z=c*m;const O=l*i;const M=n*b;const R=p*o;const L=n*m;const D=l*o;const $=n*i;const G=c*o;const N=x*i+T*m+S*b-(h*i+F*m+P*b);const j=h*o+E*m+v*b-(x*o+w*m+I*b);const W=F*o+w*i+B*b-(T*o+E*i+C*b);const X=P*o+I*i+C*m-(S*o+v*i+B*m);const Y=1/(n*N+c*j+l*W+p*X);t[0]=Y*N;t[1]=Y*j;t[2]=Y*W;t[3]=Y*X;t[4]=Y*(h*c+F*l+P*p-(x*c+T*l+S*p));t[5]=Y*(x*n+w*l+I*p-(h*n+E*l+v*p));t[6]=Y*(T*n+E*c+C*p-(F*n+w*c+B*p));t[7]=Y*(S*n+v*c+B*l-(P*n+I*c+C*l));t[8]=Y*(k*f+U*d+z*A-(_*f+V*d+O*A));t[9]=Y*(_*a+M*d+D*A-(k*a+R*d+L*A));t[10]=Y*(V*a+R*f+$*A-(U*a+M*f+G*A));t[11]=Y*(O*a+L*f+G*d-(z*a+D*f+$*d));t[12]=Y*(V*y+O*g+_*u-(z*g+k*u+U*y));t[13]=Y*(L*g+k*s+R*y-(M*y+D*g+_*s));t[14]=Y*(M*u+G*g+U*s-($*g+V*s+R*u));t[15]=Y*($*y+z*s+D*u-(L*u+G*y+O*s));return t}\n/**\n * Multiplies two 4-by-4 matrices with a on the left and b on the right\n * @param {module:twgl/m4.Mat4} a The matrix on the left.\n * @param {module:twgl/m4.Mat4} b The matrix on the right.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The matrix product of a and b.\n * @memberOf module:twgl/m4\n */function multiply(e,t,n){n=n||new r(16);const o=e[0];const s=e[1];const a=e[2];const c=e[3];const i=e[4];const u=e[5];const f=e[6];const l=e[7];const m=e[8];const y=e[9];const d=e[10];const p=e[11];const b=e[12];const g=e[13];const A=e[14];const x=e[15];const h=t[0];const F=t[1];const T=t[2];const S=t[3];const P=t[4];const E=t[5];const w=t[6];const I=t[7];const v=t[8];const B=t[9];const C=t[10];const k=t[11];const _=t[12];const V=t[13];const U=t[14];const z=t[15];n[0]=o*h+i*F+m*T+b*S;n[1]=s*h+u*F+y*T+g*S;n[2]=a*h+f*F+d*T+A*S;n[3]=c*h+l*F+p*T+x*S;n[4]=o*P+i*E+m*w+b*I;n[5]=s*P+u*E+y*w+g*I;n[6]=a*P+f*E+d*w+A*I;n[7]=c*P+l*E+p*w+x*I;n[8]=o*v+i*B+m*C+b*k;n[9]=s*v+u*B+y*C+g*k;n[10]=a*v+f*B+d*C+A*k;n[11]=c*v+l*B+p*C+x*k;n[12]=o*_+i*V+m*U+b*z;n[13]=s*_+u*V+y*U+g*z;n[14]=a*_+f*V+d*U+A*z;n[15]=c*_+l*V+p*U+x*z;return n}\n/**\n * Sets the translation component of a 4-by-4 matrix to the given\n * vector.\n * @param {module:twgl/m4.Mat4} a The matrix.\n * @param {module:twgl/v3.Vec3} v The vector.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The matrix with translation set.\n * @memberOf module:twgl/m4\n */function setTranslation(e,t,r){r=r||identity();if(e!==r){r[0]=e[0];r[1]=e[1];r[2]=e[2];r[3]=e[3];r[4]=e[4];r[5]=e[5];r[6]=e[6];r[7]=e[7];r[8]=e[8];r[9]=e[9];r[10]=e[10];r[11]=e[11]}r[12]=t[0];r[13]=t[1];r[14]=t[2];r[15]=1;return r}\n/**\n * Returns the translation component of a 4-by-4 matrix as a vector with 3\n * entries.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} [dst] vector to hold result. If not passed a new one is created.\n * @return {module:twgl/v3.Vec3} The translation component of m.\n * @memberOf module:twgl/m4\n */function getTranslation(e,t){t=t||create$1();t[0]=e[12];t[1]=e[13];t[2]=e[14];return t}\n/**\n * Returns an axis of a 4x4 matrix as a vector with 3 entries\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {number} axis The axis 0 = x, 1 = y, 2 = z;\n * @return {module:twgl/v3.Vec3} [dst] vector.\n * @return {module:twgl/v3.Vec3} The axis component of m.\n * @memberOf module:twgl/m4\n */function getAxis(e,t,r){r=r||create$1();const n=t*4;r[0]=e[n+0];r[1]=e[n+1];r[2]=e[n+2];return r}\n/**\n * Sets an axis of a 4x4 matrix as a vector with 3 entries\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} v the axis vector\n * @param {number} axis The axis  0 = x, 1 = y, 2 = z;\n * @param {module:twgl/m4.Mat4} [dst] The matrix to set. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The matrix with axis set.\n * @memberOf module:twgl/m4\n */function setAxis(e,t,r,n){n!==e&&(n=copy(e,n));const o=r*4;n[o+0]=t[0];n[o+1]=t[1];n[o+2]=t[2];return n}\n/**\n * Computes a 4-by-4 perspective transformation matrix given the angular height\n * of the frustum, the aspect ratio, and the near and far clipping planes.  The\n * arguments define a frustum extending in the negative z direction.  The given\n * angle is the vertical angle of the frustum, and the horizontal angle is\n * determined to produce the given aspect ratio.  The arguments near and far are\n * the distances to the near and far clipping planes.  Note that near and far\n * are not z coordinates, but rather they are distances along the negative\n * z-axis.  The matrix generated sends the viewing frustum to the unit box.\n * We assume a unit box extending from -1 to 1 in the x and y dimensions and\n * from 0 to 1 in the z dimension.\n * @param {number} fieldOfViewYInRadians The camera angle from top to bottom (in radians).\n * @param {number} aspect The aspect ratio width / height.\n * @param {number} zNear The depth (negative z coordinate)\n *     of the near clipping plane.\n * @param {number} zFar The depth (negative z coordinate)\n *     of the far clipping plane.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The perspective matrix.\n * @memberOf module:twgl/m4\n */function perspective(e,t,n,o,s){s=s||new r(16);const a=Math.tan(Math.PI*.5-.5*e);const c=1/(n-o);s[0]=a/t;s[1]=0;s[2]=0;s[3]=0;s[4]=0;s[5]=a;s[6]=0;s[7]=0;s[8]=0;s[9]=0;s[10]=(n+o)*c;s[11]=-1;s[12]=0;s[13]=0;s[14]=n*o*c*2;s[15]=0;return s}\n/**\n * Computes a 4-by-4 orthogonal transformation matrix given the left, right,\n * bottom, and top dimensions of the near clipping plane as well as the\n * near and far clipping plane distances.\n * @param {number} left Left side of the near clipping plane viewport.\n * @param {number} right Right side of the near clipping plane viewport.\n * @param {number} bottom Bottom of the near clipping plane viewport.\n * @param {number} top Top of the near clipping plane viewport.\n * @param {number} near The depth (negative z coordinate)\n *     of the near clipping plane.\n * @param {number} far The depth (negative z coordinate)\n *     of the far clipping plane.\n * @param {module:twgl/m4.Mat4} [dst] Output matrix. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The perspective matrix.\n * @memberOf module:twgl/m4\n */function ortho(e,t,n,o,s,a,c){c=c||new r(16);c[0]=2/(t-e);c[1]=0;c[2]=0;c[3]=0;c[4]=0;c[5]=2/(o-n);c[6]=0;c[7]=0;c[8]=0;c[9]=0;c[10]=2/(s-a);c[11]=0;c[12]=(t+e)/(e-t);c[13]=(o+n)/(n-o);c[14]=(a+s)/(s-a);c[15]=1;return c}\n/**\n * Computes a 4-by-4 perspective transformation matrix given the left, right,\n * top, bottom, near and far clipping planes. The arguments define a frustum\n * extending in the negative z direction. The arguments near and far are the\n * distances to the near and far clipping planes. Note that near and far are not\n * z coordinates, but rather they are distances along the negative z-axis. The\n * matrix generated sends the viewing frustum to the unit box. We assume a unit\n * box extending from -1 to 1 in the x and y dimensions and from 0 to 1 in the z\n * dimension.\n * @param {number} left The x coordinate of the left plane of the box.\n * @param {number} right The x coordinate of the right plane of the box.\n * @param {number} bottom The y coordinate of the bottom plane of the box.\n * @param {number} top The y coordinate of the right plane of the box.\n * @param {number} near The negative z coordinate of the near plane of the box.\n * @param {number} far The negative z coordinate of the far plane of the box.\n * @param {module:twgl/m4.Mat4} [dst] Output matrix. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The perspective projection matrix.\n * @memberOf module:twgl/m4\n */function frustum(e,t,n,o,s,a,c){c=c||new r(16);const i=t-e;const u=o-n;const f=s-a;c[0]=2*s/i;c[1]=0;c[2]=0;c[3]=0;c[4]=0;c[5]=2*s/u;c[6]=0;c[7]=0;c[8]=(e+t)/i;c[9]=(o+n)/u;c[10]=a/f;c[11]=-1;c[12]=0;c[13]=0;c[14]=s*a/f;c[15]=0;return c}let n;let o;let s;\n/**\n * Computes a 4-by-4 look-at transformation.\n *\n * This is a matrix which positions the camera itself. If you want\n * a view matrix (a matrix which moves things in front of the camera)\n * take the inverse of this.\n *\n * @param {module:twgl/v3.Vec3} eye The position of the eye.\n * @param {module:twgl/v3.Vec3} target The position meant to be viewed.\n * @param {module:twgl/v3.Vec3} up A vector pointing up.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The look-at matrix.\n * @memberOf module:twgl/m4\n */function lookAt(e,t,a,c){c=c||new r(16);n=n||create$1();o=o||create$1();s=s||create$1();normalize(subtract(e,t,s),s);normalize(cross(a,s,n),n);normalize(cross(s,n,o),o);c[0]=n[0];c[1]=n[1];c[2]=n[2];c[3]=0;c[4]=o[0];c[5]=o[1];c[6]=o[2];c[7]=0;c[8]=s[0];c[9]=s[1];c[10]=s[2];c[11]=0;c[12]=e[0];c[13]=e[1];c[14]=e[2];c[15]=1;return c}\n/**\n * Creates a 4-by-4 matrix which translates by the given vector v.\n * @param {module:twgl/v3.Vec3} v The vector by\n *     which to translate.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The translation matrix.\n * @memberOf module:twgl/m4\n */function translation(e,t){t=t||new r(16);t[0]=1;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=1;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=1;t[11]=0;t[12]=e[0];t[13]=e[1];t[14]=e[2];t[15]=1;return t}\n/**\n * Translates the given 4-by-4 matrix by the given vector v.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} v The vector by\n *     which to translate.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The translated matrix.\n * @memberOf module:twgl/m4\n */function translate(e,t,n){n=n||new r(16);const o=t[0];const s=t[1];const a=t[2];const c=e[0];const i=e[1];const u=e[2];const f=e[3];const l=e[4];const m=e[5];const y=e[6];const d=e[7];const p=e[8];const b=e[9];const g=e[10];const A=e[11];const x=e[12];const h=e[13];const F=e[14];const T=e[15];if(e!==n){n[0]=c;n[1]=i;n[2]=u;n[3]=f;n[4]=l;n[5]=m;n[6]=y;n[7]=d;n[8]=p;n[9]=b;n[10]=g;n[11]=A}n[12]=c*o+l*s+p*a+x;n[13]=i*o+m*s+b*a+h;n[14]=u*o+y*s+g*a+F;n[15]=f*o+d*s+A*a+T;return n}\n/**\n * Creates a 4-by-4 matrix which rotates around the x-axis by the given angle.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotation matrix.\n * @memberOf module:twgl/m4\n */function rotationX(e,t){t=t||new r(16);const n=Math.cos(e);const o=Math.sin(e);t[0]=1;t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=n;t[6]=o;t[7]=0;t[8]=0;t[9]=-o;t[10]=n;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Rotates the given 4-by-4 matrix around the x-axis by the given\n * angle.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotated matrix.\n * @memberOf module:twgl/m4\n */function rotateX(e,t,n){n=n||new r(16);const o=e[4];const s=e[5];const a=e[6];const c=e[7];const i=e[8];const u=e[9];const f=e[10];const l=e[11];const m=Math.cos(t);const y=Math.sin(t);n[4]=m*o+y*i;n[5]=m*s+y*u;n[6]=m*a+y*f;n[7]=m*c+y*l;n[8]=m*i-y*o;n[9]=m*u-y*s;n[10]=m*f-y*a;n[11]=m*l-y*c;if(e!==n){n[0]=e[0];n[1]=e[1];n[2]=e[2];n[3]=e[3];n[12]=e[12];n[13]=e[13];n[14]=e[14];n[15]=e[15]}return n}\n/**\n * Creates a 4-by-4 matrix which rotates around the y-axis by the given angle.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotation matrix.\n * @memberOf module:twgl/m4\n */function rotationY(e,t){t=t||new r(16);const n=Math.cos(e);const o=Math.sin(e);t[0]=n;t[1]=0;t[2]=-o;t[3]=0;t[4]=0;t[5]=1;t[6]=0;t[7]=0;t[8]=o;t[9]=0;t[10]=n;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Rotates the given 4-by-4 matrix around the y-axis by the given\n * angle.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotated matrix.\n * @memberOf module:twgl/m4\n */function rotateY(e,t,n){n=n||new r(16);const o=e[0];const s=e[1];const a=e[2];const c=e[3];const i=e[8];const u=e[9];const f=e[10];const l=e[11];const m=Math.cos(t);const y=Math.sin(t);n[0]=m*o-y*i;n[1]=m*s-y*u;n[2]=m*a-y*f;n[3]=m*c-y*l;n[8]=m*i+y*o;n[9]=m*u+y*s;n[10]=m*f+y*a;n[11]=m*l+y*c;if(e!==n){n[4]=e[4];n[5]=e[5];n[6]=e[6];n[7]=e[7];n[12]=e[12];n[13]=e[13];n[14]=e[14];n[15]=e[15]}return n}\n/**\n * Creates a 4-by-4 matrix which rotates around the z-axis by the given angle.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotation matrix.\n * @memberOf module:twgl/m4\n */function rotationZ(e,t){t=t||new r(16);const n=Math.cos(e);const o=Math.sin(e);t[0]=n;t[1]=o;t[2]=0;t[3]=0;t[4]=-o;t[5]=n;t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=1;t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Rotates the given 4-by-4 matrix around the z-axis by the given\n * angle.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotated matrix.\n * @memberOf module:twgl/m4\n */function rotateZ(e,t,n){n=n||new r(16);const o=e[0];const s=e[1];const a=e[2];const c=e[3];const i=e[4];const u=e[5];const f=e[6];const l=e[7];const m=Math.cos(t);const y=Math.sin(t);n[0]=m*o+y*i;n[1]=m*s+y*u;n[2]=m*a+y*f;n[3]=m*c+y*l;n[4]=m*i-y*o;n[5]=m*u-y*s;n[6]=m*f-y*a;n[7]=m*l-y*c;if(e!==n){n[8]=e[8];n[9]=e[9];n[10]=e[10];n[11]=e[11];n[12]=e[12];n[13]=e[13];n[14]=e[14];n[15]=e[15]}return n}\n/**\n * Creates a 4-by-4 matrix which rotates around the given axis by the given\n * angle.\n * @param {module:twgl/v3.Vec3} axis The axis\n *     about which to rotate.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} A matrix which rotates angle radians\n *     around the axis.\n * @memberOf module:twgl/m4\n */function axisRotation(e,t,n){n=n||new r(16);let o=e[0];let s=e[1];let a=e[2];const c=Math.sqrt(o*o+s*s+a*a);o/=c;s/=c;a/=c;const i=o*o;const u=s*s;const f=a*a;const l=Math.cos(t);const m=Math.sin(t);const y=1-l;n[0]=i+(1-i)*l;n[1]=o*s*y+a*m;n[2]=o*a*y-s*m;n[3]=0;n[4]=o*s*y-a*m;n[5]=u+(1-u)*l;n[6]=s*a*y+o*m;n[7]=0;n[8]=o*a*y+s*m;n[9]=s*a*y-o*m;n[10]=f+(1-f)*l;n[11]=0;n[12]=0;n[13]=0;n[14]=0;n[15]=1;return n}\n/**\n * Rotates the given 4-by-4 matrix around the given axis by the\n * given angle.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} axis The axis\n *     about which to rotate.\n * @param {number} angleInRadians The angle by which to rotate (in radians).\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The rotated matrix.\n * @memberOf module:twgl/m4\n */function axisRotate(e,t,n,o){o=o||new r(16);let s=t[0];let a=t[1];let c=t[2];const i=Math.sqrt(s*s+a*a+c*c);s/=i;a/=i;c/=i;const u=s*s;const f=a*a;const l=c*c;const m=Math.cos(n);const y=Math.sin(n);const d=1-m;const p=u+(1-u)*m;const b=s*a*d+c*y;const g=s*c*d-a*y;const A=s*a*d-c*y;const x=f+(1-f)*m;const h=a*c*d+s*y;const F=s*c*d+a*y;const T=a*c*d-s*y;const S=l+(1-l)*m;const P=e[0];const E=e[1];const w=e[2];const I=e[3];const v=e[4];const B=e[5];const C=e[6];const k=e[7];const _=e[8];const V=e[9];const U=e[10];const z=e[11];o[0]=p*P+b*v+g*_;o[1]=p*E+b*B+g*V;o[2]=p*w+b*C+g*U;o[3]=p*I+b*k+g*z;o[4]=A*P+x*v+h*_;o[5]=A*E+x*B+h*V;o[6]=A*w+x*C+h*U;o[7]=A*I+x*k+h*z;o[8]=F*P+T*v+S*_;o[9]=F*E+T*B+S*V;o[10]=F*w+T*C+S*U;o[11]=F*I+T*k+S*z;if(e!==o){o[12]=e[12];o[13]=e[13];o[14]=e[14];o[15]=e[15]}return o}\n/**\n * Creates a 4-by-4 matrix which scales in each dimension by an amount given by\n * the corresponding entry in the given vector; assumes the vector has three\n * entries.\n * @param {module:twgl/v3.Vec3} v A vector of\n *     three entries specifying the factor by which to scale in each dimension.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The scaling matrix.\n * @memberOf module:twgl/m4\n */function scaling(e,t){t=t||new r(16);t[0]=e[0];t[1]=0;t[2]=0;t[3]=0;t[4]=0;t[5]=e[1];t[6]=0;t[7]=0;t[8]=0;t[9]=0;t[10]=e[2];t[11]=0;t[12]=0;t[13]=0;t[14]=0;t[15]=1;return t}\n/**\n * Scales the given 4-by-4 matrix in each dimension by an amount\n * given by the corresponding entry in the given vector; assumes the vector has\n * three entries.\n * @param {module:twgl/m4.Mat4} m The matrix to be modified.\n * @param {module:twgl/v3.Vec3} v A vector of three entries specifying the\n *     factor by which to scale in each dimension.\n * @param {module:twgl/m4.Mat4} [dst] matrix to hold result. If not passed a new one is created.\n * @return {module:twgl/m4.Mat4} The scaled matrix.\n * @memberOf module:twgl/m4\n */function scale(e,t,n){n=n||new r(16);const o=t[0];const s=t[1];const a=t[2];n[0]=o*e[0];n[1]=o*e[1];n[2]=o*e[2];n[3]=o*e[3];n[4]=s*e[4];n[5]=s*e[5];n[6]=s*e[6];n[7]=s*e[7];n[8]=a*e[8];n[9]=a*e[9];n[10]=a*e[10];n[11]=a*e[11];if(e!==n){n[12]=e[12];n[13]=e[13];n[14]=e[14];n[15]=e[15]}return n}\n/**\n * Takes a 4-by-4 matrix and a vector with 3 entries,\n * interprets the vector as a point, transforms that point by the matrix, and\n * returns the result as a vector with 3 entries.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} v The point.\n * @param {module:twgl/v3.Vec3} [dst] optional vec3 to store result. If not passed a new one is created.\n * @return {module:twgl/v3.Vec3} The transformed point.\n * @memberOf module:twgl/m4\n */function transformPoint(e,t,r){r=r||create$1();const n=t[0];const o=t[1];const s=t[2];const a=n*e[3]+o*e[7]+s*e[11]+e[15];r[0]=(n*e[0]+o*e[4]+s*e[8]+e[12])/a;r[1]=(n*e[1]+o*e[5]+s*e[9]+e[13])/a;r[2]=(n*e[2]+o*e[6]+s*e[10]+e[14])/a;return r}\n/**\n * Takes a 4-by-4 matrix and a vector with 3 entries, interprets the vector as a\n * direction, transforms that direction by the matrix, and returns the result;\n * assumes the transformation of 3-dimensional space represented by the matrix\n * is parallel-preserving, i.e. any combination of rotation, scaling and\n * translation, but not a perspective distortion. Returns a vector with 3\n * entries.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} v The direction.\n * @param {module:twgl/v3.Vec3} [dst] optional Vec3 to store result. If not passed a new one is created.\n * @return {module:twgl/v3.Vec3} The transformed direction.\n * @memberOf module:twgl/m4\n */function transformDirection(e,t,r){r=r||create$1();const n=t[0];const o=t[1];const s=t[2];r[0]=n*e[0]+o*e[4]+s*e[8];r[1]=n*e[1]+o*e[5]+s*e[9];r[2]=n*e[2]+o*e[6]+s*e[10];return r}\n/**\n * Takes a 4-by-4 matrix m and a vector v with 3 entries, interprets the vector\n * as a normal to a surface, and computes a vector which is normal upon\n * transforming that surface by the matrix. The effect of this function is the\n * same as transforming v (as a direction) by the inverse-transpose of m.  This\n * function assumes the transformation of 3-dimensional space represented by the\n * matrix is parallel-preserving, i.e. any combination of rotation, scaling and\n * translation, but not a perspective distortion.  Returns a vector with 3\n * entries.\n * @param {module:twgl/m4.Mat4} m The matrix.\n * @param {module:twgl/v3.Vec3} v The normal.\n * @param {module:twgl/v3.Vec3} [dst] The direction. If not passed a new one is created.\n * @return {module:twgl/v3.Vec3} The transformed normal.\n * @memberOf module:twgl/m4\n */function transformNormal$1(e,t,r){r=r||create$1();const n=inverse(e);const o=t[0];const s=t[1];const a=t[2];r[0]=o*n[0]+s*n[1]+a*n[2];r[1]=o*n[4]+s*n[5]+a*n[6];r[2]=o*n[8]+s*n[9]+a*n[10];return r}var a=Object.freeze({__proto__:null,axisRotate:axisRotate,axisRotation:axisRotation,copy:copy,create:create,frustum:frustum,getAxis:getAxis,getTranslation:getTranslation,identity:identity,inverse:inverse,lookAt:lookAt,multiply:multiply,negate:negate,ortho:ortho,perspective:perspective,rotateX:rotateX,rotateY:rotateY,rotateZ:rotateZ,rotationX:rotationX,rotationY:rotationY,rotationZ:rotationZ,scale:scale,scaling:scaling,setAxis:setAxis,setDefaultType:setDefaultType,setTranslation:setTranslation,transformDirection:transformDirection,transformNormal:transformNormal$1,transformPoint:transformPoint,translate:translate,translation:translation,transpose:transpose});const c=5120;const i=5121;const u=5122;const f=5123;const l=5124;const m=5125;const y=5126;const d=32819;const p=32820;const b=33635;const g=5131;const A=33640;const x=35899;const h=35902;const F=36269;const T=34042;const S={};{const e=S;e[c]=Int8Array;e[i]=Uint8Array;e[u]=Int16Array;e[f]=Uint16Array;e[l]=Int32Array;e[m]=Uint32Array;e[y]=Float32Array;e[d]=Uint16Array;e[p]=Uint16Array;e[b]=Uint16Array;e[g]=Uint16Array;e[A]=Uint32Array;e[x]=Uint32Array;e[h]=Uint32Array;e[F]=Uint32Array;e[T]=Uint32Array}\n/**\n * Get the GL type for a typedArray\n * @param {ArrayBufferView} typedArray a typedArray\n * @return {number} the GL type for array. For example pass in an `Int8Array` and `gl.BYTE` will\n *   be returned. Pass in a `Uint32Array` and `gl.UNSIGNED_INT` will be returned\n * @memberOf module:twgl/typedArray\n */function getGLTypeForTypedArray(e){if(e instanceof Int8Array)return c;if(e instanceof Uint8Array)return i;if(e instanceof Uint8ClampedArray)return i;if(e instanceof Int16Array)return u;if(e instanceof Uint16Array)return f;if(e instanceof Int32Array)return l;if(e instanceof Uint32Array)return m;if(e instanceof Float32Array)return y;throw new Error(\"unsupported typed array type\")}\n/**\n * Get the GL type for a typedArray type\n * @param {ArrayBufferView} typedArrayType a typedArray constructor\n * @return {number} the GL type for type. For example pass in `Int8Array` and `gl.BYTE` will\n *   be returned. Pass in `Uint32Array` and `gl.UNSIGNED_INT` will be returned\n * @memberOf module:twgl/typedArray\n */function getGLTypeForTypedArrayType(e){if(e===Int8Array)return c;if(e===Uint8Array)return i;if(e===Uint8ClampedArray)return i;if(e===Int16Array)return u;if(e===Uint16Array)return f;if(e===Int32Array)return l;if(e===Uint32Array)return m;if(e===Float32Array)return y;throw new Error(\"unsupported typed array type\")}\n/**\n * Get the typed array constructor for a given GL type\n * @param {number} type the GL type. (eg: `gl.UNSIGNED_INT`)\n * @return {function} the constructor for a the corresponding typed array. (eg. `Uint32Array`).\n * @memberOf module:twgl/typedArray\n */function getTypedArrayTypeForGLType(e){const t=S[e];if(!t)throw new Error(\"unknown gl type\");return t}const P=typeof SharedArrayBuffer!==\"undefined\"?function isArrayBufferOrSharedArrayBuffer(e){return e&&e.buffer&&(e.buffer instanceof ArrayBuffer||e.buffer instanceof SharedArrayBuffer)}:function isArrayBuffer(e){return e&&e.buffer&&e.buffer instanceof ArrayBuffer};var E=Object.freeze({__proto__:null,getGLTypeForTypedArray:getGLTypeForTypedArray,getGLTypeForTypedArrayType:getGLTypeForTypedArrayType,getTypedArrayTypeForGLType:getTypedArrayTypeForGLType,isArrayBuffer:P});\n/**\n * Copy named properties\n *\n * @param {string[]} names names of properties to copy\n * @param {object} src object to copy properties from\n * @param {object} dst object to copy properties to\n * @private\n */function copyNamedProperties(e,t,r){e.forEach((function(e){const n=t[e];n!==void 0&&(r[e]=n)}))}\n/**\n * Copies properties from source to dest only if a matching key is in dest\n *\n * @param {Object.<string, ?>} src the source\n * @param {Object.<string, ?>} dst the dest\n * @private\n */function copyExistingProperties(e,t){Object.keys(t).forEach((function(r){t.hasOwnProperty(r)&&e.hasOwnProperty(r)&&(t[r]=e[r])}))}function error$1(...e){console.error(...e)}function warn$1(...e){console.warn(...e)}const w=new Map;function isType(e,t){if(!e||typeof e!==\"object\")return false;let r=w.get(t);if(!r){r=new WeakMap;w.set(t,r)}let n=r.get(e);if(n===void 0){const o=Object.prototype.toString.call(e);n=o.substring(8,o.length-1)===t;r.set(e,n)}return n}function isBuffer(e,t){return typeof WebGLBuffer!==\"undefined\"&&isType(t,\"WebGLBuffer\")}function isRenderbuffer(e,t){return typeof WebGLRenderbuffer!==\"undefined\"&&isType(t,\"WebGLRenderbuffer\")}function isTexture(e,t){return typeof WebGLTexture!==\"undefined\"&&isType(t,\"WebGLTexture\")}function isSampler(e,t){return typeof WebGLSampler!==\"undefined\"&&isType(t,\"WebGLSampler\")}const I=35044;const v=34962;const B=34963;const C=34660;const k=5120;const _=5121;const V=5122;const U=5123;const z=5124;const O=5125;const M=5126;const R={attribPrefix:\"\"};\n/**\n * Sets the default attrib prefix\n *\n * When writing shaders I prefer to name attributes with `a_`, uniforms with `u_` and varyings with `v_`\n * as it makes it clear where they came from. But, when building geometry I prefer using un-prefixed names.\n *\n * In other words I'll create arrays of geometry like this\n *\n *     var arrays = {\n *       position: ...\n *       normal: ...\n *       texcoord: ...\n *     };\n *\n * But need those mapped to attributes and my attributes start with `a_`.\n *\n * @deprecated see {@link module:twgl.setDefaults}\n * @param {string} prefix prefix for attribs\n * @memberOf module:twgl/attributes\n */function setAttributePrefix(e){R.attribPrefix=e}function setDefaults$2(e){copyExistingProperties(e,R)}function setBufferFromTypedArray(e,t,r,n,o){e.bindBuffer(t,r);e.bufferData(t,n,o||I)}\n/**\n * Given typed array creates a WebGLBuffer and copies the typed array\n * into it.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {ArrayBuffer|SharedArrayBuffer|ArrayBufferView|WebGLBuffer} typedArray the typed array. Note: If a WebGLBuffer is passed in it will just be returned. No action will be taken\n * @param {number} [type] the GL bind type for the buffer. Default = `gl.ARRAY_BUFFER`.\n * @param {number} [drawType] the GL draw type for the buffer. Default = 'gl.STATIC_DRAW`.\n * @return {WebGLBuffer} the created WebGLBuffer\n * @memberOf module:twgl/attributes\n */function createBufferFromTypedArray(e,t,r,n){if(isBuffer(e,t))return t;r=r||v;const o=e.createBuffer();setBufferFromTypedArray(e,r,o,t,n);return o}function isIndices(e){return e===\"indices\"}function getNormalizationForTypedArrayType(e){return e===Int8Array||e===Uint8Array}function getArray$1(e){return e.length?e:e.data}const L=/coord|texture/i;const D=/color|colour/i;function guessNumComponentsFromName(e,t){let r;r=L.test(e)?2:D.test(e)?4:3;if(t%r>0)throw new Error(`Can not guess numComponents for attribute '${e}'. Tried ${r} but ${t} values is not evenly divisible by ${r}. You should specify it.`);return r}function getNumComponents$1(e,t,r){return e.numComponents||e.size||guessNumComponentsFromName(t,r||getArray$1(e).length)}function makeTypedArray(e,t){if(P(e))return e;if(P(e.data))return e.data;Array.isArray(e)&&(e={data:e});let r=e.type?typedArrayTypeFromGLTypeOrTypedArrayCtor(e.type):void 0;r||(r=isIndices(t)?Uint16Array:Float32Array);return new r(e.data)}function glTypeFromGLTypeOrTypedArrayType(e){return typeof e===\"number\"?e:e?getGLTypeForTypedArrayType(e):M}function typedArrayTypeFromGLTypeOrTypedArrayCtor(e){return typeof e===\"number\"?getTypedArrayTypeForGLType(e):e||Float32Array}function attribBufferFromBuffer(e,t){return{buffer:t.buffer,numValues:24,type:glTypeFromGLTypeOrTypedArrayType(t.type),arrayType:typedArrayTypeFromGLTypeOrTypedArrayCtor(t.type)}}function attribBufferFromSize(e,t){const r=t.data||t;const n=typedArrayTypeFromGLTypeOrTypedArrayCtor(t.type);const o=r*n.BYTES_PER_ELEMENT;const s=e.createBuffer();e.bindBuffer(v,s);e.bufferData(v,o,t.drawType||I);return{buffer:s,numValues:r,type:getGLTypeForTypedArrayType(n),arrayType:n}}function attribBufferFromArrayLike(e,t,r){const n=makeTypedArray(t,r);return{arrayType:n.constructor,buffer:createBufferFromTypedArray(e,n,void 0,t.drawType),type:getGLTypeForTypedArray(n),numValues:0}}\n/**\n * The info for an attribute. This is effectively just the arguments to `gl.vertexAttribPointer` plus the WebGLBuffer\n * for the attribute.\n *\n * @typedef {Object} AttribInfo\n * @property {number[]|ArrayBufferView} [value] a constant value for the attribute. Note: if this is set the attribute will be\n *    disabled and set to this constant value and all other values will be ignored.\n * @property {number} [numComponents] the number of components for this attribute.\n * @property {number} [size] synonym for `numComponents`.\n * @property {number} [type] the type of the attribute (eg. `gl.FLOAT`, `gl.UNSIGNED_BYTE`, etc...) Default = `gl.FLOAT`\n * @property {boolean} [normalize] whether or not to normalize the data. Default = false\n * @property {number} [offset] offset into buffer in bytes. Default = 0\n * @property {number} [stride] the stride in bytes per element. Default = 0\n * @property {number} [divisor] the divisor in instances. Default = 0.\n *    Requires WebGL2 or the ANGLE_instanced_arrays extension.\n *    and, if you're using WebGL1 you must have called {@link module:twgl.addExtensionsToContext}\n * @property {WebGLBuffer} buffer the buffer that contains the data for this attribute\n * @property {number} [drawType] the draw type passed to gl.bufferData. Default = gl.STATIC_DRAW\n * @memberOf module:twgl\n */\n/**\n * @typedef {(Int8ArrayConstructor|Uint8ArrayConstructor|Int16ArrayConstructor|Uint16ArrayConstructor|Int32ArrayConstructor|Uint32ArrayConstructor|Float32ArrayConstructor)} TypedArrayConstructor\n */\n/**\n * Use this type of array spec when TWGL can't guess the type or number of components of an array\n * @typedef {Object} FullArraySpec\n * @property {number[]|ArrayBufferView} [value] a constant value for the attribute. Note: if this is set the attribute will be\n *    disabled and set to this constant value and all other values will be ignored.\n * @property {(number|number[]|ArrayBufferView)} [data] The data of the array. A number alone becomes the number of elements of type.\n * @property {number} [numComponents] number of components for `vertexAttribPointer`. Default is based on the name of the array.\n *    If `coord` is in the name assumes `numComponents = 2`.\n *    If `color` is in the name assumes `numComponents = 4`.\n *    otherwise assumes `numComponents = 3`\n * @property {number|TypedArrayConstructor} [type] type. This is used if `data` is a JavaScript array, or `buffer` is passed in, or `data` is a number.\n *   It can either be the constructor for a typedarray. (eg. `Uint8Array`) OR a WebGL type, (eg `gl.UNSIGNED_BYTE`).\n *   For example if you want colors in a `Uint8Array` you might have a `FullArraySpec` like `{ type: gl.UNSIGNED_BYTE, data: [255,0,255,255, ...], }`.\n * @property {number} [size] synonym for `numComponents`.\n * @property {boolean} [normalize] normalize for `vertexAttribPointer`. Default is true if type is `Int8Array` or `Uint8Array` otherwise false.\n * @property {number} [stride] stride for `vertexAttribPointer`. Default = 0\n * @property {number} [offset] offset for `vertexAttribPointer`. Default = 0\n * @property {number} [divisor] divisor for `vertexAttribDivisor`. Default = 0.\n *     Requires WebGL2 or the ANGLE_instanced_arrays extension.\n *     and, if you using WebGL1 you must have called {@link module:twgl.addExtensionsToContext}\n * @property {string} [attrib] name of attribute this array maps to. Defaults to same name as array prefixed by the default attribPrefix.\n * @property {string} [name] synonym for `attrib`.\n * @property {string} [attribName] synonym for `attrib`.\n * @property {WebGLBuffer} [buffer] Buffer to use for this attribute. This lets you use your own buffer\n *    but you will need to supply `numComponents` and `type`. You can effectively pass an `AttribInfo`\n *    to provide this. Example:\n *\n *         const bufferInfo1 = twgl.createBufferInfoFromArrays(gl, {\n *           position: [1, 2, 3, ... ],\n *         });\n *         const bufferInfo2 = twgl.createBufferInfoFromArrays(gl, {\n *           position: bufferInfo1.attribs.position,  // use the same buffer from bufferInfo1\n *         });\n *\n * @property {number} [drawType] the draw type passed to gl.bufferData. Default = gl.STATIC_DRAW\n * @memberOf module:twgl\n */\n/**\n * An individual array in {@link module:twgl.Arrays}\n *\n * When passed to {@link module:twgl.createBufferInfoFromArrays} if an ArraySpec is `number[]` or `ArrayBufferView`\n * the types will be guessed based on the name. `indices` will be `Uint16Array`, everything else will\n * be `Float32Array`. If an ArraySpec is a number it's the number of floats for an empty (zeroed) buffer.\n *\n * @typedef {(number|number[]|ArrayBufferView|module:twgl.FullArraySpec)} ArraySpec\n * @memberOf module:twgl\n */\n/**\n * This is a JavaScript object of arrays by name. The names should match your shader's attributes. If your\n * attributes have a common prefix you can specify it by calling {@link module:twgl.setAttributePrefix}.\n *\n *     Bare JavaScript Arrays\n *\n *         var arrays = {\n *            position: [-1, 1, 0],\n *            normal: [0, 1, 0],\n *            ...\n *         }\n *\n *     Bare TypedArrays\n *\n *         var arrays = {\n *            position: new Float32Array([-1, 1, 0]),\n *            color: new Uint8Array([255, 128, 64, 255]),\n *            ...\n *         }\n *\n * *   Will guess at `numComponents` if not specified based on name.\n *\n *     If `coord` is in the name assumes `numComponents = 2`\n *\n *     If `color` is in the name assumes `numComponents = 4`\n *\n *     otherwise assumes `numComponents = 3`\n *\n * Objects with various fields. See {@link module:twgl.FullArraySpec}.\n *\n *     var arrays = {\n *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },\n *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },\n *       normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },\n *       indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },\n *     };\n *\n * @typedef {Object.<string, module:twgl.ArraySpec>} Arrays\n * @memberOf module:twgl\n */\n/**\n * Creates a set of attribute data and WebGLBuffers from set of arrays\n *\n * Given\n *\n *      var arrays = {\n *        position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },\n *        texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },\n *        normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },\n *        color:    { numComponents: 4, data: [255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255], type: Uint8Array, },\n *        indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },\n *      };\n *\n * returns something like\n *\n *      var attribs = {\n *        position: { numComponents: 3, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },\n *        texcoord: { numComponents: 2, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },\n *        normal:   { numComponents: 3, type: gl.FLOAT,         normalize: false, buffer: WebGLBuffer, },\n *        color:    { numComponents: 4, type: gl.UNSIGNED_BYTE, normalize: true,  buffer: WebGLBuffer, },\n *      };\n *\n * notes:\n *\n * *   Arrays can take various forms\n *\n *     Bare JavaScript Arrays\n *\n *         var arrays = {\n *            position: [-1, 1, 0],\n *            normal: [0, 1, 0],\n *            ...\n *         }\n *\n *     Bare TypedArrays\n *\n *         var arrays = {\n *            position: new Float32Array([-1, 1, 0]),\n *            color: new Uint8Array([255, 128, 64, 255]),\n *            ...\n *         }\n *\n * *   Will guess at `numComponents` if not specified based on name.\n *\n *     If `coord` is in the name assumes `numComponents = 2`\n *\n *     If `color` is in the name assumes `numComponents = 4`\n *\n *     otherwise assumes `numComponents = 3`\n *\n * @param {WebGLRenderingContext} gl The webgl rendering context.\n * @param {module:twgl.Arrays} arrays The arrays\n * @param {module:twgl.BufferInfo} [srcBufferInfo] a BufferInfo to copy from\n *   This lets you share buffers. Any arrays you supply will override\n *   the buffers from srcBufferInfo.\n * @return {Object.<string, module:twgl.AttribInfo>} the attribs\n * @memberOf module:twgl/attributes\n */function createAttribsFromArrays(e,t){const r={};Object.keys(t).forEach((function(n){if(!isIndices(n)){const o=t[n];const s=o.attrib||o.name||o.attribName||R.attribPrefix+n;if(o.value){if(!Array.isArray(o.value)&&!P(o.value))throw new Error(\"array.value is not array or typedarray\");r[s]={value:o.value}}else{let t;t=o.buffer&&o.buffer instanceof WebGLBuffer?attribBufferFromBuffer:typeof o===\"number\"||typeof o.data===\"number\"?attribBufferFromSize:attribBufferFromArrayLike;const{buffer:a,type:c,numValues:i,arrayType:u}=t(e,o,n);const f=o.normalize!==void 0?o.normalize:getNormalizationForTypedArrayType(u);const l=getNumComponents$1(o,n,i);r[s]={buffer:a,numComponents:l,type:c,normalize:f,stride:o.stride||0,offset:o.offset||0,divisor:o.divisor===void 0?void 0:o.divisor,drawType:o.drawType}}}}));e.bindBuffer(v,null);return r}\n/**\n * Sets the contents of a buffer attached to an attribInfo\n *\n * This is helper function to dynamically update a buffer.\n *\n * Let's say you make a bufferInfo\n *\n *     var arrays = {\n *        position: new Float32Array([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]),\n *        texcoord: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),\n *        normal:   new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]),\n *        indices:  new Uint16Array([0, 1, 2, 1, 2, 3]),\n *     };\n *     var bufferInfo = twgl.createBufferInfoFromArrays(gl, arrays);\n *\n *  And you want to dynamically update the positions. You could do this\n *\n *     // assuming arrays.position has already been updated with new data.\n *     twgl.setAttribInfoBufferFromArray(gl, bufferInfo.attribs.position, arrays.position);\n *\n * @param {WebGLRenderingContext} gl\n * @param {AttribInfo} attribInfo The attribInfo who's buffer contents to set. NOTE: If you have an attribute prefix\n *   the name of the attribute will include the prefix.\n * @param {ArraySpec} array Note: it is arguably inefficient to pass in anything but a typed array because anything\n *    else will have to be converted to a typed array before it can be used by WebGL. During init time that\n *    inefficiency is usually not important but if you're updating data dynamically best to be efficient.\n * @param {number} [offset] an optional offset into the buffer. This is only an offset into the WebGL buffer\n *    not the array. To pass in an offset into the array itself use a typed array and create an `ArrayBufferView`\n *    for the portion of the array you want to use.\n *\n *        var someArray = new Float32Array(1000); // an array with 1000 floats\n *        var someSubArray = new Float32Array(someArray.buffer, offsetInBytes, sizeInUnits); // a view into someArray\n *\n *    Now you can pass `someSubArray` into setAttribInfoBufferFromArray`\n * @memberOf module:twgl/attributes\n */function setAttribInfoBufferFromArray(e,t,r,n){r=makeTypedArray(r);if(n!==void 0){e.bindBuffer(v,t.buffer);e.bufferSubData(v,n,r)}else setBufferFromTypedArray(e,v,t.buffer,r,t.drawType)}function getBytesPerValueForGLType(e,t){return t===k||t===_?1:t===V||t===U?2:t===z||t===O||t===M?4:0}const $=[\"position\",\"positions\",\"a_position\"];function getNumElementsFromNonIndexedArrays(e){let t;let r;for(r=0;r<$.length;++r){t=$[r];if(t in e)break}r===$.length&&(t=Object.keys(e)[0]);const n=e[t];const o=getArray$1(n).length;if(o===void 0)return 1;const s=getNumComponents$1(n,t);const a=o/s;if(o%s>0)throw new Error(`numComponents ${s} not correct for length ${o}`);return a}function getNumElementsFromAttributes(e,t){let r;let n;for(n=0;n<$.length;++n){r=$[n];if(r in t)break;r=R.attribPrefix+r;if(r in t)break}n===$.length&&(r=Object.keys(t)[0]);const o=t[r];if(!o.buffer)return 1;e.bindBuffer(v,o.buffer);const s=e.getBufferParameter(v,C);e.bindBuffer(v,null);const a=getBytesPerValueForGLType(e,o.type);const c=s/a;const i=o.numComponents||o.size;const u=c/i;if(u%1!==0)throw new Error(`numComponents ${i} not correct for length ${length}`);return u}\n/**\n * @typedef {Object} BufferInfo\n * @property {number} numElements The number of elements to pass to `gl.drawArrays` or `gl.drawElements`.\n * @property {number} [elementType] The type of indices `UNSIGNED_BYTE`, `UNSIGNED_SHORT` etc..\n * @property {WebGLBuffer} [indices] The indices `ELEMENT_ARRAY_BUFFER` if any indices exist.\n * @property {Object.<string, module:twgl.AttribInfo>} [attribs] The attribs appropriate to call `setAttributes`\n * @memberOf module:twgl\n */\n/**\n * Creates a BufferInfo from an object of arrays.\n *\n * This can be passed to {@link module:twgl.setBuffersAndAttributes} and to\n * {@link module:twgl:drawBufferInfo}.\n *\n * Given an object like\n *\n *     var arrays = {\n *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },\n *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },\n *       normal:   { numComponents: 3, data: [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],     },\n *       indices:  { numComponents: 3, data: [0, 1, 2, 1, 2, 3],                       },\n *     };\n *\n *  Creates an BufferInfo like this\n *\n *     bufferInfo = {\n *       numElements: 4,        // or whatever the number of elements is\n *       indices: WebGLBuffer,  // this property will not exist if there are no indices\n *       attribs: {\n *         position: { buffer: WebGLBuffer, numComponents: 3, },\n *         normal:   { buffer: WebGLBuffer, numComponents: 3, },\n *         texcoord: { buffer: WebGLBuffer, numComponents: 2, },\n *       },\n *     };\n *\n *  The properties of arrays can be JavaScript arrays in which case the number of components\n *  will be guessed.\n *\n *     var arrays = {\n *        position: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0],\n *        texcoord: [0, 0, 0, 1, 1, 0, 1, 1],\n *        normal:   [0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1],\n *        indices:  [0, 1, 2, 1, 2, 3],\n *     };\n *\n *  They can also be TypedArrays\n *\n *     var arrays = {\n *        position: new Float32Array([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]),\n *        texcoord: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),\n *        normal:   new Float32Array([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]),\n *        indices:  new Uint16Array([0, 1, 2, 1, 2, 3]),\n *     };\n *\n *  Or AugmentedTypedArrays\n *\n *     var positions = createAugmentedTypedArray(3, 4);\n *     var texcoords = createAugmentedTypedArray(2, 4);\n *     var normals   = createAugmentedTypedArray(3, 4);\n *     var indices   = createAugmentedTypedArray(3, 2, Uint16Array);\n *\n *     positions.push([0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0]);\n *     texcoords.push([0, 0, 0, 1, 1, 0, 1, 1]);\n *     normals.push([0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1]);\n *     indices.push([0, 1, 2, 1, 2, 3]);\n *\n *     var arrays = {\n *        position: positions,\n *        texcoord: texcoords,\n *        normal:   normals,\n *        indices:  indices,\n *     };\n *\n * For the last example it is equivalent to\n *\n *     var bufferInfo = {\n *       attribs: {\n *         position: { numComponents: 3, buffer: gl.createBuffer(), },\n *         texcoord: { numComponents: 2, buffer: gl.createBuffer(), },\n *         normal: { numComponents: 3, buffer: gl.createBuffer(), },\n *       },\n *       indices: gl.createBuffer(),\n *       numElements: 6,\n *     };\n *\n *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.position.buffer);\n *     gl.bufferData(gl.ARRAY_BUFFER, arrays.position, gl.STATIC_DRAW);\n *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.texcoord.buffer);\n *     gl.bufferData(gl.ARRAY_BUFFER, arrays.texcoord, gl.STATIC_DRAW);\n *     gl.bindBuffer(gl.ARRAY_BUFFER, bufferInfo.attribs.normal.buffer);\n *     gl.bufferData(gl.ARRAY_BUFFER, arrays.normal, gl.STATIC_DRAW);\n *     gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferInfo.indices);\n *     gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, arrays.indices, gl.STATIC_DRAW);\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {module:twgl.Arrays} arrays Your data\n * @param {module:twgl.BufferInfo} [srcBufferInfo] An existing\n *        buffer info to start from. WebGLBuffers etc specified\n *        in the srcBufferInfo will be used in a new BufferInfo\n *        with any arrays specified overriding the ones in\n *        srcBufferInfo.\n * @return {module:twgl.BufferInfo} A BufferInfo\n * @memberOf module:twgl/attributes\n */function createBufferInfoFromArrays(e,t,r){const n=createAttribsFromArrays(e,t);const o=Object.assign({},r||{});o.attribs=Object.assign({},r?r.attribs:{},n);const s=t.indices;if(s){const t=makeTypedArray(s,\"indices\");o.indices=createBufferFromTypedArray(e,t,B);o.numElements=t.length;o.elementType=getGLTypeForTypedArray(t)}else o.numElements||(o.numElements=getNumElementsFromAttributes(e,o.attribs));return o}\n/**\n * Creates a buffer from an array, typed array, or array spec\n *\n * Given something like this\n *\n *     [1, 2, 3],\n *\n * or\n *\n *     new Uint16Array([1,2,3]);\n *\n * or\n *\n *     {\n *        data: [1, 2, 3],\n *        type: Uint8Array,\n *     }\n *\n * returns a WebGLBuffer that contains the given data.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext.\n * @param {module:twgl.ArraySpec} array an array, typed array, or array spec.\n * @param {string} arrayName name of array. Used to guess the type if type can not be derived otherwise.\n * @return {WebGLBuffer} a WebGLBuffer containing the data in array.\n * @memberOf module:twgl/attributes\n */function createBufferFromArray(e,t,r){const n=r===\"indices\"?B:v;const o=makeTypedArray(t,r);return createBufferFromTypedArray(e,o,n)}\n/**\n * Creates buffers from arrays or typed arrays\n *\n * Given something like this\n *\n *     var arrays = {\n *        positions: [1, 2, 3],\n *        normals: [0, 0, 1],\n *     }\n *\n * returns something like\n *\n *     buffers = {\n *       positions: WebGLBuffer,\n *       normals: WebGLBuffer,\n *     }\n *\n * If the buffer is named 'indices' it will be made an ELEMENT_ARRAY_BUFFER.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext.\n * @param {module:twgl.Arrays} arrays\n * @return {Object<string, WebGLBuffer>} returns an object with one WebGLBuffer per array\n * @memberOf module:twgl/attributes\n */function createBuffersFromArrays(e,t){const r={};Object.keys(t).forEach((function(n){r[n]=createBufferFromArray(e,t[n],n)}));if(t.indices){r.numElements=t.indices.length;r.elementType=getGLTypeForTypedArray(makeTypedArray(t.indices))}else r.numElements=getNumElementsFromNonIndexedArrays(t);return r}var G=Object.freeze({__proto__:null,createAttribsFromArrays:createAttribsFromArrays,createBuffersFromArrays:createBuffersFromArrays,createBufferFromArray:createBufferFromArray,createBufferFromTypedArray:createBufferFromTypedArray,createBufferInfoFromArrays:createBufferInfoFromArrays,setAttribInfoBufferFromArray:setAttribInfoBufferFromArray,setAttributePrefix:setAttributePrefix,setAttributeDefaults_:setDefaults$2,getNumComponents_:getNumComponents$1,getArray_:getArray$1});const N=getArray$1;const j=getNumComponents$1;\n/**\n * @typedef {(Int8Array|Uint8Array|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array)} TypedArray\n */\n/**\n * Add `push` to a typed array. It just keeps a 'cursor'\n * and allows use to `push` values into the array so we\n * don't have to manually compute offsets\n * @param {TypedArray} typedArray TypedArray to augment\n * @param {number} numComponents number of components.\n * @private\n */function augmentTypedArray(e,t){let r=0;e.push=function(){for(let t=0;t<arguments.length;++t){const n=arguments[t];if(n instanceof Array||P(n))for(let t=0;t<n.length;++t)e[r++]=n[t];else e[r++]=n}};e.reset=function(e){r=e||0};e.numComponents=t;Object.defineProperty(e,\"numElements\",{get:function(){return this.length/this.numComponents|0}});return e}\n/**\n * creates a typed array with a `push` function attached\n * so that you can easily *push* values.\n *\n * `push` can take multiple arguments. If an argument is an array each element\n * of the array will be added to the typed array.\n *\n * Example:\n *\n *     const array = createAugmentedTypedArray(3, 2);  // creates a Float32Array with 6 values\n *     array.push(1, 2, 3);\n *     array.push([4, 5, 6]);\n *     // array now contains [1, 2, 3, 4, 5, 6]\n *\n * Also has `numComponents` and `numElements` properties.\n *\n * @param {number} numComponents number of components\n * @param {number} numElements number of elements. The total size of the array will be `numComponents * numElements`.\n * @param {constructor} opt_type A constructor for the type. Default = `Float32Array`.\n * @return {ArrayBufferView} A typed array.\n * @memberOf module:twgl/primitives\n */function createAugmentedTypedArray(e,t,r){const n=r||Float32Array;return augmentTypedArray(new n(e*t),e)}function allButIndices(e){return e!==\"indices\"}\n/**\n * Given indexed vertices creates a new set of vertices un-indexed by expanding the indexed vertices.\n * @param {Object.<string, TypedArray>} vertices The indexed vertices to deindex\n * @return {Object.<string, TypedArray>} The deindexed vertices\n * @memberOf module:twgl/primitives\n */function deindexVertices(e){const t=e.indices;const r={};const n=t.length;function expandToUnindexed(o){const s=e[o];const a=s.numComponents;const c=createAugmentedTypedArray(a,n,s.constructor);for(let e=0;e<n;++e){const r=t[e];const n=r*a;for(let e=0;e<a;++e)c.push(s[n+e])}r[o]=c}Object.keys(e).filter(allButIndices).forEach(expandToUnindexed);return r}\n/**\n * flattens the normals of deindexed vertices in place.\n * @param {Object.<string, TypedArray>} vertices The deindexed vertices who's normals to flatten\n * @return {Object.<string, TypedArray>} The flattened vertices (same as was passed in)\n * @memberOf module:twgl/primitives\n */function flattenNormals(e){if(e.indices)throw new Error(\"can not flatten normals of indexed vertices. deindex them first\");const t=e.normal;const r=t.length;for(let e=0;e<r;e+=9){const r=t[e+0];const n=t[e+1];const o=t[e+2];const s=t[e+3];const a=t[e+4];const c=t[e+5];const i=t[e+6];const u=t[e+7];const f=t[e+8];let l=r+s+i;let m=n+a+u;let y=o+c+f;const d=Math.sqrt(l*l+m*m+y*y);l/=d;m/=d;y/=d;t[e+0]=l;t[e+1]=m;t[e+2]=y;t[e+3]=l;t[e+4]=m;t[e+5]=y;t[e+6]=l;t[e+7]=m;t[e+8]=y}return e}function applyFuncToV3Array(e,t,r){const n=e.length;const o=new Float32Array(3);for(let s=0;s<n;s+=3){r(t,[e[s],e[s+1],e[s+2]],o);e[s]=o[0];e[s+1]=o[1];e[s+2]=o[2]}}function transformNormal(e,t,r){r=r||create$1();const n=t[0];const o=t[1];const s=t[2];r[0]=n*e[0]+o*e[1]+s*e[2];r[1]=n*e[4]+o*e[5]+s*e[6];r[2]=n*e[8]+o*e[9]+s*e[10];return r}\n/**\n * Reorients directions by the given matrix..\n * @param {(number[]|TypedArray)} array The array. Assumes value floats per element.\n * @param {module:twgl/m4.Mat4} matrix A matrix to multiply by.\n * @return {(number[]|TypedArray)} the same array that was passed in\n * @memberOf module:twgl/primitives\n */function reorientDirections(e,t){applyFuncToV3Array(e,t,transformDirection);return e}\n/**\n * Reorients normals by the inverse-transpose of the given\n * matrix..\n * @param {(number[]|TypedArray)} array The array. Assumes value floats per element.\n * @param {module:twgl/m4.Mat4} matrix A matrix to multiply by.\n * @return {(number[]|TypedArray)} the same array that was passed in\n * @memberOf module:twgl/primitives\n */function reorientNormals(e,t){applyFuncToV3Array(e,inverse(t),transformNormal);return e}\n/**\n * Reorients positions by the given matrix. In other words, it\n * multiplies each vertex by the given matrix.\n * @param {(number[]|TypedArray)} array The array. Assumes value floats per element.\n * @param {module:twgl/m4.Mat4} matrix A matrix to multiply by.\n * @return {(number[]|TypedArray)} the same array that was passed in\n * @memberOf module:twgl/primitives\n */function reorientPositions(e,t){applyFuncToV3Array(e,t,transformPoint);return e}\n/**\n * @typedef {(number[]|TypedArray)} NativeArrayOrTypedArray\n */\n/**\n * Reorients arrays by the given matrix. Assumes arrays have\n * names that contains 'pos' could be reoriented as positions,\n * 'binorm' or 'tan' as directions, and 'norm' as normals.\n *\n * @param {Object.<string, NativeArrayOrTypedArray>} arrays The vertices to reorient\n * @param {module:twgl/m4.Mat4} matrix matrix to reorient by.\n * @return {Object.<string, NativeArrayOrTypedArray>} same arrays that were passed in.\n * @memberOf module:twgl/primitives\n */function reorientVertices(e,t){Object.keys(e).forEach((function(r){const n=e[r];r.indexOf(\"pos\")>=0?reorientPositions(n,t):r.indexOf(\"tan\")>=0||r.indexOf(\"binorm\")>=0?reorientDirections(n,t):r.indexOf(\"norm\")>=0&&reorientNormals(n,t)}));return e}\n/**\n * Creates XY quad BufferInfo\n *\n * The default with no parameters will return a 2x2 quad with values from -1 to +1.\n * If you want a unit quad with that goes from 0 to 1 you'd call it with\n *\n *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0.5, 0.5);\n *\n * If you want a unit quad centered above 0,0 you'd call it with\n *\n *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0, 0.5);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1\n * @param {number} [xOffset] the amount to offset the quad in X\n * @param {number} [yOffset] the amount to offset the quad in Y\n * @return {Object.<string, WebGLBuffer>} the created XY Quad BufferInfo\n * @memberOf module:twgl/primitives\n * @function createXYQuadBuffers\n */\n/**\n * Creates XY quad Buffers\n *\n * The default with no parameters will return a 2x2 quad with values from -1 to +1.\n * If you want a unit quad with that goes from 0 to 1 you'd call it with\n *\n *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0.5, 0.5);\n *\n * If you want a unit quad centered above 0,0 you'd call it with\n *\n *     twgl.primitives.createXYQuadBufferInfo(gl, 1, 0, 0.5);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1\n * @param {number} [xOffset] the amount to offset the quad in X\n * @param {number} [yOffset] the amount to offset the quad in Y\n * @return {module:twgl.BufferInfo} the created XY Quad buffers\n * @memberOf module:twgl/primitives\n * @function createXYQuadBufferInfo\n */\n/**\n * Creates XY quad vertices\n *\n * The default with no parameters will return a 2x2 quad with values from -1 to +1.\n * If you want a unit quad with that goes from 0 to 1 you'd call it with\n *\n *     twgl.primitives.createXYQuadVertices(1, 0.5, 0.5);\n *\n * If you want a unit quad centered above 0,0 you'd call it with\n *\n *     twgl.primitives.createXYQuadVertices(1, 0, 0.5);\n *\n * @param {number} [size] the size across the quad. Defaults to 2 which means vertices will go from -1 to +1\n * @param {number} [xOffset] the amount to offset the quad in X\n * @param {number} [yOffset] the amount to offset the quad in Y\n * @return {Object.<string, TypedArray>} the created XY Quad vertices\n * @memberOf module:twgl/primitives\n */function createXYQuadVertices(e,t,r){e=e||2;t=t||0;r=r||0;e*=.5;return{position:{numComponents:2,data:[t+-1*e,r+-1*e,t+1*e,r+-1*e,t+-1*e,r+1*e,t+1*e,r+1*e]},normal:[0,0,1,0,0,1,0,0,1,0,0,1],texcoord:[0,0,1,0,0,1,1,1],indices:[0,1,2,2,1,3]}}\n/**\n * Creates XZ plane BufferInfo.\n *\n * The created plane has position, normal, and texcoord data\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [width] Width of the plane. Default = 1\n * @param {number} [depth] Depth of the plane. Default = 1\n * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1\n * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1\n * @param {module:twgl/m4.Mat4} [matrix] A matrix by which to multiply all the vertices.\n * @return {module:twgl.BufferInfo} The created plane BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createPlaneBufferInfo\n */\n/**\n * Creates XZ plane buffers.\n *\n * The created plane has position, normal, and texcoord data\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [width] Width of the plane. Default = 1\n * @param {number} [depth] Depth of the plane. Default = 1\n * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1\n * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1\n * @param {module:twgl/m4.Mat4} [matrix] A matrix by which to multiply all the vertices.\n * @return {Object.<string, WebGLBuffer>} The created plane buffers.\n * @memberOf module:twgl/primitives\n * @function createPlaneBuffers\n */\n/**\n * Creates XZ plane vertices.\n *\n * The created plane has position, normal, and texcoord data\n *\n * @param {number} [width] Width of the plane. Default = 1\n * @param {number} [depth] Depth of the plane. Default = 1\n * @param {number} [subdivisionsWidth] Number of steps across the plane. Default = 1\n * @param {number} [subdivisionsDepth] Number of steps down the plane. Default = 1\n * @param {module:twgl/m4.Mat4} [matrix] A matrix by which to multiply all the vertices.\n * @return {Object.<string, TypedArray>} The created plane vertices.\n * @memberOf module:twgl/primitives\n */function createPlaneVertices(e,t,r,n,o){e=e||1;t=t||1;r=r||1;n=n||1;o=o||identity();const s=(r+1)*(n+1);const a=createAugmentedTypedArray(3,s);const c=createAugmentedTypedArray(3,s);const i=createAugmentedTypedArray(2,s);for(let o=0;o<=n;o++)for(let s=0;s<=r;s++){const u=s/r;const f=o/n;a.push(e*u-e*.5,0,t*f-t*.5);c.push(0,1,0);i.push(u,f)}const u=r+1;const f=createAugmentedTypedArray(3,r*n*2,Uint16Array);for(let e=0;e<n;e++)for(let t=0;t<r;t++){f.push((e+0)*u+t,(e+1)*u+t,(e+0)*u+t+1);f.push((e+1)*u+t,(e+1)*u+t+1,(e+0)*u+t+1)}const l=reorientVertices({position:a,normal:c,texcoord:i,indices:f},o);return l}\n/**\n * Creates sphere BufferInfo.\n *\n * The created sphere has position, normal, and texcoord data\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius radius of the sphere.\n * @param {number} subdivisionsAxis number of steps around the sphere.\n * @param {number} subdivisionsHeight number of vertically on the sphere.\n * @param {number} [opt_startLatitudeInRadians] where to start the\n *     top of the sphere. Default = 0.\n * @param {number} [opt_endLatitudeInRadians] Where to end the\n *     bottom of the sphere. Default = Math.PI.\n * @param {number} [opt_startLongitudeInRadians] where to start\n *     wrapping the sphere. Default = 0.\n * @param {number} [opt_endLongitudeInRadians] where to end\n *     wrapping the sphere. Default = 2 * Math.PI.\n * @return {module:twgl.BufferInfo} The created sphere BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createSphereBufferInfo\n */\n/**\n * Creates sphere buffers.\n *\n * The created sphere has position, normal, and texcoord data\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius radius of the sphere.\n * @param {number} subdivisionsAxis number of steps around the sphere.\n * @param {number} subdivisionsHeight number of vertically on the sphere.\n * @param {number} [opt_startLatitudeInRadians] where to start the\n *     top of the sphere. Default = 0.\n * @param {number} [opt_endLatitudeInRadians] Where to end the\n *     bottom of the sphere. Default = Math.PI.\n * @param {number} [opt_startLongitudeInRadians] where to start\n *     wrapping the sphere. Default = 0.\n * @param {number} [opt_endLongitudeInRadians] where to end\n *     wrapping the sphere. Default = 2 * Math.PI.\n * @return {Object.<string, WebGLBuffer>} The created sphere buffers.\n * @memberOf module:twgl/primitives\n * @function createSphereBuffers\n */\n/**\n * Creates sphere vertices.\n *\n * The created sphere has position, normal, and texcoord data\n *\n * @param {number} radius radius of the sphere.\n * @param {number} subdivisionsAxis number of steps around the sphere.\n * @param {number} subdivisionsHeight number of vertically on the sphere.\n * @param {number} [opt_startLatitudeInRadians] where to start the\n *     top of the sphere. Default = 0.\n * @param {number} [opt_endLatitudeInRadians] Where to end the\n *     bottom of the sphere. Default = Math.PI.\n * @param {number} [opt_startLongitudeInRadians] where to start\n *     wrapping the sphere. Default = 0.\n * @param {number} [opt_endLongitudeInRadians] where to end\n *     wrapping the sphere. Default = 2 * Math.PI.\n * @return {Object.<string, TypedArray>} The created sphere vertices.\n * @memberOf module:twgl/primitives\n */function createSphereVertices(e,t,r,n,o,s,a){if(t<=0||r<=0)throw new Error(\"subdivisionAxis and subdivisionHeight must be > 0\");n=n||0;o=o||Math.PI;s=s||0;a=a||Math.PI*2;const c=o-n;const i=a-s;const u=(t+1)*(r+1);const f=createAugmentedTypedArray(3,u);const l=createAugmentedTypedArray(3,u);const m=createAugmentedTypedArray(2,u);for(let o=0;o<=r;o++)for(let a=0;a<=t;a++){const u=a/t;const y=o/r;const d=i*u+s;const p=c*y+n;const b=Math.sin(d);const g=Math.cos(d);const A=Math.sin(p);const x=Math.cos(p);const h=g*A;const F=x;const T=b*A;f.push(e*h,e*F,e*T);l.push(h,F,T);m.push(1-u,y)}const y=t+1;const d=createAugmentedTypedArray(3,t*r*2,Uint16Array);for(let e=0;e<t;e++)for(let t=0;t<r;t++){d.push((t+0)*y+e,(t+0)*y+e+1,(t+1)*y+e);d.push((t+1)*y+e,(t+0)*y+e+1,(t+1)*y+e+1)}return{position:f,normal:l,texcoord:m,indices:d}}\n/**\n * Array of the indices of corners of each face of a cube.\n * @type {Array.<number[]>}\n * @private\n */const W=[[3,7,5,1],[6,2,0,4],[6,7,3,2],[0,1,5,4],[7,6,4,5],[2,3,1,0]];\n/**\n * Creates a BufferInfo for a cube.\n *\n * The cube is created around the origin. (-size / 2, size / 2).\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [size] width, height and depth of the cube.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createCubeBufferInfo\n */\n/**\n * Creates the buffers and indices for a cube.\n *\n * The cube is created around the origin. (-size / 2, size / 2).\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} [size] width, height and depth of the cube.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function createCubeBuffers\n */\n/**\n * Creates the vertices and indices for a cube.\n *\n * The cube is created around the origin. (-size / 2, size / 2).\n *\n * @param {number} [size] width, height and depth of the cube.\n * @return {Object.<string, TypedArray>} The created vertices.\n * @memberOf module:twgl/primitives\n */function createCubeVertices(e){e=e||1;const t=e/2;const r=[[-t,-t,-t],[+t,-t,-t],[-t,+t,-t],[+t,+t,-t],[-t,-t,+t],[+t,-t,+t],[-t,+t,+t],[+t,+t,+t]];const n=[[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]];const o=[[1,0],[0,0],[0,1],[1,1]];const s=24;const a=createAugmentedTypedArray(3,s);const c=createAugmentedTypedArray(3,s);const i=createAugmentedTypedArray(2,s);const u=createAugmentedTypedArray(3,12,Uint16Array);for(let e=0;e<6;++e){const t=W[e];for(let s=0;s<4;++s){const u=r[t[s]];const f=n[e];const l=o[s];a.push(u);c.push(f);i.push(l)}const s=4*e;u.push(s+0,s+1,s+2);u.push(s+0,s+2,s+3)}return{position:a,normal:c,texcoord:i,indices:u}}\n/**\n * Creates a BufferInfo for a truncated cone, which is like a cylinder\n * except that it has different top and bottom radii. A truncated cone\n * can also be used to create cylinders and regular cones. The\n * truncated cone will be created centered about the origin, with the\n * y axis as its vertical axis.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} bottomRadius Bottom radius of truncated cone.\n * @param {number} topRadius Top radius of truncated cone.\n * @param {number} height Height of truncated cone.\n * @param {number} radialSubdivisions The number of subdivisions around the\n *     truncated cone.\n * @param {number} verticalSubdivisions The number of subdivisions down the\n *     truncated cone.\n * @param {boolean} [opt_topCap] Create top cap. Default = true.\n * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.\n * @return {module:twgl.BufferInfo} The created cone BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createTruncatedConeBufferInfo\n */\n/**\n * Creates buffers for a truncated cone, which is like a cylinder\n * except that it has different top and bottom radii. A truncated cone\n * can also be used to create cylinders and regular cones. The\n * truncated cone will be created centered about the origin, with the\n * y axis as its vertical axis.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} bottomRadius Bottom radius of truncated cone.\n * @param {number} topRadius Top radius of truncated cone.\n * @param {number} height Height of truncated cone.\n * @param {number} radialSubdivisions The number of subdivisions around the\n *     truncated cone.\n * @param {number} verticalSubdivisions The number of subdivisions down the\n *     truncated cone.\n * @param {boolean} [opt_topCap] Create top cap. Default = true.\n * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.\n * @return {Object.<string, WebGLBuffer>} The created cone buffers.\n * @memberOf module:twgl/primitives\n * @function createTruncatedConeBuffers\n */\n/**\n * Creates vertices for a truncated cone, which is like a cylinder\n * except that it has different top and bottom radii. A truncated cone\n * can also be used to create cylinders and regular cones. The\n * truncated cone will be created centered about the origin, with the\n * y axis as its vertical axis. .\n *\n * @param {number} bottomRadius Bottom radius of truncated cone.\n * @param {number} topRadius Top radius of truncated cone.\n * @param {number} height Height of truncated cone.\n * @param {number} radialSubdivisions The number of subdivisions around the\n *     truncated cone.\n * @param {number} verticalSubdivisions The number of subdivisions down the\n *     truncated cone.\n * @param {boolean} [opt_topCap] Create top cap. Default = true.\n * @param {boolean} [opt_bottomCap] Create bottom cap. Default = true.\n * @return {Object.<string, TypedArray>} The created cone vertices.\n * @memberOf module:twgl/primitives\n */function createTruncatedConeVertices(e,t,r,n,o,s,a){if(n<3)throw new Error(\"radialSubdivisions must be 3 or greater\");if(o<1)throw new Error(\"verticalSubdivisions must be 1 or greater\");const c=s===void 0||s;const i=a===void 0||a;const u=(c?2:0)+(i?2:0);const f=(n+1)*(o+1+u);const l=createAugmentedTypedArray(3,f);const m=createAugmentedTypedArray(3,f);const y=createAugmentedTypedArray(2,f);const d=createAugmentedTypedArray(3,n*(o+u/2)*2,Uint16Array);const p=n+1;const b=Math.atan2(e-t,r);const g=Math.cos(b);const A=Math.sin(b);const x=c?-2:0;const h=o+(i?2:0);for(let s=x;s<=h;++s){let a=s/o;let c=r*a;let i;if(s<0){c=0;a=1;i=e}else if(s>o){c=r;a=1;i=t}else i=e+s/o*(t-e);if(s===-2||s===o+2){i=0;a=0}c-=r/2;for(let e=0;e<p;++e){const t=Math.sin(e*Math.PI*2/n);const r=Math.cos(e*Math.PI*2/n);l.push(t*i,c,r*i);s<0?m.push(0,-1,0):s>o?m.push(0,1,0):i===0?m.push(0,0,0):m.push(t*g,A,r*g);y.push(e/n,1-a)}}for(let e=0;e<o+u;++e)if(!(e===1&&c||e===o+u-2&&i))for(let t=0;t<n;++t){d.push(p*(e+0)+0+t,p*(e+0)+1+t,p*(e+1)+1+t);d.push(p*(e+0)+0+t,p*(e+1)+1+t,p*(e+1)+0+t)}return{position:l,normal:m,texcoord:y,indices:d}}\n/**\n * Expands RLE data\n * @param {number[]} rleData data in format of run-length, x, y, z, run-length, x, y, z\n * @param {number[]} [padding] value to add each entry with.\n * @return {number[]} the expanded rleData\n * @private\n */function expandRLEData(e,t){t=t||[];const r=[];for(let n=0;n<e.length;n+=4){const o=e[n];const s=e.slice(n+1,n+4);s.push.apply(s,t);for(let e=0;e<o;++e)r.push.apply(r,s)}return r}\n/**\n * Creates 3D 'F' BufferInfo.\n * An 'F' is useful because you can easily tell which way it is oriented.\n * The created 'F' has position, normal, texcoord, and color buffers.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function create3DFBufferInfo\n */\n/**\n * Creates 3D 'F' buffers.\n * An 'F' is useful because you can easily tell which way it is oriented.\n * The created 'F' has position, normal, texcoord, and color buffers.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function create3DFBuffers\n */function create3DFVertices(){const e=[0,0,0,0,150,0,30,0,0,0,150,0,30,150,0,30,0,0,30,0,0,30,30,0,100,0,0,30,30,0,100,30,0,100,0,0,30,60,0,30,90,0,67,60,0,30,90,0,67,90,0,67,60,0,0,0,30,30,0,30,0,150,30,0,150,30,30,0,30,30,150,30,30,0,30,100,0,30,30,30,30,30,30,30,100,0,30,100,30,30,30,60,30,67,60,30,30,90,30,30,90,30,67,60,30,67,90,30,0,0,0,100,0,0,100,0,30,0,0,0,100,0,30,0,0,30,100,0,0,100,30,0,100,30,30,100,0,0,100,30,30,100,0,30,30,30,0,30,30,30,100,30,30,30,30,0,100,30,30,100,30,0,30,30,0,30,60,30,30,30,30,30,30,0,30,60,0,30,60,30,30,60,0,67,60,30,30,60,30,30,60,0,67,60,0,67,60,30,67,60,0,67,90,30,67,60,30,67,60,0,67,90,0,67,90,30,30,90,0,30,90,30,67,90,30,30,90,0,67,90,30,67,90,0,30,90,0,30,150,30,30,90,30,30,90,0,30,150,0,30,150,30,0,150,0,0,150,30,30,150,30,0,150,0,30,150,30,30,150,0,0,0,0,0,0,30,0,150,30,0,0,0,0,150,30,0,150,0];const t=[.22,.19,.22,.79,.34,.19,.22,.79,.34,.79,.34,.19,.34,.19,.34,.31,.62,.19,.34,.31,.62,.31,.62,.19,.34,.43,.34,.55,.49,.43,.34,.55,.49,.55,.49,.43,0,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,1,0,1,1,0,1,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0,0,1,1,1,0];const r=expandRLEData([18,0,0,1,18,0,0,-1,6,0,1,0,6,1,0,0,6,0,-1,0,6,1,0,0,6,0,1,0,6,1,0,0,6,0,-1,0,6,1,0,0,6,0,-1,0,6,-1,0,0]);const n=expandRLEData([18,200,70,120,18,80,70,200,6,70,200,210,6,200,200,70,6,210,100,70,6,210,160,70,6,70,180,210,6,100,70,210,6,76,210,100,6,140,210,80,6,90,130,110,6,160,160,220],[255]);const o=e.length/3;const s={position:createAugmentedTypedArray(3,o),texcoord:createAugmentedTypedArray(2,o),normal:createAugmentedTypedArray(3,o),color:createAugmentedTypedArray(4,o,Uint8Array),indices:createAugmentedTypedArray(3,o/3,Uint16Array)};s.position.push(e);s.texcoord.push(t);s.normal.push(r);s.color.push(n);for(let e=0;e<o;++e)s.indices.push(e);return s}\n/**\n * Creates crescent BufferInfo.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createCresentBufferInfo\n */\n/**\n * Creates crescent buffers.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function createCresentBuffers\n */\n/**\n * Creates crescent vertices.\n *\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {Object.<string, TypedArray>} The created vertices.\n * @memberOf module:twgl/primitives\n * @function createCresentBuffers\n */\n/**\n * Creates crescent BufferInfo.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createCrescentBufferInfo\n */\n/**\n * Creates crescent buffers.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function createCrescentBuffers\n */\n/**\n * Creates crescent vertices.\n *\n * @param {number} verticalRadius The vertical radius of the crescent.\n * @param {number} outerRadius The outer radius of the crescent.\n * @param {number} innerRadius The inner radius of the crescent.\n * @param {number} thickness The thickness of the crescent.\n * @param {number} subdivisionsDown number of steps around the crescent.\n * @param {number} [startOffset] Where to start arc. Default 0.\n * @param {number} [endOffset] Where to end arg. Default 1.\n * @return {Object.<string, TypedArray>} The created vertices.\n * @memberOf module:twgl/primitives\n */function createCrescentVertices(e,t,r,n,o,s,a){if(o<=0)throw new Error(\"subdivisionDown must be > 0\");s=s||0;a=a||1;const c=2;const i=a-s;const u=(o+1)*2*(2+c);const f=createAugmentedTypedArray(3,u);const l=createAugmentedTypedArray(3,u);const m=createAugmentedTypedArray(2,u);function lerp(e,t,r){return e+(t-e)*r}function createArc(t,r,a,u,y,d){for(let p=0;p<=o;p++){const b=r/(c-1);const g=p/o;const A=2*(b-.5);const x=(s+g*i)*Math.PI;const h=Math.sin(x);const F=Math.cos(x);const T=lerp(e,t,h);const S=A*n;const P=F*e;const E=h*T;f.push(S,P,E);const w=add(multiply$1([0,h,F],a),u);l.push(w);m.push(b*y+d,g)}}for(let e=0;e<c;e++){const n=2*(e/(c-1)-.5);createArc(t,e,[1,1,1],[0,0,0],1,0);createArc(t,e,[0,0,0],[n,0,0],0,0);createArc(r,e,[1,1,1],[0,0,0],1,0);createArc(r,e,[0,0,0],[n,0,0],0,1)}const y=createAugmentedTypedArray(3,o*2*(2+c),Uint16Array);function createSurface(e,t){for(let r=0;r<o;++r){y.push(e+r+0,e+r+1,t+r+0);y.push(e+r+1,t+r+1,t+r+0)}}const d=o+1;createSurface(d*0,d*4);createSurface(d*5,d*7);createSurface(d*6,d*2);createSurface(d*3,d*1);return{position:f,normal:l,texcoord:m,indices:y}}\n/**\n * Creates cylinder BufferInfo. The cylinder will be created around the origin\n * along the y-axis.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius Radius of cylinder.\n * @param {number} height Height of cylinder.\n * @param {number} radialSubdivisions The number of subdivisions around the cylinder.\n * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.\n * @param {boolean} [topCap] Create top cap. Default = true.\n * @param {boolean} [bottomCap] Create bottom cap. Default = true.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createCylinderBufferInfo\n */\n/**\n  * Creates cylinder buffers. The cylinder will be created around the origin\n  * along the y-axis.\n  *\n  * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n  * @param {number} radius Radius of cylinder.\n  * @param {number} height Height of cylinder.\n  * @param {number} radialSubdivisions The number of subdivisions around the cylinder.\n  * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.\n  * @param {boolean} [topCap] Create top cap. Default = true.\n  * @param {boolean} [bottomCap] Create bottom cap. Default = true.\n  * @return {Object.<string, WebGLBuffer>} The created buffers.\n  * @memberOf module:twgl/primitives\n  * @function createCylinderBuffers\n  */\n/**\n  * Creates cylinder vertices. The cylinder will be created around the origin\n  * along the y-axis.\n  *\n  * @param {number} radius Radius of cylinder.\n  * @param {number} height Height of cylinder.\n  * @param {number} radialSubdivisions The number of subdivisions around the cylinder.\n  * @param {number} verticalSubdivisions The number of subdivisions down the cylinder.\n  * @param {boolean} [topCap] Create top cap. Default = true.\n  * @param {boolean} [bottomCap] Create bottom cap. Default = true.\n  * @return {Object.<string, TypedArray>} The created vertices.\n  * @memberOf module:twgl/primitives\n  */function createCylinderVertices(e,t,r,n,o,s){return createTruncatedConeVertices(e,e,t,r,n,o,s)}\n/**\n * Creates BufferInfo for a torus\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius radius of center of torus circle.\n * @param {number} thickness radius of torus ring.\n * @param {number} radialSubdivisions The number of subdivisions around the torus.\n * @param {number} bodySubdivisions The number of subdivisions around the body torus.\n * @param {boolean} [startAngle] start angle in radians. Default = 0.\n * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createTorusBufferInfo\n */\n/**\n * Creates buffers for a torus\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius radius of center of torus circle.\n * @param {number} thickness radius of torus ring.\n * @param {number} radialSubdivisions The number of subdivisions around the torus.\n * @param {number} bodySubdivisions The number of subdivisions around the body torus.\n * @param {boolean} [startAngle] start angle in radians. Default = 0.\n * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function createTorusBuffers\n */\n/**\n * Creates vertices for a torus\n *\n * @param {number} radius radius of center of torus circle.\n * @param {number} thickness radius of torus ring.\n * @param {number} radialSubdivisions The number of subdivisions around the torus.\n * @param {number} bodySubdivisions The number of subdivisions around the body torus.\n * @param {boolean} [startAngle] start angle in radians. Default = 0.\n * @param {boolean} [endAngle] end angle in radians. Default = Math.PI * 2.\n * @return {Object.<string, TypedArray>} The created vertices.\n * @memberOf module:twgl/primitives\n */function createTorusVertices(e,t,r,n,o,s){if(r<3)throw new Error(\"radialSubdivisions must be 3 or greater\");if(n<3)throw new Error(\"verticalSubdivisions must be 3 or greater\");o=o||0;s=s||Math.PI*2;const a=s-o;const c=r+1;const i=n+1;const u=c*i;const f=createAugmentedTypedArray(3,u);const l=createAugmentedTypedArray(3,u);const m=createAugmentedTypedArray(2,u);const y=createAugmentedTypedArray(3,r*n*2,Uint16Array);for(let s=0;s<i;++s){const i=s/n;const u=i*Math.PI*2;const y=Math.sin(u);const d=e+y*t;const p=Math.cos(u);const b=p*t;for(let e=0;e<c;++e){const t=e/r;const n=o+t*a;const s=Math.sin(n);const c=Math.cos(n);const u=s*d;const g=c*d;const A=s*y;const x=c*y;f.push(u,b,g);l.push(A,p,x);m.push(t,1-i)}}for(let e=0;e<n;++e)for(let t=0;t<r;++t){const r=1+t;const n=1+e;y.push(c*e+t,c*n+t,c*e+r);y.push(c*n+t,c*n+r,c*e+r)}return{position:f,normal:l,texcoord:m,indices:y}}\n/**\n * Creates a disc BufferInfo. The disc will be in the xz plane, centered at\n * the origin. When creating, at least 3 divisions, or pie\n * pieces, need to be specified, otherwise the triangles making\n * up the disc will be degenerate. You can also specify the\n * number of radial pieces `stacks`. A value of 1 for\n * stacks will give you a simple disc of pie pieces.  If you\n * want to create an annulus you can set `innerRadius` to a\n * value > 0. Finally, `stackPower` allows you to have the widths\n * increase or decrease as you move away from the center. This\n * is particularly useful when using the disc as a ground plane\n * with a fixed camera such that you don't need the resolution\n * of small triangles near the perimeter. For example, a value\n * of 2 will produce stacks whose outside radius increases with\n * the square of the stack index. A value of 1 will give uniform\n * stacks.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius Radius of the ground plane.\n * @param {number} divisions Number of triangles in the ground plane (at least 3).\n * @param {number} [stacks] Number of radial divisions (default=1).\n * @param {number} [innerRadius] Default 0.\n * @param {number} [stackPower] Power to raise stack size to for decreasing width.\n * @return {module:twgl.BufferInfo} The created BufferInfo.\n * @memberOf module:twgl/primitives\n * @function createDiscBufferInfo\n */\n/**\n * Creates disc buffers. The disc will be in the xz plane, centered at\n * the origin. When creating, at least 3 divisions, or pie\n * pieces, need to be specified, otherwise the triangles making\n * up the disc will be degenerate. You can also specify the\n * number of radial pieces `stacks`. A value of 1 for\n * stacks will give you a simple disc of pie pieces.  If you\n * want to create an annulus you can set `innerRadius` to a\n * value > 0. Finally, `stackPower` allows you to have the widths\n * increase or decrease as you move away from the center. This\n * is particularly useful when using the disc as a ground plane\n * with a fixed camera such that you don't need the resolution\n * of small triangles near the perimeter. For example, a value\n * of 2 will produce stacks whose outside radius increases with\n * the square of the stack index. A value of 1 will give uniform\n * stacks.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext.\n * @param {number} radius Radius of the ground plane.\n * @param {number} divisions Number of triangles in the ground plane (at least 3).\n * @param {number} [stacks] Number of radial divisions (default=1).\n * @param {number} [innerRadius] Default 0.\n * @param {number} [stackPower] Power to raise stack size to for decreasing width.\n * @return {Object.<string, WebGLBuffer>} The created buffers.\n * @memberOf module:twgl/primitives\n * @function createDiscBuffers\n */\n/**\n * Creates disc vertices. The disc will be in the xz plane, centered at\n * the origin. When creating, at least 3 divisions, or pie\n * pieces, need to be specified, otherwise the triangles making\n * up the disc will be degenerate. You can also specify the\n * number of radial pieces `stacks`. A value of 1 for\n * stacks will give you a simple disc of pie pieces.  If you\n * want to create an annulus you can set `innerRadius` to a\n * value > 0. Finally, `stackPower` allows you to have the widths\n * increase or decrease as you move away from the center. This\n * is particularly useful when using the disc as a ground plane\n * with a fixed camera such that you don't need the resolution\n * of small triangles near the perimeter. For example, a value\n * of 2 will produce stacks whose outside radius increases with\n * the square of the stack index. A value of 1 will give uniform\n * stacks.\n *\n * @param {number} radius Radius of the ground plane.\n * @param {number} divisions Number of triangles in the ground plane (at least 3).\n * @param {number} [stacks] Number of radial divisions (default=1).\n * @param {number} [innerRadius] Default 0.\n * @param {number} [stackPower] Power to raise stack size to for decreasing width.\n * @return {Object.<string, TypedArray>} The created vertices.\n * @memberOf module:twgl/primitives\n */function createDiscVertices(e,t,r,n,o){if(t<3)throw new Error(\"divisions must be at least 3\");r=r||1;o=o||1;n=n||0;const s=(t+1)*(r+1);const a=createAugmentedTypedArray(3,s);const c=createAugmentedTypedArray(3,s);const i=createAugmentedTypedArray(2,s);const u=createAugmentedTypedArray(3,r*t*2,Uint16Array);let f=0;const l=e-n;const m=t+1;for(let e=0;e<=r;++e){const s=n+l*Math.pow(e/r,o);for(let n=0;n<=t;++n){const o=2*Math.PI*n/t;const l=s*Math.cos(o);const y=s*Math.sin(o);a.push(l,0,y);c.push(0,1,0);i.push(1-n/t,e/r);if(e>0&&n!==t){const e=f+(n+1);const t=f+n;const r=f+n-m;const o=f+(n+1)-m;u.push(e,t,r);u.push(e,r,o)}}f+=t+1}return{position:a,normal:c,texcoord:i,indices:u}}\n/**\n * creates a random integer between 0 and range - 1 inclusive.\n * @param {number} range\n * @return {number} random value between 0 and range - 1 inclusive.\n * @private\n */function randInt(e){return Math.random()*e|0}\n/**\n * Used to supply random colors\n * @callback RandomColorFunc\n * @param {number} ndx index of triangle/quad if unindexed or index of vertex if indexed\n * @param {number} channel 0 = red, 1 = green, 2 = blue, 3 = alpha\n * @return {number} a number from 0 to 255\n * @memberOf module:twgl/primitives\n */\n/**\n * @typedef {Object} RandomVerticesOptions\n * @property {number} [vertsPerColor] Defaults to 3 for non-indexed vertices\n * @property {module:twgl/primitives.RandomColorFunc} [rand] A function to generate random numbers\n * @memberOf module:twgl/primitives\n */\n/**\n * Creates an augmentedTypedArray of random vertex colors.\n * If the vertices are indexed (have an indices array) then will\n * just make random colors. Otherwise assumes they are triangles\n * and makes one random color for every 3 vertices.\n * @param {Object.<string, AugmentedTypedArray>} vertices Vertices as returned from one of the createXXXVertices functions.\n * @param {module:twgl/primitives.RandomVerticesOptions} [options] options.\n * @return {Object.<string, AugmentedTypedArray>} same vertices as passed in with `color` added.\n * @memberOf module:twgl/primitives\n */function makeRandomVertexColors(e,t){t=t||{};const r=e.position.numElements;const n=createAugmentedTypedArray(4,r,Uint8Array);const o=t.rand||function(e,t){return t<3?randInt(256):255};e.color=n;if(e.indices)for(let e=0;e<r;++e)n.push(o(e,0),o(e,1),o(e,2),o(e,3));else{const e=t.vertsPerColor||3;const s=r/e;for(let t=0;t<s;++t){const r=[o(t,0),o(t,1),o(t,2),o(t,3)];for(let t=0;t<e;++t)n.push(r)}}return e}function createBufferFunc(e){return function(t){const r=e.apply(this,Array.prototype.slice.call(arguments,1));return createBuffersFromArrays(t,r)}}function createBufferInfoFunc(e){return function(t){const r=e.apply(null,Array.prototype.slice.call(arguments,1));return createBufferInfoFromArrays(t,r)}}const X=[\"numComponents\",\"size\",\"type\",\"normalize\",\"stride\",\"offset\",\"attrib\",\"name\",\"attribName\"];\n/**\n * Copy elements from one array to another\n *\n * @param {Array|TypedArray} src source array\n * @param {Array|TypedArray} dst dest array\n * @param {number} dstNdx index in dest to copy src\n * @param {number} [offset] offset to add to copied values\n * @private\n */function copyElements(e,t,r,n){n=n||0;const o=e.length;for(let s=0;s<o;++s)t[r+s]=e[s]+n}\n/**\n * Creates an array of the same time\n *\n * @param {(number[]|ArrayBufferView|module:twgl.FullArraySpec)} srcArray array who's type to copy\n * @param {number} length size of new array\n * @return {(number[]|ArrayBufferView|module:twgl.FullArraySpec)} array with same type as srcArray\n * @private\n */function createArrayOfSameType(e,t){const r=N(e);const n=new r.constructor(t);let o=n;r.numComponents&&r.numElements&&augmentTypedArray(n,r.numComponents);if(e.data){o={data:n};copyNamedProperties(X,e,o)}return o}\n/**\n * Concatenates sets of vertices\n *\n * Assumes the vertices match in composition. For example\n * if one set of vertices has positions, normals, and indices\n * all sets of vertices must have positions, normals, and indices\n * and of the same type.\n *\n * Example:\n *\n *      const cubeVertices = twgl.primitives.createCubeVertices(2);\n *      const sphereVertices = twgl.primitives.createSphereVertices(1, 10, 10);\n *      // move the sphere 2 units up\n *      twgl.primitives.reorientVertices(\n *          sphereVertices, twgl.m4.translation([0, 2, 0]));\n *      // merge the sphere with the cube\n *      const cubeSphereVertices = twgl.primitives.concatVertices(\n *          [cubeVertices, sphereVertices]);\n *      // turn them into WebGL buffers and attrib data\n *      const bufferInfo = twgl.createBufferInfoFromArrays(gl, cubeSphereVertices);\n *\n * @param {module:twgl.Arrays[]} arrays Array of arrays of vertices\n * @return {module:twgl.Arrays} The concatenated vertices.\n * @memberOf module:twgl/primitives\n */function concatVertices(e){const t={};let r;for(let n=0;n<e.length;++n){const o=e[n];Object.keys(o).forEach((function(e){t[e]||(t[e]=[]);r||e===\"indices\"||(r=e);const n=o[e];const s=j(n,e);const a=N(n);const c=a.length/s;t[e].push(c)}))}function getLengthOfCombinedArrays(t){let r=0;let n;for(let o=0;o<e.length;++o){const s=e[o];const a=s[t];const c=N(a);r+=c.length;n&&!a.data||(n=a)}return{length:r,spec:n}}function copyArraysToNewArray(t,r,n){let o=0;let s=0;for(let a=0;a<e.length;++a){const c=e[a];const i=c[t];const u=N(i);if(t===\"indices\"){copyElements(u,n,s,o);o+=r[a]}else copyElements(u,n,s);s+=u.length}}const n=t[r];const o={};Object.keys(t).forEach((function(e){const t=getLengthOfCombinedArrays(e);const r=createArrayOfSameType(t.spec,t.length);copyArraysToNewArray(e,n,N(r));o[e]=r}));return o}\n/**\n * Creates a duplicate set of vertices\n *\n * This is useful for calling reorientVertices when you\n * also want to keep the original available\n *\n * @param {module:twgl.Arrays} arrays of vertices\n * @return {module:twgl.Arrays} The duplicated vertices.\n * @memberOf module:twgl/primitives\n */function duplicateVertices(e){const t={};Object.keys(e).forEach((function(r){const n=e[r];const o=N(n);const s=createArrayOfSameType(n,o.length);copyElements(o,N(s),0);t[r]=s}));return t}const Y=createBufferInfoFunc(create3DFVertices);const q=createBufferFunc(create3DFVertices);const H=createBufferInfoFunc(createCubeVertices);const Q=createBufferFunc(createCubeVertices);const Z=createBufferInfoFunc(createPlaneVertices);const K=createBufferFunc(createPlaneVertices);const J=createBufferInfoFunc(createSphereVertices);const ee=createBufferFunc(createSphereVertices);const te=createBufferInfoFunc(createTruncatedConeVertices);const re=createBufferFunc(createTruncatedConeVertices);const ne=createBufferInfoFunc(createXYQuadVertices);const oe=createBufferFunc(createXYQuadVertices);const se=createBufferInfoFunc(createCrescentVertices);const ae=createBufferFunc(createCrescentVertices);const ce=createBufferInfoFunc(createCylinderVertices);const ie=createBufferFunc(createCylinderVertices);const ue=createBufferInfoFunc(createTorusVertices);const fe=createBufferFunc(createTorusVertices);const le=createBufferInfoFunc(createDiscVertices);const me=createBufferFunc(createDiscVertices);const ye=se;const de=ae;const pe=createCrescentVertices;var be=Object.freeze({__proto__:null,create3DFBufferInfo:Y,create3DFBuffers:q,create3DFVertices:create3DFVertices,createAugmentedTypedArray:createAugmentedTypedArray,createCubeBufferInfo:H,createCubeBuffers:Q,createCubeVertices:createCubeVertices,createPlaneBufferInfo:Z,createPlaneBuffers:K,createPlaneVertices:createPlaneVertices,createSphereBufferInfo:J,createSphereBuffers:ee,createSphereVertices:createSphereVertices,createTruncatedConeBufferInfo:te,createTruncatedConeBuffers:re,createTruncatedConeVertices:createTruncatedConeVertices,createXYQuadBufferInfo:ne,createXYQuadBuffers:oe,createXYQuadVertices:createXYQuadVertices,createCresentBufferInfo:ye,createCresentBuffers:de,createCresentVertices:pe,createCrescentBufferInfo:se,createCrescentBuffers:ae,createCrescentVertices:createCrescentVertices,createCylinderBufferInfo:ce,createCylinderBuffers:ie,createCylinderVertices:createCylinderVertices,createTorusBufferInfo:ue,createTorusBuffers:fe,createTorusVertices:createTorusVertices,createDiscBufferInfo:le,createDiscBuffers:me,createDiscVertices:createDiscVertices,deindexVertices:deindexVertices,flattenNormals:flattenNormals,makeRandomVertexColors:makeRandomVertexColors,reorientDirections:reorientDirections,reorientNormals:reorientNormals,reorientPositions:reorientPositions,reorientVertices:reorientVertices,concatVertices:concatVertices,duplicateVertices:duplicateVertices});\n/**\n * Gets the gl version as a number\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @return {number} version of gl\n * @private\n */\n/**\n * Check if context is WebGL 2.0\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @return {bool} true if it's WebGL 2.0\n * @memberOf module:twgl\n */function isWebGL2(e){return!!e.texStorage2D}\n/**\n * Check if context is WebGL 1.0\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @return {bool} true if it's WebGL 1.0\n * @memberOf module:twgl\n */function isWebGL1(e){return!e.texStorage2D}\n/**\n * Gets a string for WebGL enum\n *\n * Note: Several enums are the same. Without more\n * context (which function) it's impossible to always\n * give the correct enum. As it is, for matching values\n * it gives all enums. Checking the WebGL2RenderingContext\n * that means\n *\n *      0     = ZERO | POINT | NONE | NO_ERROR\n *      1     = ONE | LINES | SYNC_FLUSH_COMMANDS_BIT\n *      32777 = BLEND_EQUATION_RGB | BLEND_EQUATION_RGB\n *      36662 = COPY_READ_BUFFER | COPY_READ_BUFFER_BINDING\n *      36663 = COPY_WRITE_BUFFER | COPY_WRITE_BUFFER_BINDING\n *      36006 = FRAMEBUFFER_BINDING | DRAW_FRAMEBUFFER_BINDING\n *\n * It's also not useful for bits really unless you pass in individual bits.\n * In other words\n *\n *     const bits = gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT;\n *     twgl.glEnumToString(gl, bits);  // not going to work\n *\n * Note that some enums only exist on extensions. If you\n * want them to show up you need to pass the extension at least\n * once. For example\n *\n *     const ext = gl.getExtension('WEBGL_compressed_texture_s3tc');\n *     if (ext) {\n *        twgl.glEnumToString(ext, 0);  // just prime the function\n *\n *        ..later..\n *\n *        const internalFormat = ext.COMPRESSED_RGB_S3TC_DXT1_EXT;\n *        console.log(twgl.glEnumToString(gl, internalFormat));\n *\n * Notice I didn't have to pass the extension the second time. This means\n * you can have place that generically gets an enum for texture formats for example.\n * and as long as you primed the function with the extensions\n *\n * If you're using `twgl.addExtensionsToContext` to enable your extensions\n * then twgl will automatically get the extension's enums.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext or any extension object\n * @param {number} value the value of the enum you want to look up.\n * @return {string} enum string or hex value\n * @memberOf module:twgl\n * @function glEnumToString\n */const ge=function(){const e={};const t={};function addEnums(r){const n=r.constructor.name;if(!e[n]){for(const e in r)if(typeof r[e]===\"number\"){const n=t[r[e]];t[r[e]]=n?`${n} | ${e}`:e}e[n]=true}}return function glEnumToString(e,r){addEnums(e);return t[r]||(typeof r===\"number\"?`0x${r.toString(16)}`:r)}}();var Ae=Object.freeze({__proto__:null,glEnumToString:ge,isWebGL1:isWebGL1,isWebGL2:isWebGL2});const xe={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0};const he=P;const Fe=function(){let e;return function getShared2DContext(){e=e||(typeof document!==\"undefined\"&&document.createElement?document.createElement(\"canvas\").getContext(\"2d\"):null);return e}}();const Te=6406;const Se=6407;const Pe=6408;const Ee=6409;const we=6410;const Ie=6402;const ve=34041;const Be=33071;const Ce=9728;const ke=9729;const _e=3553;const Ve=34067;const Ue=32879;const ze=35866;const Oe=34069;const Me=34070;const Re=34071;const Le=34072;const De=34073;const $e=34074;const Ge=10241;const Ne=10240;const je=10242;const We=10243;const Xe=32882;const Ye=33082;const qe=33083;const He=33084;const Qe=33085;const Ze=34892;const Ke=34893;const Je=3317;const et=3314;const tt=32878;const rt=3316;const nt=3315;const ot=32877;const st=37443;const at=37441;const ct=37440;const it=33321;const ut=36756;const ft=33325;const lt=33326;const mt=33330;const yt=33329;const dt=33338;const pt=33337;const bt=33340;const gt=33339;const At=33323;const xt=36757;const ht=33327;const Ft=33328;const Tt=33336;const St=33335;const Pt=33332;const Et=33331;const wt=33334;const It=33333;const vt=32849;const Bt=35905;const Ct=36194;const kt=36758;const _t=35898;const Vt=35901;const Ut=34843;const zt=34837;const Ot=36221;const Mt=36239;const Rt=36215;const Lt=36233;const Dt=36209;const $t=36227;const Gt=32856;const Nt=35907;const jt=36759;const Wt=32855;const Xt=32854;const Yt=32857;const qt=34842;const Ht=34836;const Qt=36220;const Zt=36238;const Kt=36975;const Jt=36214;const er=36232;const tr=36226;const rr=36208;const nr=33189;const or=33190;const sr=36012;const ar=36013;const cr=35056;const ir=5120;const ur=5121;const fr=5122;const lr=5123;const mr=5124;const yr=5125;const dr=5126;const pr=32819;const br=32820;const gr=33635;const Ar=5131;const xr=36193;const hr=33640;const Fr=35899;const Tr=35902;const Sr=36269;const Pr=34042;const Er=33319;const wr=33320;const Ir=6403;const vr=36244;const Br=36248;const Cr=36249;const kr={};{const e=kr;e[Te]={numColorComponents:1};e[Ee]={numColorComponents:1};e[we]={numColorComponents:2};e[Se]={numColorComponents:3};e[Pe]={numColorComponents:4};e[Ir]={numColorComponents:1};e[vr]={numColorComponents:1};e[Er]={numColorComponents:2};e[wr]={numColorComponents:2};e[Se]={numColorComponents:3};e[Br]={numColorComponents:3};e[Pe]={numColorComponents:4};e[Cr]={numColorComponents:4};e[Ie]={numColorComponents:1};e[ve]={numColorComponents:2}}\n/**\n * @typedef {Object} TextureFormatDetails\n * @property {number} textureFormat format to pass texImage2D and similar functions.\n * @property {boolean} colorRenderable true if you can render to this format of texture.\n * @property {boolean} textureFilterable true if you can filter the texture, false if you can ony use `NEAREST`.\n * @property {number[]} type Array of possible types you can pass to texImage2D and similar function\n * @property {Object.<number,number>} bytesPerElementMap A map of types to bytes per element\n * @private\n */let _r;function getTextureInternalFormatInfo(e){if(!_r){const e={};e[Te]={textureFormat:Te,colorRenderable:true,textureFilterable:true,bytesPerElement:[1,2,2,4],type:[ur,Ar,xr,dr]};e[Ee]={textureFormat:Ee,colorRenderable:true,textureFilterable:true,bytesPerElement:[1,2,2,4],type:[ur,Ar,xr,dr]};e[we]={textureFormat:we,colorRenderable:true,textureFilterable:true,bytesPerElement:[2,4,4,8],type:[ur,Ar,xr,dr]};e[Se]={textureFormat:Se,colorRenderable:true,textureFilterable:true,bytesPerElement:[3,6,6,12,2],type:[ur,Ar,xr,dr,gr]};e[Pe]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4,8,8,16,2,2],type:[ur,Ar,xr,dr,pr,br]};e[Ie]={textureFormat:Ie,colorRenderable:true,textureFilterable:false,bytesPerElement:[2,4],type:[yr,lr]};e[it]={textureFormat:Ir,colorRenderable:true,textureFilterable:true,bytesPerElement:[1],type:[ur]};e[ut]={textureFormat:Ir,colorRenderable:false,textureFilterable:true,bytesPerElement:[1],type:[ir]};e[ft]={textureFormat:Ir,colorRenderable:false,textureFilterable:true,bytesPerElement:[4,2],type:[dr,Ar]};e[lt]={textureFormat:Ir,colorRenderable:false,textureFilterable:false,bytesPerElement:[4],type:[dr]};e[mt]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[1],type:[ur]};e[yt]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[1],type:[ir]};e[Pt]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[2],type:[lr]};e[Et]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[2],type:[fr]};e[wt]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[yr]};e[It]={textureFormat:vr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[mr]};e[At]={textureFormat:Er,colorRenderable:true,textureFilterable:true,bytesPerElement:[2],type:[ur]};e[xt]={textureFormat:Er,colorRenderable:false,textureFilterable:true,bytesPerElement:[2],type:[ir]};e[ht]={textureFormat:Er,colorRenderable:false,textureFilterable:true,bytesPerElement:[8,4],type:[dr,Ar]};e[Ft]={textureFormat:Er,colorRenderable:false,textureFilterable:false,bytesPerElement:[8],type:[dr]};e[Tt]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[2],type:[ur]};e[St]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[2],type:[ir]};e[dt]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[lr]};e[pt]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[fr]};e[bt]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[8],type:[yr]};e[gt]={textureFormat:wr,colorRenderable:true,textureFilterable:false,bytesPerElement:[8],type:[mr]};e[vt]={textureFormat:Se,colorRenderable:true,textureFilterable:true,bytesPerElement:[3],type:[ur]};e[Bt]={textureFormat:Se,colorRenderable:false,textureFilterable:true,bytesPerElement:[3],type:[ur]};e[Ct]={textureFormat:Se,colorRenderable:true,textureFilterable:true,bytesPerElement:[3,2],type:[ur,gr]};e[kt]={textureFormat:Se,colorRenderable:false,textureFilterable:true,bytesPerElement:[3],type:[ir]};e[_t]={textureFormat:Se,colorRenderable:false,textureFilterable:true,bytesPerElement:[12,6,4],type:[dr,Ar,Fr]};e[Vt]={textureFormat:Se,colorRenderable:false,textureFilterable:true,bytesPerElement:[12,6,4],type:[dr,Ar,Tr]};e[Ut]={textureFormat:Se,colorRenderable:false,textureFilterable:true,bytesPerElement:[12,6],type:[dr,Ar]};e[zt]={textureFormat:Se,colorRenderable:false,textureFilterable:false,bytesPerElement:[12],type:[dr]};e[Ot]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[3],type:[ur]};e[Mt]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[3],type:[ir]};e[Rt]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[6],type:[lr]};e[Lt]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[6],type:[fr]};e[Dt]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[12],type:[yr]};e[$t]={textureFormat:Br,colorRenderable:false,textureFilterable:false,bytesPerElement:[12],type:[mr]};e[Gt]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4],type:[ur]};e[Nt]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4],type:[ur]};e[jt]={textureFormat:Pe,colorRenderable:false,textureFilterable:true,bytesPerElement:[4],type:[ir]};e[Wt]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4,2,4],type:[ur,br,hr]};e[Xt]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4,2],type:[ur,pr]};e[Yt]={textureFormat:Pe,colorRenderable:true,textureFilterable:true,bytesPerElement:[4],type:[hr]};e[qt]={textureFormat:Pe,colorRenderable:false,textureFilterable:true,bytesPerElement:[16,8],type:[dr,Ar]};e[Ht]={textureFormat:Pe,colorRenderable:false,textureFilterable:false,bytesPerElement:[16],type:[dr]};e[Qt]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[ur]};e[Zt]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[ir]};e[Kt]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[hr]};e[Jt]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[8],type:[lr]};e[er]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[8],type:[fr]};e[tr]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[16],type:[mr]};e[rr]={textureFormat:Cr,colorRenderable:true,textureFilterable:false,bytesPerElement:[16],type:[yr]};e[nr]={textureFormat:Ie,colorRenderable:true,textureFilterable:false,bytesPerElement:[2,4],type:[lr,yr]};e[or]={textureFormat:Ie,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[yr]};e[sr]={textureFormat:Ie,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[dr]};e[cr]={textureFormat:ve,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[Pr]};e[ar]={textureFormat:ve,colorRenderable:true,textureFilterable:false,bytesPerElement:[4],type:[Sr]};Object.keys(e).forEach((function(t){const r=e[t];r.bytesPerElementMap={};r.bytesPerElement.forEach((function(e,t){const n=r.type[t];r.bytesPerElementMap[n]=e}))}));_r=e}return _r[e]}\n/**\n * Gets the number of bytes per element for a given internalFormat / type\n * @param {number} internalFormat The internalFormat parameter from texImage2D etc..\n * @param {number} type The type parameter for texImage2D etc..\n * @return {number} the number of bytes per element for the given internalFormat, type combo\n * @memberOf module:twgl/textures\n */function getBytesPerElementForInternalFormat(e,t){const r=getTextureInternalFormatInfo(e);if(!r)throw\"unknown internal format\";const n=r.bytesPerElementMap[t];if(n===void 0)throw\"unknown internal format\";return n}\n/**\n * Info related to a specific texture internalFormat as returned\n * from {@link module:twgl/textures.getFormatAndTypeForInternalFormat}.\n *\n * @typedef {Object} TextureFormatInfo\n * @property {number} format Format to pass to texImage2D and related functions\n * @property {number} type Type to pass to texImage2D and related functions\n * @memberOf module:twgl/textures\n */\n/**\n * Gets the format and type for a given internalFormat\n *\n * @param {number} internalFormat The internal format\n * @return {module:twgl/textures.TextureFormatInfo} the corresponding format and type,\n * @memberOf module:twgl/textures\n */function getFormatAndTypeForInternalFormat(e){const t=getTextureInternalFormatInfo(e);if(!t)throw\"unknown internal format\";return{format:t.textureFormat,type:t.type[0]}}\n/**\n * Returns true if value is power of 2\n * @param {number} value number to check.\n * @return true if value is power of 2\n * @private\n */function isPowerOf2(e){return(e&e-1)===0}\n/**\n * Gets whether or not we can generate mips for the given\n * internal format.\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {number} width The width parameter from texImage2D etc..\n * @param {number} height The height parameter from texImage2D etc..\n * @param {number} internalFormat The internalFormat parameter from texImage2D etc..\n * @return {boolean} true if we can generate mips\n * @memberOf module:twgl/textures\n */function canGenerateMipmap(e,t,r,n){if(!isWebGL2(e))return isPowerOf2(t)&&isPowerOf2(r);const o=getTextureInternalFormatInfo(n);if(!o)throw\"unknown internal format\";return o.colorRenderable&&o.textureFilterable}\n/**\n * Gets whether or not we can generate mips for the given format\n * @param {number} internalFormat The internalFormat parameter from texImage2D etc..\n * @return {boolean} true if we can generate mips\n * @memberOf module:twgl/textures\n */function canFilter(e){const t=getTextureInternalFormatInfo(e);if(!t)throw\"unknown internal format\";return t.textureFilterable}\n/**\n * Gets the number of components for a given image format.\n * @param {number} format the format.\n * @return {number} the number of components for the format.\n * @memberOf module:twgl/textures\n */function getNumComponentsForFormat(e){const t=kr[e];if(!t)throw\"unknown format: \"+e;return t.numColorComponents}\n/**\n * Gets the texture type for a given array type.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @return {number} the gl texture type\n * @private\n */function getTextureTypeForArrayType(e,t,r){return he(t)?getGLTypeForTypedArray(t):r||ur}function guessDimensions(e,t,r,n,o){if(o%1!==0)throw\"can't guess dimensions\";if(r||n)if(n){if(!r){r=o/n;if(r%1)throw\"can't guess dimensions\"}}else{n=o/r;if(n%1)throw\"can't guess dimensions\"}else{const e=Math.sqrt(o/(t===Ve?6:1));if(e%1===0){r=e;n=e}else{r=o;n=1}}return{width:r,height:n}}\n/**\n * Sets the default texture color.\n *\n * The default texture color is used when loading textures from\n * urls. Because the URL will be loaded async we'd like to be\n * able to use the texture immediately. By putting a 1x1 pixel\n * color in the texture we can start using the texture before\n * the URL has loaded.\n *\n * @param {number[]} color Array of 4 values in the range 0 to 1\n * @deprecated see {@link module:twgl.setDefaults}\n * @memberOf module:twgl/textures\n */function setDefaultTextureColor(e){xe.textureColor=new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}function setDefaults$1(e){copyExistingProperties(e,xe);e.textureColor&&setDefaultTextureColor(e.textureColor)}\n/**\n * A function to generate the source for a texture.\n * @callback TextureFunc\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {module:twgl.TextureOptions} options the texture options\n * @return {*} Returns any of the things documented for `src` for {@link module:twgl.TextureOptions}.\n * @memberOf module:twgl\n */\n/**\n * Texture options passed to most texture functions. Each function will use whatever options\n * are appropriate for its needs. This lets you pass the same options to all functions.\n *\n * Note: A `TexImageSource` is defined in the WebGL spec as a `HTMLImageElement`, `HTMLVideoElement`,\n * `HTMLCanvasElement`, `ImageBitmap`, or `ImageData`.\n *\n * @typedef {Object} TextureOptions\n * @property {number} [target] the type of texture `gl.TEXTURE_2D` or `gl.TEXTURE_CUBE_MAP`. Defaults to `gl.TEXTURE_2D`.\n * @property {number} [level] the mip level to affect. Defaults to 0. Note, if set auto will be considered false unless explicitly set to true.\n * @property {number} [width] the width of the texture. Only used if src is an array or typed array or null.\n * @property {number} [height] the height of a texture. Only used if src is an array or typed array or null.\n * @property {number} [depth] the depth of a texture. Only used if src is an array or type array or null and target is `TEXTURE_3D` .\n * @property {number} [min] the min filter setting (eg. `gl.LINEAR`). Defaults to `gl.NEAREST_MIPMAP_LINEAR`\n *     or if texture is not a power of 2 on both dimensions then defaults to `gl.LINEAR`.\n * @property {number} [mag] the mag filter setting (eg. `gl.LINEAR`). Defaults to `gl.LINEAR`\n * @property {number} [minMag] both the min and mag filter settings.\n * @property {number} [internalFormat] internal format for texture. Defaults to `gl.RGBA`\n * @property {number} [format] format for texture. Defaults to `gl.RGBA`.\n * @property {number} [type] type for texture. Defaults to `gl.UNSIGNED_BYTE` unless `src` is ArrayBufferView. If `src`\n *     is ArrayBufferView defaults to type that matches ArrayBufferView type.\n * @property {number} [wrap] Texture wrapping for both S and T (and R if TEXTURE_3D or WebGLSampler). Defaults to `gl.REPEAT` for 2D unless src is WebGL1 and src not npot and `gl.CLAMP_TO_EDGE` for cube\n * @property {number} [wrapS] Texture wrapping for S. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.\n * @property {number} [wrapT] Texture wrapping for T. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.\n * @property {number} [wrapR] Texture wrapping for R. Defaults to `gl.REPEAT` and `gl.CLAMP_TO_EDGE` for cube. If set takes precedence over `wrap`.\n * @property {number} [minLod] TEXTURE_MIN_LOD setting\n * @property {number} [maxLod] TEXTURE_MAX_LOD setting\n * @property {number} [baseLevel] TEXTURE_BASE_LEVEL setting\n * @property {number} [maxLevel] TEXTURE_MAX_LEVEL setting\n * @property {number} [compareFunc] TEXTURE_COMPARE_FUNC setting\n * @property {number} [compareMode] TEXTURE_COMPARE_MODE setting\n * @property {number} [unpackAlignment] The `gl.UNPACK_ALIGNMENT` used when uploading an array. Defaults to 1.\n * @property {number[]|ArrayBufferView} [color] Color to initialize this texture with if loading an image asynchronously.\n *     The default use a blue 1x1 pixel texture. You can set another default by calling `twgl.setDefaults`\n *     or you can set an individual texture's initial color by setting this property. Example: `[1, .5, .5, 1]` = pink\n * @property {number} [premultiplyAlpha] Whether or not to premultiply alpha. Defaults to whatever the current setting is.\n *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override\n *     the current setting for specific textures.\n * @property {number} [flipY] Whether or not to flip the texture vertically on upload. Defaults to whatever the current setting is.\n *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override\n *     the current setting for specific textures.\n * @property {number} [colorspaceConversion] Whether or not to let the browser do colorspace conversion of the texture on upload. Defaults to whatever the current setting is.\n *     This lets you set it once before calling `twgl.createTexture` or `twgl.createTextures` and only override\n *     the current setting for specific textures.\n * @property {boolean} [auto] If `undefined` or `true`, in WebGL1, texture filtering is set automatically for non-power of 2 images and\n *    mips are generated for power of 2 images. In WebGL2 mips are generated if they can be. Note: if `level` is set above\n *    then then `auto` is assumed to be `false` unless explicity set to `true`.\n * @property {number[]} [cubeFaceOrder] The order that cube faces are pulled out of an img or set of images. The default is\n *\n *     [gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n *      gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n *      gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n *      gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n *      gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n *      gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]\n *\n * @property {(number[]|ArrayBufferView|TexImageSource|TexImageSource[]|string|string[]|module:twgl.TextureFunc)} [src] source for texture\n *\n *    If `string` then it's assumed to be a URL to an image. The image will be downloaded async. A usable\n *    1x1 pixel texture will be returned immediately. The texture will be updated once the image has downloaded.\n *    If `target` is `gl.TEXTURE_CUBE_MAP` will attempt to divide image into 6 square pieces. 1x6, 6x1, 3x2, 2x3.\n *    The pieces will be uploaded in `cubeFaceOrder`\n *\n *    If `string[]` or `TexImageSource[]` and target is `gl.TEXTURE_CUBE_MAP` then it must have 6 entries, one for each face of a cube map.\n *\n *    If `string[]` or `TexImageSource[]` and target is `gl.TEXTURE_2D_ARRAY` then each entry is a slice of the a 2d array texture\n *    and will be scaled to the specified width and height OR to the size of the first image that loads.\n *\n *    If `TexImageSource` then it wil be used immediately to create the contents of the texture. Examples `HTMLImageElement`,\n *    `HTMLCanvasElement`, `HTMLVideoElement`.\n *\n *    If `number[]` or `ArrayBufferView` it's assumed to be data for a texture. If `width` or `height` is\n *    not specified it is guessed as follows. First the number of elements is computed by `src.length / numComponents`\n *    where `numComponents` is derived from `format`. If `target` is `gl.TEXTURE_CUBE_MAP` then `numElements` is divided\n *    by 6. Then\n *\n *    *   If neither `width` nor `height` are specified and `sqrt(numElements)` is an integer then width and height\n *        are set to `sqrt(numElements)`. Otherwise `width = numElements` and `height = 1`.\n *\n *    *   If only one of `width` or `height` is specified then the other equals `numElements / specifiedDimension`.\n *\n * If `number[]` will be converted to `type`.\n *\n * If `src` is a function it will be called with a `WebGLRenderingContext` and these options.\n * Whatever it returns is subject to these rules. So it can return a string url, an `HTMLElement`\n * an array etc...\n *\n * If `src` is undefined then an empty texture will be created of size `width` by `height`.\n *\n * @property {string} [crossOrigin] What to set the crossOrigin property of images when they are downloaded.\n *    default: undefined. Also see {@link module:twgl.setDefaults}.\n *\n * @memberOf module:twgl\n */\n/**\n * Sets any packing state that will be set based on the options.\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @private\n */function setPackState(e,t){t.colorspaceConversion!==void 0&&e.pixelStorei(st,t.colorspaceConversion);t.premultiplyAlpha!==void 0&&e.pixelStorei(at,t.premultiplyAlpha);t.flipY!==void 0&&e.pixelStorei(ct,t.flipY)}\n/**\n * Set skip state to defaults\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @private\n */function setSkipStateToDefault(e){e.pixelStorei(Je,4);if(isWebGL2(e)){e.pixelStorei(et,0);e.pixelStorei(tt,0);e.pixelStorei(rt,0);e.pixelStorei(nt,0);e.pixelStorei(ot,0)}}\n/**\n * Sets the parameters of a texture or sampler\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {number|WebGLSampler} target texture target or sampler\n * @param {function()} parameteriFn texParameteri or samplerParameteri fn\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @private\n */function setTextureSamplerParameters(e,t,r,n){if(n.minMag){r.call(e,t,Ge,n.minMag);r.call(e,t,Ne,n.minMag)}n.min&&r.call(e,t,Ge,n.min);n.mag&&r.call(e,t,Ne,n.mag);if(n.wrap){r.call(e,t,je,n.wrap);r.call(e,t,We,n.wrap);(t===Ue||isSampler(e,t))&&r.call(e,t,Xe,n.wrap)}n.wrapR&&r.call(e,t,Xe,n.wrapR);n.wrapS&&r.call(e,t,je,n.wrapS);n.wrapT&&r.call(e,t,We,n.wrapT);n.minLod!==void 0&&r.call(e,t,Ye,n.minLod);n.maxLod!==void 0&&r.call(e,t,qe,n.maxLod);n.baseLevel!==void 0&&r.call(e,t,He,n.baseLevel);n.maxLevel!==void 0&&r.call(e,t,Qe,n.maxLevel);n.compareFunc!==void 0&&r.call(e,t,Ke,n.compareFunc);n.compareMode!==void 0&&r.call(e,t,Ze,n.compareMode)}\n/**\n * Sets the texture parameters of a texture.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @memberOf module:twgl/textures\n */function setTextureParameters(e,t,r){const n=r.target||_e;e.bindTexture(n,t);setTextureSamplerParameters(e,n,e.texParameteri,r)}\n/**\n * Sets the sampler parameters of a sampler.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLSampler} sampler the WebGLSampler to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @memberOf module:twgl/textures\n */function setSamplerParameters(e,t,r){setTextureSamplerParameters(e,t,e.samplerParameteri,r)}\n/**\n * Creates a new sampler object and sets parameters.\n *\n * Example:\n *\n *      const sampler = twgl.createSampler(gl, {\n *        minMag: gl.NEAREST,         // sets both TEXTURE_MIN_FILTER and TEXTURE_MAG_FILTER\n *        wrap: gl.CLAMP_TO_NEAREST,  // sets both TEXTURE_WRAP_S and TEXTURE_WRAP_T and TEXTURE_WRAP_R\n *      });\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string,module:twgl.TextureOptions>} options A object of TextureOptions one per sampler.\n * @return {Object.<string,WebGLSampler>} the created samplers by name\n * @private\n */function createSampler(e,t){const r=e.createSampler();setSamplerParameters(e,r,t);return r}\n/**\n * Creates a multiple sampler objects and sets parameters on each.\n *\n * Example:\n *\n *      const samplers = twgl.createSamplers(gl, {\n *        nearest: {\n *          minMag: gl.NEAREST,\n *        },\n *        nearestClampS: {\n *          minMag: gl.NEAREST,\n *          wrapS: gl.CLAMP_TO_NEAREST,\n *        },\n *        linear: {\n *          minMag: gl.LINEAR,\n *        },\n *        nearestClamp: {\n *          minMag: gl.NEAREST,\n *          wrap: gl.CLAMP_TO_EDGE,\n *        },\n *        linearClamp: {\n *          minMag: gl.LINEAR,\n *          wrap: gl.CLAMP_TO_EDGE,\n *        },\n *        linearClampT: {\n *          minMag: gl.LINEAR,\n *          wrapT: gl.CLAMP_TO_EDGE,\n *        },\n *      });\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set on the sampler\n * @private\n */function createSamplers(e,t){const r={};Object.keys(t).forEach((function(n){r[n]=createSampler(e,t[n])}));return r}\n/**\n * Makes a 1x1 pixel\n * If no color is passed in uses the default color which can be set by calling `setDefaultTextureColor`.\n * @param {(number[]|ArrayBufferView)} [color] The color using 0-1 values\n * @return {Uint8Array} Unit8Array with color.\n * @private\n */function make1Pixel(e){e=e||xe.textureColor;return he(e)?e:new Uint8Array([e[0]*255,e[1]*255,e[2]*255,e[3]*255])}\n/**\n * Sets filtering or generates mips for texture based on width or height\n * If width or height is not passed in uses `options.width` and//or `options.height`\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @param {number} [width] width of texture\n * @param {number} [height] height of texture\n * @param {number} [internalFormat] The internalFormat parameter from texImage2D etc..\n * @memberOf module:twgl/textures\n */function setTextureFilteringForSize(e,t,r,n,o,s){r=r||xe.textureOptions;s=s||Pe;const a=r.target||_e;n=n||r.width;o=o||r.height;e.bindTexture(a,t);if(canGenerateMipmap(e,n,o,s))e.generateMipmap(a);else{const t=canFilter(s)?ke:Ce;e.texParameteri(a,Ge,t);e.texParameteri(a,Ne,t);e.texParameteri(a,je,Be);e.texParameteri(a,We,Be)}}function shouldAutomaticallySetTextureFilteringForSize(e){return e.auto===true||e.auto===void 0&&e.level===void 0}\n/**\n * Gets an array of cubemap face enums\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @return {number[]} cubemap face enums\n * @private\n */function getCubeFaceOrder(e,t){t=t||{};return t.cubeFaceOrder||[Oe,Me,Re,Le,De,$e]}\n/**\n * @typedef {Object} FaceInfo\n * @property {number} face gl enum for texImage2D\n * @property {number} ndx face index (0 - 5) into source data\n * @ignore\n */\n/**\n * Gets an array of FaceInfos\n * There's a bug in some NVidia drivers that will crash the driver if\n * `gl.TEXTURE_CUBE_MAP_POSITIVE_X` is not uploaded first. So, we take\n * the user's desired order from his faces to WebGL and make sure we\n * do the faces in WebGL order\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @return {FaceInfo[]} cubemap face infos. Arguably the `face` property of each element is redundant but\n *    it's needed internally to sort the array of `ndx` properties by `face`.\n * @private\n */function getCubeFacesWithNdx(e,t){const r=getCubeFaceOrder(e,t);const n=r.map((function(e,t){return{face:e,ndx:t}}));n.sort((function(e,t){return e.face-t.face}));return n}\n/**\n * Set a texture from the contents of an element. Will also set\n * texture filtering or generate mips based on the dimensions of the element\n * unless `options.auto === false`. If `target === gl.TEXTURE_CUBE_MAP` will\n * attempt to slice image into 1x6, 2x3, 3x2, or 6x1 images, one for each face.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {HTMLElement} element a canvas, img, or video element.\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @memberOf module:twgl/textures\n * @kind function\n */function setTextureFromElement(e,t,r,n){n=n||xe.textureOptions;const o=n.target||_e;const s=n.level||0;let a=r.width;let c=r.height;const i=n.internalFormat||n.format||Pe;const u=getFormatAndTypeForInternalFormat(i);const f=n.format||u.format;const l=n.type||u.type;setPackState(e,n);e.bindTexture(o,t);if(o===Ve){const u=r.width;const m=r.height;let y;let d;if(u/6===m){y=m;d=[0,0,1,0,2,0,3,0,4,0,5,0]}else if(m/6===u){y=u;d=[0,0,0,1,0,2,0,3,0,4,0,5]}else if(u/3===m/2){y=u/3;d=[0,0,1,0,2,0,0,1,1,1,2,1]}else{if(u/2!==m/3)throw\"can't figure out cube map from element: \"+(r.src?r.src:r.nodeName);y=u/2;d=[0,0,1,0,0,1,1,1,0,2,1,2]}const p=Fe();if(p){p.canvas.width=y;p.canvas.height=y;a=y;c=y;getCubeFacesWithNdx(e,n).forEach((function(t){const n=d[t.ndx*2+0]*y;const o=d[t.ndx*2+1]*y;p.drawImage(r,n,o,y,y,0,0,y,y);e.texImage2D(t.face,s,i,f,l,p.canvas)}));p.canvas.width=1;p.canvas.height=1}else if(typeof createImageBitmap!==\"undefined\"){a=y;c=y;getCubeFacesWithNdx(e,n).forEach((function(u){const m=d[u.ndx*2+0]*y;const p=d[u.ndx*2+1]*y;e.texImage2D(u.face,s,i,y,y,0,f,l,null);createImageBitmap(r,m,p,y,y,{premultiplyAlpha:\"none\",colorSpaceConversion:\"none\"}).then((function(r){setPackState(e,n);e.bindTexture(o,t);e.texImage2D(u.face,s,i,f,l,r);shouldAutomaticallySetTextureFilteringForSize(n)&&setTextureFilteringForSize(e,t,n,a,c,i)}))}))}}else if(o===Ue||o===ze){const t=Math.min(r.width,r.height);const n=Math.max(r.width,r.height);const a=n/t;if(a%1!==0)throw\"can not compute 3D dimensions of element\";const c=r.width===n?1:0;const u=r.height===n?1:0;e.pixelStorei(Je,1);e.pixelStorei(et,r.width);e.pixelStorei(tt,0);e.pixelStorei(ot,0);e.texImage3D(o,s,i,t,t,t,0,f,l,null);for(let n=0;n<a;++n){const a=n*t*c;const i=n*t*u;e.pixelStorei(rt,a);e.pixelStorei(nt,i);e.texSubImage3D(o,s,0,0,n,t,t,1,f,l,r)}setSkipStateToDefault(e)}else e.texImage2D(o,s,i,f,l,r);shouldAutomaticallySetTextureFilteringForSize(n)&&setTextureFilteringForSize(e,t,n,a,c,i);setTextureParameters(e,t,n)}function noop(){}\n/**\n * Checks whether the url's origin is the same so that we can set the `crossOrigin`\n * @param {string} url url to image\n * @returns {boolean} true if the window's origin is the same as image's url\n * @private\n */function urlIsSameOrigin(e){if(typeof document!==\"undefined\"){const t=document.createElement(\"a\");t.href=e;return t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}{const t=new URL(location.href).origin;const r=new URL(e,location.href).origin;return r===t}}function setToAnonymousIfUndefinedAndURLIsNotSameOrigin(e,t){return t!==void 0||urlIsSameOrigin(e)?t:\"anonymous\"}\n/**\n * Loads an image\n * @param {string} url url to image\n * @param {string} crossOrigin\n * @param {function(err, img)} [callback] a callback that's passed an error and the image. The error will be non-null\n *     if there was an error\n * @return {HTMLImageElement} the image being loaded.\n * @private\n */function loadImage(e,t,r){r=r||noop;let n;t=t!==void 0?t:xe.crossOrigin;t=setToAnonymousIfUndefinedAndURLIsNotSameOrigin(e,t);if(typeof Image!==\"undefined\"){n=new Image;t!==void 0&&(n.crossOrigin=t);const o=function clearEventHandlers(){n.removeEventListener(\"error\",s);n.removeEventListener(\"load\",a);n=null};const s=function onError(){const t=\"couldn't load image: \"+e;error$1(t);r(t,n);o()};const a=function onLoad(){r(null,n);o()};n.addEventListener(\"error\",s);n.addEventListener(\"load\",a);n.src=e;return n}if(typeof ImageBitmap!==\"undefined\"){let o;let s;const a=function cb(){r(o,s)};const c={};t&&(c.mode=\"cors\");fetch(e,c).then((function(e){if(!e.ok)throw e;return e.blob()})).then((function(e){return createImageBitmap(e,{premultiplyAlpha:\"none\",colorSpaceConversion:\"none\"})})).then((function(e){s=e;setTimeout(a)})).catch((function(e){o=e;setTimeout(a)}));n=null}return n}\n/**\n * check if object is a TexImageSource\n *\n * @param {Object} obj Object to test\n * @return {boolean} true if object is a TexImageSource\n * @private\n */function isTexImageSource(e){return typeof ImageBitmap!==\"undefined\"&&e instanceof ImageBitmap||typeof ImageData!==\"undefined\"&&e instanceof ImageData||typeof HTMLElement!==\"undefined\"&&e instanceof HTMLElement}\n/**\n * if obj is an TexImageSource then just\n * uses it otherwise if obj is a string\n * then load it first.\n *\n * @param {string|TexImageSource} obj\n * @param {string} crossOrigin\n * @param {function(err, img)} [callback] a callback that's passed an error and the image. The error will be non-null\n *     if there was an error\n * @private\n */function loadAndUseImage(e,t,r){if(isTexImageSource(e)){setTimeout((function(){r(null,e)}));return e}return loadImage(e,t,r)}\n/**\n * Sets a texture to a 1x1 pixel color. If `options.color === false` is nothing happens. If it's not set\n * the default texture color is used which can be set by calling `setDefaultTextureColor`.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @memberOf module:twgl/textures\n * @private\n */function setTextureTo1PixelColor(e,t,r){r=r||xe.textureOptions;const n=r.target||_e;e.bindTexture(n,t);if(r.color===false)return;const o=make1Pixel(r.color);if(n===Ve)for(let t=0;t<6;++t)e.texImage2D(Oe+t,0,Pe,1,1,0,Pe,ur,o);else n===Ue||n===ze?e.texImage3D(n,0,Pe,1,1,1,0,Pe,ur,o):e.texImage2D(n,0,Pe,1,1,0,Pe,ur,o)}\n/**\n * The src image(s) used to create a texture.\n *\n * When you call {@link module:twgl.createTexture} or {@link module:twgl.createTextures}\n * you can pass in urls for images to load into the textures. If it's a single url\n * then this will be a single HTMLImageElement. If it's an array of urls used for a cubemap\n * this will be a corresponding array of images for the cubemap.\n *\n * @typedef {HTMLImageElement|HTMLImageElement[]} TextureSrc\n * @memberOf module:twgl\n */\n/**\n * A callback for when an image finished downloading and been uploaded into a texture\n * @callback TextureReadyCallback\n * @param {*} err If truthy there was an error.\n * @param {WebGLTexture} texture the texture.\n * @param {module:twgl.TextureSrc} source image(s) used to as the src for the texture\n * @memberOf module:twgl\n */\n/**\n * A callback for when all images have finished downloading and been uploaded into their respective textures\n * @callback TexturesReadyCallback\n * @param {*} err If truthy there was an error.\n * @param {Object.<string, WebGLTexture>} textures the created textures by name. Same as returned by {@link module:twgl.createTextures}.\n * @param {Object.<string, module:twgl.TextureSrc>} sources the image(s) used for the texture by name.\n * @memberOf module:twgl\n */\n/**\n * A callback for when an image finished downloading and been uploaded into a texture\n * @callback CubemapReadyCallback\n * @param {*} err If truthy there was an error.\n * @param {WebGLTexture} tex the texture.\n * @param {HTMLImageElement[]} imgs the images for each face.\n * @memberOf module:twgl\n */\n/**\n * A callback for when an image finished downloading and been uploaded into a texture\n * @callback ThreeDReadyCallback\n * @param {*} err If truthy there was an error.\n * @param {WebGLTexture} tex the texture.\n * @param {HTMLImageElement[]} imgs the images for each slice.\n * @memberOf module:twgl\n */\n/**\n * Loads a texture from an image from a Url as specified in `options.src`\n * If `options.color !== false` will set the texture to a 1x1 pixel color so that the texture is\n * immediately useable. It will be updated with the contents of the image once the image has finished\n * downloading. Filtering options will be set as appropriate for image unless `options.auto === false`.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n * @param {module:twgl.TextureReadyCallback} [callback] A function to be called when the image has finished loading. err will\n *    be non null if there was an error.\n * @return {HTMLImageElement} the image being downloaded.\n * @memberOf module:twgl/textures\n */function loadTextureFromUrl(e,t,r,n){n=n||noop;r=r||xe.textureOptions;setTextureTo1PixelColor(e,t,r);r=Object.assign({},r);const o=loadAndUseImage(r.src,r.crossOrigin,(function(o,s){if(o)n(o,t,s);else{setTextureFromElement(e,t,s,r);n(null,t,s)}}));return o}\n/**\n * Loads a cubemap from 6 urls or TexImageSources as specified in `options.src`. Will set the cubemap to a 1x1 pixel color\n * so that it is usable immediately unless `option.color === false`.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @param {module:twgl.CubemapReadyCallback} [callback] A function to be called when all the images have finished loading. err will\n *    be non null if there was an error.\n * @memberOf module:twgl/textures\n * @private\n */function loadCubemapFromUrls(e,t,r,n){n=n||noop;const o=r.src;if(o.length!==6)throw\"there must be 6 urls for a cubemap\";const s=r.level||0;const a=r.internalFormat||r.format||Pe;const c=getFormatAndTypeForInternalFormat(a);const i=r.format||c.format;const u=r.type||ur;const f=r.target||_e;if(f!==Ve)throw\"target must be TEXTURE_CUBE_MAP\";setTextureTo1PixelColor(e,t,r);r=Object.assign({},r);let l=6;const m=[];const y=getCubeFaceOrder(e,r);let d;function uploadImg(o){return function(c,y){--l;if(c)m.push(c);else if(y.width!==y.height)m.push(\"cubemap face img is not a square: \"+y.src);else{setPackState(e,r);e.bindTexture(f,t);l===5?getCubeFaceOrder().forEach((function(t){e.texImage2D(t,s,a,i,u,y)})):e.texImage2D(o,s,a,i,u,y);shouldAutomaticallySetTextureFilteringForSize(r)&&e.generateMipmap(f)}l===0&&n(m.length?m:void 0,t,d)}}d=o.map((function(e,t){return loadAndUseImage(e,r.crossOrigin,uploadImg(y[t]))}))}\n/**\n * Loads a 2d array or 3d texture from urls OR TexImageSources as specified in `options.src`.\n * Will set the texture to a 1x1 pixel color\n * so that it is usable immediately unless `option.color === false`.\n *\n * If the width and height is not specified the width and height of the first\n * image loaded will be used. Note that since images are loaded async\n * which image downloads first is unknown.\n *\n * If an image is not the same size as the width and height it will be scaled\n * to that width and height.\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @param {module:twgl.ThreeDReadyCallback} [callback] A function to be called when all the images have finished loading. err will\n *    be non null if there was an error.\n * @memberOf module:twgl/textures\n * @private\n */function loadSlicesFromUrls(e,t,r,n){n=n||noop;const o=r.src;const s=r.internalFormat||r.format||Pe;const a=getFormatAndTypeForInternalFormat(s);const c=r.format||a.format;const i=r.type||ur;const u=r.target||ze;if(u!==Ue&&u!==ze)throw\"target must be TEXTURE_3D or TEXTURE_2D_ARRAY\";setTextureTo1PixelColor(e,t,r);r=Object.assign({},r);let f=o.length;const l=[];let m;const y=r.level||0;let d=r.width;let p=r.height;const b=o.length;let g=true;function uploadImg(o){return function(a,A){--f;if(a)l.push(a);else{setPackState(e,r);e.bindTexture(u,t);if(g){g=false;d=r.width||A.width;p=r.height||A.height;e.texImage3D(u,y,s,d,p,b,0,c,i,null);for(let t=0;t<b;++t)e.texSubImage3D(u,y,0,0,t,d,p,1,c,i,A)}else{let t=A;let r;if(A.width!==d||A.height!==p){r=Fe();t=r.canvas;r.canvas.width=d;r.canvas.height=p;r.drawImage(A,0,0,d,p)}e.texSubImage3D(u,y,0,0,o,d,p,1,c,i,t);if(r&&t===r.canvas){r.canvas.width=0;r.canvas.height=0}}shouldAutomaticallySetTextureFilteringForSize(r)&&e.generateMipmap(u)}f===0&&n(l.length?l:void 0,t,m)}}m=o.map((function(e,t){return loadAndUseImage(e,r.crossOrigin,uploadImg(t))}))}\n/**\n * Sets a texture from an array or typed array. If the width or height is not provided will attempt to\n * guess the size. See {@link module:twgl.TextureOptions}.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {(number[]|ArrayBufferView)} src An array or typed arry with texture data.\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n *   This is often the same options you passed in when you created the texture.\n * @memberOf module:twgl/textures\n */function setTextureFromArray(e,t,r,n){n=n||xe.textureOptions;const o=n.target||_e;e.bindTexture(o,t);let s=n.width;let a=n.height;let c=n.depth;const i=n.level||0;const u=n.internalFormat||n.format||Pe;const f=getFormatAndTypeForInternalFormat(u);const l=n.format||f.format;const m=n.type||getTextureTypeForArrayType(e,r,f.type);if(he(r))r instanceof Uint8ClampedArray&&(r=new Uint8Array(r.buffer));else{const e=getTypedArrayTypeForGLType(m);r=new e(r)}const y=getBytesPerElementForInternalFormat(u,m);const d=r.byteLength/y;if(d%1)throw\"length wrong size for format: \"+ge(e,l);let p;if(o===Ue||o===ze)if(s||a||c)if(!s||a&&c)if(!a||s&&c){p=guessDimensions(e,o,s,a,d/c);s=p.width;a=p.height}else{p=guessDimensions(e,o,s,c,d/a);s=p.width;c=p.height}else{p=guessDimensions(e,o,a,c,d/s);a=p.width;c=p.height}else{const e=Math.cbrt(d);if(e%1!==0)throw\"can't guess cube size of array of numElements: \"+d;s=e;a=e;c=e}else{p=guessDimensions(e,o,s,a,d);s=p.width;a=p.height}setSkipStateToDefault(e);e.pixelStorei(Je,n.unpackAlignment||1);setPackState(e,n);if(o===Ve){const t=y/r.BYTES_PER_ELEMENT;const o=d/6*t;getCubeFacesWithNdx(e,n).forEach((t=>{const n=o*t.ndx;const c=r.subarray(n,n+o);e.texImage2D(t.face,i,u,s,a,0,l,m,c)}))}else o===Ue||o===ze?e.texImage3D(o,i,u,s,a,c,0,l,m,r):e.texImage2D(o,i,u,s,a,0,l,m,r);return{width:s,height:a,depth:c,type:m}}\n/**\n * Sets a texture with no contents of a certain size. In other words calls `gl.texImage2D` with `null`.\n * You must set `options.width` and `options.height`.\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the WebGLTexture to set parameters for\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @memberOf module:twgl/textures\n */function setEmptyTexture(e,t,r){const n=r.target||_e;e.bindTexture(n,t);const o=r.level||0;const s=r.internalFormat||r.format||Pe;const a=getFormatAndTypeForInternalFormat(s);const c=r.format||a.format;const i=r.type||a.type;setPackState(e,r);if(n===Ve)for(let t=0;t<6;++t)e.texImage2D(Oe+t,o,s,r.width,r.height,0,c,i,null);else n===Ue||n===ze?e.texImage3D(n,o,s,r.width,r.height,r.depth,0,c,i,null):e.texImage2D(n,o,s,r.width,r.height,0,c,i,null)}\n/**\n * Creates a texture based on the options passed in.\n *\n * Note: may reset UNPACK_ALIGNMENT, UNPACK_ROW_LENGTH, UNPACK_IMAGE_HEIGHT, UNPACK_SKIP_IMAGES\n * UNPACK_SKIP_PIXELS, and UNPACK_SKIP_ROWS\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.TextureOptions} [options] A TextureOptions object with whatever parameters you want set.\n * @param {module:twgl.TextureReadyCallback} [callback] A callback called when an image has been downloaded and uploaded to the texture.\n * @return {WebGLTexture} the created texture.\n * @memberOf module:twgl/textures\n */function createTexture(e,t,r){r=r||noop;t=t||xe.textureOptions;const n=e.createTexture();const o=t.target||_e;let s=t.width||1;let a=t.height||1;const c=t.internalFormat||Pe;e.bindTexture(o,n);if(o===Ve){e.texParameteri(o,je,Be);e.texParameteri(o,We,Be)}let i=t.src;if(i){typeof i===\"function\"&&(i=i(e,t));if(typeof i===\"string\")loadTextureFromUrl(e,n,t,r);else if(he(i)||Array.isArray(i)&&(typeof i[0]===\"number\"||Array.isArray(i[0])||he(i[0]))){const r=setTextureFromArray(e,n,i,t);s=r.width;a=r.height}else if(Array.isArray(i)&&(typeof i[0]===\"string\"||isTexImageSource(i[0])))o===Ve?loadCubemapFromUrls(e,n,t,r):loadSlicesFromUrls(e,n,t,r);else{setTextureFromElement(e,n,i,t);s=i.width;a=i.height}}else setEmptyTexture(e,n,t);shouldAutomaticallySetTextureFilteringForSize(t)&&setTextureFilteringForSize(e,n,t,s,a,c);setTextureParameters(e,n,t);return n}\n/**\n * Resizes a texture based on the options passed in.\n *\n * Note: This is not a generic resize anything function.\n * It's mostly used by {@link module:twgl.resizeFramebufferInfo}\n * It will use `options.src` if it exists to try to determine a `type`\n * otherwise it will assume `gl.UNSIGNED_BYTE`. No data is provided\n * for the texture. Texture parameters will be set accordingly\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {WebGLTexture} tex the texture to resize\n * @param {module:twgl.TextureOptions} options A TextureOptions object with whatever parameters you want set.\n * @param {number} [width] the new width. If not passed in will use `options.width`\n * @param {number} [height] the new height. If not passed in will use `options.height`\n * @param {number} [depth] the new depth. If not passed in will use `options.depth`\n * @memberOf module:twgl/textures\n */function resizeTexture(e,t,r,n,o,s){n=n||r.width;o=o||r.height;s=s||r.depth;const a=r.target||_e;e.bindTexture(a,t);const c=r.level||0;const i=r.internalFormat||r.format||Pe;const u=getFormatAndTypeForInternalFormat(i);const f=r.format||u.format;let l;const m=r.src;l=m&&(he(m)||Array.isArray(m)&&typeof m[0]===\"number\")?r.type||getTextureTypeForArrayType(e,m,u.type):r.type||u.type;if(a===Ve)for(let t=0;t<6;++t)e.texImage2D(Oe+t,c,i,n,o,0,f,l,null);else a===Ue||a===ze?e.texImage3D(a,c,i,n,o,s,0,f,l,null):e.texImage2D(a,c,i,n,o,0,f,l,null)}\n/**\n * Check if a src is an async request.\n * if src is a string we're going to download an image\n * if src is an array of strings we're going to download cubemap images\n * @param {*} src The src from a TextureOptions\n * @returns {bool} true if src is async.\n * @private\n */function isAsyncSrc(e){return typeof e===\"string\"||Array.isArray(e)&&typeof e[0]===\"string\"}\n/**\n * Creates a bunch of textures based on the passed in options.\n *\n * Example:\n *\n *     const textures = twgl.createTextures(gl, {\n *       // a power of 2 image\n *       hftIcon: { src: \"images/hft-icon-16.png\", mag: gl.NEAREST },\n *       // a non-power of 2 image\n *       clover: { src: \"images/clover.jpg\" },\n *       // From a canvas\n *       fromCanvas: { src: ctx.canvas },\n *       // A cubemap from 6 images\n *       yokohama: {\n *         target: gl.TEXTURE_CUBE_MAP,\n *         src: [\n *           'images/yokohama/posx.jpg',\n *           'images/yokohama/negx.jpg',\n *           'images/yokohama/posy.jpg',\n *           'images/yokohama/negy.jpg',\n *           'images/yokohama/posz.jpg',\n *           'images/yokohama/negz.jpg',\n *         ],\n *       },\n *       // A cubemap from 1 image (can be 1x6, 2x3, 3x2, 6x1)\n *       goldengate: {\n *         target: gl.TEXTURE_CUBE_MAP,\n *         src: 'images/goldengate.jpg',\n *       },\n *       // A 2x2 pixel texture from a JavaScript array\n *       checker: {\n *         mag: gl.NEAREST,\n *         min: gl.LINEAR,\n *         src: [\n *           255,255,255,255,\n *           192,192,192,255,\n *           192,192,192,255,\n *           255,255,255,255,\n *         ],\n *       },\n *       // a 1x2 pixel texture from a typed array.\n *       stripe: {\n *         mag: gl.NEAREST,\n *         min: gl.LINEAR,\n *         format: gl.LUMINANCE,\n *         src: new Uint8Array([\n *           255,\n *           128,\n *           255,\n *           128,\n *           255,\n *           128,\n *           255,\n *           128,\n *         ]),\n *         width: 1,\n *       },\n *     });\n *\n * Now\n *\n * *   `textures.hftIcon` will be a 2d texture\n * *   `textures.clover` will be a 2d texture\n * *   `textures.fromCanvas` will be a 2d texture\n * *   `textures.yohohama` will be a cubemap texture\n * *   `textures.goldengate` will be a cubemap texture\n * *   `textures.checker` will be a 2d texture\n * *   `textures.stripe` will be a 2d texture\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string,module:twgl.TextureOptions>} options A object of TextureOptions one per texture.\n * @param {module:twgl.TexturesReadyCallback} [callback] A callback called when all textures have been downloaded.\n * @return {Object.<string,WebGLTexture>} the created textures by name\n * @memberOf module:twgl/textures\n */function createTextures(e,t,r){r=r||noop;let n=0;const o=[];const s={};const a={};function callCallbackIfReady(){n===0&&setTimeout((function(){r(o.length?o:void 0,s,a)}),0)}Object.keys(t).forEach((function(r){const c=t[r];let i;if(isAsyncSrc(c.src)){i=function(e,t,s){a[r]=s;--n;e&&o.push(e);callCallbackIfReady()};++n}s[r]=createTexture(e,c,i)}));callCallbackIfReady();return s}var Vr=Object.freeze({__proto__:null,setTextureDefaults_:setDefaults$1,createSampler:createSampler,createSamplers:createSamplers,setSamplerParameters:setSamplerParameters,createTexture:createTexture,setEmptyTexture:setEmptyTexture,setTextureFromArray:setTextureFromArray,loadTextureFromUrl:loadTextureFromUrl,setTextureFromElement:setTextureFromElement,setTextureFilteringForSize:setTextureFilteringForSize,setTextureParameters:setTextureParameters,setDefaultTextureColor:setDefaultTextureColor,createTextures:createTextures,resizeTexture:resizeTexture,canGenerateMipmap:canGenerateMipmap,canFilter:canFilter,getNumComponentsForFormat:getNumComponentsForFormat,getBytesPerElementForInternalFormat:getBytesPerElementForInternalFormat,getFormatAndTypeForInternalFormat:getFormatAndTypeForInternalFormat});const Ur=error$1;const zr=warn$1;function getElementById(e){return typeof document!==\"undefined\"&&document.getElementById?document.getElementById(e):null}const Or=33984;const Mr=35048;const Rr=34962;const Lr=34963;const Dr=35345;const $r=35982;const Gr=36386;const Nr=35713;const jr=35714;const Wr=35632;const Xr=35633;const Yr=35981;const qr=35718;const Hr=35721;const Qr=35971;const Zr=35382;const Kr=35396;const Jr=35398;const en=35392;const tn=35395;const rn=5126;const nn=35664;const on=35665;const sn=35666;const an=5124;const cn=35667;const un=35668;const fn=35669;const ln=35670;const mn=35671;const yn=35672;const dn=35673;const pn=35674;const bn=35675;const gn=35676;const An=35678;const xn=35680;const hn=35679;const Fn=35682;const Tn=35685;const Sn=35686;const Pn=35687;const En=35688;const wn=35689;const In=35690;const vn=36289;const Bn=36292;const Cn=36293;const kn=5125;const _n=36294;const Vn=36295;const Un=36296;const zn=36298;const On=36299;const Mn=36300;const Rn=36303;const Ln=36306;const Dn=36307;const $n=36308;const Gn=36311;const Nn=3553;const jn=34067;const Wn=32879;const Xn=35866;const Yn={};function getBindPointForSamplerType(e,t){return Yn[t].bindPoint}function floatSetter(e,t){return function(r){e.uniform1f(t,r)}}function floatArraySetter(e,t){return function(r){e.uniform1fv(t,r)}}function floatVec2Setter(e,t){return function(r){e.uniform2fv(t,r)}}function floatVec3Setter(e,t){return function(r){e.uniform3fv(t,r)}}function floatVec4Setter(e,t){return function(r){e.uniform4fv(t,r)}}function intSetter(e,t){return function(r){e.uniform1i(t,r)}}function intArraySetter(e,t){return function(r){e.uniform1iv(t,r)}}function intVec2Setter(e,t){return function(r){e.uniform2iv(t,r)}}function intVec3Setter(e,t){return function(r){e.uniform3iv(t,r)}}function intVec4Setter(e,t){return function(r){e.uniform4iv(t,r)}}function uintSetter(e,t){return function(r){e.uniform1ui(t,r)}}function uintArraySetter(e,t){return function(r){e.uniform1uiv(t,r)}}function uintVec2Setter(e,t){return function(r){e.uniform2uiv(t,r)}}function uintVec3Setter(e,t){return function(r){e.uniform3uiv(t,r)}}function uintVec4Setter(e,t){return function(r){e.uniform4uiv(t,r)}}function floatMat2Setter(e,t){return function(r){e.uniformMatrix2fv(t,false,r)}}function floatMat3Setter(e,t){return function(r){e.uniformMatrix3fv(t,false,r)}}function floatMat4Setter(e,t){return function(r){e.uniformMatrix4fv(t,false,r)}}function floatMat23Setter(e,t){return function(r){e.uniformMatrix2x3fv(t,false,r)}}function floatMat32Setter(e,t){return function(r){e.uniformMatrix3x2fv(t,false,r)}}function floatMat24Setter(e,t){return function(r){e.uniformMatrix2x4fv(t,false,r)}}function floatMat42Setter(e,t){return function(r){e.uniformMatrix4x2fv(t,false,r)}}function floatMat34Setter(e,t){return function(r){e.uniformMatrix3x4fv(t,false,r)}}function floatMat43Setter(e,t){return function(r){e.uniformMatrix4x3fv(t,false,r)}}function samplerSetter(e,t,r,n){const o=getBindPointForSamplerType(e,t);return isWebGL2(e)?function(t){let s;let a;if(!t||isTexture(e,t)){s=t;a=null}else{s=t.texture;a=t.sampler}e.uniform1i(n,r);e.activeTexture(Or+r);e.bindTexture(o,s);e.bindSampler(r,a)}:function(t){e.uniform1i(n,r);e.activeTexture(Or+r);e.bindTexture(o,t)}}function samplerArraySetter(e,t,r,n,o){const s=getBindPointForSamplerType(e,t);const a=new Int32Array(o);for(let e=0;e<o;++e)a[e]=r+e;return isWebGL2(e)?function(t){e.uniform1iv(n,a);t.forEach((function(t,n){e.activeTexture(Or+a[n]);let o;let c;if(!t||isTexture(e,t)){o=t;c=null}else{o=t.texture;c=t.sampler}e.bindSampler(r,c);e.bindTexture(s,o)}))}:function(t){e.uniform1iv(n,a);t.forEach((function(t,r){e.activeTexture(Or+a[r]);e.bindTexture(s,t)}))}}Yn[rn]={Type:Float32Array,size:4,setter:floatSetter,arraySetter:floatArraySetter};Yn[nn]={Type:Float32Array,size:8,setter:floatVec2Setter,cols:2};Yn[on]={Type:Float32Array,size:12,setter:floatVec3Setter,cols:3};Yn[sn]={Type:Float32Array,size:16,setter:floatVec4Setter,cols:4};Yn[an]={Type:Int32Array,size:4,setter:intSetter,arraySetter:intArraySetter};Yn[cn]={Type:Int32Array,size:8,setter:intVec2Setter,cols:2};Yn[un]={Type:Int32Array,size:12,setter:intVec3Setter,cols:3};Yn[fn]={Type:Int32Array,size:16,setter:intVec4Setter,cols:4};Yn[kn]={Type:Uint32Array,size:4,setter:uintSetter,arraySetter:uintArraySetter};Yn[_n]={Type:Uint32Array,size:8,setter:uintVec2Setter,cols:2};Yn[Vn]={Type:Uint32Array,size:12,setter:uintVec3Setter,cols:3};Yn[Un]={Type:Uint32Array,size:16,setter:uintVec4Setter,cols:4};Yn[ln]={Type:Uint32Array,size:4,setter:intSetter,arraySetter:intArraySetter};Yn[mn]={Type:Uint32Array,size:8,setter:intVec2Setter,cols:2};Yn[yn]={Type:Uint32Array,size:12,setter:intVec3Setter,cols:3};Yn[dn]={Type:Uint32Array,size:16,setter:intVec4Setter,cols:4};Yn[pn]={Type:Float32Array,size:32,setter:floatMat2Setter,rows:2,cols:2};Yn[bn]={Type:Float32Array,size:48,setter:floatMat3Setter,rows:3,cols:3};Yn[gn]={Type:Float32Array,size:64,setter:floatMat4Setter,rows:4,cols:4};Yn[Tn]={Type:Float32Array,size:32,setter:floatMat23Setter,rows:2,cols:3};Yn[Sn]={Type:Float32Array,size:32,setter:floatMat24Setter,rows:2,cols:4};Yn[Pn]={Type:Float32Array,size:48,setter:floatMat32Setter,rows:3,cols:2};Yn[En]={Type:Float32Array,size:48,setter:floatMat34Setter,rows:3,cols:4};Yn[wn]={Type:Float32Array,size:64,setter:floatMat42Setter,rows:4,cols:2};Yn[In]={Type:Float32Array,size:64,setter:floatMat43Setter,rows:4,cols:3};Yn[An]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Nn};Yn[xn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:jn};Yn[hn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Wn};Yn[Fn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Nn};Yn[vn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Xn};Yn[Bn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Xn};Yn[Cn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:jn};Yn[zn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Nn};Yn[On]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Wn};Yn[Mn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:jn};Yn[Rn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Xn};Yn[Ln]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Nn};Yn[Dn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Wn};Yn[$n]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:jn};Yn[Gn]={Type:null,size:0,setter:samplerSetter,arraySetter:samplerArraySetter,bindPoint:Xn};function floatAttribSetter(e,t){return function(r){if(r.value){e.disableVertexAttribArray(t);switch(r.value.length){case 4:e.vertexAttrib4fv(t,r.value);break;case 3:e.vertexAttrib3fv(t,r.value);break;case 2:e.vertexAttrib2fv(t,r.value);break;case 1:e.vertexAttrib1fv(t,r.value);break;default:throw new Error(\"the length of a float constant value must be between 1 and 4!\")}}else{e.bindBuffer(Rr,r.buffer);e.enableVertexAttribArray(t);e.vertexAttribPointer(t,r.numComponents||r.size,r.type||rn,r.normalize||false,r.stride||0,r.offset||0);e.vertexAttribDivisor&&e.vertexAttribDivisor(t,r.divisor||0)}}}function intAttribSetter(e,t){return function(r){if(r.value){e.disableVertexAttribArray(t);if(r.value.length!==4)throw new Error(\"The length of an integer constant value must be 4!\");e.vertexAttrib4iv(t,r.value)}else{e.bindBuffer(Rr,r.buffer);e.enableVertexAttribArray(t);e.vertexAttribIPointer(t,r.numComponents||r.size,r.type||an,r.stride||0,r.offset||0);e.vertexAttribDivisor&&e.vertexAttribDivisor(t,r.divisor||0)}}}function uintAttribSetter(e,t){return function(r){if(r.value){e.disableVertexAttribArray(t);if(r.value.length!==4)throw new Error(\"The length of an unsigned integer constant value must be 4!\");e.vertexAttrib4uiv(t,r.value)}else{e.bindBuffer(Rr,r.buffer);e.enableVertexAttribArray(t);e.vertexAttribIPointer(t,r.numComponents||r.size,r.type||kn,r.stride||0,r.offset||0);e.vertexAttribDivisor&&e.vertexAttribDivisor(t,r.divisor||0)}}}function matAttribSetter(e,t,r){const n=r.size;const o=r.count;return function(r){e.bindBuffer(Rr,r.buffer);const s=r.size||r.numComponents||n;const a=s/o;const c=r.type||rn;const i=Yn[c];const u=i.size*s;const f=r.normalize||false;const l=r.offset||0;const m=u/o;for(let n=0;n<o;++n){e.enableVertexAttribArray(t+n);e.vertexAttribPointer(t+n,a,c,f,u,l+m*n);e.vertexAttribDivisor&&e.vertexAttribDivisor(t+n,r.divisor||0)}}}const qn={};qn[rn]={size:4,setter:floatAttribSetter};qn[nn]={size:8,setter:floatAttribSetter};qn[on]={size:12,setter:floatAttribSetter};qn[sn]={size:16,setter:floatAttribSetter};qn[an]={size:4,setter:intAttribSetter};qn[cn]={size:8,setter:intAttribSetter};qn[un]={size:12,setter:intAttribSetter};qn[fn]={size:16,setter:intAttribSetter};qn[kn]={size:4,setter:uintAttribSetter};qn[_n]={size:8,setter:uintAttribSetter};qn[Vn]={size:12,setter:uintAttribSetter};qn[Un]={size:16,setter:uintAttribSetter};qn[ln]={size:4,setter:intAttribSetter};qn[mn]={size:8,setter:intAttribSetter};qn[yn]={size:12,setter:intAttribSetter};qn[dn]={size:16,setter:intAttribSetter};qn[pn]={size:4,setter:matAttribSetter,count:2};qn[bn]={size:9,setter:matAttribSetter,count:3};qn[gn]={size:16,setter:matAttribSetter,count:4};const Hn=/ERROR:\\s*\\d+:(\\d+)/gi;function addLineNumbersWithError(e,t=\"\",r=0){const n=[...t.matchAll(Hn)];const o=new Map(n.map(((e,r)=>{const o=parseInt(e[1]);const s=n[r+1];const a=s?s.index:t.length;const c=t.substring(e.index,a);return[o-1,c]})));return e.split(\"\\n\").map(((e,t)=>{const n=o.get(t);return`${t+1+r}: ${e}${n?`\\n\\n^^^ ${n}`:\"\"}`})).join(\"\\n\")}\n/**\n * Error Callback\n * @callback ErrorCallback\n * @param {string} msg error message.\n * @param {number} [lineOffset] amount to add to line number\n * @memberOf module:twgl\n */\n/**\n * Program Callback\n * @callback ProgramCallback\n * @param {string} [err] error message, falsy if no error\n * @param {WebGLProgram|module:twgl.ProgramInfo} [result] the program or programInfo\n */const Qn=/^[ \\t]*\\n/;\n/**\n * Remove the first end of line because WebGL 2.0 requires\n * #version 300 es\n * as the first line. No whitespace allowed before that line\n * so\n *\n * <script>\n * #version 300 es\n * <\\/script>\n *\n * Has one line before it which is invalid according to GLSL ES 3.00\n *\n * @param {string} shaderSource The source of the shader\n * @returns {{shaderSource: string, lineOffset: number}}\n * @private\n */function prepShaderSource(e){let t=0;if(Qn.test(e)){t=1;e=e.replace(Qn,\"\")}return{lineOffset:t,shaderSource:e}}\n/**\n * @param {module:twgl.ProgramOptions} progOptions\n * @param {string} msg\n * @return null\n * @private\n */function reportError(e,t){e.errorCallback(t);e.callback&&setTimeout((()=>{e.callback(`${t}\\n${e.errors.join(\"\\n\")}`)}));return null}\n/**\n * Check Shader status\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {number} shaderType The shader type\n * @param {WebGLShader} shader The shader\n * @param {ErrorCallback} [errFn] function to receive error message.\n * @return {string} errors or empty string\n * @private\n */function checkShaderStatus(e,t,r,n){n=n||Ur;const o=e.getShaderParameter(r,Nr);if(!o){const o=e.getShaderInfoLog(r);const{lineOffset:s,shaderSource:a}=prepShaderSource(e.getShaderSource(r));const c=`${addLineNumbersWithError(a,o,s)}\\nError compiling ${ge(e,t)}: ${o}`;n(c);return c}return\"\"}\n/**\n * @typedef {Object} FullProgramSpec\n * @property {string[]} shaders the shader source or element ids.\n * @property {function(string)} [errorCallback] callback for errors\n * @property {Object.<string,number>|string[]} [attribLocations] a attribute name to location map, or array of attribute names where index = location.\n * @property {(module:twgl.BufferInfo|Object.<string,module:twgl.AttribInfo>|string[])} [transformFeedbackVaryings] If passed\n *   a BufferInfo will use the attribs names inside. If passed an object of AttribInfos will use the names from that object. Otherwise\n *   you can pass an array of names.\n * @property {number} [transformFeedbackMode] the mode to pass `gl.transformFeedbackVaryings`. Defaults to `SEPARATE_ATTRIBS`.\n * @property {ProgramCallback} [callback] callback for async program compilation.\n * @memberOf module:twgl\n */\n/**\n * @typedef {string[]|module:twgl.FullProgramSpec} ProgramSpec\n * @memberOf module:twgl\n */\n/**\n * @typedef {Object} ProgramOptions\n * @property {function(string)} [errorCallback] callback for errors\n * @property {Object.<string,number>|string[]} [attribLocations] a attribute name to location map, or array of attribute names where index = location.\n * @property {(module:twgl.BufferInfo|Object.<string,module:twgl.AttribInfo>|string[])} [transformFeedbackVaryings] If passed\n *   a BufferInfo will use the attribs names inside. If passed an object of AttribInfos will use the names from that object. Otherwise\n *   you can pass an array of names.\n * @property {number} [transformFeedbackMode] the mode to pass `gl.transformFeedbackVaryings`. Defaults to `SEPARATE_ATTRIBS`.\n * @property {ProgramCallback} [callback] callback for async program compilation.\n * @memberOf module:twgl\n */\n/**\n * Gets the program options based on all these optional arguments\n * @param {module:twgl.ProgramOptions|string[]} [opt_attribs] Options for the program or an array of attribs names. Locations will be assigned by index if not passed in\n * @param {number[]} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {module:twgl.ProgramOptions} an instance of ProgramOptions based on the arguments passed in\n * @private\n */function getProgramOptions(e,t,r){let n;let o;let s;if(typeof t===\"function\"){r=t;t=void 0}if(typeof e===\"function\"){r=e;e=void 0}else if(e&&!Array.isArray(e)){const t=e;r=t.errorCallback;e=t.attribLocations;n=t.transformFeedbackVaryings;o=t.transformFeedbackMode;s=t.callback}const a=r||Ur;const c=[];const i={errorCallback(e,...t){c.push(e);a(e,...t)},transformFeedbackVaryings:n,transformFeedbackMode:o,callback:s,errors:c};{let r={};Array.isArray(e)?e.forEach((function(e,n){r[e]=t?t[n]:n})):r=e||{};i.attribLocations=r}return i}const Zn=[\"VERTEX_SHADER\",\"FRAGMENT_SHADER\"];function getShaderTypeFromScriptType(e,t){return t.indexOf(\"frag\")>=0?Wr:t.indexOf(\"vert\")>=0?Xr:void 0}function deleteProgramAndShaders(e,t,r){const n=e.getAttachedShaders(t);for(const t of n)r.has(t)&&e.deleteShader(t);e.deleteProgram(t)}const wait=(e=0)=>new Promise((t=>setTimeout(t,e)));function createProgramNoCheck(e,t,r){const n=e.createProgram();const{attribLocations:o,transformFeedbackVaryings:s,transformFeedbackMode:a}=getProgramOptions(r);for(let r=0;r<t.length;++r){let o=t[r];if(typeof o===\"string\"){const t=getElementById(o);const s=t?t.text:o;let a=e[Zn[r]];t&&t.type&&(a=getShaderTypeFromScriptType(e,t.type)||a);o=e.createShader(a);e.shaderSource(o,prepShaderSource(s).shaderSource);e.compileShader(o);e.attachShader(n,o)}}Object.entries(o).forEach((([t,r])=>e.bindAttribLocation(n,r,t)));{let t=s;if(t){t.attribs&&(t=t.attribs);Array.isArray(t)||(t=Object.keys(t));e.transformFeedbackVaryings(n,t,a||Yr)}}e.linkProgram(n);return n}\n/**\n * Creates a program, attaches (and/or compiles) shaders, binds attrib locations, links the\n * program.\n *\n * NOTE: There are 4 signatures for this function\n *\n *     twgl.createProgram(gl, [vs, fs], options);\n *     twgl.createProgram(gl, [vs, fs], opt_errFunc);\n *     twgl.createProgram(gl, [vs, fs], opt_attribs, opt_errFunc);\n *     twgl.createProgram(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLShader[]|string[]} shaders The shaders to attach, or element ids for their source, or strings that contain their source\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {WebGLProgram?} the created program or null if error of a callback was provided.\n * @memberOf module:twgl/programs\n */function createProgram(e,t,r,n,o){const s=getProgramOptions(r,n,o);const a=new Set(t);const c=createProgramNoCheck(e,t,s);function hasErrors(e,t){const r=getProgramErrors(e,t,s.errorCallback);r&&deleteProgramAndShaders(e,t,a);return r}if(!s.callback)return hasErrors(e,c)?void 0:c;waitForProgramLinkCompletionAsync(e,c).then((()=>{const t=hasErrors(e,c);s.callback(t,t?void 0:c)}))}function wrapCallbackFnToAsyncFn(e){return function(t,r,...n){return new Promise(((o,s)=>{const a=getProgramOptions(...n);a.callback=(e,t)=>{e?s(e):o(t)};e(t,r,a)}))}}\n/**\n * Same as createProgram but returns a promise\n *\n * NOTE: There are 4 signatures for this function\n *\n *     twgl.createProgramAsync(gl, [vs, fs], options);\n *     twgl.createProgramAsync(gl, [vs, fs], opt_errFunc);\n *     twgl.createProgramAsync(gl, [vs, fs], opt_attribs, opt_errFunc);\n *     twgl.createProgramAsync(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);\n *\n * @function\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLShader[]|string[]} shaders The shaders to attach, or element ids for their source, or strings that contain their source\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {Promise<WebGLProgram>} The created program\n * @memberOf module:twgl/programs\n */const Kn=wrapCallbackFnToAsyncFn(createProgram);\n/**\n * Same as createProgramInfo but returns a promise\n * @function\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {string[]} shaderSources Array of sources for the\n *        shaders or ids. The first is assumed to be the vertex shader,\n *        the second the fragment shader.\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {Promise<module:twgl.ProgramInfo>} The created ProgramInfo\n * @memberOf module:twgl/programs\n */const Jn=wrapCallbackFnToAsyncFn(createProgramInfo);async function waitForProgramLinkCompletionAsync(e,t){const r=e.getExtension(\"KHR_parallel_shader_compile\");const n=r?(e,t)=>e.getProgramParameter(t,r.COMPLETION_STATUS_KHR):()=>true;let o=0;do{await wait(o);o=1e3/60}while(!n(e,t))}async function waitForAllProgramsLinkCompletionAsync(e,t){for(const r of Object.values(t))await waitForProgramLinkCompletionAsync(e,r)}\n/**\n * Check a program's link status\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLProgram} program Program to check\n * @param {ErrorCallback} [errFn] func for errors\n * @return {string?} errors if program is failed, else undefined\n * @private\n */function getProgramErrors(e,t,r){r=r||Ur;const n=e.getProgramParameter(t,jr);if(!n){const n=e.getProgramInfoLog(t);r(`Error in program linking: ${n}`);const o=e.getAttachedShaders(t);const s=o.map((t=>checkShaderStatus(e,e.getShaderParameter(t,e.SHADER_TYPE),t,r)));return`${n}\\n${s.filter((e=>e)).join(\"\\n\")}`}}\n/**\n * Creates a program from 2 script tags.\n *\n * NOTE: There are 4 signatures for this function\n *\n *     twgl.createProgramFromScripts(gl, [vs, fs], opt_options);\n *     twgl.createProgramFromScripts(gl, [vs, fs], opt_errFunc);\n *     twgl.createProgramFromScripts(gl, [vs, fs], opt_attribs, opt_errFunc);\n *     twgl.createProgramFromScripts(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {string[]} shaderScriptIds Array of ids of the script\n *        tags for the shaders. The first is assumed to be the\n *        vertex shader, the second the fragment shader.\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {WebGLProgram?} the created program or null if error or a callback was provided.\n * @memberOf module:twgl/programs\n */function createProgramFromScripts(e,t,r,n,o){const s=getProgramOptions(r,n,o);const a=[];for(const e of t){const t=getElementById(e);if(!t)return reportError(s,`unknown script element: ${e}`);a.push(t.text)}return createProgram(e,a,s)}\n/**\n * Creates a program from 2 sources.\n *\n * NOTE: There are 4 signatures for this function\n *\n *     twgl.createProgramFromSource(gl, [vs, fs], opt_options);\n *     twgl.createProgramFromSource(gl, [vs, fs], opt_errFunc);\n *     twgl.createProgramFromSource(gl, [vs, fs], opt_attribs, opt_errFunc);\n *     twgl.createProgramFromSource(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {string[]} shaderSources Array of sources for the\n *        shaders. The first is assumed to be the vertex shader,\n *        the second the fragment shader.\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {WebGLProgram?} the created program or null if error or a callback was provided.\n * @memberOf module:twgl/programs\n */function createProgramFromSources(e,t,r,n,o){return createProgram(e,t,r,n,o)}\n/**\n * Returns true if attribute/uniform is a reserved/built in\n *\n * It makes no sense to me why GL returns these because it's\n * illegal to call `gl.getUniformLocation` and `gl.getAttribLocation`\n * with names that start with `gl_` (and `webgl_` in WebGL)\n *\n * I can only assume they are there because they might count\n * when computing the number of uniforms/attributes used when you want to\n * know if you are near the limit. That doesn't really make sense\n * to me but the fact that these get returned are in the spec.\n *\n * @param {WebGLActiveInfo} info As returned from `gl.getActiveUniform` or\n *    `gl.getActiveAttrib`.\n * @return {bool} true if it's reserved\n * @private\n */function isBuiltIn(e){const t=e.name;return t.startsWith(\"gl_\")||t.startsWith(\"webgl_\")}const eo=/(\\.|\\[|]|\\w+)/g;const isDigit=e=>e>=\"0\"&&e<=\"9\";function addSetterToUniformTree(e,t,r,n){const o=e.split(eo).filter((e=>e!==\"\"));let s=0;let a=\"\";for(;;){const e=o[s++];a+=e;const c=isDigit(e[0]);const i=c?parseInt(e):e;c&&(a+=o[s++]);const u=s===o.length;if(u){r[i]=t;break}{const e=o[s++];const t=e===\"[\";const c=r[i]||(t?[]:{});r[i]=c;r=c;n[a]=n[a]||function(e){return function(t){setUniformTree(e,t)}}(c);a+=e}}}\n/**\n * Creates setter functions for all uniforms of a shader\n * program.\n *\n * @see {@link module:twgl.setUniforms}\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLProgram} program the program to create setters for.\n * @returns {Object.<string, function>} an object with a setter by name for each uniform\n * @memberOf module:twgl/programs\n */function createUniformSetters(e,t){let r=0;\n/**\n   * Creates a setter for a uniform of the given program with it's\n   * location embedded in the setter.\n   * @param {WebGLProgram} program\n   * @param {WebGLUniformInfo} uniformInfo\n   * @returns {function} the created setter.\n   */function createUniformSetter(t,n,o){const s=n.name.endsWith(\"[0]\");const a=n.type;const c=Yn[a];if(!c)throw new Error(`unknown type: 0x${a.toString(16)}`);let i;if(c.bindPoint){const t=r;r+=n.size;i=s?c.arraySetter(e,a,t,o,n.size):c.setter(e,a,t,o,n.size)}else i=c.arraySetter&&s?c.arraySetter(e,o):c.setter(e,o);i.location=o;return i}const n={};const o={};const s=e.getProgramParameter(t,qr);for(let r=0;r<s;++r){const s=e.getActiveUniform(t,r);if(isBuiltIn(s))continue;let a=s.name;a.endsWith(\"[0]\")&&(a=a.substr(0,a.length-3));const c=e.getUniformLocation(t,s.name);if(c){const e=createUniformSetter(t,s,c);n[a]=e;addSetterToUniformTree(a,e,o,n)}}return n}\n/**\n * @typedef {Object} TransformFeedbackInfo\n * @property {number} index index of transform feedback\n * @property {number} type GL type\n * @property {number} size 1 - 4\n * @memberOf module:twgl\n */\n/**\n * Create TransformFeedbackInfo for passing to bindTransformFeedbackInfo.\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLProgram} program an existing WebGLProgram.\n * @return {Object<string, module:twgl.TransformFeedbackInfo>}\n * @memberOf module:twgl\n */function createTransformFeedbackInfo(e,t){const r={};const n=e.getProgramParameter(t,Qr);for(let o=0;o<n;++o){const n=e.getTransformFeedbackVarying(t,o);r[n.name]={index:o,type:n.type,size:n.size}}return r}\n/**\n * Binds buffers for transform feedback.\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {(module:twgl.ProgramInfo|Object<string, module:twgl.TransformFeedbackInfo>)} transformFeedbackInfo A ProgramInfo or TransformFeedbackInfo.\n * @param {(module:twgl.BufferInfo|Object<string, module:twgl.AttribInfo>)} [bufferInfo] A BufferInfo or set of AttribInfos.\n * @memberOf module:twgl\n */function bindTransformFeedbackInfo(e,t,r){t.transformFeedbackInfo&&(t=t.transformFeedbackInfo);r.attribs&&(r=r.attribs);for(const n in r){const o=t[n];if(o){const t=r[n];t.offset?e.bindBufferRange($r,o.index,t.buffer,t.offset,t.size):e.bindBufferBase($r,o.index,t.buffer)}}}\n/**\n * Creates a transform feedback and sets the buffers\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {module:twgl.ProgramInfo} programInfo A ProgramInfo as returned from {@link module:twgl.createProgramInfo}\n * @param {(module:twgl.BufferInfo|Object<string, module:twgl.AttribInfo>)} [bufferInfo] A BufferInfo or set of AttribInfos.\n * @return {WebGLTransformFeedback} the created transform feedback\n * @memberOf module:twgl\n */function createTransformFeedback(e,t,r){const n=e.createTransformFeedback();e.bindTransformFeedback(Gr,n);e.useProgram(t.program);bindTransformFeedbackInfo(e,t,r);e.bindTransformFeedback(Gr,null);return n}\n/**\n * @typedef {Object} UniformData\n * @property {string} name The name of the uniform\n * @property {number} type The WebGL type enum for this uniform\n * @property {number} size The number of elements for this uniform\n * @property {number} blockNdx The block index this uniform appears in\n * @property {number} offset The byte offset in the block for this uniform's value\n * @memberOf module:twgl\n */\n/**\n * The specification for one UniformBlockObject\n *\n * @typedef {Object} BlockSpec\n * @property {number} index The index of the block.\n * @property {number} size The size in bytes needed for the block\n * @property {number[]} uniformIndices The indices of the uniforms used by the block. These indices\n *    correspond to entries in a UniformData array in the {@link module:twgl.UniformBlockSpec}.\n * @property {bool} usedByVertexShader Self explanatory\n * @property {bool} usedByFragmentShader Self explanatory\n * @property {bool} used Self explanatory\n * @memberOf module:twgl\n */\n/**\n * A `UniformBlockSpec` represents the data needed to create and bind\n * UniformBlockObjects for a given program\n *\n * @typedef {Object} UniformBlockSpec\n * @property {Object.<string, module:twgl.BlockSpec>} blockSpecs The BlockSpec for each block by block name\n * @property {UniformData[]} uniformData An array of data for each uniform by uniform index.\n * @memberOf module:twgl\n */\n/**\n * Creates a UniformBlockSpec for the given program.\n *\n * A UniformBlockSpec represents the data needed to create and bind\n * UniformBlockObjects\n *\n * @param {WebGL2RenderingContext} gl A WebGL2 Rendering Context\n * @param {WebGLProgram} program A WebGLProgram for a successfully linked program\n * @return {module:twgl.UniformBlockSpec} The created UniformBlockSpec\n * @memberOf module:twgl/programs\n */function createUniformBlockSpecFromProgram(e,t){const r=e.getProgramParameter(t,qr);const n=[];const o=[];for(let s=0;s<r;++s){o.push(s);n.push({});const r=e.getActiveUniform(t,s);n[s].name=r.name}[[\"UNIFORM_TYPE\",\"type\"],[\"UNIFORM_SIZE\",\"size\"],[\"UNIFORM_BLOCK_INDEX\",\"blockNdx\"],[\"UNIFORM_OFFSET\",\"offset\"]].forEach((function(r){const s=r[0];const a=r[1];e.getActiveUniforms(t,o,e[s]).forEach((function(e,t){n[t][a]=e}))}));const s={};const a=e.getProgramParameter(t,Zr);for(let r=0;r<a;++r){const n=e.getActiveUniformBlockName(t,r);const o={index:e.getUniformBlockIndex(t,n),usedByVertexShader:e.getActiveUniformBlockParameter(t,r,Kr),usedByFragmentShader:e.getActiveUniformBlockParameter(t,r,Jr),size:e.getActiveUniformBlockParameter(t,r,en),uniformIndices:e.getActiveUniformBlockParameter(t,r,tn)};o.used=o.usedByVertexShader||o.usedByFragmentShader;s[n]=o}return{blockSpecs:s,uniformData:n}}const to=/\\[\\d+\\]\\.$/;const pad=(e,t)=>((e+(t-1))/t|0)*t;function createUniformBlockUniformSetter(e,t,r,n){if(t||r){n=n||1;const t=e.length;const r=t/4;return function(t){let o=0;let s=0;for(let a=0;a<r;++a){for(let r=0;r<n;++r)e[o++]=t[s++];o+=4-n}}}return function(t){t.length?e.set(t):e[0]=t}}\n/**\n * Represents a UniformBlockObject including an ArrayBuffer with all the uniform values\n * and a corresponding WebGLBuffer to hold those values on the GPU\n *\n * @typedef {Object} UniformBlockInfo\n * @property {string} name The name of the block\n * @property {ArrayBuffer} array The array buffer that contains the uniform values\n * @property {Float32Array} asFloat A float view on the array buffer. This is useful\n *    inspecting the contents of the buffer in the debugger.\n * @property {WebGLBuffer} buffer A WebGL buffer that will hold a copy of the uniform values for rendering.\n * @property {number} [offset] offset into buffer\n * @property {Object<string, ArrayBufferView>} uniforms A uniform name to ArrayBufferView map.\n *   each Uniform has a correctly typed `ArrayBufferView` into array at the correct offset\n *   and length of that uniform. So for example a float uniform would have a 1 float `Float32Array`\n *   view. A single mat4 would have a 16 element `Float32Array` view. An ivec2 would have an\n *   `Int32Array` view, etc.\n * @property {Object<string, function>} setters A setter for this uniform.\n *   The reason to use setters is elements of arrays are padded to vec4 sizes which\n *   means if you want to set an array of 4 floats you'd need to set 16 values\n *   (or set elements 0, 4, 8, 12). In other words\n *   `someBlockInfo.uniforms.some4FloatArrayUniform.set([0, , , , 1, , , , 2, , , , 3])`\n *   where as the setter handles just passing in [0, 1, 2, 3] either directly as in\n *   `someBlockInfo.setter.some4FloatArrayUniform.set([0, 1, 2, 3])` (not recommended)\n *   or via {@link module:twgl.setBlockUniforms}\n * @memberOf module:twgl\n */\n/**\n * Creates a `UniformBlockInfo` for the specified block\n *\n * Note: **If the blockName matches no existing blocks a warning is printed to the console and a dummy\n * `UniformBlockInfo` is returned**. This is because when debugging GLSL\n * it is common to comment out large portions of a shader or for example set\n * the final output to a constant. When that happens blocks get optimized out.\n * If this function did not create dummy blocks your code would crash when debugging.\n *\n * @param {WebGL2RenderingContext} gl A WebGL2RenderingContext\n * @param {WebGLProgram} program A WebGLProgram\n * @param {module:twgl.UniformBlockSpec} uniformBlockSpec. A UniformBlockSpec as returned\n *     from {@link module:twgl.createUniformBlockSpecFromProgram}.\n * @param {string} blockName The name of the block.\n * @return {module:twgl.UniformBlockInfo} The created UniformBlockInfo\n * @memberOf module:twgl/programs\n */function createUniformBlockInfoFromProgram(e,t,r,n){const o=r.blockSpecs;const s=r.uniformData;const a=o[n];if(!a){zr(\"no uniform block object named:\",n);return{name:n,uniforms:{}}}const c=new ArrayBuffer(a.size);const i=e.createBuffer();const u=a.index;e.bindBuffer(Dr,i);e.uniformBlockBinding(t,a.index,u);let f=n+\".\";to.test(f)&&(f=f.replace(to,\".\"));const l={};const m={};const y={};a.uniformIndices.forEach((function(e){const t=s[e];let r=t.name;r.startsWith(f)&&(r=r.substr(f.length));const n=r.endsWith(\"[0]\");n&&(r=r.substr(0,r.length-3));const o=Yn[t.type];const a=o.Type;const i=n?pad(o.size,16)*t.size:o.size*t.size;const u=new a(c,t.offset,i/a.BYTES_PER_ELEMENT);l[r]=u;const d=createUniformBlockUniformSetter(u,n,o.rows,o.cols);m[r]=d;addSetterToUniformTree(r,d,y,m)}));return{name:n,array:c,asFloat:new Float32Array(c),buffer:i,uniforms:l,setters:m}}\n/**\n * Creates a `UniformBlockInfo` for the specified block\n *\n * Note: **If the blockName matches no existing blocks a warning is printed to the console and a dummy\n * `UniformBlockInfo` is returned**. This is because when debugging GLSL\n * it is common to comment out large portions of a shader or for example set\n * the final output to a constant. When that happens blocks get optimized out.\n * If this function did not create dummy blocks your code would crash when debugging.\n *\n * @param {WebGL2RenderingContext} gl A WebGL2RenderingContext\n * @param {module:twgl.ProgramInfo} programInfo a `ProgramInfo`\n *     as returned from {@link module:twgl.createProgramInfo}\n * @param {string} blockName The name of the block.\n * @return {module:twgl.UniformBlockInfo} The created UniformBlockInfo\n * @memberOf module:twgl/programs\n */function createUniformBlockInfo(e,t,r){return createUniformBlockInfoFromProgram(e,t.program,t.uniformBlockSpec,r)}\n/**\n * Binds a uniform block to the matching uniform block point.\n * Matches by blocks by name so blocks must have the same name not just the same\n * structure.\n *\n * If you have changed any values and you upload the values into the corresponding WebGLBuffer\n * call {@link module:twgl.setUniformBlock} instead.\n *\n * @param {WebGL2RenderingContext} gl A WebGL 2 rendering context.\n * @param {(module:twgl.ProgramInfo|module:twgl.UniformBlockSpec)} programInfo a `ProgramInfo`\n *     as returned from {@link module:twgl.createProgramInfo} or or `UniformBlockSpec` as\n *     returned from {@link module:twgl.createUniformBlockSpecFromProgram}.\n * @param {module:twgl.UniformBlockInfo} uniformBlockInfo a `UniformBlockInfo` as returned from\n *     {@link module:twgl.createUniformBlockInfo}.\n * @return {bool} true if buffer was bound. If the programInfo has no block with the same block name\n *     no buffer is bound.\n * @memberOf module:twgl/programs\n */function bindUniformBlock(e,t,r){const n=t.uniformBlockSpec||t;const o=n.blockSpecs[r.name];if(o){const t=o.index;e.bindBufferRange(Dr,t,r.buffer,r.offset||0,r.array.byteLength);return true}return false}\n/**\n * Uploads the current uniform values to the corresponding WebGLBuffer\n * and binds that buffer to the program's corresponding bind point for the uniform block object.\n *\n * If you haven't changed any values and you only need to bind the uniform block object\n * call {@link module:twgl.bindUniformBlock} instead.\n *\n * @param {WebGL2RenderingContext} gl A WebGL 2 rendering context.\n * @param {(module:twgl.ProgramInfo|module:twgl.UniformBlockSpec)} programInfo a `ProgramInfo`\n *     as returned from {@link module:twgl.createProgramInfo} or or `UniformBlockSpec` as\n *     returned from {@link module:twgl.createUniformBlockSpecFromProgram}.\n * @param {module:twgl.UniformBlockInfo} uniformBlockInfo a `UniformBlockInfo` as returned from\n *     {@link module:twgl.createUniformBlockInfo}.\n * @memberOf module:twgl/programs\n */function setUniformBlock(e,t,r){bindUniformBlock(e,t,r)&&e.bufferData(Dr,r.array,Mr)}\n/**\n * Sets values of a uniform block object\n *\n * @param {module:twgl.UniformBlockInfo} uniformBlockInfo A UniformBlockInfo as returned by {@link module:twgl.createUniformBlockInfo}.\n * @param {Object.<string, ?>} values A uniform name to value map where the value is correct for the given\n *    type of uniform. So for example given a block like\n *\n *       uniform SomeBlock {\n *         float someFloat;\n *         vec2 someVec2;\n *         vec3 someVec3Array[2];\n *         int someInt;\n *       }\n *\n *  You can set the values of the uniform block with\n *\n *       twgl.setBlockUniforms(someBlockInfo, {\n *          someFloat: 12.3,\n *          someVec2: [1, 2],\n *          someVec3Array: [1, 2, 3, 4, 5, 6],\n *          someInt: 5,\n *       }\n *\n *  Arrays can be JavaScript arrays or typed arrays\n *\n *  You can also fill out structure and array values either via\n *  shortcut. Example\n *\n *     // -- in shader --\n *     struct Light {\n *       float intensity;\n *       vec4 color;\n *       float nearFar[2];\n *     };\n *     uniform Lights {\n *       Light lights[2];\n *     };\n *\n *     // in JavaScript\n *\n *     twgl.setBlockUniforms(someBlockInfo, {\n *       lights: [\n *         { intensity: 5.0, color: [1, 0, 0, 1], nearFar[0.1, 10] },\n *         { intensity: 2.0, color: [0, 0, 1, 1], nearFar[0.2, 15] },\n *       ],\n *     });\n *\n *   or the more traditional way\n *\n *     twgl.setBlockUniforms(someBlockInfo, {\n *       \"lights[0].intensity\": 5.0,\n *       \"lights[0].color\": [1, 0, 0, 1],\n *       \"lights[0].nearFar\": [0.1, 10],\n *       \"lights[1].intensity\": 2.0,\n *       \"lights[1].color\": [0, 0, 1, 1],\n *       \"lights[1].nearFar\": [0.2, 15],\n *     });\n *\n *   You can also specify partial paths\n *\n *     twgl.setBlockUniforms(someBlockInfo, {\n *       'lights[1]': { intensity: 5.0, color: [1, 0, 0, 1], nearFar[0.2, 15] },\n *     });\n *\n *   But you can not specify leaf array indices.\n *\n *     twgl.setBlockUniforms(someBlockInfo, {\n *       'lights[1].nearFar[1]': 15,     // BAD! nearFar is a leaf\n *       'lights[1].nearFar': [0.2, 15], // GOOD\n *     });\n *\n *  **IMPORTANT!**, packing in a UniformBlock is unintuitive.\n *  For example the actual layout of `someVec3Array` above in memory\n *  is `1, 2, 3, unused, 4, 5, 6, unused`. twgl takes in 6 values\n *  as shown about and copies them, skipping the padding. This might\n *  be confusing if you're already familiar with Uniform blocks.\n *\n *  If you want to deal with the padding yourself you can access the array\n *  buffer views directly. eg:\n *\n *      someBlockInfo.someVec3Array.set([1, 2, 3, 0, 4, 5, 6, 0]);\n *\n *  Any name that doesn't match will be ignored\n * @memberOf module:twgl/programs\n */function setBlockUniforms(e,t){const r=e.setters;for(const e in t){const n=r[e];if(n){const r=t[e];n(r)}}}function setUniformTree(e,t){for(const r in t){const n=e[r];typeof n===\"function\"?n(t[r]):setUniformTree(e[r],t[r])}}\n/**\n * Set uniforms and binds related textures.\n *\n * example:\n *\n *     const programInfo = createProgramInfo(\n *         gl, [\"some-vs\", \"some-fs\"]);\n *\n *     const tex1 = gl.createTexture();\n *     const tex2 = gl.createTexture();\n *\n *     ... assume we setup the textures with data ...\n *\n *     const uniforms = {\n *       u_someSampler: tex1,\n *       u_someOtherSampler: tex2,\n *       u_someColor: [1,0,0,1],\n *       u_somePosition: [0,1,1],\n *       u_someMatrix: [\n *         1,0,0,0,\n *         0,1,0,0,\n *         0,0,1,0,\n *         0,0,0,0,\n *       ],\n *     };\n *\n *     gl.useProgram(programInfo.program);\n *\n * This will automatically bind the textures AND set the\n * uniforms.\n *\n *     twgl.setUniforms(programInfo, uniforms);\n *\n * For the example above it is equivalent to\n *\n *     let texUnit = 0;\n *     gl.activeTexture(gl.TEXTURE0 + texUnit);\n *     gl.bindTexture(gl.TEXTURE_2D, tex1);\n *     gl.uniform1i(u_someSamplerLocation, texUnit++);\n *     gl.activeTexture(gl.TEXTURE0 + texUnit);\n *     gl.bindTexture(gl.TEXTURE_2D, tex2);\n *     gl.uniform1i(u_someSamplerLocation, texUnit++);\n *     gl.uniform4fv(u_someColorLocation, [1, 0, 0, 1]);\n *     gl.uniform3fv(u_somePositionLocation, [0, 1, 1]);\n *     gl.uniformMatrix4fv(u_someMatrix, false, [\n *         1,0,0,0,\n *         0,1,0,0,\n *         0,0,1,0,\n *         0,0,0,0,\n *       ]);\n *\n * Note it is perfectly reasonable to call `setUniforms` multiple times. For example\n *\n *     const uniforms = {\n *       u_someSampler: tex1,\n *       u_someOtherSampler: tex2,\n *     };\n *\n *     const moreUniforms {\n *       u_someColor: [1,0,0,1],\n *       u_somePosition: [0,1,1],\n *       u_someMatrix: [\n *         1,0,0,0,\n *         0,1,0,0,\n *         0,0,1,0,\n *         0,0,0,0,\n *       ],\n *     };\n *\n *     twgl.setUniforms(programInfo, uniforms);\n *     twgl.setUniforms(programInfo, moreUniforms);\n *\n * You can also add WebGLSamplers to uniform samplers as in\n *\n *     const uniforms = {\n *       u_someSampler: {\n *         texture: someWebGLTexture,\n *         sampler: someWebGLSampler,\n *       },\n *     };\n *\n * In which case both the sampler and texture will be bound to the\n * same unit.\n *\n * @param {(module:twgl.ProgramInfo|Object.<string, function>)} setters a `ProgramInfo` as returned from `createProgramInfo` or the setters returned from\n *        `createUniformSetters`.\n * @param {Object.<string, ?>} values an object with values for the\n *        uniforms.\n *   You can pass multiple objects by putting them in an array or by calling with more arguments.For example\n *\n *     const sharedUniforms = {\n *       u_fogNear: 10,\n *       u_projection: ...\n *       ...\n *     };\n *\n *     const localUniforms = {\n *       u_world: ...\n *       u_diffuseColor: ...\n *     };\n *\n *     twgl.setUniforms(programInfo, sharedUniforms, localUniforms);\n *\n *     // is the same as\n *\n *     twgl.setUniforms(programInfo, [sharedUniforms, localUniforms]);\n *\n *     // is the same as\n *\n *     twgl.setUniforms(programInfo, sharedUniforms);\n *     twgl.setUniforms(programInfo, localUniforms};\n *\n *   You can also fill out structure and array values either via\n *   shortcut. Example\n *\n *     // -- in shader --\n *     struct Light {\n *       float intensity;\n *       vec4 color;\n *       float nearFar[2];\n *     };\n *     uniform Light lights[2];\n *\n *     // in JavaScript\n *\n *     twgl.setUniforms(programInfo, {\n *       lights: [\n *         { intensity: 5.0, color: [1, 0, 0, 1], nearFar[0.1, 10] },\n *         { intensity: 2.0, color: [0, 0, 1, 1], nearFar[0.2, 15] },\n *       ],\n *     });\n *\n *   or the more traditional way\n *\n *     twgl.setUniforms(programInfo, {\n *       \"lights[0].intensity\": 5.0,\n *       \"lights[0].color\": [1, 0, 0, 1],\n *       \"lights[0].nearFar\": [0.1, 10],\n *       \"lights[1].intensity\": 2.0,\n *       \"lights[1].color\": [0, 0, 1, 1],\n *       \"lights[1].nearFar\": [0.2, 15],\n *     });\n *\n *   You can also specify partial paths\n *\n *     twgl.setUniforms(programInfo, {\n *       'lights[1]': { intensity: 5.0, color: [1, 0, 0, 1], nearFar[0.2, 15] },\n *     });\n *\n *   But you can not specify leaf array indices\n *\n *     twgl.setUniforms(programInfo, {\n *       'lights[1].nearFar[1]': 15,     // BAD! nearFar is a leaf\n *       'lights[1].nearFar': [0.2, 15], // GOOD\n *     });\n *\n * @memberOf module:twgl/programs\n */function setUniforms(e,...t){const r=e.uniformSetters||e;const n=t.length;for(let e=0;e<n;++e){const n=t[e];if(Array.isArray(n)){const e=n.length;for(let t=0;t<e;++t)setUniforms(r,n[t])}else for(const e in n){const t=r[e];t&&t(n[e])}}}\n/**\n * Alias for `setUniforms`\n * @function\n * @param {(module:twgl.ProgramInfo|Object.<string, function>)} setters a `ProgramInfo` as returned from `createProgramInfo` or the setters returned from\n *        `createUniformSetters`.\n * @param {Object.<string, ?>} values an object with values for the\n * @memberOf module:twgl/programs\n */const ro=setUniforms;\n/**\n * Creates setter functions for all attributes of a shader\n * program. You can pass this to {@link module:twgl.setBuffersAndAttributes} to set all your buffers and attributes.\n *\n * @see {@link module:twgl.setAttributes} for example\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {WebGLProgram} program the program to create setters for.\n * @return {Object.<string, function>} an object with a setter for each attribute by name.\n * @memberOf module:twgl/programs\n */function createAttributeSetters(e,t){const r={};const n=e.getProgramParameter(t,Hr);for(let o=0;o<n;++o){const n=e.getActiveAttrib(t,o);if(isBuiltIn(n))continue;const s=e.getAttribLocation(t,n.name);const a=qn[n.type];const c=a.setter(e,s,a);c.location=s;r[n.name]=c}return r}\n/**\n * Sets attributes and binds buffers (deprecated... use {@link module:twgl.setBuffersAndAttributes})\n *\n * Example:\n *\n *     const program = createProgramFromScripts(\n *         gl, [\"some-vs\", \"some-fs\");\n *\n *     const attribSetters = createAttributeSetters(program);\n *\n *     const positionBuffer = gl.createBuffer();\n *     const texcoordBuffer = gl.createBuffer();\n *\n *     const attribs = {\n *       a_position: {buffer: positionBuffer, numComponents: 3},\n *       a_texcoord: {buffer: texcoordBuffer, numComponents: 2},\n *     };\n *\n *     gl.useProgram(program);\n *\n * This will automatically bind the buffers AND set the\n * attributes.\n *\n *     setAttributes(attribSetters, attribs);\n *\n * Properties of attribs. For each attrib you can add\n * properties:\n *\n * *   type: the type of data in the buffer. Default = gl.FLOAT\n * *   normalize: whether or not to normalize the data. Default = false\n * *   stride: the stride. Default = 0\n * *   offset: offset into the buffer. Default = 0\n * *   divisor: the divisor for instances. Default = undefined\n *\n * For example if you had 3 value float positions, 2 value\n * float texcoord and 4 value uint8 colors you'd setup your\n * attribs like this\n *\n *     const attribs = {\n *       a_position: {buffer: positionBuffer, numComponents: 3},\n *       a_texcoord: {buffer: texcoordBuffer, numComponents: 2},\n *       a_color: {\n *         buffer: colorBuffer,\n *         numComponents: 4,\n *         type: gl.UNSIGNED_BYTE,\n *         normalize: true,\n *       },\n *     };\n *\n * @param {Object.<string, function>} setters Attribute setters as returned from createAttributeSetters\n * @param {Object.<string, module:twgl.AttribInfo>} buffers AttribInfos mapped by attribute name.\n * @memberOf module:twgl/programs\n * @deprecated use {@link module:twgl.setBuffersAndAttributes}\n * @private\n */function setAttributes(e,t){for(const r in t){const n=e[r];n&&n(t[r])}}\n/**\n * Sets attributes and buffers including the `ELEMENT_ARRAY_BUFFER` if appropriate\n *\n * Example:\n *\n *     const programInfo = createProgramInfo(\n *         gl, [\"some-vs\", \"some-fs\");\n *\n *     const arrays = {\n *       position: { numComponents: 3, data: [0, 0, 0, 10, 0, 0, 0, 10, 0, 10, 10, 0], },\n *       texcoord: { numComponents: 2, data: [0, 0, 0, 1, 1, 0, 1, 1],                 },\n *     };\n *\n *     const bufferInfo = createBufferInfoFromArrays(gl, arrays);\n *\n *     gl.useProgram(programInfo.program);\n *\n * This will automatically bind the buffers AND set the\n * attributes.\n *\n *     setBuffersAndAttributes(gl, programInfo, bufferInfo);\n *\n * For the example above it is equivalent to\n *\n *     gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n *     gl.enableVertexAttribArray(a_positionLocation);\n *     gl.vertexAttribPointer(a_positionLocation, 3, gl.FLOAT, false, 0, 0);\n *     gl.bindBuffer(gl.ARRAY_BUFFER, texcoordBuffer);\n *     gl.enableVertexAttribArray(a_texcoordLocation);\n *     gl.vertexAttribPointer(a_texcoordLocation, 4, gl.FLOAT, false, 0, 0);\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext.\n * @param {(module:twgl.ProgramInfo|Object.<string, function>)} setters A `ProgramInfo` as returned from {@link module:twgl.createProgramInfo} or Attribute setters as returned from {@link module:twgl.createAttributeSetters}\n * @param {(module:twgl.BufferInfo|module:twgl.VertexArrayInfo)} buffers a `BufferInfo` as returned from {@link module:twgl.createBufferInfoFromArrays}.\n *   or a `VertexArrayInfo` as returned from {@link module:twgl.createVertexArrayInfo}\n * @memberOf module:twgl/programs\n */function setBuffersAndAttributes(e,t,r){if(r.vertexArrayObject)e.bindVertexArray(r.vertexArrayObject);else{setAttributes(t.attribSetters||t,r.attribs);r.indices&&e.bindBuffer(Lr,r.indices)}}\n/**\n * @typedef {Object} ProgramInfo\n * @property {WebGLProgram} program A shader program\n * @property {Object<string, function>} uniformSetters object of setters as returned from createUniformSetters,\n * @property {Object<string, function>} attribSetters object of setters as returned from createAttribSetters,\n * @property {module:twgl.UniformBlockSpec} [uniformBlockSpec] a uniform block spec for making UniformBlockInfos with createUniformBlockInfo etc..\n * @property {Object<string, module:twgl.TransformFeedbackInfo>} [transformFeedbackInfo] info for transform feedbacks\n * @memberOf module:twgl\n */\n/**\n * Creates a ProgramInfo from an existing program.\n *\n * A ProgramInfo contains\n *\n *     programInfo = {\n *        program: WebGLProgram,\n *        uniformSetters: object of setters as returned from createUniformSetters,\n *        attribSetters: object of setters as returned from createAttribSetters,\n *     }\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {WebGLProgram} program an existing WebGLProgram.\n * @return {module:twgl.ProgramInfo} The created ProgramInfo.\n * @memberOf module:twgl/programs\n */function createProgramInfoFromProgram(e,t){const r=createUniformSetters(e,t);const n=createAttributeSetters(e,t);const o={program:t,uniformSetters:r,attribSetters:n};if(isWebGL2(e)){o.uniformBlockSpec=createUniformBlockSpecFromProgram(e,t);o.transformFeedbackInfo=createTransformFeedbackInfo(e,t)}return o}const no=/\\s|{|}|;/;\n/**\n * Creates a ProgramInfo from 2 sources.\n *\n * A ProgramInfo contains\n *\n *     programInfo = {\n *        program: WebGLProgram,\n *        uniformSetters: object of setters as returned from createUniformSetters,\n *        attribSetters: object of setters as returned from createAttribSetters,\n *     }\n *\n * NOTE: There are 4 signatures for this function\n *\n *     twgl.createProgramInfo(gl, [vs, fs], options);\n *     twgl.createProgramInfo(gl, [vs, fs], opt_errFunc);\n *     twgl.createProgramInfo(gl, [vs, fs], opt_attribs, opt_errFunc);\n *     twgl.createProgramInfo(gl, [vs, fs], opt_attribs, opt_locations, opt_errFunc);\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {string[]} shaderSources Array of sources for the\n *        shaders or ids. The first is assumed to be the vertex shader,\n *        the second the fragment shader.\n * @param {module:twgl.ProgramOptions|string[]|module:twgl.ErrorCallback} [opt_attribs] Options for the program or an array of attribs names or an error callback. Locations will be assigned by index if not passed in\n * @param {number[]|module:twgl.ErrorCallback} [opt_locations] The locations for the. A parallel array to opt_attribs letting you assign locations or an error callback.\n * @param {module:twgl.ErrorCallback} [opt_errorCallback] callback for errors. By default it just prints an error to the console\n *        on error. If you want something else pass an callback. It's passed an error message.\n * @return {module:twgl.ProgramInfo?} The created ProgramInfo or null if it failed to link or compile\n * @memberOf module:twgl/programs\n */function createProgramInfo(e,t,r,n,o){const s=getProgramOptions(r,n,o);const a=[];t=t.map((function(e){if(!no.test(e)){const t=getElementById(e);if(t)e=t.text;else{const t=`no element with id: ${e}`;s.errorCallback(t);a.push(t)}}return e}));if(a.length)return reportError(s,\"\");const c=s.callback;c&&(s.callback=(t,r)=>{c(t,t?void 0:createProgramInfoFromProgram(e,r))});const i=createProgramFromSources(e,t,s);return i?createProgramInfoFromProgram(e,i):null}function checkAllPrograms(e,t,r,n,o){for(const[s,a]of Object.entries(t)){const c={...o};const i=r[s];Array.isArray(i)||Object.assign(c,i);const u=getProgramErrors(e,a,c.errorCallback);if(u){for(const r of Object.values(t)){const t=e.getAttachedShaders(r);e.deleteProgram(r);for(const r of t)n.has(r)||e.deleteShader(r)}return u}}}\n/**\n * Creates multiple programs\n *\n * Note: the reason this function exists is because the fastest way to create multiple\n * programs in WebGL is to create and compile all shaders and link all programs and only\n * afterwards check if they succeeded. In that way, giving all your shaders\n *\n * @see {@link module:twgl.createProgram}\n *\n * Example:\n *\n *     const programs = twgl.createPrograms(gl, {\n *       lambert: [lambertVS, lambertFS],\n *       phong: [phongVS, phoneFS],\n *       particles: {\n *         shaders: [particlesVS, particlesFS],\n *         transformFeedbackVaryings: ['position', 'velocity'],\n *       },\n *     });\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string, module:twgl.ProgramSpec>} programSpecs An object of ProgramSpecs, one per program.\n * @param {module:twgl.ProgramOptions} [programOptions] options to apply to all programs\n * @return {Object.<string, WebGLProgram>?} the created programInfos by name\n */function createPrograms(e,t,r={}){const n=new Set;const o=Object.fromEntries(Object.entries(t).map((([t,o])=>{const s={...r};const a=Array.isArray(o)?o:o.shaders;Array.isArray(o)||Object.assign(s,o);a.forEach(n.add,n);return[t,createProgramNoCheck(e,a,s)]})));if(r.callback){waitForAllProgramsLinkCompletionAsync(e,o).then((()=>{const s=checkAllPrograms(e,o,t,n,r);r.callback(s,s?void 0:o)}));return}const s=checkAllPrograms(e,o,t,n,r);return s?void 0:o}\n/**\n * Creates multiple programInfos\n *\n * Note: the reason this function exists is because the fastest way to create multiple\n * programs in WebGL is to create and compile all shaders and link all programs and only\n * afterwards check if they succeeded. In that way, giving all your shaders\n *\n * @see {@link module:twgl.createProgramInfo}\n *\n * Examples:\n *\n *     const programInfos = twgl.createProgramInfos(gl, {\n *       lambert: [lambertVS, lambertFS],\n *       phong: [phongVS, phoneFS],\n *       particles: {\n *         shaders: [particlesVS, particlesFS],\n *         transformFeedbackVaryings: ['position', 'velocity'],\n *       },\n *     });\n *\n * or\n *\n *     const {lambert, phong, particles} = twgl.createProgramInfos(gl, {\n *       lambert: [lambertVS, lambertFS],\n *       phong: [phongVS, phoneFS],\n *       particles: {\n *         shaders: [particlesVS, particlesFS],\n *         transformFeedbackVaryings: ['position', 'velocity'],\n *       },\n *     });\n *\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string, module:twgl.ProgramSpec>} programSpecs An object of ProgramSpecs, one per program.\n * @param {module:twgl.ProgramOptions} [programOptions] options to apply to all programs\n * @return {Object.<string, module:twgl.ProgramInfo>?} the created programInfos by name\n */function createProgramInfos(e,t,r){r=getProgramOptions(r);function createProgramInfosForPrograms(e,t){return Object.fromEntries(Object.entries(t).map((([t,r])=>[t,createProgramInfoFromProgram(e,r)])))}const n=r.callback;n&&(r.callback=(t,r)=>{n(t,t?void 0:createProgramInfosForPrograms(e,r))});const o=createPrograms(e,t,r);if(!n&&o)return createProgramInfosForPrograms(e,o)}\n/**\n * Creates multiple programs asynchronously\n *\n * @see {@link module:twgl.createProgramAsync}\n *\n * Example:\n *\n *     const programs = await twgl.createProgramsAsync(gl, {\n *       lambert: [lambertVS, lambertFS],\n *       phong: [phongVS, phoneFS],\n *       particles: {\n *         shaders: [particlesVS, particlesFS],\n *         transformFeedbackVaryings: ['position', 'velocity'],\n *       },\n *     });\n *\n * @function\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string, module:twgl.ProgramSpec>} programSpecs An object of ProgramSpecs, one per program.\n * @param {module:twgl.ProgramOptions} [programOptions] options to apply to all programs\n * @return {Object.<string, WebGLProgram>?} the created programInfos by name\n */const oo=wrapCallbackFnToAsyncFn(createPrograms);\n/**\n * Creates multiple programInfos asynchronously\n *\n * @see {@link module:twgl.createProgramInfoAsync}\n *\n * Example:\n *\n *     const programInfos = await twgl.createProgramInfosAsync(gl, {\n *       lambert: [lambertVS, lambertFS],\n *       phong: [phongVS, phoneFS],\n *       particles: {\n *         shaders: [particlesVS, particlesFS],\n *         transformFeedbackVaryings: ['position', 'velocity'],\n *       },\n *     });\n *\n * @function\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {Object.<string, module:twgl.ProgramSpec>} programSpecs An object of ProgramSpecs, one per program.\n * @param {module:twgl.ProgramOptions} [programOptions] options to apply to all programs\n * @return {Promise<Object.<string, module:twgl.ProgramInfo>>} the created programInfos by name\n */const so=wrapCallbackFnToAsyncFn(createProgramInfos);var ao=Object.freeze({__proto__:null,createAttributeSetters:createAttributeSetters,createProgram:createProgram,createProgramAsync:Kn,createPrograms:createPrograms,createProgramsAsync:oo,createProgramFromScripts:createProgramFromScripts,createProgramFromSources:createProgramFromSources,createProgramInfo:createProgramInfo,createProgramInfoAsync:Jn,createProgramInfos:createProgramInfos,createProgramInfosAsync:so,createProgramInfoFromProgram:createProgramInfoFromProgram,createUniformSetters:createUniformSetters,createUniformBlockSpecFromProgram:createUniformBlockSpecFromProgram,createUniformBlockInfoFromProgram:createUniformBlockInfoFromProgram,createUniformBlockInfo:createUniformBlockInfo,createTransformFeedback:createTransformFeedback,createTransformFeedbackInfo:createTransformFeedbackInfo,bindTransformFeedbackInfo:bindTransformFeedbackInfo,setAttributes:setAttributes,setBuffersAndAttributes:setBuffersAndAttributes,setUniforms:setUniforms,setUniformsAndBindTextures:ro,setUniformBlock:setUniformBlock,setBlockUniforms:setBlockUniforms,bindUniformBlock:bindUniformBlock});const co=4;const io=5123;\n/**\n * Calls `gl.drawElements` or `gl.drawArrays`, whichever is appropriate\n *\n * normally you'd call `gl.drawElements` or `gl.drawArrays` yourself\n * but calling this means if you switch from indexed data to non-indexed\n * data you don't have to remember to update your draw call.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {(module:twgl.BufferInfo|module:twgl.VertexArrayInfo)} bufferInfo A BufferInfo as returned from {@link module:twgl.createBufferInfoFromArrays} or\n *   a VertexArrayInfo as returned from {@link module:twgl.createVertexArrayInfo}\n * @param {number} [type] eg (gl.TRIANGLES, gl.LINES, gl.POINTS, gl.TRIANGLE_STRIP, ...). Defaults to `gl.TRIANGLES`\n * @param {number} [count] An optional count. Defaults to bufferInfo.numElements\n * @param {number} [offset] An optional offset. Defaults to 0.\n * @param {number} [instanceCount] An optional instanceCount. if set then `drawArraysInstanced` or `drawElementsInstanced` will be called\n * @memberOf module:twgl/draw\n */function drawBufferInfo(e,t,r,n,o,s){r=r===void 0?co:r;const a=t.indices;const c=t.elementType;const i=n===void 0?t.numElements:n;o=o===void 0?0:o;c||a?s!==void 0?e.drawElementsInstanced(r,i,c===void 0?io:t.elementType,o,s):e.drawElements(r,i,c===void 0?io:t.elementType,o):s!==void 0?e.drawArraysInstanced(r,o,i,s):e.drawArrays(r,o,i)}\n/**\n * A DrawObject is useful for putting objects in to an array and passing them to {@link module:twgl.drawObjectList}.\n *\n * You need either a `BufferInfo` or a `VertexArrayInfo`.\n *\n * @typedef {Object} DrawObject\n * @property {boolean} [active] whether or not to draw. Default = `true` (must be `false` to be not true). In other words `undefined` = `true`\n * @property {number} [type] type to draw eg. `gl.TRIANGLES`, `gl.LINES`, etc...\n * @property {module:twgl.ProgramInfo} programInfo A ProgramInfo as returned from {@link module:twgl.createProgramInfo}\n * @property {module:twgl.BufferInfo} [bufferInfo] A BufferInfo as returned from {@link module:twgl.createBufferInfoFromArrays}\n * @property {module:twgl.VertexArrayInfo} [vertexArrayInfo] A VertexArrayInfo as returned from {@link module:twgl.createVertexArrayInfo}\n * @property {Object<string, ?>} uniforms The values for the uniforms.\n *   You can pass multiple objects by putting them in an array. For example\n *\n *     var sharedUniforms = {\n *       u_fogNear: 10,\n *       u_projection: ...\n *       ...\n *     };\n *\n *     var localUniforms = {\n *       u_world: ...\n *       u_diffuseColor: ...\n *     };\n *\n *     var drawObj = {\n *       ...\n *       uniforms: [sharedUniforms, localUniforms],\n *     };\n *\n * @property {number} [offset] the offset to pass to `gl.drawArrays` or `gl.drawElements`. Defaults to 0.\n * @property {number} [count] the count to pass to `gl.drawArrays` or `gl.drawElements`. Defaults to bufferInfo.numElements.\n * @property {number} [instanceCount] the number of instances. Defaults to undefined.\n * @memberOf module:twgl\n */\n/**\n * Draws a list of objects\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {DrawObject[]} objectsToDraw an array of objects to draw.\n * @memberOf module:twgl/draw\n */function drawObjectList(e,t){let r=null;let n=null;t.forEach((function(t){if(t.active===false)return;const o=t.programInfo;const s=t.vertexArrayInfo||t.bufferInfo;let a=false;const c=t.type===void 0?co:t.type;if(o!==r){r=o;e.useProgram(o.program);a=true}if(a||s!==n){n&&n.vertexArrayObject&&!s.vertexArrayObject&&e.bindVertexArray(null);n=s;setBuffersAndAttributes(e,o,s)}setUniforms(o,t.uniforms);drawBufferInfo(e,s,c,t.count,t.offset,t.instanceCount)}));n&&n.vertexArrayObject&&e.bindVertexArray(null)}var uo=Object.freeze({__proto__:null,drawBufferInfo:drawBufferInfo,drawObjectList:drawObjectList});const fo=36160;const lo=36161;const mo=3553;const yo=5121;const po=6402;const bo=6408;const go=33190;const Ao=36012;const xo=35056;const ho=36013;const Fo=32854;const To=32855;const So=36194;const Po=33189;const Eo=6401;const wo=36168;const Io=34041;const vo=36064;const Bo=36096;const Co=36128;const ko=33306;const _o=33071;const Vo=9729;\n/**\n * The options for a framebuffer attachment.\n *\n * Note: For a `format` that is a texture include all the texture\n * options from {@link module:twgl.TextureOptions} for example\n * `min`, `mag`, `clamp`, etc... Note that unlike {@link module:twgl.TextureOptions}\n * `auto` defaults to `false` for attachment textures but `min` and `mag` default\n * to `gl.LINEAR` and `wrap` defaults to `CLAMP_TO_EDGE`\n *\n * @typedef {Object} AttachmentOptions\n * @property {number} [attachmentPoint] The attachment point. Defaults\n *   to `gl.COLOR_ATTACHMENT0 + ndx` unless type is a depth or stencil type\n *   then it's gl.DEPTH_ATTACHMENT or `gl.DEPTH_STENCIL_ATTACHMENT` depending\n *   on the format or attachment type.\n * @property {number} [format] The format. If one of `gl.RGBA4`,\n *   `gl.RGB565`, `gl.RGB5_A1`, `gl.DEPTH_COMPONENT16`,\n *   `gl.STENCIL_INDEX8` or `gl.DEPTH_STENCIL` then will create a\n *   renderbuffer. Otherwise will create a texture. Default = `gl.RGBA`\n * @property {number} [type] The type. Used for texture. Default = `gl.UNSIGNED_BYTE`.\n * @property {number} [target] The texture target for `gl.framebufferTexture2D`.\n *   Defaults to `gl.TEXTURE_2D`. Set to appropriate face for cube maps.\n * @property {number} [samples] The number of samples. Default = 1\n * @property {number} [level] level for `gl.framebufferTexture2D`. Defaults to 0.\n * @property {number} [layer] layer for `gl.framebufferTextureLayer`. Defaults to undefined.\n *   If set then `gl.framebufferTextureLayer` is called, if not then `gl.framebufferTexture2D`\n * @property {(WebGLRenderbuffer | WebGLTexture)} [attachment] An existing renderbuffer or texture.\n *    If provided will attach this Object. This allows you to share\n *    attachments across framebuffers.\n * @memberOf module:twgl\n * @mixes module:twgl.TextureOptions\n */const Uo=[{format:bo,type:yo,min:Vo,wrap:_o},{format:Io}];const zo={};zo[Io]=ko;zo[Eo]=Co;zo[wo]=Co;zo[po]=Bo;zo[Po]=Bo;zo[go]=Bo;zo[Ao]=Bo;zo[xo]=ko;zo[ho]=ko;function getAttachmentPointForFormat(e,t){return zo[e]||zo[t]}const Oo={};Oo[Fo]=true;Oo[To]=true;Oo[So]=true;Oo[Io]=true;Oo[Po]=true;Oo[Eo]=true;Oo[wo]=true;function isRenderbufferFormat(e){return Oo[e]}const Mo=32;function isColorAttachmentPoint(e){return e>=vo&&e<vo+Mo}\n/**\n * @typedef {Object} FramebufferInfo\n * @property {WebGLFramebuffer} framebuffer The WebGLFramebuffer for this framebufferInfo\n * @property {Array.<(WebGLRenderbuffer | WebGLTexture)>} attachments The created attachments in the same order as passed in to {@link module:twgl.createFramebufferInfo}.\n * @property {number} width The width of the framebuffer and its attachments\n * @property {number} height The width of the framebuffer and its attachments\n * @memberOf module:twgl\n */\n/**\n * Creates a framebuffer and attachments.\n *\n * This returns a {@link module:twgl.FramebufferInfo} because it needs to return the attachments as well as the framebuffer.\n * It also leaves the framebuffer it just created as the currently bound `FRAMEBUFFER`.\n * Note: If this is WebGL2 or if you called {@link module:twgl.addExtensionsToContext} then it will set the drawBuffers\n * to `[COLOR_ATTACHMENT0, COLOR_ATTACHMENT1, ...]` for how ever many color attachments were created.\n *\n * The simplest usage\n *\n *     // create an RGBA/UNSIGNED_BYTE texture and DEPTH_STENCIL renderbuffer\n *     const fbi = twgl.createFramebufferInfo(gl);\n *\n * More complex usage\n *\n *     // create an RGB565 renderbuffer and a STENCIL_INDEX8 renderbuffer\n *     const attachments = [\n *       { format: RGB565, mag: NEAREST },\n *       { format: STENCIL_INDEX8 },\n *     ]\n *     const fbi = twgl.createFramebufferInfo(gl, attachments);\n *\n * Passing in a specific size\n *\n *     const width = 256;\n *     const height = 256;\n *     const fbi = twgl.createFramebufferInfo(gl, attachments, width, height);\n *\n * **Note!!** It is up to you to check if the framebuffer is renderable by calling `gl.checkFramebufferStatus`.\n * [WebGL1 only guarantees 3 combinations of attachments work](https://www.khronos.org/registry/webgl/specs/latest/1.0/#6.6).\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.AttachmentOptions[]} [attachments] which attachments to create. If not provided the default is a framebuffer with an\n *    `RGBA`, `UNSIGNED_BYTE` texture `COLOR_ATTACHMENT0` and a `DEPTH_STENCIL` renderbuffer `DEPTH_STENCIL_ATTACHMENT`.\n * @param {number} [width] the width for the attachments. Default = size of drawingBuffer\n * @param {number} [height] the height for the attachments. Default = size of drawingBuffer\n * @return {module:twgl.FramebufferInfo} the framebuffer and attachments.\n * @memberOf module:twgl/framebuffers\n */function createFramebufferInfo(e,t,r,n){const o=fo;const s=e.createFramebuffer();e.bindFramebuffer(o,s);r=r||e.drawingBufferWidth;n=n||e.drawingBufferHeight;t=t||Uo;const a=[];const c={framebuffer:s,attachments:[],width:r,height:n};t.forEach((function(t,s){let i=t.attachment;const u=t.samples;const f=t.format;let l=t.attachmentPoint||getAttachmentPointForFormat(f,t.internalFormat);l||(l=vo+s);isColorAttachmentPoint(l)&&a.push(l);if(!i)if(u!==void 0||isRenderbufferFormat(f)){i=e.createRenderbuffer();e.bindRenderbuffer(lo,i);u>1?e.renderbufferStorageMultisample(lo,u,f,r,n):e.renderbufferStorage(lo,f,r,n)}else{const o=Object.assign({},t);o.width=r;o.height=n;if(o.auto===void 0){o.auto=false;o.min=o.min||o.minMag||Vo;o.mag=o.mag||o.minMag||Vo;o.wrapS=o.wrapS||o.wrap||_o;o.wrapT=o.wrapT||o.wrap||_o}i=createTexture(e,o)}if(isRenderbuffer(e,i))e.framebufferRenderbuffer(o,l,lo,i);else{if(!isTexture(e,i))throw new Error(\"unknown attachment type\");t.layer!==void 0?e.framebufferTextureLayer(o,l,i,t.level||0,t.layer):e.framebufferTexture2D(o,l,t.target||mo,i,t.level||0)}c.attachments.push(i)}));e.drawBuffers&&e.drawBuffers(a);return c}\n/**\n * Resizes the attachments of a framebuffer.\n *\n * You need to pass in the same `attachments` as you passed in {@link module:twgl.createFramebufferInfo}\n * because TWGL has no idea the format/type of each attachment.\n *\n * The simplest usage\n *\n *     // create an RGBA/UNSIGNED_BYTE texture and DEPTH_STENCIL renderbuffer\n *     const fbi = twgl.createFramebufferInfo(gl);\n *\n *     ...\n *\n *     function render() {\n *       if (twgl.resizeCanvasToDisplaySize(gl.canvas)) {\n *         // resize the attachments\n *         twgl.resizeFramebufferInfo(gl, fbi);\n *       }\n *\n * More complex usage\n *\n *     // create an RGB565 renderbuffer and a STENCIL_INDEX8 renderbuffer\n *     const attachments = [\n *       { format: RGB565, mag: NEAREST },\n *       { format: STENCIL_INDEX8 },\n *     ]\n *     const fbi = twgl.createFramebufferInfo(gl, attachments);\n *\n *     ...\n *\n *     function render() {\n *       if (twgl.resizeCanvasToDisplaySize(gl.canvas)) {\n *         // resize the attachments to match\n *         twgl.resizeFramebufferInfo(gl, fbi, attachments);\n *       }\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.FramebufferInfo} framebufferInfo a framebufferInfo as returned from {@link module:twgl.createFramebufferInfo}.\n * @param {module:twgl.AttachmentOptions[]} [attachments] the same attachments options as passed to {@link module:twgl.createFramebufferInfo}.\n * @param {number} [width] the width for the attachments. Default = size of drawingBuffer\n * @param {number} [height] the height for the attachments. Default = size of drawingBuffer\n * @memberOf module:twgl/framebuffers\n */function resizeFramebufferInfo(e,t,r,n,o){n=n||e.drawingBufferWidth;o=o||e.drawingBufferHeight;t.width=n;t.height=o;r=r||Uo;r.forEach((function(r,s){const a=t.attachments[s];const c=r.format;const i=r.samples;if(i!==void 0||isRenderbuffer(e,a)){e.bindRenderbuffer(lo,a);i>1?e.renderbufferStorageMultisample(lo,i,c,n,o):e.renderbufferStorage(lo,c,n,o)}else{if(!isTexture(e,a))throw new Error(\"unknown attachment type\");resizeTexture(e,a,r,n,o)}}))}\n/**\n * Binds a framebuffer\n *\n * This function pretty much solely exists because I spent hours\n * trying to figure out why something I wrote wasn't working only\n * to realize I forget to set the viewport dimensions.\n * My hope is this function will fix that.\n *\n * It is effectively the same as\n *\n *     gl.bindFramebuffer(gl.FRAMEBUFFER, someFramebufferInfo.framebuffer);\n *     gl.viewport(0, 0, someFramebufferInfo.width, someFramebufferInfo.height);\n *\n * @param {WebGLRenderingContext} gl the WebGLRenderingContext\n * @param {module:twgl.FramebufferInfo|null} [framebufferInfo] a framebufferInfo as returned from {@link module:twgl.createFramebufferInfo}.\n *   If falsy will bind the canvas.\n * @param {number} [target] The target. If not passed `gl.FRAMEBUFFER` will be used.\n * @memberOf module:twgl/framebuffers\n */function bindFramebufferInfo(e,t,r){r=r||fo;if(t){e.bindFramebuffer(r,t.framebuffer);e.viewport(0,0,t.width,t.height)}else{e.bindFramebuffer(r,null);e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight)}}var Ro=Object.freeze({__proto__:null,bindFramebufferInfo:bindFramebufferInfo,createFramebufferInfo:createFramebufferInfo,resizeFramebufferInfo:resizeFramebufferInfo});const Lo=34963;\n/**\n * @typedef {Object} VertexArrayInfo\n * @property {number} numElements The number of elements to pass to `gl.drawArrays` or `gl.drawElements`.\n * @property {number} [elementType] The type of indices `UNSIGNED_BYTE`, `UNSIGNED_SHORT` etc..\n * @property {WebGLVertexArrayObject} [vertexArrayObject] a vertex array object\n * @memberOf module:twgl\n */\n/**\n * Creates a VertexArrayInfo from a BufferInfo and one or more ProgramInfos\n *\n * This can be passed to {@link module:twgl.setBuffersAndAttributes} and to\n * {@link module:twgl:drawBufferInfo}.\n *\n * > **IMPORTANT:** Vertex Array Objects are **not** a direct analog for a BufferInfo. Vertex Array Objects\n *   assign buffers to specific attributes at creation time. That means they can only be used with programs\n *   who's attributes use the same attribute locations for the same purposes.\n *\n * > Bind your attribute locations by passing an array of attribute names to {@link module:twgl.createProgramInfo}\n *   or use WebGL 2's GLSL ES 3's `layout(location = <num>)` to make sure locations match.\n *\n * also\n *\n * > **IMPORTANT:** After calling twgl.setBuffersAndAttribute with a BufferInfo that uses a Vertex Array Object\n *   that Vertex Array Object will be bound. That means **ANY MANIPULATION OF ELEMENT_ARRAY_BUFFER or ATTRIBUTES**\n *   will affect the Vertex Array Object state.\n *\n * > Call `gl.bindVertexArray(null)` to get back manipulating the global attributes and ELEMENT_ARRAY_BUFFER.\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @param {module:twgl.ProgramInfo|module:twgl.ProgramInfo[]} programInfo a programInfo or array of programInfos\n * @param {module:twgl.BufferInfo} bufferInfo BufferInfo as returned from createBufferInfoFromArrays etc...\n *\n *    You need to make sure every attribute that will be used is bound. So for example assume shader 1\n *    uses attributes A, B, C and shader 2 uses attributes A, B, D. If you only pass in the programInfo\n *    for shader 1 then only attributes A, B, and C will have their attributes set because TWGL doesn't\n *    now attribute D's location.\n *\n *    So, you can pass in both shader 1 and shader 2's programInfo\n *\n * @return {module:twgl.VertexArrayInfo} The created VertexArrayInfo\n *\n * @memberOf module:twgl/vertexArrays\n */function createVertexArrayInfo(e,t,r){const n=e.createVertexArray();e.bindVertexArray(n);t.length||(t=[t]);t.forEach((function(t){setBuffersAndAttributes(e,t,r)}));e.bindVertexArray(null);return{numElements:r.numElements,elementType:r.elementType,vertexArrayObject:n}}\n/**\n * Creates a vertex array object and then sets the attributes on it\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext to use.\n * @param {Object.<string, function>} setters Attribute setters as returned from createAttributeSetters\n * @param {Object.<string, module:twgl.AttribInfo>} attribs AttribInfos mapped by attribute name.\n * @param {WebGLBuffer} [indices] an optional ELEMENT_ARRAY_BUFFER of indices\n *\n * @return {WebGLVertexArrayObject|null} The created WebGLVertexArrayObject\n *\n * @memberOf module:twgl/vertexArrays\n */function createVAOAndSetAttributes(e,t,r,n){const o=e.createVertexArray();e.bindVertexArray(o);setAttributes(t,r);n&&e.bindBuffer(Lo,n);e.bindVertexArray(null);return o}\n/**\n * Creates a vertex array object and then sets the attributes\n * on it\n *\n * @param {WebGLRenderingContext} gl The WebGLRenderingContext\n *        to use.\n * @param {Object.<string, function>| module:twgl.ProgramInfo} programInfo as returned from createProgramInfo or Attribute setters as returned from createAttributeSetters\n * @param {module:twgl.BufferInfo} bufferInfo BufferInfo as returned from createBufferInfoFromArrays etc...\n * @param {WebGLBuffer} [indices] an optional ELEMENT_ARRAY_BUFFER of indices\n *\n * @return {WebGLVertexArrayObject|null} The created WebGLVertexArrayObject\n *\n * @memberOf module:twgl/vertexArrays\n */function createVAOFromBufferInfo(e,t,r){return createVAOAndSetAttributes(e,t.attribSetters||t,r.attribs,r.indices)}var Do=Object.freeze({__proto__:null,createVertexArrayInfo:createVertexArrayInfo,createVAOAndSetAttributes:createVAOAndSetAttributes,createVAOFromBufferInfo:createVAOFromBufferInfo});const $o={addExtensionsToContext:true};\n/**\n * Various default settings for twgl.\n *\n * Note: You can call this any number of times. Example:\n *\n *     twgl.setDefaults({ textureColor: [1, 0, 0, 1] });\n *     twgl.setDefaults({ attribPrefix: 'a_' });\n *\n * is equivalent to\n *\n *     twgl.setDefaults({\n *       textureColor: [1, 0, 0, 1],\n *       attribPrefix: 'a_',\n *     });\n *\n * @typedef {Object} Defaults\n * @property {string} [attribPrefix] The prefix to stick on attributes\n *\n *   When writing shaders I prefer to name attributes with `a_`, uniforms with `u_` and varyings with `v_`\n *   as it makes it clear where they came from. But, when building geometry I prefer using un-prefixed names.\n *\n *   In other words I'll create arrays of geometry like this\n *\n *       const arrays = {\n *         position: ...\n *         normal: ...\n *         texcoord: ...\n *       };\n *\n *   But need those mapped to attributes and my attributes start with `a_`.\n *\n *   Default: `\"\"`\n *\n * @property {number[]} [textureColor] Array of 4 values in the range 0 to 1\n *\n *   The default texture color is used when loading textures from\n *   urls. Because the URL will be loaded async we'd like to be\n *   able to use the texture immediately. By putting a 1x1 pixel\n *   color in the texture we can start using the texture before\n *   the URL has loaded.\n *\n *   Default: `[0.5, 0.75, 1, 1]`\n *\n * @property {string} [crossOrigin]\n *\n *   If not undefined sets the crossOrigin attribute on images\n *   that twgl creates when downloading images for textures.\n *\n *   Also see {@link module:twgl.TextureOptions}.\n *\n * @property {bool} [addExtensionsToContext]\n *\n *   If true, then, when twgl will try to add any supported WebGL extensions\n *   directly to the context under their normal GL names. For example\n *   if ANGLE_instances_arrays exists then twgl would enable it,\n *   add the functions `vertexAttribDivisor`, `drawArraysInstanced`,\n *   `drawElementsInstanced`, and the constant `VERTEX_ATTRIB_ARRAY_DIVISOR`\n *   to the `WebGLRenderingContext`.\n *\n * @memberOf module:twgl\n */\n/**\n * Sets various defaults for twgl.\n *\n * In the interest of terseness which is kind of the point\n * of twgl I've integrated a few of the older functions here\n *\n * @param {module:twgl.Defaults} newDefaults The default settings.\n * @memberOf module:twgl\n */function setDefaults(e){copyExistingProperties(e,$o);setDefaults$2(e);setDefaults$1(e)}const Go=/^(.*?)_/;function addExtensionToContext(e,t){ge(e,0);const r=e.getExtension(t);if(r){const n={};const o=Go.exec(t)[1];const s=\"_\"+o;for(const t in r){const a=r[t];const c=typeof a===\"function\";const i=c?o:s;let u=t;t.endsWith(i)&&(u=t.substring(0,t.length-i.length));if(e[u]!==void 0)c||e[u]===a||warn$1(u,e[u],a,t);else if(c)e[u]=function(e){return function(){return e.apply(r,arguments)}}(a);else{e[u]=a;n[u]=a}}n.constructor={name:r.constructor.name};ge(n,0)}return r}const No=[\"ANGLE_instanced_arrays\",\"EXT_blend_minmax\",\"EXT_color_buffer_float\",\"EXT_color_buffer_half_float\",\"EXT_disjoint_timer_query\",\"EXT_disjoint_timer_query_webgl2\",\"EXT_frag_depth\",\"EXT_sRGB\",\"EXT_shader_texture_lod\",\"EXT_texture_filter_anisotropic\",\"OES_element_index_uint\",\"OES_standard_derivatives\",\"OES_texture_float\",\"OES_texture_float_linear\",\"OES_texture_half_float\",\"OES_texture_half_float_linear\",\"OES_vertex_array_object\",\"WEBGL_color_buffer_float\",\"WEBGL_compressed_texture_atc\",\"WEBGL_compressed_texture_etc1\",\"WEBGL_compressed_texture_pvrtc\",\"WEBGL_compressed_texture_s3tc\",\"WEBGL_compressed_texture_s3tc_srgb\",\"WEBGL_depth_texture\",\"WEBGL_draw_buffers\"];\n/**\n * Attempts to enable all of the following extensions\n * and add their functions and constants to the\n * `WebGLRenderingContext` using their normal non-extension like names.\n *\n *      ANGLE_instanced_arrays\n *      EXT_blend_minmax\n *      EXT_color_buffer_float\n *      EXT_color_buffer_half_float\n *      EXT_disjoint_timer_query\n *      EXT_disjoint_timer_query_webgl2\n *      EXT_frag_depth\n *      EXT_sRGB\n *      EXT_shader_texture_lod\n *      EXT_texture_filter_anisotropic\n *      OES_element_index_uint\n *      OES_standard_derivatives\n *      OES_texture_float\n *      OES_texture_float_linear\n *      OES_texture_half_float\n *      OES_texture_half_float_linear\n *      OES_vertex_array_object\n *      WEBGL_color_buffer_float\n *      WEBGL_compressed_texture_atc\n *      WEBGL_compressed_texture_etc1\n *      WEBGL_compressed_texture_pvrtc\n *      WEBGL_compressed_texture_s3tc\n *      WEBGL_compressed_texture_s3tc_srgb\n *      WEBGL_depth_texture\n *      WEBGL_draw_buffers\n *\n * For example if `ANGLE_instanced_arrays` exists then the functions\n * `drawArraysInstanced`, `drawElementsInstanced`, `vertexAttribDivisor`\n * and the constant `VERTEX_ATTRIB_ARRAY_DIVISOR` are added to the\n * `WebGLRenderingContext`.\n *\n * Note that if you want to know if the extension exists you should\n * probably call `gl.getExtension` for each extension. Alternatively\n * you can check for the existence of the functions or constants that\n * are expected to be added. For example\n *\n *    if (gl.drawBuffers) {\n *      // Either WEBGL_draw_buffers was enabled OR you're running in WebGL2\n *      ....\n *\n * @param {WebGLRenderingContext} gl A WebGLRenderingContext\n * @memberOf module:twgl\n */function addExtensionsToContext(e){for(let t=0;t<No.length;++t)addExtensionToContext(e,No[t])}\n/**\n * Creates a webgl context.\n * @param {HTMLCanvasElement} canvas The canvas tag to get\n *     context from. If one is not passed in one will be\n *     created.\n * @return {WebGLRenderingContext} The created context.\n * @private\n */function create3DContext(e,t){const r=[\"webgl\",\"experimental-webgl\"];let n=null;for(let o=0;o<r.length;++o){n=e.getContext(r[o],t);if(n){$o.addExtensionsToContext&&addExtensionsToContext(n);break}}return n}\n/**\n * Gets a WebGL1 context.\n *\n * Note: Will attempt to enable Vertex Array Objects\n * and add WebGL2 entry points. (unless you first set defaults with\n * `twgl.setDefaults({enableVertexArrayObjects: false})`;\n *\n * @param {HTMLCanvasElement} canvas a canvas element.\n * @param {WebGLContextAttributes} [opt_attribs] optional webgl context creation attributes\n * @return {WebGLRenderingContext} The created context.\n * @memberOf module:twgl\n * @deprecated\n * @private\n */function getWebGLContext(e,t){const r=create3DContext(e,t);return r}\n/**\n * Creates a webgl context.\n *\n * Will return a WebGL2 context if possible.\n *\n * You can check if it's WebGL2 with\n *\n *     twgl.isWebGL2(gl);\n *\n * @param {HTMLCanvasElement} canvas The canvas tag to get\n *     context from. If one is not passed in one will be\n *     created.\n * @return {WebGLRenderingContext} The created context.\n */function createContext(e,t){const r=[\"webgl2\",\"webgl\",\"experimental-webgl\"];let n=null;for(let o=0;o<r.length;++o){n=e.getContext(r[o],t);if(n){$o.addExtensionsToContext&&addExtensionsToContext(n);break}}return n}\n/**\n * Gets a WebGL context.  Will create a WebGL2 context if possible.\n *\n * You can check if it's WebGL2 with\n *\n *    function isWebGL2(gl) {\n *      return gl.getParameter(gl.VERSION).indexOf(\"WebGL 2.0 \") == 0;\n *    }\n *\n * Note: For a WebGL1 context will attempt to enable Vertex Array Objects\n * and add WebGL2 entry points. (unless you first set defaults with\n * `twgl.setDefaults({enableVertexArrayObjects: false})`;\n *\n * @param {HTMLCanvasElement} canvas a canvas element.\n * @param {WebGLContextAttributes} [opt_attribs] optional webgl context creation attributes\n * @return {WebGLRenderingContext} The created context.\n * @memberOf module:twgl\n */function getContext(e,t){const r=createContext(e,t);return r}\n/**\n * Resize a canvas to match the size it's displayed.\n * @param {HTMLCanvasElement} canvas The canvas to resize.\n * @param {number} [multiplier] So you can pass in `window.devicePixelRatio` or other scale value if you want to.\n * @return {boolean} true if the canvas was resized.\n * @memberOf module:twgl\n */function resizeCanvasToDisplaySize(e,t){t=t||1;t=Math.max(0,t);const r=e.clientWidth*t|0;const n=e.clientHeight*t|0;if(e.width!==r||e.height!==n){e.width=r;e.height=n;return true}return false}export{addExtensionsToContext,G as attributes,bindFramebufferInfo,bindTransformFeedbackInfo,bindUniformBlock,canFilter,canGenerateMipmap,createAttribsFromArrays,createAttributeSetters,createBufferFromArray,createBufferFromTypedArray,createBufferInfoFromArrays,createBuffersFromArrays,createFramebufferInfo,createProgram,Kn as createProgramAsync,createProgramFromScripts,createProgramFromSources,createProgramInfo,Jn as createProgramInfoAsync,createProgramInfoFromProgram,createProgramInfos,so as createProgramInfosAsync,createPrograms,oo as createProgramsAsync,createSampler,createSamplers,createTexture,createTextures,createTransformFeedback,createTransformFeedbackInfo,createUniformBlockInfo,createUniformBlockInfoFromProgram,createUniformBlockSpecFromProgram,createUniformSetters,createVAOAndSetAttributes,createVAOFromBufferInfo,createVertexArrayInfo,uo as draw,drawBufferInfo,drawObjectList,Ro as framebuffers,getArray$1 as getArray_,getBytesPerElementForInternalFormat,getContext,getFormatAndTypeForInternalFormat,getGLTypeForTypedArray,getGLTypeForTypedArrayType,getNumComponentsForFormat,getNumComponents$1 as getNumComponents_,getTypedArrayTypeForGLType,getWebGLContext,ge as glEnumToString,P as isArrayBuffer,isWebGL1,isWebGL2,loadTextureFromUrl,a as m4,be as primitives,ao as programs,resizeCanvasToDisplaySize,resizeFramebufferInfo,resizeTexture,setAttribInfoBufferFromArray,setDefaults$2 as setAttributeDefaults_,setAttributePrefix,setAttributes,setBlockUniforms,setBuffersAndAttributes,setDefaultTextureColor,setDefaults,setEmptyTexture,setSamplerParameters,setDefaults$1 as setTextureDefaults_,setTextureFilteringForSize,setTextureFromArray,setTextureFromElement,setTextureParameters,setUniformBlock,setUniforms,ro as setUniformsAndBindTextures,Vr as textures,E as typedarrays,Ae as utils,t as v3,Do as vertexArrays};\n//# sourceMappingURL=twgl-full.module.js.map\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{createBufferInfoFromArrays,createProgramInfo,drawBufferInfo,resizeCanvasToDisplaySize,setBuffersAndAttributes,setUniforms}from\"twgl.js\";/** @framerDisableUnlink\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 200\n */export default function MeshGradient(props){const{baseColor,noise,animate}=props;const colors=props.colors.length!==0?props.colors:[{color:\"rgb(255,0,0)\",x:0,y:0,radius:10},{color:\"rgb(0,255,0)\",x:80,y:20,radius:10},{color:\"rgb(0,0,255)\",x:50,y:50,radius:10}];const canvasRef=element=>{if(!element)return;const gl=element.getContext(\"webgl\");if(!gl){console.error(\"WebGL not supported.\");return;}const vertexShaderSource=`\n                attribute vec4 position;\n\n                void main() {\n                    gl_Position = position;\n                }\n            `;const fragmentShaderSource=`\n                precision mediump float;\n\n                uniform vec2 u_resolution;\n                uniform vec4 u_baseColor; // Background color with alpha\n                uniform float u_noise;\n                uniform vec4 u_colors[${Math.max(1,colors.length)}];\n                uniform vec2 u_positions[${Math.max(1,colors.length)}];\n                uniform float u_radius[${Math.max(1,colors.length)}];\n\n                vec3 mod289(vec3 x) {\n                    return x - floor(x * (1.0 / 289.0)) * 289.0;\n                }\n                float mod289(float x) {\n                    return x - floor(x * (1.0 / 289.0)) * 289.0;\n                }\n                float permute(float x) {\n                    return mod289(((x * 34.0) + 10.0) * x);\n                }\n                vec2 rgrad2(vec2 p, float rot) {\n                    float u = permute(permute(p.x) + p.y) * 0.0243902439 + rot;\n                    u = fract(u) * 6.28318530718; // 2*pi\n                    return vec2(cos(u), sin(u));\n                }\n                vec3 psrdnoise(vec2 pos, vec2 per, float rot) {\n                    pos.y += 0.01;\n                    vec2 uv = vec2(pos.x + pos.y * 0.5, pos.y);\n                    vec2 i0 = floor(uv);\n                    vec2 f0 = fract(uv);\n                    vec2 i1 = (f0.x > f0.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);\n                    vec2 p0 = vec2(i0.x - i0.y * 0.5, i0.y);\n                    vec2 p1 = vec2(p0.x + i1.x - i1.y * 0.5, p0.y + i1.y);\n                    vec2 p2 = vec2(p0.x + 0.5, p0.y + 1.0);\n                    vec2 d0 = pos - p0;\n                    vec2 d1 = pos - p1;\n                    vec2 d2 = pos - p2;\n                    vec3 xw = mod(vec3(p0.x, p1.x, p2.x), per.x);\n                    vec3 yw = mod(vec3(p0.y, p1.y, p2.y), per.y);\n                    vec3 iuw = xw + 0.5 * yw;\n                    vec3 ivw = yw;\n                    vec2 g0 = rgrad2(vec2(iuw.x, ivw.x), rot);\n                    vec2 g1 = rgrad2(vec2(iuw.y, ivw.y), rot);\n                    vec2 g2 = rgrad2(vec2(iuw.z, ivw.z), rot);\n                    vec3 w = vec3(dot(g0, d0), dot(g1, d1), dot(g2, d2));\n                    vec3 t = 0.8 - vec3(dot(d0, d0), dot(d1, d1), dot(d2, d2));\n                    t = max(t, 0.0);\n                    vec3 t4 = t * t * t * t;\n                    return 11.0 * vec3(dot(t4, w));\n                }\n\n                vec4 blendAverage(vec4 base, vec4 blend) {\n                    return (base + blend) / 2.0;\n                }\n\n                // Elliptical distance calculation\n                float ellipticalDistance(vec2 uv, vec2 center, vec2 radii, float angle) {\n                    vec2 toUV = uv - center;\n\n                    // Rotate UV coordinates by the angle\n                    float cosA = cos(angle);\n                    float sinA = sin(angle);\n                    vec2 rotated = vec2(\n                        cosA * toUV.x + sinA * toUV.y,\n                        -sinA * toUV.x + cosA * toUV.y\n                    );\n\n                    // Scale coordinates to create an ellipse\n                    vec2 scaled = rotated / radii;\n\n                    // Return the distance in elliptical space\n                    return length(scaled);\n                }\n\n\n                void main() {\n                    vec2 uv = gl_FragCoord.xy / u_resolution;\n                    vec4 color = u_baseColor;\n                    float noiseIntensity = u_noise;\n                    vec2 canvasCenter = vec2(0.5, 0.5);\n\n                    for (int i = 0; i < ${Math.max(1,colors.length)}; i++) {\n                        vec2 position = u_positions[i];\n                        vec4 gradientColor = u_colors[i];\n                        float radius = u_radius[i];\n\n                        // Calculate the angle pointing towards the center\n                        vec2 toCenter = canvasCenter - position;\n                        toCenter.y = -toCenter.y;\n                        float angle = atan(toCenter.x, toCenter.y);\n\n                        // Gaussian weights for blending with elliptical distortion\n                        for (float dx = -2.0; dx <= 2.0; dx++) {\n                            for (float dy = -2.0; dy <= 2.0; dy++) {\n                                float noise = psrdnoise(uv * noiseIntensity, vec2(10.0, 10.0), 0.0).x;\n                                vec2 samplePos = position + vec2(dx, dy) * 0.005 + vec2(noise) * 0.01;\n\n                                vec2 radii = vec2(\n                                    radius, radius\n                                );\n\n                                float eDist = ellipticalDistance(uv, samplePos, radii, angle);\n                                float dist;\n                                if (eDist > 0.0) {\n                                    dist = eDist;\n                                } else {\n                                    dist = distance(uv, position);\n                                }\n\n                                // float dist = distance(uv, position);\n                                float weight = 1.0 - smoothstep(0.001, 0.5, dist);\n                                color = mix(color, blendAverage(color, gradientColor), weight * 0.1);\n                            }\n                        }\n                    }\n\n\n                    gl_FragColor = color;\n                }\n            `;const programInfo=createProgramInfo(gl,[vertexShaderSource,fragmentShaderSource]);const arrays={position:[-1,-1,0,1,-1,0,-1,1,0,-1,1,0,1,-1,0,1,1,0]};const bufferInfo=createBufferInfoFromArrays(gl,arrays);function render(time){if(!gl?.canvas)return;// Resize canvas\nresizeCanvasToDisplaySize(gl.canvas);gl.viewport(0,0,gl.canvas.width,gl.canvas.height);console.log(\"baseColor\",baseColor);const uBaseColor=parseColorString(baseColor);// Parse gradient colors\nconst colorArray=colors.map(c=>{const rgba=parseColorString(c.color);return[rgba.r/255,rgba.g/255,rgba.b/255,rgba.a];});const flattenedColors=colorArray.flat();// Animate positions over time\nconst positions=colors.map((c,i)=>{const offset=!animate?0:Math.sin(time*.001+i)*.1// Add oscillation\n;return[c.x/100+offset,1-c.y/100+offset];});const flattenedPositions=positions.flat();const radii=colors.map(c=>{return c.radius/10;});const flattenedRadii=radii.flat();const uniforms={u_resolution:[gl.canvas.width,gl.canvas.height],u_baseColor:[uBaseColor.r/255,uBaseColor.g/255,uBaseColor.b/255,uBaseColor.a],u_noise:noise,u_colors:new Float32Array(flattenedColors),u_positions:new Float32Array(flattenedPositions),u_radius:new Float32Array(flattenedRadii)};gl.useProgram(programInfo.program);setBuffersAndAttributes(gl,programInfo,bufferInfo);setUniforms(programInfo,uniforms);drawBufferInfo(gl,bufferInfo);const pixels=new Uint8Array(gl.canvas.width*gl.canvas.height*4);requestAnimationFrame(render);}requestAnimationFrame(render);};return /*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"}});}function hexToRgba(hex){// Remove '#' if present\nhex=hex.replace(/^#/,\"\");// Parse RGB values\nlet r,g,b,a=255// Default alpha to 255 (fully opaque)\n;if(hex.length===3||hex.length===4){// Shorthand hex format (#RGB or #RGBA)\nr=parseInt(hex[0]+hex[0],16);g=parseInt(hex[1]+hex[1],16);b=parseInt(hex[2]+hex[2],16);if(hex.length===4){a=parseInt(hex[3]+hex[3],16);}}else if(hex.length===6||hex.length===8){// Full hex format (#RRGGBB or #RRGGBBAA)\nr=parseInt(hex.substring(0,2),16);g=parseInt(hex.substring(2,4),16);b=parseInt(hex.substring(4,6),16);if(hex.length===8){a=parseInt(hex.substring(6,8),16);}}else{console.error(`Invalid HEX color: ${hex}`);return{r:0,g:0,b:0,a:1};}// Convert alpha from 0-255 to 0-1 range\nreturn{r,g,b,a:a/255};}function parseColorString(colorString){if(colorString.startsWith(\"#\")){// Hex color\nlet hex=colorString.replace(\"#\",\"\");if(hex.length===3){hex=hex.split(\"\").map(c=>c+c).join(\"\")// expand short hex\n;}if(hex.length!==6){console.error(`Invalid hex color string: ${colorString}`);return{r:0,g:0,b:0,a:1};}const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);return{r,g,b,a:1};}else{// rgb or rgba\nconst match=colorString.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*([01](?:\\.\\d+)?))?\\)/);if(!match){console.error(`Invalid color string: ${colorString}`);return{r:0,g:0,b:0,a:1};}return{r:parseInt(match[1],10),g:parseInt(match[2],10),b:parseInt(match[3],10),a:match[4]!==undefined?parseFloat(match[4]):1};}}addPropertyControls(MeshGradient,{baseColor:{title:\"Base Color\",type:ControlType.Color,defaultValue:\"#FFFFFF\"},noise:{title:\"Noise\",type:ControlType.Number,min:0,max:100,defaultValue:10},colors:{title:\"Colors\",type:ControlType.Array,defaultValue:[{color:\"#FF0000\",x:0,y:0,radius:10},{color:\"#00FF00\",x:80,y:20,radius:10},{color:\"#0000FF\",x:50,y:50,radius:10}],propertyControl:{title:\"Mesh Color\",type:ControlType.Object,controls:{color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#FFF\"},x:{title:\"X Position\",type:ControlType.Number,min:0,max:100,defaultValue:50},y:{title:\"Y Position\",type:ControlType.Number,min:0,max:100,defaultValue:50},radius:{title:\"Radius\",type:ControlType.Number,min:0,max:100,defaultValue:10}}}},animate:{title:\"Animate\",type:ControlType.Boolean,defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}});MeshGradient.defaultProps={baseColor:\"#FFFFFF\",noise:10,colors:[{color:\"rgb(255,0,0)\",x:0,y:0,radius:10},{color:\"rgb(0,255,0)\",x:80,y:20,radius:10},{color:\"rgb(0,0,255)\",x:50,y:50,radius:10}],animate:false};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MeshGradient\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"200\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MeshGradient.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";import*as React from\"react\";export const v0=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Turkiye\"})});export const v1=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Turkiye\"})});export const v2=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"India\"})});export const v3=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"India\"})});export const v4=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Egypt\"})});export const v5=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Egypt\"})});export const v6=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Korea\"})});export const v7=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Korea\"})});export const v8=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Vietnam\"})});export const v9=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Vietnam\"})});export const v10=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"USA\"})});export const v11=/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"USA\"})});\nexport const __FramerMetadata__ = {\"exports\":{\"v3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v10\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v0\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"v1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (a64543f)\nimport*as localizedValues from\"./H8vv7XCJM-0.js\";const valuesByLocaleId={WIqDSPvhA:localizedValues};export default function getLocalizedValue(key,locale){while(locale){const values=valuesByLocaleId[locale.id];if(values){const value=values[key];if(value)return value;}locale=locale.fallback;}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (a64543f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,getLoadingLazyAtYPosition,Image,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle1 from\"https://framerusercontent.com/modules/khtq2NBeolBt7N1PvEeE/N59Ohz0QLy13rsSQC6hR/kkO3Y9wn2.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/lDuV75Cmh4abzYHGxalO/Q3mcmCiPH7PQVRECZreW/t_aT0O9o5.js\";import getLocalizedValue from\"https://framerusercontent.com/modules/w5A9xilAs8Ul7pRH8Kb7/XeF29PEaW7rNf2mbG66t/H8vv7XCJM.js\";const cycleOrder=[\"Ev6tX62Vd\",\"okWXltfFe\",\"SoaamuZ8L\"];const serializationHash=\"framer-kWHkL\";const variantClassNames={Ev6tX62Vd:\"framer-v-h61v7s\",okWXltfFe:\"framer-v-1ig0mgj\",SoaamuZ8L:\"framer-v-1mwb9eb\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const transformTemplate2=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const humanReadableVariantMap={desktop:\"Ev6tX62Vd\",mobile:\"SoaamuZ8L\",tablet:\"okWXltfFe\"};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"Ev6tX62Vd\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"Ev6tX62Vd\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-h61v7s\",className,classNames),\"data-framer-name\":\"desktop\",layoutDependency:layoutDependency,layoutId:\"Ev6tX62Vd\",ref:refBinding,style:{...style},...addPropertyOverrides({okWXltfFe:{\"data-framer-name\":\"tablet\"},SoaamuZ8L:{\"data-framer-name\":\"mobile\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Image,{background:{alt:\"폴라리스쓰리디의 로봇이 활용되고있는 11개의 국가 지도\",fit:\"fill\",intrinsicHeight:784,intrinsicWidth:1188,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+(((componentViewport?.height||784)-0-784)/2+0+0)),pixelHeight:784,pixelWidth:1188,sizes:\"1188px\",src:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp\",srcSet:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp 1188w\"},className:\"framer-19hz4pg\",\"data-framer-name\":\"Map\",layoutDependency:layoutDependency,layoutId:\"ffFTBH6os\",...addPropertyOverrides({okWXltfFe:{background:{alt:\"폴라리스쓰리디의 로봇이 활용되고있는 11개의 국가 지도\",fit:\"fill\",intrinsicHeight:784,intrinsicWidth:1188,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+(((componentViewport?.height||437)-0-437)/2+0+0)),pixelHeight:784,pixelWidth:1188,sizes:\"662.1888px\",src:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp\",srcSet:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp 1188w\"}},SoaamuZ8L:{background:{alt:\"폴라리스쓰리디의 로봇이 활용되고있는 11개의 국가 지도\",fit:\"fill\",intrinsicHeight:784,intrinsicWidth:1188,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+(((componentViewport?.height||211)-0-211)/2+0+0)),pixelHeight:784,pixelWidth:1188,sizes:\"319.7296px\",src:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp\",srcSet:\"https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=512 512w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp?scale-down-to=1024 1024w,https://framerusercontent.com/images/nmGPqgLD02UhAikFKTIrky7eQCw.webp 1188w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1bbgnbd\",\"data-framer-name\":\"canada\",layoutDependency:layoutDependency,layoutId:\"xUmilYNXR\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},...addPropertyOverrides({okWXltfFe:{transformTemplate:transformTemplate1}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Canada\"})}),className:\"framer-19o9wdt\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"oSKBzpyKw\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Canada\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1xpmvi3\",layoutDependency:layoutDependency,layoutId:\"ej5Z4mBpf\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 170 66\" overflow=\"visible\"><path d=\"M 0 65.809 L 170 66 L 170 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 154.523 66\" overflow=\"visible\"><path d=\"M 0 63.5 L 154.523 66 L 154.523 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 45 38\" overflow=\"visible\"><path d=\"M 0 38 L 44 37 L 45 0\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1aqyxeg\",layoutDependency:layoutDependency,layoutId:\"fwUKOAl0M\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-qx5l2k\",layoutDependency:layoutDependency,layoutId:\"dbGGbV0BK\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1bz2n9c\",\"data-framer-name\":\"turkiye\",layoutDependency:layoutDependency,layoutId:\"i4_uzA6eW\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v0\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Turkiye\"})}),className:\"framer-1tx9t4g\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"OeEItaJwY\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v1\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"  Turkiye\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1iwwqek\",layoutDependency:layoutDependency,layoutId:\"f7lMhIkGQ\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 15 40\" overflow=\"visible\"><path d=\"M 0 40 L 15 21.5 L 15 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 8 45\" overflow=\"visible\"><path d=\"M 0 45 L 8 23 L 8 0\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1o1we7r\",layoutDependency:layoutDependency,layoutId:\"j5vaXzt9x\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-tag20r\",layoutDependency:layoutDependency,layoutId:\"LZBpYr4TX\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1u5ji5p\",\"data-framer-name\":\"india\",layoutDependency:layoutDependency,layoutId:\"zG37NONHp\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v2\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"India\"})}),className:\"framer-1o2k78b\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"jBE81UxTA\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v3\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"India  \"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-s6exxe\",layoutDependency:layoutDependency,layoutId:\"vWp6Bpydx\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 38 51\" overflow=\"visible\"><path d=\"M 38 0 L 25.5 51 L 0 51\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 17 42\" overflow=\"visible\"><path d=\"M 17 0 L 17 42 L 0 42\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-xxlxhw\",layoutDependency:layoutDependency,layoutId:\"gl3QvP2KA\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-15z57sv\",layoutDependency:layoutDependency,layoutId:\"A5vP6ijrA\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-164ha5b\",\"data-framer-name\":\"egypt\",layoutDependency:layoutDependency,layoutId:\"i6OjZYeff\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},transformTemplate:transformTemplate1,...addPropertyOverrides({okWXltfFe:{transformTemplate:undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v4\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Egypt\"})}),className:\"framer-191z6uk\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"rhhRrO_GV\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v5\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Egypt  \"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-v3bsxy\",layoutDependency:layoutDependency,layoutId:\"F6HkrT2XB\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 65.148 27\" overflow=\"visible\"><path d=\"M 65.148 0 L 22.648 27 L 0 27\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.844 14\" overflow=\"visible\"><path d=\"M 11.844 0 L 11.844 14 L 0 14\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-eo2kno\",layoutDependency:layoutDependency,layoutId:\"XpDJTJ_mR\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-q5eimt\",layoutDependency:layoutDependency,layoutId:\"HVKRVWl07\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-192moio\",\"data-framer-name\":\"hungry\",layoutDependency:layoutDependency,layoutId:\"QSfBDC9Bk\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},transformTemplate:transformTemplate1,...addPropertyOverrides({okWXltfFe:{transformTemplate:undefined},SoaamuZ8L:{transformTemplate:transformTemplate2}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Hungry\"})}),className:\"framer-1juhhpp\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"KZRrShVwJ\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Hungry\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1xl7n63\",layoutDependency:layoutDependency,layoutId:\"GOnD1O5u8\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 47.156 20\" overflow=\"visible\"><path d=\"M 47.156 20 L 0.156 20 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 47.656 20\" overflow=\"visible\"><path d=\"M 47.656 20 L 0 20 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 22 7.126\" overflow=\"visible\"><path d=\"M 22 0 L 15.5 1.188 L 0 7.126\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-x1c7h3\",layoutDependency:layoutDependency,layoutId:\"kw0nGza71\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-10lirqn\",layoutDependency:layoutDependency,layoutId:\"W2DI_B8Ee\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1w63hvw\",\"data-framer-name\":\"slavakia\",layoutDependency:layoutDependency,layoutId:\"ZEddB7O_J\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},transformTemplate:transformTemplate1,children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Slavakia\"})}),className:\"framer-1gx3jkl\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"NiBg2Pdzn\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Slavakia\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-5flljx\",layoutDependency:layoutDependency,layoutId:\"HmDvPVdHm\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 21.867 43\" overflow=\"visible\"><path d=\"M 0 43 L 21.836 19 L 21.867 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 23.094 45\" overflow=\"visible\"><path d=\"M 0 45 L 23.094 19 L 23.094 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 4.242 28\" overflow=\"visible\"><path d=\"M 0 28 L 4.242 25.5 L 1.742 0\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-bqqq4d\",layoutDependency:layoutDependency,layoutId:\"ImeB3eZ9U\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-rhzl7u\",layoutDependency:layoutDependency,layoutId:\"FnRDH08dD\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-7rp6by\",\"data-framer-name\":\"indonesia\",layoutDependency:layoutDependency,layoutId:\"k5HxbrVRY\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Indonesia\"})}),className:\"framer-v3utb\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"r9aWec4Iq\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Indonesia\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1t1rbik\",layoutDependency:layoutDependency,layoutId:\"AJ4ETbVYr\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 36 51\" overflow=\"visible\"><path d=\"M 36 0 L 25.5 51 L 0 51\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 14 47\" overflow=\"visible\"><path d=\"M 14 0 L 14 47 L 0 47\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-n3dzyu\",layoutDependency:layoutDependency,layoutId:\"PPQw3BDzZ\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1d1u6o3\",layoutDependency:layoutDependency,layoutId:\"vAmxG3rZc\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1s0nqty\",\"data-framer-name\":\"korea\",layoutDependency:layoutDependency,layoutId:\"ij8TBAljG\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v6\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Korea\"})}),className:\"framer-1ob3nxm\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"de8rb8JkA\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v7\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Korea\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1k8y76k\",layoutDependency:layoutDependency,layoutId:\"HjZ7NMlmf\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 36 39\" overflow=\"visible\"><path d=\"M 0 0 L 8.5 39 L 36 39\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 13.5 18\" overflow=\"visible\"><path d=\"M 0 0 L 5 18 L 13.5 18\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-anp1za\",layoutDependency:layoutDependency,layoutId:\"looNhj1ym\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-bma45g\",layoutDependency:layoutDependency,layoutId:\"cg8S6WPeo\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-and63z\",\"data-framer-name\":\"vietnam\",layoutDependency:layoutDependency,layoutId:\"kGISzycPf\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},transformTemplate:transformTemplate2,...addPropertyOverrides({okWXltfFe:{transformTemplate:undefined},SoaamuZ8L:{transformTemplate:undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v8\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Vietnam\"})}),className:\"framer-aaixc5\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"NZSxxGdrp\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v9\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Vietnam\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-i32zki\",layoutDependency:layoutDependency,layoutId:\"OvCrJDfjB\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 31 44.781\" overflow=\"visible\"><path d=\"M 31 44.781 L 14 27.281 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 30 63.5\" overflow=\"visible\"><path d=\"M 30 63.5 L 20 45.5 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 13 51\" overflow=\"visible\"><path d=\"M 13 51 L 6.5 47 L 0 0\" fill=\"transparent\" stroke-width=\"0.51\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-xh7d5r\",layoutDependency:layoutDependency,layoutId:\"Tp2Bg8yEj\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 41 80.301\" overflow=\"visible\"><path d=\"M 41 80.301 L 9.5 34.801 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 34 85\" overflow=\"visible\"><path d=\"M 34 85 L 9 49 L 0 0\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11 39\" overflow=\"visible\"><path d=\"M 11 39 L 0 0\" fill=\"transparent\" stroke-width=\"0.51\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1hnnpd0\",layoutDependency:layoutDependency,layoutId:\"P4oyzRQeq\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-qtp232\",layoutDependency:layoutDependency,layoutId:\"C3wLrUlwK\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-16jg1ei\",layoutDependency:layoutDependency,layoutId:\"cAONzGK57\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-bp2nhs\",\"data-framer-name\":\"brasil\",layoutDependency:layoutDependency,layoutId:\"GjmLhsh2y\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},...addPropertyOverrides({okWXltfFe:{transformTemplate:transformTemplate1},SoaamuZ8L:{transformTemplate:transformTemplate1}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Brasil\"})}),className:\"framer-102ipcf\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"xoFOyxmU_\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Brasil\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-mk43bf\",layoutDependency:layoutDependency,layoutId:\"b7ulrH5Xa\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 84.5 94\" overflow=\"visible\"><path d=\"M 0 0 L 84.5 0 L 77 94\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({okWXltfFe:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 64.578 89\" overflow=\"visible\"><path d=\"M 0 0 L 64.578 0 L 58.734 89\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'},SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 30.477 54\" overflow=\"visible\"><path d=\"M 0 0 L 30.477 0 L 24.782 54\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-3yx1fu\",layoutDependency:layoutDependency,layoutId:\"uUH_gc98L\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1j1hcvx\",layoutDependency:layoutDependency,layoutId:\"wFfmyH1E7\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1lapca7\",layoutDependency:layoutDependency,layoutId:\"OYh52FcVr\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 43 60\" overflow=\"visible\"><path d=\"M 0 0 L 38.5 0 L 43 60\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.962 43\" overflow=\"visible\"><path d=\"M 0 0 L 9.462 0 L 11.962 43\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1w4097w\",layoutDependency:layoutDependency,layoutId:\"eL2gqHUCp\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-bxzjmj\",\"data-framer-name\":\"mexico\",layoutDependency:layoutDependency,layoutId:\"zCJefNAeR\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Mexico\"})}),className:\"framer-1drl9f5\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"RI0hyd1ua\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"Mexico\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-2rtu5h\",layoutDependency:layoutDependency,layoutId:\"Bz5pZIbbO\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 30 71\" overflow=\"visible\"><path d=\"M 30 0 L 30 71 L 0 71\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 19 21\" overflow=\"visible\"><path d=\"M 19 0 L 19 21 L 0 21\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-8qgx8r\",layoutDependency:layoutDependency,layoutId:\"J2XRXE1iH\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1tzq31d\",layoutDependency:layoutDependency,layoutId:\"kcmEEGPpn\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-qie84a\",\"data-framer-name\":\"usa\",layoutDependency:layoutDependency,layoutId:\"VQF7YRMm2\",style:{background:\"linear-gradient(135deg, rgb(107, 228, 255) 0%, rgb(62, 143, 245) 100%)\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},transformTemplate:transformTemplate2,...addPropertyOverrides({okWXltfFe:{transformTemplate:undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:getLocalizedValue(\"v10\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1saz27q\",\"data-styles-preset\":\"t_aT0O9o5\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"USA\"})}),className:\"framer-ujuelq\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"GMA5pcaYX\",style:{\"--extracted-r6o4lv\":\"var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{children:getLocalizedValue(\"v11\",activeLocale)??/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1fhqs9p\",\"data-styles-preset\":\"kkO3Y9wn2\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-45922b97-fae3-4712-a4cf-1c4c7c37d1ba, rgb(254, 254, 254)))\"},children:\"USA\"})})}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1t1w455\",layoutDependency:layoutDependency,layoutId:\"UBbLyCRyU\",opacity:1,requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 85.5 47.691\" overflow=\"visible\"><path d=\"M 85.5 0 L 0 0 L 0.5 47.691\" fill=\"transparent\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 31.5 5.877\" overflow=\"visible\"><path d=\"M 31.5 0 L 6 0.102 L 0 5.877\" fill=\"transparent\" stroke-width=\"0.5\" stroke=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\" stroke-linecap=\"round\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1a3gfiy\",layoutDependency:layoutDependency,layoutId:\"DarL7FRbp\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-w4bpl6\",layoutDependency:layoutDependency,layoutId:\"b1HGrt0XQ\",opacity:1,requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 5 5\" overflow=\"visible\"><path d=\"M 2.5 0 C 3.881 0 5 1.119 5 2.5 C 5 3.881 3.881 5 2.5 5 C 1.119 5 0 3.881 0 2.5 C 0 1.119 1.119 0 2.5 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>',withExternalLayout:true,...addPropertyOverrides({SoaamuZ8L:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2 2\" overflow=\"visible\"><path d=\"M 1 0 C 1.552 0 2 0.448 2 1 C 2 1.552 1.552 2 1 2 C 0.448 2 0 1.552 0 1 C 0 0.448 0.448 0 1 0 Z\" fill=\"var(--token-22dcba30-66fd-4ad8-a63f-5b24a5dc61e2, rgb(0, 0, 0))\"></path></svg>'}},baseVariant,gestureVariant)})]})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-kWHkL.framer-ii7815, .framer-kWHkL .framer-ii7815 { display: block; }\",\".framer-kWHkL.framer-h61v7s { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 1200px; }\",\".framer-kWHkL .framer-19hz4pg { aspect-ratio: 1.5153061224489797 / 1; flex: none; height: var(--framer-aspect-ratio-supported, 784px); overflow: visible; position: relative; width: 1188px; }\",\".framer-kWHkL .framer-1bbgnbd { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 386px; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; top: 161px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-19o9wdt, .framer-kWHkL .framer-1tx9t4g, .framer-kWHkL .framer-1o2k78b, .framer-kWHkL .framer-191z6uk, .framer-kWHkL .framer-1juhhpp, .framer-kWHkL .framer-1gx3jkl, .framer-kWHkL .framer-v3utb, .framer-kWHkL .framer-1ob3nxm, .framer-kWHkL .framer-aaixc5, .framer-kWHkL .framer-102ipcf, .framer-kWHkL .framer-1drl9f5, .framer-kWHkL .framer-ujuelq { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-kWHkL .framer-1xpmvi3 { height: 66px; left: -162px; position: absolute; top: 13px; width: 170px; }\",\".framer-kWHkL .framer-1aqyxeg { height: 5px; left: 6px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-qx5l2k { height: 5px; left: -164px; position: absolute; top: 77px; width: 5px; }\",\".framer-kWHkL .framer-1bz2n9c { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; right: 412px; top: 324px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-1iwwqek { height: 40px; left: -6px; position: absolute; top: 14px; width: 15px; }\",\".framer-kWHkL .framer-1o1we7r { height: 5px; left: -8px; position: absolute; top: 52px; width: 5px; }\",\".framer-kWHkL .framer-tag20r { height: 5px; left: 7px; position: absolute; top: 12px; width: 5px; }\",\".framer-kWHkL .framer-1u5ji5p { align-content: center; align-items: center; bottom: 273px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; right: 415px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-s6exxe { height: 51px; left: 58px; position: absolute; top: -38px; width: 38px; }\",\".framer-kWHkL .framer-xxlxhw { height: 5px; left: 94px; position: absolute; top: -40px; width: 5px; }\",\".framer-kWHkL .framer-15z57sv { height: 5px; left: 56px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-164ha5b { align-content: flex-end; align-items: flex-end; bottom: 297px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 49%; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-v3bsxy { height: 27px; left: 64px; position: absolute; top: -14px; width: 65px; }\",\".framer-kWHkL .framer-eo2kno { height: 5px; left: 127px; position: absolute; top: -16px; width: 5px; }\",\".framer-kWHkL .framer-q5eimt { height: 5px; left: 62px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-192moio { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 47%; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; top: 317px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-1xl7n63 { height: 20px; left: 72px; position: absolute; top: 13px; width: 47px; }\",\".framer-kWHkL .framer-x1c7h3 { height: 5px; left: 118px; position: absolute; top: 31px; width: 5px; }\",\".framer-kWHkL .framer-10lirqn, .framer-kWHkL .framer-1tzq31d { height: 5px; left: 69px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-1w63hvw { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 53%; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; top: 282px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-5flljx { height: 43px; left: 60px; position: absolute; top: 14px; width: 22px; }\",\".framer-kWHkL .framer-bqqq4d { height: 5px; left: 58px; position: absolute; top: 55px; width: 5px; }\",\".framer-kWHkL .framer-rhzl7u { height: 5px; left: 79px; position: absolute; top: 12px; width: 5px; }\",\".framer-kWHkL .framer-7rp6by { align-content: center; align-items: center; bottom: 185px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; right: 283px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-1t1rbik { height: 51px; left: 86px; position: absolute; top: -38px; width: 36px; }\",\".framer-kWHkL .framer-n3dzyu { height: 5px; left: 120px; position: absolute; top: -40px; width: 5px; }\",\".framer-kWHkL .framer-1d1u6o3 { height: 5px; left: 84px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-1s0nqty { align-content: flex-start; align-items: flex-start; bottom: 323px; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: flex-start; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; right: 108px; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-1k8y76k { height: 39px; left: -26px; position: absolute; top: -26px; width: 36px; }\",\".framer-kWHkL .framer-anp1za { height: 5px; left: -28px; position: absolute; top: -29px; width: 5px; }\",\".framer-kWHkL .framer-bma45g, .framer-kWHkL .framer-1hnnpd0 { height: 5px; left: 8px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL .framer-and63z { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; right: 232px; top: 52%; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-i32zki { height: 45px; left: 10px; position: absolute; top: 13px; width: 31px; }\",\".framer-kWHkL .framer-xh7d5r { height: 81px; left: 10px; position: absolute; top: 13px; width: 41px; }\",\".framer-kWHkL .framer-qtp232 { height: 5px; left: 39px; position: absolute; top: 56px; width: 5px; }\",\".framer-kWHkL .framer-16jg1ei { height: 5px; left: 49px; position: absolute; top: 90px; width: 5px; }\",\".framer-kWHkL .framer-bp2nhs { align-content: center; align-items: center; bottom: 136px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 473px; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-mk43bf { height: 94px; left: -69px; position: absolute; top: -81px; width: 85px; }\",\".framer-kWHkL .framer-3yx1fu { height: 5px; left: -71px; position: absolute; top: -83px; width: 5px; }\",\".framer-kWHkL .framer-1j1hcvx { height: 5px; left: 6px; position: absolute; top: 10px; width: 5px; }\",\".framer-kWHkL .framer-1lapca7 { height: 60px; left: -35px; position: absolute; top: -47px; width: 43px; }\",\".framer-kWHkL .framer-1w4097w { height: 5px; left: -37px; position: absolute; top: -49px; width: 5px; }\",\".framer-kWHkL .framer-bxzjmj { align-content: center; align-items: center; bottom: 253px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 146px; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-2rtu5h { height: 71px; left: 72px; position: absolute; top: -58px; width: 30px; }\",\".framer-kWHkL .framer-8qgx8r { height: 5px; left: 100px; position: absolute; top: -61px; width: 5px; }\",\".framer-kWHkL .framer-qie84a { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; left: 84px; overflow: visible; padding: 2px 16px 2px 16px; position: absolute; top: 52%; width: min-content; z-index: 1; }\",\".framer-kWHkL .framer-1t1w455 { height: 48px; left: 52px; position: absolute; top: -34px; width: 86px; }\",\".framer-kWHkL .framer-1a3gfiy { height: 5px; left: 135px; position: absolute; top: -37px; width: 5px; }\",\".framer-kWHkL .framer-w4bpl6 { height: 5px; left: 50px; position: absolute; top: 11px; width: 5px; }\",\".framer-kWHkL.framer-v-1ig0mgj.framer-h61v7s { max-width: 682px; width: 682px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-19hz4pg { height: var(--framer-aspect-ratio-supported, 437px); order: 26; width: 662px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1bbgnbd { left: 47%; order: 0; top: 70px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1xpmvi3 { left: -146px; width: 155px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-qx5l2k { left: -148px; top: 74px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1bz2n9c { order: 1; right: 200px; top: 161px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1u5ji5p { bottom: 126px; order: 2; right: 243px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-164ha5b { bottom: 152px; left: 268px; order: 3; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-192moio { left: 246px; order: 4; top: 167px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1xl7n63 { left: 71px; width: 48px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-x1c7h3 { left: 119px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-10lirqn { top: 12px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1w63hvw { left: 52%; order: 5; top: 132px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-5flljx { height: 45px; left: 58px; width: 23px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-bqqq4d { left: 56px; top: 57px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-7rp6by { bottom: 78px; order: 6; right: 170px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1s0nqty { bottom: 161px; order: 7; right: 21px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-anp1za { top: -28px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-and63z { order: 8; right: 107px; top: 174px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-aaixc5, .framer-kWHkL.framer-v-1mwb9eb .framer-1juhhpp, .framer-kWHkL.framer-v-1mwb9eb .framer-aaixc5, .framer-kWHkL.framer-v-1mwb9eb .framer-102ipcf { order: 0; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-i32zki { height: 64px; left: 7px; order: 1; top: 14px; width: 30px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-xh7d5r { height: 85px; left: 7px; order: 2; top: 14px; width: 34px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-1hnnpd0 { left: 5px; order: 3; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-qtp232 { left: 35px; order: 4; top: 76px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-16jg1ei { left: 39px; order: 5; top: 97px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-bp2nhs { bottom: 38px; left: 45%; order: 9; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-mk43bf { height: 89px; left: -50px; top: -76px; width: 65px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-3yx1fu { left: -52px; top: -78px; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-bxzjmj { bottom: 96px; left: 40px; order: 10; }\",\".framer-kWHkL.framer-v-1ig0mgj .framer-qie84a { bottom: 176px; left: 11px; order: 11; top: unset; }\",\".framer-kWHkL.framer-v-1mwb9eb.framer-h61v7s { width: 330px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-19hz4pg { height: var(--framer-aspect-ratio-supported, 211px); order: 26; width: 320px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1bbgnbd { left: 109px; order: 0; padding: 2px 8px 2px 8px; top: 18px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1xpmvi3 { height: 38px; left: -40px; top: 12px; width: 45px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1aqyxeg { height: 2px; left: 4px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-qx5l2k { height: 2px; left: -41px; top: 49px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1bz2n9c { align-content: flex-end; align-items: flex-end; order: 1; padding: 1px 6px 1px 6px; right: 80px; top: 49px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1iwwqek { height: 45px; left: -4px; top: 11px; width: 8px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1o1we7r { height: 2px; left: -5px; top: 55px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-tag20r, .framer-kWHkL.framer-v-1mwb9eb .framer-bma45g { height: 2px; left: 3px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1u5ji5p { align-content: flex-start; align-items: flex-start; bottom: 39px; order: 2; padding: 1px 6px 1px 6px; right: 113px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-s6exxe { height: 42px; left: 40px; top: -31px; width: 17px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-xxlxhw { height: 2px; left: 56px; top: -32px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-15z57sv { height: 2px; left: 39px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-164ha5b { bottom: 68px; left: 47%; order: 3; padding: 1px 6px 1px 6px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-v3bsxy { height: 14px; left: 48px; top: -3px; width: 12px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-eo2kno { height: 2px; left: 59px; top: -4px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-q5eimt { height: 2px; left: 47px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-192moio { left: 108px; order: 4; padding: 1px 6px 1px 6px; top: 49%; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1xl7n63 { height: 7px; left: 50px; order: 1; top: 4px; width: 22px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-x1c7h3 { height: 2px; left: 71px; order: 2; top: 3px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-10lirqn { height: 2px; left: 49px; order: 3; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1w63hvw { left: 47%; order: 5; padding: 1px 6px 1px 6px; top: 54px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-5flljx { height: 28px; left: 55px; top: 11px; width: 4px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-bqqq4d { height: 2px; left: 54px; top: 39px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-rhzl7u { height: 2px; left: 56px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-7rp6by { bottom: 12px; order: 6; padding: 1px 6px 1px 6px; right: 80px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1t1rbik { height: 47px; left: 63px; top: -36px; width: 14px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-n3dzyu { height: 2px; left: 76px; top: -37px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1d1u6o3 { height: 2px; left: 62px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1s0nqty { bottom: 74px; order: 7; padding: 1px 6px 1px 6px; right: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1k8y76k { height: 18px; left: -10px; top: -7px; width: 14px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-anp1za { height: 2px; left: -10px; top: -8px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-and63z { order: 8; padding: 1px 6px 1px 6px; right: 32px; top: 72px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-i32zki { height: 51px; left: 4px; order: 1; top: 11px; width: 13px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-xh7d5r { height: 39px; left: 4px; order: 2; top: 11px; width: 11px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1hnnpd0 { height: 2px; left: 3px; order: 3; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-qtp232 { height: 2px; left: 14px; order: 4; top: 49px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-16jg1ei { height: 2px; left: 16px; order: 5; top: 61px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-bp2nhs { bottom: 4px; left: 46%; order: 9; padding: 1px 6px 1px 6px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-mk43bf { height: 54px; left: -21px; order: 1; top: -43px; width: 31px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-3yx1fu { height: 2px; left: -22px; order: 2; top: -44px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1j1hcvx { height: 2px; left: 3px; order: 3; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1lapca7 { height: 43px; left: -8px; order: 4; top: -32px; width: 12px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1w4097w { height: 2px; left: -9px; order: 5; top: -33px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-bxzjmj { bottom: 59px; left: 0px; order: 10; padding: 1px 6px 1px 6px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-2rtu5h { height: 21px; left: 49px; top: -10px; width: 19px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-8qgx8r { height: 2px; left: 67px; top: -11px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1tzq31d { height: 2px; left: 48px; top: 10px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-qie84a { left: 10px; order: 11; padding: 1px 6px 1px 6px; top: 48%; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1t1w455 { height: 6px; left: 35px; top: 5px; width: 32px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-1a3gfiy { height: 2px; left: 66px; top: 4px; width: 2px; }\",\".framer-kWHkL.framer-v-1mwb9eb .framer-w4bpl6 { height: 2px; left: 34px; top: 10px; width: 2px; }\",...sharedStyle.css,...sharedStyle1.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 784\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"okWXltfFe\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,\"682px\",null,null]},\"SoaamuZ8L\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerH8vv7XCJM=withCSS(Component,css,\"framer-kWHkL\");export default FramerH8vv7XCJM;FramerH8vv7XCJM.displayName=\"map_wrap\";FramerH8vv7XCJM.defaultProps={height:784,width:1200};addPropertyControls(FramerH8vv7XCJM,{variant:{options:[\"Ev6tX62Vd\",\"okWXltfFe\",\"SoaamuZ8L\"],optionTitles:[\"desktop\",\"tablet\",\"mobile\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerH8vv7XCJM,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerH8vv7XCJM\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"784\",\"framerDisplayContentsDiv\":\"false\",\"framerColorSyntax\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"okWXltfFe\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,\\\"682px\\\",null,null]},\\\"SoaamuZ8L\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"0zBAgBG,SAAS,GAAiB4D,EAAE,CAAC,IAAML,EAAE,EAAM,OAAJ,EAAEK,EAASL,CAAE,CAQpD,SAAS,EAASK,EAAEL,EAAErD,EAAE,CAAC,IAAMC,EAAE,IAAI,EAAE,GAAuC,OAApC,IAAIA,EAAE,GAAGyD,GAAG,IAAIzD,EAAE,GAAGoD,GAAG,IAAIpD,EAAE,GAAGD,GAAUC,CAAE,CAQvF,SAAS,GAAIyD,EAAEL,EAAErD,EAAE,CAA4D,OAA3D,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAUrD,CAAE,CAQxF,SAAS,GAAS0D,EAAEL,EAAErD,EAAE,CAA4D,OAA3D,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAUrD,CAAE,CAW7F,SAAS,GAAK0D,EAAEL,EAAErD,EAAEC,EAAE,CAAuF,OAAtF,IAAK,IAAI,EAAE,GAAG,EAAE,GAAGyD,EAAE,GAAG1D,GAAGqD,EAAE,GAAGK,EAAE,IAAI,EAAE,GAAGA,EAAE,GAAG1D,GAAGqD,EAAE,GAAGK,EAAE,IAAI,EAAE,GAAGA,EAAE,GAAG1D,GAAGqD,EAAE,GAAGK,EAAE,IAAWzD,CAAE,CAWtH,SAAS,GAAMyD,EAAEL,EAAErD,EAAEC,EAAE,CAAgG,OAA/F,IAAK,IAAI,EAAE,GAAG,EAAE,GAAGyD,EAAE,GAAG1D,EAAE,IAAIqD,EAAE,GAAGK,EAAE,IAAI,EAAE,GAAGA,EAAE,GAAG1D,EAAE,IAAIqD,EAAE,GAAGK,EAAE,IAAI,EAAE,GAAGA,EAAE,GAAG1D,EAAE,IAAIqD,EAAE,GAAGK,EAAE,IAAWzD,CAAE,CAUhI,SAAS,GAAIyD,EAAEL,EAAErD,EAAE,CAA0F,OAAzF,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI0D,EAAE,GAAGL,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAIK,EAAE,GAAGL,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAIK,EAAE,GAAGL,EAAE,GAAG,CAAQrD,CAAE,CAUtH,SAAS,GAAI0D,EAAEL,EAAErD,EAAE,CAA0F,OAAzF,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI0D,EAAE,GAAGL,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAIK,EAAE,GAAGL,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAIK,EAAE,GAAGL,EAAE,GAAG,CAAQrD,CAAE,CAQtH,SAAS,EAAU0D,EAAEL,EAAErD,EAAE,CAAmD,OAAlD,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,EAAE,GAAGK,EAAE,GAAGL,EAAE,EAAE,GAAGK,EAAE,GAAGL,EAASrD,CAAE,CAQrF,SAAS,GAAU0D,EAAEL,EAAErD,EAAE,CAAmD,OAAlD,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,EAAE,GAAGK,EAAE,GAAGL,EAAE,EAAE,GAAGK,EAAE,GAAGL,EAASrD,CAAE,CASrF,SAAS,GAAM0D,EAAEL,EAAErD,EAAE,CAAC,IAAK,IAAI,EAAE,GAAG,IAAMC,EAAEyD,EAAE,GAAGL,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAASnD,EAAEwD,EAAE,GAAGL,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAA0C,OAAvC,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGpD,EAAE,EAAE,GAAGC,EAASF,CAAE,CAQ5I,SAAS,GAAIG,EAAEuD,EAAE,CAAC,OAAOvD,EAAE,GAAGuD,EAAE,GAAGvD,EAAE,GAAGuD,EAAE,GAAGvD,EAAE,GAAGuD,EAAE,EAAG,CAMvD,SAAS,GAASvD,EAAE,CAAC,MAAO,MAAK,KAAKA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAG,AAAC,CAMrE,SAAS,GAASA,EAAE,CAAC,OAAOA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAG,CAO1D,SAAS,GAASA,EAAEuD,EAAE,CAAC,IAAML,EAAElD,EAAE,GAAGuD,EAAE,GAAS1D,EAAEG,EAAE,GAAGuD,EAAE,GAASzD,EAAEE,EAAE,GAAGuD,EAAE,GAAG,MAAO,MAAK,KAAKL,EAAEA,EAAErD,EAAEA,EAAEC,EAAEA,EAAE,AAAC,CAO3G,SAAS,GAAWE,EAAEuD,EAAE,CAAC,IAAML,EAAElD,EAAE,GAAGuD,EAAE,GAAS1D,EAAEG,EAAE,GAAGuD,EAAE,GAASzD,EAAEE,EAAE,GAAGuD,EAAE,GAAG,OAAOL,EAAEA,EAAErD,EAAEA,EAAEC,EAAEA,CAAE,CAOlG,SAAS,GAAUyD,EAAEL,EAAE,CAAC,IAAK,IAAI,EAAE,GAAG,IAAMrD,EAAE0D,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAAGA,EAAE,GAASzD,EAAE,KAAK,KAAKD,EAAE,QAAIC,EAAE,MAAM,EAAE,GAAGyD,EAAE,GAAGzD,EAAE,EAAE,GAAGyD,EAAE,GAAGzD,EAAE,EAAE,GAAGyD,EAAE,GAAGzD,IAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAASoD,CAAE,CAOnL,SAAS,GAASK,EAAEL,EAAE,CAAgD,OAA/C,IAAK,IAAI,EAAE,GAAG,EAAE,IAAIK,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAUL,CAAE,CAO/E,SAAS,GAAOK,EAAEL,EAAE,CAA6C,OAA5C,IAAK,IAAI,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAUL,CAAE,CAU1E,SAAS,GAAWK,EAAEL,EAAErD,EAAE,CAA4D,OAA3D,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAUrD,CAAE,CAU/F,SAAS,GAAO0D,EAAEL,EAAErD,EAAE,CAA4D,OAA3D,IAAK,IAAI,EAAE,GAAG,EAAE,GAAG0D,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAG,EAAE,GAAGK,EAAE,GAAGL,EAAE,GAAUrD,CAAE,CAa3F,SAAS,GAAeG,EAAE,CAAC,IAAMuD,EAAE,EAAM,OAAJ,EAAEvD,EAASuD,CAAE,CAOlD,SAAS,GAAOvD,EAAEuD,EAAE,CAA4M,OAA3M,IAAK,IAAI,EAAE,IAAI,EAAE,IAAIvD,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAI,EAAE,KAAKA,EAAE,IAAWuD,CAAE,UAAS,IAAQ,CAAC,MAAO,KAAI,EAAE,IAAI,KAAK,EAAE,AAAC,CAOpR,SAAS,GAAKvD,EAAEuD,EAAE,CAA4L,OAA3L,IAAK,IAAI,EAAE,IAAI,EAAE,GAAGvD,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAWuD,CAAE,CAOvN,SAAS,GAASvD,EAAE,CAAsI,OAArI,IAAK,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAASA,CAAE,CAOnK,SAAS,GAAUA,EAAEuD,EAAE,CAAgB,GAAf,IAAK,IAAI,EAAE,IAAOA,IAAIvD,EAAE,CAAC,IAAIkD,EAA0J,OAAxJ,EAAElD,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGkD,EAAE,EAAElD,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGkD,EAAE,EAAElD,EAAE,GAAG,EAAE,GAAGA,EAAE,IAAI,EAAE,IAAIkD,EAAE,EAAElD,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGkD,EAAE,EAAElD,EAAE,GAAG,EAAE,GAAGA,EAAE,IAAI,EAAE,IAAIkD,EAAE,EAAElD,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIkD,EAASK,CAAE,KAAM1D,EAAEG,EAAE,GAASF,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,GAASM,EAAEN,EAAE,GAASO,EAAEP,EAAE,GAASQ,EAAER,EAAE,IAAUS,EAAET,EAAE,IAAUU,EAAEV,EAAE,IAAUoD,EAAEpD,EAAE,IAAUmD,EAAEnD,EAAE,IAAUa,EAAEb,EAAE,IAA0H,OAAtH,EAAE,GAAGH,EAAE,EAAE,GAAGmD,EAAE,EAAE,GAAG1C,EAAE,EAAE,GAAGI,EAAE,EAAE,GAAGZ,EAAE,EAAE,GAAGmD,EAAE,EAAE,GAAG1C,EAAE,EAAE,GAAG6C,EAAE,EAAE,GAAGrD,EAAE,EAAE,GAAGK,EAAE,EAAE,IAAII,EAAE,EAAE,IAAI2C,EAAE,EAAE,IAAIlD,EAAE,EAAE,IAAII,EAAE,EAAE,IAAII,EAAE,EAAE,IAAII,EAAS0C,CAAE,CAO7iB,SAAS,GAAQvD,EAAEuD,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAM1D,EAAEG,EAAE,GAASF,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,GAASM,EAAEN,EAAE,GAASO,EAAEP,EAAE,GAASQ,EAAER,EAAE,IAAUS,EAAET,EAAE,IAAUU,EAAEV,EAAE,IAAUoD,EAAEpD,EAAE,IAAUmD,EAAEnD,EAAE,IAAUa,EAAEb,EAAE,IAAUc,EAAEN,EAAEK,EAAQE,EAAEoC,EAAE1C,EAAQO,EAAEZ,EAAES,EAAQI,EAAEkC,EAAE9C,EAAQa,EAAEd,EAAEK,EAAQU,EAAEX,EAAEH,EAAQe,EAAErB,EAAEc,EAAQQ,EAAE8B,EAAElD,EAAQqB,EAAEvB,EAAEU,EAAQc,EAAEf,EAAEP,EAAQuB,EAAEzB,EAAEM,EAAQoB,EAAErB,EAAEH,EAAQyB,EAAEpB,EAAE8C,EAAQE,EAAE5C,EAAEH,EAAQqB,EAAEoB,EAAEI,EAAQvB,EAAEnB,EAAEuC,EAAQnB,EAAEkB,EAAEzC,EAAQwB,GAAEzB,EAAE2C,EAAQjB,GAAEnC,EAAEuD,EAAQnB,GAAEvB,EAAEZ,EAAQoC,GAAErC,EAAEU,EAAQ4B,EAAE7B,EAAER,EAAQsC,GAAEvC,EAAEoD,EAAQZ,GAAEW,EAAElD,EAAQwC,GAAExB,EAAEmC,EAAEhC,EAAEV,EAAEW,EAAEkC,GAAGrC,EAAEkC,EAAEjC,EAAET,EAAEY,EAAEiC,GAASb,GAAExB,EAAEjB,EAAEsB,EAAEb,EAAEgB,EAAE6B,GAAGtC,EAAEhB,EAAEuB,EAAEd,EAAEe,EAAE8B,GAASZ,GAAExB,EAAElB,EAAEuB,EAAE4B,EAAEzB,EAAE4B,GAAGnC,EAAEnB,EAAEsB,EAAE6B,EAAExB,EAAE2B,GAASX,GAAEtB,EAAErB,EAAEwB,EAAE2B,EAAExB,EAAElB,GAAGW,EAAEpB,EAAEyB,EAAE0B,EAAEzB,EAAEjB,GAASmC,EAAE,GAAG7C,EAAEyC,GAAEU,EAAET,GAAEjC,EAAEkC,GAAE9B,EAAE+B,IAAid,OAA9c,EAAE,GAAGC,EAAEJ,GAAE,EAAE,GAAGI,EAAEH,GAAE,EAAE,GAAGG,EAAEF,GAAE,EAAE,GAAGE,EAAED,GAAE,EAAE,GAAGC,GAAG3B,EAAEiC,EAAEhC,EAAEV,EAAEa,EAAET,GAAGI,EAAEkC,EAAE/B,EAAEX,EAAEY,EAAER,IAAI,EAAE,GAAGgC,GAAG5B,EAAEjB,EAAEwB,EAAEf,EAAEgB,EAAEZ,GAAGK,EAAElB,EAAEuB,EAAEd,EAAEiB,EAAEb,IAAI,EAAE,GAAGgC,GAAGzB,EAAEpB,EAAEuB,EAAE4B,EAAEvB,EAAEf,GAAGM,EAAEnB,EAAEwB,EAAE2B,EAAExB,EAAEd,IAAI,EAAE,GAAGgC,GAAGxB,EAAErB,EAAE0B,EAAEyB,EAAExB,EAAElB,GAAGa,EAAEtB,EAAEyB,EAAE0B,EAAEvB,EAAEnB,IAAI,EAAE,GAAGoC,GAAGhB,EAAErB,EAAEwB,EAAEpB,EAAEqB,EAAEjB,GAAGyC,EAAEjD,EAAEuB,EAAEnB,EAAEsB,GAAElB,IAAI,EAAE,GAAG6B,GAAGY,EAAErD,EAAE+B,GAAEvB,EAAE0B,EAAEtB,GAAGa,EAAEzB,EAAEgC,GAAExB,EAAEyB,GAAErB,IAAI,EAAE,IAAI6B,GAAGd,EAAE3B,EAAEgC,GAAE5B,EAAE+B,GAAEvB,GAAGgB,EAAE5B,EAAE+B,GAAE3B,EAAEgC,GAAExB,IAAI,EAAE,IAAI6B,GAAGX,GAAE9B,EAAEiC,GAAE7B,EAAEgC,GAAE5B,GAAGqB,EAAE7B,EAAEkC,EAAE9B,EAAE+B,GAAE3B,IAAI,EAAE,IAAIiC,GAAGd,EAAEpB,EAAEuB,GAAEoB,EAAEG,EAAElD,GAAG0B,EAAEqB,EAAEzB,EAAEtB,EAAEyB,EAAErB,IAAI,EAAE,IAAIkC,GAAGR,GAAEiB,EAAEzB,EAAE3B,EAAEkC,GAAEzB,GAAGwB,GAAExB,EAAE2B,EAAEgB,EAAEG,EAAEvD,IAAI,EAAE,IAAI2C,GAAGV,GAAE5B,EAAEiC,GAAEc,EAAEtB,EAAE9B,GAAGqC,GAAEe,EAAEvB,EAAE7B,EAAEkC,GAAE7B,IAAI,EAAE,IAAIsC,GAAGN,GAAE5B,EAAEsB,EAAE/B,EAAEoC,EAAE/B,GAAG8B,GAAE9B,EAAEiC,GAAE7B,EAAEuB,GAAEhC,IAAWwD,CAAE,CAQtpC,SAAS,GAASvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,GAASM,EAAEN,EAAE,GAASO,EAAEP,EAAE,GAASQ,EAAER,EAAE,GAASS,EAAET,EAAE,IAAUU,EAAEV,EAAE,IAAUoD,EAAEpD,EAAE,IAAUmD,EAAEnD,EAAE,IAAUa,EAAEb,EAAE,IAAUc,EAAEd,EAAE,IAAUe,EAAEwC,EAAE,GAASvC,EAAEuC,EAAE,GAAStC,EAAEsC,EAAE,GAASrC,EAAEqC,EAAE,GAASpC,EAAEoC,EAAE,GAASnC,EAAEmC,EAAE,GAASlC,EAAEkC,EAAE,GAASjC,EAAEiC,EAAE,GAAShC,EAAEgC,EAAE,GAAS/B,EAAE+B,EAAE,GAAS9B,EAAE8B,EAAE,IAAU7B,EAAE6B,EAAE,IAAUD,EAAEC,EAAE,IAAU3B,EAAE2B,EAAE,IAAU1B,EAAE0B,EAAE,IAAUzB,EAAEyB,EAAE,IAA0V,OAAtV,EAAE,GAAGzD,EAAEiB,EAAEkC,EAAEjC,EAAET,EAAEU,EAAEmC,EAAElC,EAAE,EAAE,GAAGnB,EAAEgB,EAAEX,EAAEY,EAAER,EAAES,EAAEkC,EAAEjC,EAAE,EAAE,GAAGjB,EAAEc,EAAEV,EAAEW,EAAEP,EAAEQ,EAAEJ,EAAEK,EAAE,EAAE,GAAG8B,EAAEjC,EAAET,EAAEU,EAAEN,EAAEO,EAAEH,EAAEI,EAAE,EAAE,GAAGpB,EAAEqB,EAAE8B,EAAE7B,EAAEb,EAAEc,EAAE+B,EAAE9B,EAAE,EAAE,GAAGvB,EAAEoB,EAAEf,EAAEgB,EAAEZ,EAAEa,EAAE8B,EAAE7B,EAAE,EAAE,GAAGrB,EAAEkB,EAAEd,EAAEe,EAAEX,EAAEY,EAAER,EAAES,EAAE,EAAE,GAAG0B,EAAE7B,EAAEb,EAAEc,EAAEV,EAAEW,EAAEP,EAAEQ,EAAE,EAAE,GAAGxB,EAAEyB,EAAE0B,EAAEzB,EAAEjB,EAAEkB,EAAE2B,EAAE1B,EAAE,EAAE,GAAG3B,EAAEwB,EAAEnB,EAAEoB,EAAEhB,EAAEiB,EAAE0B,EAAEzB,EAAE,EAAE,IAAIzB,EAAEsB,EAAElB,EAAEmB,EAAEf,EAAEgB,EAAEZ,EAAEa,EAAE,EAAE,IAAIsB,EAAEzB,EAAEjB,EAAEkB,EAAEd,EAAEe,EAAEX,EAAEY,EAAE,EAAE,IAAI5B,EAAEwD,EAAEL,EAAErB,EAAErB,EAAEsB,EAAEuB,EAAEtB,EAAE,EAAE,IAAI/B,EAAEuD,EAAElD,EAAEwB,EAAEpB,EAAEqB,EAAEsB,EAAErB,EAAE,EAAE,IAAI7B,EAAEqD,EAAEjD,EAAEuB,EAAEnB,EAAEoB,EAAEhB,EAAEiB,EAAE,EAAE,IAAIkB,EAAEM,EAAEhD,EAAEsB,EAAElB,EAAEmB,EAAEf,EAAEgB,EAASjC,CAAE,CASnzB,SAAS,GAAeG,EAAEuD,EAAEL,EAAE,CAAgM,OAA/L,IAAK,IAAU,CAAIlD,IAAIkD,IAAG,EAAE,GAAGlD,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,OAAM,IAAIuD,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAI,EAASL,CAAE,CAQvO,SAAS,GAAelD,EAAEuD,EAAE,CAAkD,OAAjD,IAAK,GAAU,CAAC,EAAE,GAAGvD,EAAE,IAAI,EAAE,GAAGA,EAAE,IAAI,EAAE,GAAGA,EAAE,IAAWuD,CAAE,CAQvF,SAAS,GAAQvD,EAAEuD,EAAEL,EAAE,CAAC,IAAK,GAAU,CAAC,IAAMrD,EAAE0D,EAAE,EAAsC,OAApC,EAAE,GAAGvD,EAAEH,EAAE,GAAG,EAAE,GAAGG,EAAEH,EAAE,GAAG,EAAE,GAAGG,EAAEH,EAAE,GAAUqD,CAAE,CASjG,SAAS,GAAQlD,EAAEuD,EAAEL,EAAErD,EAAE,CAAC,IAAIG,IAAIH,EAAE,GAAKG,EAAEH,EAAE,EAAE,IAAMC,EAAEoD,EAAE,EAAsC,OAApC,EAAEpD,EAAE,GAAGyD,EAAE,GAAG,EAAEzD,EAAE,GAAGyD,EAAE,GAAG,EAAEzD,EAAE,GAAGyD,EAAE,GAAU1D,CAAE,CAqBxG,SAAS,GAAYG,EAAEuD,EAAE1D,EAAEC,EAAEC,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAME,EAAE,KAAK,IAAI,KAAK,GAAG,GAAG,GAAGD,EAAE,CAAOgD,EAAE,GAAGnD,EAAEC,GAAwI,OAArI,EAAE,GAAGG,EAAEsD,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGtD,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,KAAKJ,EAAEC,GAAGkD,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAInD,EAAEC,EAAEkD,EAAE,EAAE,EAAE,IAAI,EAASjD,CAAE,CAgB/O,SAAS,GAAMC,EAAEuD,EAAE1D,EAAEC,EAAEC,EAAEE,EAAE+C,EAAE,CAAsL,OAArL,IAAK,IAAI,EAAE,IAAI,EAAE,GAAG,GAAGO,EAAEvD,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAGF,EAAED,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAGE,EAAEE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAKsD,EAAEvD,IAAIA,EAAEuD,GAAG,EAAE,KAAKzD,EAAED,IAAIA,EAAEC,GAAG,EAAE,KAAKG,EAAEF,IAAIA,EAAEE,GAAG,EAAE,IAAI,EAAS+C,CAAE,CAmB5N,SAAS,GAAQhD,EAAEuD,EAAE1D,EAAEC,EAAEC,EAAEE,EAAE+C,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEM,EAAEvD,EAAQI,EAAEN,EAAED,EAAQQ,EAAEN,EAAEE,EAAmJ,OAAjJ,EAAE,GAAG,EAAEF,EAAEkD,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAElD,EAAEK,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIJ,EAAEuD,GAAGN,EAAE,EAAE,IAAInD,EAAED,GAAGO,EAAE,EAAE,IAAIH,EAAEI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAIN,EAAEE,EAAEI,EAAE,EAAE,IAAI,EAAS2C,CAAE,CAc7O,SAAS,GAAOhD,EAAEuD,EAAEtD,EAAE+C,EAAE,CAA2S,OAA1S,IAAK,IAAI,EAAE,IAAI,KAAK,GAAU,CAAC,KAAK,GAAU,CAAC,KAAK,GAAU,CAAC,GAAU,GAAShD,EAAEuD,EAAE,GAAE,CAAC,GAAE,CAAC,GAAU,GAAMtD,EAAE,GAAE,GAAE,CAAC,GAAE,CAAC,GAAU,GAAM,GAAE,GAAE,GAAE,CAAC,GAAE,CAAC,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAE,GAAG,EAAE,GAAG,GAAE,GAAG,EAAE,IAAI,GAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAID,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAI,EAASgD,CAAE,CAQ5U,SAAS,GAAYhD,EAAEuD,EAAE,CAA+I,OAA9I,IAAK,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAIvD,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAI,EAASuD,CAAE,CASjL,SAAS,GAAUvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAStD,EAAEsD,EAAE,GAASP,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,GAASM,EAAEN,EAAE,GAASO,EAAEP,EAAE,GAASQ,EAAER,EAAE,GAASS,EAAET,EAAE,GAASU,EAAEV,EAAE,GAASoD,EAAEpD,EAAE,GAASmD,EAAEnD,EAAE,IAAUa,EAAEb,EAAE,IAAUc,EAAEd,EAAE,IAAUe,EAAEf,EAAE,IAAUgB,EAAEhB,EAAE,IAAUiB,EAAEjB,EAAE,IAAoL,OAA7KA,IAAIH,IAAG,EAAE,GAAGmD,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAG7C,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAG0C,EAAE,EAAE,IAAID,EAAE,EAAE,IAAItC,KAAI,IAAImC,EAAElD,EAAEQ,EAAEP,EAAEW,EAAET,EAAEa,EAAE,EAAE,IAAImC,EAAEnD,EAAES,EAAER,EAAEqD,EAAEnD,EAAEc,EAAE,EAAE,IAAIX,EAAEN,EAAEU,EAAET,EAAEoD,EAAElD,EAAEe,EAAE,EAAE,IAAIX,EAAEP,EAAEW,EAAEV,EAAEc,EAAEZ,EAAEgB,EAASpB,CAAE,CAO/d,SAAS,GAAUG,EAAEuD,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAM1D,EAAE,KAAK,IAAIG,EAAE,CAAOF,EAAE,KAAK,IAAIE,EAAE,CAAwH,OAAvH,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGH,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIA,EAAE,EAAE,IAAID,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAS0D,CAAE,CAS/M,SAAS,GAAQvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,IAAUM,EAAEN,EAAE,IAAUO,EAAE,KAAK,IAAIgD,EAAE,CAAO/C,EAAE,KAAK,IAAI+C,EAAE,QAAC,EAAE,GAAGhD,EAAET,EAAEU,EAAEyC,EAAE,EAAE,GAAG1C,EAAER,EAAES,EAAEJ,EAAE,EAAE,GAAGG,EAAEN,EAAEO,EAAEH,EAAE,EAAE,GAAGE,EAAEyC,EAAExC,EAAEF,EAAE,EAAE,GAAGC,EAAE0C,EAAEzC,EAAEV,EAAE,EAAE,GAAGS,EAAEH,EAAEI,EAAET,EAAE,EAAE,IAAIQ,EAAEF,EAAEG,EAAEP,EAAE,EAAE,IAAIM,EAAED,EAAEE,EAAEwC,EAAKhD,IAAIH,IAAG,EAAE,GAAGG,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,KAAWH,CAAE,CAO9Y,SAAS,GAAUG,EAAEuD,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAM1D,EAAE,KAAK,IAAIG,EAAE,CAAOF,EAAE,KAAK,IAAIE,EAAE,CAAwH,OAAvH,EAAE,GAAGH,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGA,EAAE,EAAE,GAAG,EAAE,EAAE,IAAID,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAS0D,CAAE,CAS/M,SAAS,GAAQvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,IAAUM,EAAEN,EAAE,IAAUO,EAAE,KAAK,IAAIgD,EAAE,CAAO/C,EAAE,KAAK,IAAI+C,EAAE,QAAC,EAAE,GAAGhD,EAAET,EAAEU,EAAEyC,EAAE,EAAE,GAAG1C,EAAER,EAAES,EAAEJ,EAAE,EAAE,GAAGG,EAAEN,EAAEO,EAAEH,EAAE,EAAE,GAAGE,EAAEyC,EAAExC,EAAEF,EAAE,EAAE,GAAGC,EAAE0C,EAAEzC,EAAEV,EAAE,EAAE,GAAGS,EAAEH,EAAEI,EAAET,EAAE,EAAE,IAAIQ,EAAEF,EAAEG,EAAEP,EAAE,EAAE,IAAIM,EAAED,EAAEE,EAAEwC,EAAKhD,IAAIH,IAAG,EAAE,GAAGG,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,KAAWH,CAAE,CAO9Y,SAAS,GAAUG,EAAEuD,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAM1D,EAAE,KAAK,IAAIG,EAAE,CAAOF,EAAE,KAAK,IAAIE,EAAE,CAAwH,OAAvH,EAAE,GAAGH,EAAE,EAAE,GAAGC,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGD,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAS0D,CAAE,CAS/M,SAAS,GAAQvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEE,EAAE,GAASD,EAAEC,EAAE,GAASC,EAAED,EAAE,GAASgD,EAAEhD,EAAE,GAASiD,EAAEjD,EAAE,GAASI,EAAEJ,EAAE,GAASK,EAAEL,EAAE,GAASM,EAAEN,EAAE,GAASO,EAAE,KAAK,IAAIgD,EAAE,CAAO/C,EAAE,KAAK,IAAI+C,EAAE,QAAC,EAAE,GAAGhD,EAAET,EAAEU,EAAEyC,EAAE,EAAE,GAAG1C,EAAER,EAAES,EAAEJ,EAAE,EAAE,GAAGG,EAAEN,EAAEO,EAAEH,EAAE,EAAE,GAAGE,EAAEyC,EAAExC,EAAEF,EAAE,EAAE,GAAGC,EAAE0C,EAAEzC,EAAEV,EAAE,EAAE,GAAGS,EAAEH,EAAEI,EAAET,EAAE,EAAE,GAAGQ,EAAEF,EAAEG,EAAEP,EAAE,EAAE,GAAGM,EAAED,EAAEE,EAAEwC,EAAKhD,IAAIH,IAAG,EAAE,GAAGG,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,KAAWH,CAAE,CAW9Y,SAAS,GAAaG,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAIC,EAAEE,EAAE,GAAOD,EAAEC,EAAE,GAAOC,EAAED,EAAE,GAASgD,EAAE,KAAK,KAAKlD,EAAEA,EAAEC,EAAEA,EAAEE,EAAEA,EAAE,CAAW,AAAV,GAAG+C,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAMC,EAAEnD,EAAEA,EAAQM,EAAEL,EAAEA,EAAQM,EAAEJ,EAAEA,EAAQK,EAAE,KAAK,IAAIiD,EAAE,CAAOhD,EAAE,KAAK,IAAIgD,EAAE,CAAO/C,EAAE,EAAEF,EAAgM,OAA9L,EAAE,GAAG2C,GAAG,EAAEA,GAAG3C,EAAE,EAAE,GAAGR,EAAEC,EAAES,EAAEP,EAAEM,EAAE,EAAE,GAAGT,EAAEG,EAAEO,EAAET,EAAEQ,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGT,EAAEC,EAAES,EAAEP,EAAEM,EAAE,EAAE,GAAGH,GAAG,EAAEA,GAAGE,EAAE,EAAE,GAAGP,EAAEE,EAAEO,EAAEV,EAAES,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGT,EAAEG,EAAEO,EAAET,EAAEQ,EAAE,EAAE,GAAGR,EAAEE,EAAEO,EAAEV,EAAES,EAAE,EAAE,IAAIF,GAAG,EAAEA,GAAGC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAST,CAAE,CAW1Z,SAAS,GAAWG,EAAEuD,EAAE1D,EAAEC,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAIC,EAAEwD,EAAE,GAAOtD,EAAEsD,EAAE,GAAOP,EAAEO,EAAE,GAASN,EAAE,KAAK,KAAKlD,EAAEA,EAAEE,EAAEA,EAAE+C,EAAEA,EAAE,CAAW,AAAV,GAAGC,EAAE,GAAGA,EAAE,GAAGA,EAAE,IAAM7C,EAAEL,EAAEA,EAAQM,EAAEJ,EAAEA,EAAQK,EAAE0C,EAAEA,EAAQzC,EAAE,KAAK,IAAIV,EAAE,CAAOW,EAAE,KAAK,IAAIX,EAAE,CAAOY,EAAE,EAAEF,EAAQG,EAAEN,GAAG,EAAEA,GAAGG,EAAQ6C,EAAErD,EAAEE,EAAEQ,EAAEuC,EAAExC,EAAQ2C,EAAEpD,EAAEiD,EAAEvC,EAAER,EAAEO,EAAQK,EAAEd,EAAEE,EAAEQ,EAAEuC,EAAExC,EAAQM,EAAET,GAAG,EAAEA,GAAGE,EAAQQ,EAAEd,EAAE+C,EAAEvC,EAAEV,EAAES,EAAQQ,EAAEjB,EAAEiD,EAAEvC,EAAER,EAAEO,EAAQS,EAAEhB,EAAE+C,EAAEvC,EAAEV,EAAES,EAAQU,EAAEZ,GAAG,EAAEA,GAAGC,EAAQY,EAAEnB,EAAE,GAASoB,EAAEpB,EAAE,GAASqB,EAAErB,EAAE,GAASsB,EAAEtB,EAAE,GAASuB,EAAEvB,EAAE,GAASwB,EAAExB,EAAE,GAASyB,EAAEzB,EAAE,GAAS0B,EAAE1B,EAAE,GAASsD,EAAEtD,EAAE,GAAS4B,EAAE5B,EAAE,GAAS6B,EAAE7B,EAAE,IAAU8B,EAAE9B,EAAE,WAAI,EAAE,GAAGU,EAAES,EAAEiC,EAAE7B,EAAE4B,EAAEG,EAAE,EAAE,GAAG5C,EAAEU,EAAEgC,EAAE5B,EAAE2B,EAAEvB,EAAE,EAAE,GAAGlB,EAAEW,EAAE+B,EAAE3B,EAAE0B,EAAEtB,EAAE,EAAE,GAAGnB,EAAEY,EAAE8B,EAAE1B,EAAEyB,EAAErB,EAAE,EAAE,GAAGjB,EAAEM,EAAEL,EAAES,EAAER,EAAEuC,EAAE,EAAE,GAAGzC,EAAEO,EAAEN,EAAEU,EAAET,EAAEa,EAAE,EAAE,GAAGf,EAAEQ,EAAEP,EAAEW,EAAEV,EAAEc,EAAE,EAAE,GAAGhB,EAAES,EAAER,EAAEY,EAAEX,EAAEe,EAAE,EAAE,GAAGd,EAAEG,EAAEF,EAAEM,EAAEL,EAAEoC,EAAE,EAAE,GAAGtC,EAAEI,EAAEH,EAAEO,EAAEN,EAAEU,EAAE,EAAE,IAAIZ,EAAEK,EAAEJ,EAAEQ,EAAEP,EAAEW,EAAE,EAAE,IAAIb,EAAEM,EAAEL,EAAES,EAAER,EAAEY,EAAK9B,IAAIF,IAAG,EAAE,IAAIE,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,KAAWF,CAAE,CAUpyB,SAAS,GAAQE,EAAEuD,EAAE,CAA+I,OAA9I,IAAK,IAAI,EAAE,IAAI,EAAE,GAAGvD,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,IAAIA,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAASuD,CAAE,CAW7K,SAAS,GAAMvD,EAAEuD,EAAE1D,EAAE,CAAC,IAAK,IAAI,EAAE,IAAI,IAAMC,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAStD,EAAEsD,EAAE,UAAG,EAAE,GAAGzD,EAAEE,EAAE,GAAG,EAAE,GAAGF,EAAEE,EAAE,GAAG,EAAE,GAAGF,EAAEE,EAAE,GAAG,EAAE,GAAGF,EAAEE,EAAE,GAAG,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGC,EAAED,EAAE,GAAG,EAAE,GAAGC,EAAED,EAAE,GAAG,EAAE,IAAIC,EAAED,EAAE,IAAI,EAAE,IAAIC,EAAED,EAAE,IAAOA,IAAIH,IAAG,EAAE,IAAIG,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,IAAI,EAAE,IAAIA,EAAE,KAAWH,CAAE,CAUnS,SAAS,GAAeG,EAAEuD,EAAEL,EAAE,CAAC,IAAK,GAAU,CAAC,IAAMrD,EAAE0D,EAAE,GAASzD,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAStD,EAAEJ,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,IAAIA,EAAE,IAAiH,OAA7G,EAAE,IAAIH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAGA,EAAE,KAAKC,EAAE,EAAE,IAAIJ,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAGA,EAAE,KAAKC,EAAE,EAAE,IAAIJ,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,IAAIA,EAAE,KAAKC,EAASiD,CAAE,CAahP,SAAS,GAAmBlD,EAAEuD,EAAEL,EAAE,CAAC,IAAK,GAAU,CAAC,IAAMrD,EAAE0D,EAAE,GAASzD,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAkF,OAA/E,EAAE,GAAG1D,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,IAAWkD,CAAE,CAelL,SAAS,GAAkBlD,EAAEuD,EAAEL,EAAE,CAAC,IAAK,GAAU,CAAC,IAAMrD,EAAE,GAAQG,EAAE,CAAOF,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAStD,EAAEsD,EAAE,GAAkF,OAA/E,EAAE,GAAGzD,EAAED,EAAE,GAAGE,EAAEF,EAAE,GAAGI,EAAEJ,EAAE,GAAG,EAAE,GAAGC,EAAED,EAAE,GAAGE,EAAEF,EAAE,GAAGI,EAAEJ,EAAE,GAAG,EAAE,GAAGC,EAAED,EAAE,GAAGE,EAAEF,EAAE,GAAGI,EAAEJ,EAAE,IAAWqD,CAAE,CAOpM,SAAS,GAAuBlD,EAAE,CAAC,GAAGA,aAAa,UAAU,OAAO,GAAsC,GAAjCA,aAAa,YAAuBA,aAAa,kBAAkB,OAAO,GAAE,GAAGA,aAAa,WAAW,OAAOI,GAAE,GAAGJ,aAAa,YAAY,OAAO,GAAE,GAAGA,aAAa,WAAW,OAAO,GAAE,GAAGA,aAAa,YAAY,OAAO,GAAE,GAAGA,aAAa,aAAa,OAAO,GAAE,KAAM,CAAI,MAAM,+BAAA,AAAgC,CAO7X,SAAS,GAA2BA,EAAE,CAAC,GAAGA,IAAI,UAAU,OAAO,GAA6B,GAAxBA,IAAI,YAAuBA,IAAI,kBAAkB,OAAO,GAAE,GAAGA,IAAI,WAAW,OAAOI,GAAE,GAAGJ,IAAI,YAAY,OAAO,GAAE,GAAGA,IAAI,WAAW,OAAO,GAAE,GAAGA,IAAI,YAAY,OAAO,GAAE,GAAGA,IAAI,aAAa,OAAO,GAAE,KAAM,CAAI,MAAM,+BAAA,AAAgC,CAMzT,SAAS,GAA2BA,EAAE,CAAC,IAAMuD,EAAE,GAAEvD,GAAG,IAAIuD,EAAE,KAAM,CAAI,MAAM,kBAAA,CAAmB,OAAOA,CAAE,CAQtG,SAAS,GAAoBvD,EAAEuD,EAAEL,EAAE,CAAC,EAAE,QAAS,SAASlD,EAAE,CAAC,IAAMH,EAAE0D,EAAEvD,GAAG,QAAS,KAAIkD,EAAElD,GAAGH,EAAG,EAAE,AAAC,CAOhG,SAAS,GAAuBG,EAAEuD,EAAE,CAAC,OAAO,KAAKA,EAAE,CAAC,QAAS,SAASL,EAAE,CAAC,EAAE,eAAeA,EAAE,EAAE,EAAE,eAAeA,EAAE,GAAGK,EAAEL,GAAGlD,EAAEkD,GAAI,EAAE,AAAC,UAAS,GAAQ,GAAGlD,EAAE,CAAC,QAAQ,MAAM,GAAGA,EAAE,AAAC,UAAS,GAAO,GAAGA,EAAE,CAAC,QAAQ,KAAK,GAAGA,EAAE,AAAC,CAAgB,SAAS,GAAOA,EAAEuD,EAAE,CAAC,IAAIvD,UAAUA,GAAI,SAAS,OAAO,EAAM,IAAIkD,EAAE,GAAE,IAAIK,EAAE,CAAC,AAAIL,IAAG,EAAE,IAAI,QAAQ,GAAE,IAAIK,EAAEL,EAAE,MAAKrD,EAAE,EAAE,IAAIG,EAAE,CAAC,GAAGH,QAAS,GAAE,CAAC,IAAMC,EAAE,OAAO,UAAU,SAAS,KAAKE,EAAE,CAAiC,AAAhC,EAAE,EAAE,UAAU,EAAEF,EAAE,OAAO,EAAE,GAAGyD,EAAE,EAAE,IAAIvD,EAAEH,EAAE,AAAC,QAAOA,CAAE,UAAS,GAASG,EAAEuD,EAAE,CAAC,cAAc,YAAc,KAAa,GAAOA,EAAE,cAAc,AAAC,UAAS,GAAevD,EAAEuD,EAAE,CAAC,cAAc,kBAAoB,KAAa,GAAOA,EAAE,oBAAoB,AAAC,UAAS,GAAUvD,EAAEuD,EAAE,CAAC,cAAc,aAAe,KAAa,GAAOA,EAAE,eAAe,AAAC,UAAS,GAAUvD,EAAEuD,EAAE,CAAC,cAAc,aAAe,KAAa,GAAOA,EAAE,eAAe,AAAC,CAoBt0B,SAAS,GAAmBvD,EAAE,CAAC,GAAE,aAAaA,CAAE,UAAS,GAAcA,EAAE,CAAC,GAAuBA,EAAE,GAAE,AAAC,UAAS,GAAwBA,EAAEuD,EAAEL,EAAErD,EAAEC,EAAE,CAAmB,AAAlB,EAAE,WAAWyD,EAAEL,EAAE,CAAC,EAAE,WAAWK,EAAE1D,EAAEC,GAAG,GAAE,AAAC,CAW3L,SAAS,GAA2BE,EAAEuD,EAAEL,EAAErD,EAAE,CAAC,GAAG,GAASG,EAAEuD,EAAE,CAAC,OAAOA,EAAE,IAAK,EAAE,IAAMzD,EAAE,EAAE,cAAc,CAAoC,MAAnC,IAAwBE,EAAEkD,EAAEpD,EAAEyD,EAAE1D,EAAE,CAAQC,CAAE,UAAS,GAAUE,EAAE,CAAC,OAAOA,IAAI,SAAU,UAAS,GAAkCA,EAAE,CAAC,OAAOA,IAAI,WAAWA,IAAI,UAAW,UAAS,GAAWA,EAAE,CAAC,OAAOA,EAAE,OAAOA,EAAEA,EAAE,IAAK,CAAiD,SAAS,GAA2BA,EAAEuD,EAAE,CAAC,IAAIL,EAA8B,GAA5B,EAAE,GAAE,KAAKlD,EAAE,CAAC,EAAE,GAAE,KAAKA,EAAE,CAAC,EAAE,EAAKuD,EAAEL,EAAE,EAAE,KAAM,CAAI,OAAO,6CAA6ClD,EAAE,WAAWkD,EAAE,OAAOK,EAAE,qCAAqCL,EAAE,0BAAA,CAA2B,OAAOA,CAAE,UAAS,GAAmBlD,EAAEuD,EAAEL,EAAE,CAAC,OAAOlD,EAAE,eAAeA,EAAE,MAAM,GAA2BuD,EAAEL,GAAG,GAAWlD,EAAE,CAAC,OAAO,AAAC,UAAS,GAAeA,EAAEuD,EAAE,CAAC,GAAG,GAAEvD,EAAE,CAAC,OAAOA,EAAE,GAAG,GAAEA,EAAE,KAAK,CAAC,OAAOA,EAAE,KAAK,MAAM,QAAQA,EAAE,GAAGA,EAAE,CAAC,KAAKA,CAAE,GAAE,IAAIkD,EAAElD,EAAE,KAAK,GAAyCA,EAAE,KAAK,KAAM,GAA+C,OAAzCkD,IAAE,GAAUK,EAAE,CAAC,YAAY,aAAqB,IAAIL,EAAElD,EAAE,KAAM,UAAS,GAAiCA,EAAE,CAAC,cAAcA,GAAI,SAASA,EAAEA,EAAE,GAA2BA,EAAE,CAAC,EAAE,UAAS,GAAyCA,EAAE,CAAC,cAAcA,GAAI,SAAS,GAA2BA,EAAE,CAACA,GAAG,YAAa,UAAS,GAAuBA,EAAEuD,EAAE,CAAC,MAAM,CAAC,OAAOA,EAAE,OAAO,UAAU,GAAG,KAAK,GAAiCA,EAAE,KAAK,CAAC,UAAU,GAAyCA,EAAE,KAAK,AAAC,CAAC,UAAS,GAAqBvD,EAAEuD,EAAE,CAAC,IAAML,EAAEK,EAAE,MAAMA,EAAQ1D,EAAE,GAAyC0D,EAAE,KAAK,CAAOzD,EAAEoD,EAAErD,EAAE,kBAAwBE,EAAE,EAAE,cAAc,CAAmD,MAAlD,GAAE,WAAW,EAAEA,EAAE,CAAC,EAAE,WAAW,EAAED,EAAEyD,EAAE,UAAU,GAAE,CAAO,CAAC,OAAOxD,EAAE,UAAUmD,EAAE,KAAK,GAA2BrD,EAAE,CAAC,UAAUA,CAAE,CAAC,UAAS,GAA0BG,EAAEuD,EAAEL,EAAE,CAAC,IAAMrD,EAAE,GAAe0D,EAAEL,EAAE,CAAC,MAAM,CAAC,UAAUrD,EAAE,YAAY,OAAO,GAA2BG,EAAEH,MAAO,GAAE0D,EAAE,SAAS,CAAC,KAAK,GAAuB1D,EAAE,CAAC,UAAU,CAAE,CAAC,CAwKz1D,SAAS,GAAwBG,EAAEuD,EAAE,CAAC,IAAML,EAAE,CAAE,EAAswB,MAArwB,QAAO,KAAKK,EAAE,CAAC,QAAS,SAAS1D,EAAE,CAAC,IAAI,GAAUA,EAAE,CAAC,CAAC,IAAMC,EAAEyD,EAAE1D,GAASE,EAAED,EAAE,QAAQA,EAAE,MAAMA,EAAE,YAAY,GAAE,aAAaD,EAAE,GAAGC,EAAE,MAAM,CAAC,IAAI,MAAM,QAAQA,EAAE,MAAM,GAAG,GAAEA,EAAE,MAAM,CAAC,KAAM,CAAI,MAAM,yCAAA,CAA0C,EAAEC,GAAG,CAAC,MAAMD,EAAE,KAAM,CAAC,KAAI,CAAC,IAAIyD,EAAE,EAAEzD,EAAE,QAAQA,EAAE,kBAAkB,YAAY,UAA8BA,GAAI,iBAAiBA,EAAE,MAAO,SAAS,GAAqB,GAA0B,GAAK,CAAC,OAAOG,EAAE,KAAK+C,EAAE,UAAUC,EAAE,UAAU7C,EAAE,CAAC,EAAEJ,EAAEF,EAAED,EAAE,CAAOQ,EAAEP,EAAE,gBAAiB,GAAc,GAAkCM,EAAE,CAAhDN,EAAE,UAAqDQ,EAAE,GAAmBR,EAAED,EAAEoD,EAAE,CAAC,EAAElD,GAAG,CAAC,OAAOE,EAAE,cAAcK,EAAE,KAAK0C,EAAE,UAAU3C,EAAE,OAAOP,EAAE,QAAQ,EAAE,OAAOA,EAAE,QAAQ,EAAE,QAAQA,EAAE,cAAe,OAAO,GAAEA,EAAE,QAAQ,SAASA,EAAE,QAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAQoD,CAAE,CAoC/zB,SAAS,GAA6BlD,EAAEuD,EAAEL,EAAErD,EAAE,CAAqB,AAApB,EAAE,GAAeqD,EAAE,CAAIrD,QAAS,GAAwD,GAAwBG,EAAE,EAAEuD,EAAE,OAAOL,EAAEK,EAAE,SAAS,EAAvG,EAAE,WAAW,EAAEA,EAAE,OAAO,CAAC,EAAE,cAAc,EAAE1D,EAAEqD,EAAE,CAAyD,UAAS,GAA0BlD,EAAEuD,EAAE,CAAC,OAAOA,IAAI,IAAGA,IAAI,GAAE,EAAEA,IAAI,IAAGA,IAAI,GAAE,EAAEA,IAAI,IAAGA,IAAI,IAAGA,IAAI,GAAE,EAAE,CAAE,CAA8C,SAAS,GAAmCvD,EAAE,CAAC,IAAIuD,EAAML,EAAE,IAAIA,EAAE,EAAEA,EAAE,GAAE,SAAY,EAAE,GAAEA,KAAMK,KAAKvD,IAApB,EAAEkD,OAA8B,GAAE,SAASK,EAAE,OAAO,KAAKvD,EAAE,CAAC,IAAI,IAAMH,EAAEG,EAAEuD,GAASzD,EAAE,GAAWD,EAAE,CAAC,OAAO,GAAGC,QAAS,GAAE,MAAO,GAAE,IAAMC,EAAE,GAAmBF,EAAE0D,EAAE,CAAOtD,EAAEH,EAAEC,EAAE,GAAGD,EAAEC,EAAE,EAAE,KAAM,CAAI,OAAO,gBAAgBA,EAAE,0BAA0BD,IAAAA,CAAK,OAAOG,CAAE,UAAS,GAA6BD,EAAEuD,EAAE,CAAC,IAAIL,EAAMrD,EAAE,IAAIA,EAAE,EAAEA,EAAE,GAAE,SAAY,EAAE,GAAEA,KAAMqD,KAAKK,IAAQ,EAAE,GAAE,aAAaL,EAAKA,KAAKK,KAAvD,EAAE1D,OAAiE,GAAE,SAASqD,EAAE,OAAO,KAAKK,EAAE,CAAC,IAAI,IAAMzD,EAAEyD,EAAEL,GAAG,IAAIpD,EAAE,OAAO,MAAO,GAAE,EAAE,WAAW,EAAEA,EAAE,OAAO,CAAC,IAAMC,EAAE,EAAE,mBAAmB,EAAE,GAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,IAAME,EAAE,GAA0BD,EAAEF,EAAE,KAAK,CAAOkD,EAAEjD,EAAEE,EAAQgD,EAAEnD,EAAE,eAAeA,EAAE,KAAWM,EAAE4C,EAAEC,EAAE,GAAG7C,EAAE,GAAI,EAAE,KAAM,CAAI,OAAO,gBAAgB6C,EAAE,0BAA0B,SAAA,CAAU,OAAO7C,CAAE,CAwG3nC,SAAS,GAA2BJ,EAAEuD,EAAEL,EAAE,CAAC,IAAMrD,EAAE,GAAwBG,EAAEuD,EAAE,CAAOzD,EAAE,OAAO,OAAO,CAAE,EAACoD,GAAG,CAAE,EAAC,CAAC,EAAE,QAAQ,OAAO,OAAO,CAAE,EAACA,EAAEA,EAAE,QAAQ,CAAE,EAACrD,EAAE,CAAC,IAAME,EAAEwD,EAAE,QAAQ,GAAGxD,EAAE,CAAC,IAAMwD,EAAE,GAAexD,EAAE,UAAU,CAAoE,AAAnE,EAAE,QAAQ,GAA2BC,EAAEuD,EAAE,GAAE,CAAC,EAAE,YAAYA,EAAE,OAAO,EAAE,YAAY,GAAuBA,EAAE,AAAC,MAAK,AAAgBzD,EAAE,cAAY,GAA6BE,EAAEF,EAAE,QAAQ,CAAE,OAAOA,CAAE,CA0B3Z,SAAS,GAAsBE,EAAEuD,EAAEL,EAAE,CAAC,IAAMrD,EAAEqD,IAAI,UAAU,GAAE,EAAQpD,EAAE,GAAeyD,EAAEL,EAAE,CAAC,MAAO,IAA2BlD,EAAEF,EAAED,EAAE,AAAC,CAwBrI,SAAS,GAAwBG,EAAEuD,EAAE,CAAC,IAAML,EAAE,CAAE,EAAmP,MAAlP,QAAO,KAAKK,EAAE,CAAC,QAAS,SAAS1D,EAAE,CAAC,EAAEA,GAAG,GAAsBG,EAAEuD,EAAE1D,GAAGA,EAAE,AAAC,EAAE,CAAI0D,EAAE,SAAS,EAAE,YAAYA,EAAE,QAAQ,OAAO,EAAE,YAAY,GAAuB,GAAeA,EAAE,QAAQ,CAAC,EAAM,EAAE,YAAY,GAAmCA,EAAE,CAAQL,CAAE,CAW5S,SAAS,GAAkBlD,EAAEuD,EAAE,CAAC,IAAIL,EAAE,EAA+S,OAA7S,EAAE,KAAK,UAAU,CAAC,IAAI,IAAIK,EAAE,EAAEA,EAAE,UAAU,OAAO,EAAEA,EAAE,CAAC,IAAM1D,EAAE,UAAU0D,GAAG,GAAG1D,aAAa,OAAO,GAAEA,EAAE,CAAC,IAAI,IAAI0D,EAAE,EAAEA,EAAE1D,EAAE,OAAO,EAAE0D,EAAE,EAAEL,KAAKrD,EAAE0D,QAAQ,EAAEL,KAAKrD,CAAE,CAAC,EAAC,EAAE,MAAM,SAASG,EAAE,CAAC,EAAEA,GAAG,CAAE,EAAC,EAAE,cAAcuD,EAAE,OAAO,eAAevD,EAAE,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,KAAK,cAAc,CAAE,CAAC,EAAC,CAAQA,CAAE,CAsB9V,SAAS,EAA0BA,EAAEuD,EAAEL,EAAE,CAAC,IAAMrD,EAAEqD,GAAG,aAAa,MAAO,IAAkB,IAAIrD,EAAEG,EAAEuD,GAAGvD,EAAE,AAAC,UAAS,GAAcA,EAAE,CAAC,OAAOA,IAAI,SAAU,CAMxJ,SAAS,GAAgBA,EAAE,CAAC,IAAMuD,EAAEvD,EAAE,QAAckD,EAAE,CAAE,EAAOrD,EAAE0D,EAAE,OAAO,SAAS,EAAkBzD,EAAE,CAAC,IAAMC,EAAEC,EAAEF,GAASG,EAAEF,EAAE,cAAoBiD,EAAE,EAA0B/C,EAAEJ,EAAEE,EAAE,YAAY,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAEH,EAAE,EAAEG,EAAE,CAAC,IAAMkD,EAAEK,EAAEvD,GAASH,EAAEqD,EAAEjD,EAAE,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAE,EAAED,EAAE,EAAE,KAAKD,EAAEF,EAAEG,GAAG,AAAC,GAAEF,GAAGkD,CAAE,CAAgE,cAAzD,KAAKhD,EAAE,CAAC,OAAO,GAAc,CAAC,QAAQ,EAAkB,CAAQkD,CAAE,CAMnW,SAAS,GAAelD,EAAE,CAAC,GAAGA,EAAE,QAAQ,KAAM,CAAI,MAAM,kEAAA,CAAmE,IAAMuD,EAAEvD,EAAE,OAAakD,EAAEK,EAAE,OAAO,IAAI,IAAIvD,EAAE,EAAEA,EAAEkD,EAAElD,GAAG,EAAE,CAAC,IAAMkD,EAAEK,EAAEvD,EAAE,GAASH,EAAE0D,EAAEvD,EAAE,GAASF,EAAEyD,EAAEvD,EAAE,GAASD,EAAEwD,EAAEvD,EAAE,GAASC,EAAEsD,EAAEvD,EAAE,GAASgD,EAAEO,EAAEvD,EAAE,GAASiD,EAAEM,EAAEvD,EAAE,GAASI,EAAEmD,EAAEvD,EAAE,GAASK,EAAEkD,EAAEvD,EAAE,GAAOM,EAAE4C,EAAEnD,EAAEkD,EAAM1C,EAAEV,EAAEI,EAAEG,EAAMI,EAAEV,EAAEkD,EAAE3C,EAAQI,EAAE,KAAK,KAAKH,EAAEA,EAAEC,EAAEA,EAAEC,EAAEA,EAAE,CAAwF,AAAvF,GAAGC,EAAE,GAAGA,EAAE,GAAGA,EAAE,EAAET,EAAE,GAAGM,EAAE,EAAEN,EAAE,GAAGO,EAAE,EAAEP,EAAE,GAAGQ,EAAE,EAAER,EAAE,GAAGM,EAAE,EAAEN,EAAE,GAAGO,EAAE,EAAEP,EAAE,GAAGQ,EAAE,EAAER,EAAE,GAAGM,EAAE,EAAEN,EAAE,GAAGO,EAAE,EAAEP,EAAE,GAAGQ,CAAE,QAAOR,CAAE,UAAS,GAAmBA,EAAEuD,EAAEL,EAAE,CAAC,IAAMrD,EAAEG,EAAE,OAAaF,EAAE,IAAI,aAAa,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEE,GAAG,EAAqD,AAAlD,EAAEwD,EAAE,CAACvD,EAAED,GAAGC,EAAED,EAAE,GAAGC,EAAED,EAAE,EAAG,EAACD,EAAE,CAAC,EAAEC,GAAGD,EAAE,GAAG,EAAEC,EAAE,GAAGD,EAAE,GAAG,EAAEC,EAAE,GAAGD,EAAE,EAAI,UAAS,GAAgBE,EAAEuD,EAAEL,EAAE,CAAC,IAAK,GAAU,CAAC,IAAMrD,EAAE0D,EAAE,GAASzD,EAAEyD,EAAE,GAASxD,EAAEwD,EAAE,GAAkF,OAA/E,EAAE,GAAG1D,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,GAAG,EAAE,GAAGH,EAAEG,EAAE,GAAGF,EAAEE,EAAE,GAAGD,EAAEC,EAAE,IAAWkD,CAAE,CAO1zB,SAAS,GAAmBlD,EAAEuD,EAAE,CAA4C,MAA3C,IAAmBvD,EAAEuD,EAAE,GAAmB,CAAQvD,CAAE,CAQrF,SAAS,GAAgBA,EAAEuD,EAAE,CAAkD,MAAjD,IAAmBvD,EAAE,GAAQuD,EAAE,CAAC,GAAgB,CAAQvD,CAAE,CAQxF,SAAS,GAAkBA,EAAEuD,EAAE,CAAwC,MAAvC,IAAmBvD,EAAEuD,EAAE,GAAe,CAAQvD,CAAE,CAahF,SAAS,GAAiBA,EAAEuD,EAAE,CAA+M,MAA9M,QAAO,KAAKvD,EAAE,CAAC,QAAS,SAASkD,EAAE,CAAC,IAAMrD,EAAEG,EAAEkD,GAAG,EAAE,QAAQ,MAAM,EAAE,EAAE,GAAkBrD,EAAE0D,EAAE,CAAC,EAAE,QAAQ,MAAM,EAAE,GAAG,EAAE,QAAQ,SAAS,EAAE,EAAE,GAAmB1D,EAAE0D,EAAE,CAAC,EAAE,QAAQ,OAAO,EAAE,GAAG,GAAgB1D,EAAE0D,EAAE,AAAC,EAAE,CAAQvD,CAAE,CA0DtP,SAAS,GAAqBA,EAAEuD,EAAEL,EAAE,CAA4B,OAA3B,IAAK,EAAE,IAAK,EAAE,IAAK,EAAE,GAAG,GAAS,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAACK,EAAE,GAAGvD,EAAEkD,EAAE,GAAGlD,EAAEuD,EAAE,EAAEvD,EAAEkD,EAAE,GAAGlD,EAAEuD,EAAE,GAAGvD,EAAEkD,EAAE,EAAElD,EAAEuD,EAAE,EAAEvD,EAAEkD,EAAE,EAAElD,CAAE,CAAC,EAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAC,CAAC,CA2ChP,SAAS,GAAoBA,EAAEuD,EAAEL,EAAErD,EAAEC,EAAE,CAA6B,AAA5B,IAAK,EAAE,IAAK,EAAE,IAAK,EAAE,IAAK,EAAE,IAAK,IAAU,CAAC,IAAMC,GAAGmD,EAAE,IAAIrD,EAAE,GAASI,EAAE,EAA0B,EAAEF,EAAE,CAAOiD,EAAE,EAA0B,EAAEjD,EAAE,CAAOkD,EAAE,EAA0B,EAAElD,EAAE,CAAC,IAAI,IAAID,EAAE,EAAEA,GAAGD,EAAEC,IAAI,IAAI,IAAIC,EAAE,EAAEA,GAAGmD,EAAEnD,IAAI,CAAC,IAAMK,EAAEL,EAAEmD,EAAQ7C,EAAEP,EAAED,EAA4C,AAA1C,EAAE,KAAKG,EAAEI,EAAEJ,EAAE,GAAG,EAAEuD,EAAElD,EAAEkD,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAKnD,EAAEC,EAAE,AAAC,KAAMD,EAAE8C,EAAE,EAAQ7C,EAAE,EAA0B,EAAE6C,EAAErD,EAAE,EAAE,YAAY,CAAC,IAAI,IAAIG,EAAE,EAAEA,EAAEH,EAAEG,IAAI,IAAI,IAAIuD,EAAE,EAAEA,EAAEL,EAAEK,IAA6C,AAAxC,EAAE,MAAMvD,EAAE,GAAGI,EAAEmD,GAAGvD,EAAE,GAAGI,EAAEmD,GAAGvD,EAAE,GAAGI,EAAEmD,EAAE,EAAE,CAAC,EAAE,MAAMvD,EAAE,GAAGI,EAAEmD,GAAGvD,EAAE,GAAGI,EAAEmD,EAAE,GAAGvD,EAAE,GAAGI,EAAEmD,EAAE,EAAE,KAAOjD,EAAE,GAAiB,CAAC,SAASL,EAAE,OAAO+C,EAAE,SAASC,EAAE,QAAQ5C,CAAE,EAACP,EAAE,CAAC,OAAOQ,CAAE,CA6DpmB,SAAS,GAAqBN,EAAEuD,EAAEL,EAAErD,EAAEC,EAAEC,EAAEE,EAAE,CAAC,GAAGsD,GAAG,GAAGL,GAAG,EAAE,KAAM,CAAI,MAAM,oDAAA,CAAgF,AAA3B,IAAK,EAAE,IAAK,KAAK,GAAG,IAAK,EAAE,IAAK,KAAK,GAAG,EAAE,IAAMF,EAAElD,EAAED,EAAQoD,EAAEhD,EAAEF,EAAQK,GAAGmD,EAAE,IAAIL,EAAE,GAAS7C,EAAE,EAA0B,EAAED,EAAE,CAAOE,EAAE,EAA0B,EAAEF,EAAE,CAAOG,EAAE,EAA0B,EAAEH,EAAE,CAAC,IAAI,IAAIN,EAAE,EAAEA,GAAGoD,EAAEpD,IAAI,IAAI,IAAIG,EAAE,EAAEA,GAAGsD,EAAEtD,IAAI,CAAC,IAAMG,EAAEH,EAAEsD,EAAQ/C,EAAEV,EAAEoD,EAAQzC,EAAEwC,EAAE7C,EAAEL,EAAQW,EAAEsC,EAAExC,EAAEX,EAAQuD,EAAE,KAAK,IAAI3C,EAAE,CAAO0C,EAAE,KAAK,IAAI1C,EAAE,CAAOI,EAAE,KAAK,IAAIH,EAAE,CAAOI,EAAE,KAAK,IAAIJ,EAAE,CAAOK,EAAEoC,EAAEtC,EAAQG,EAAEF,EAAQG,EAAEmC,EAAEvC,EAAoC,AAAlC,EAAE,KAAKb,EAAEe,EAAEf,EAAEgB,EAAEhB,EAAEiB,EAAE,CAAC,EAAE,KAAKF,EAAEC,EAAEC,EAAE,CAAC,EAAE,KAAK,EAAEb,EAAEI,EAAE,AAAC,KAAMA,EAAE+C,EAAE,EAAQ9C,EAAE,EAA0B,EAAE8C,EAAEL,EAAE,EAAE,YAAY,CAAC,IAAI,IAAIlD,EAAE,EAAEA,EAAEuD,EAAEvD,IAAI,IAAI,IAAIuD,EAAE,EAAEA,EAAEL,EAAEK,IAA6C,AAAxC,EAAE,MAAMA,EAAE,GAAG/C,EAAER,GAAGuD,EAAE,GAAG/C,EAAER,EAAE,GAAGuD,EAAE,GAAG/C,EAAER,EAAE,CAAC,EAAE,MAAMuD,EAAE,GAAG/C,EAAER,GAAGuD,EAAE,GAAG/C,EAAER,EAAE,GAAGuD,EAAE,GAAG/C,EAAER,EAAE,EAAE,OAAO,CAAC,SAASK,EAAE,OAAOC,EAAE,SAASC,EAAE,QAAQE,CAAE,CAAC,CAoC3zB,SAAS,GAAmBT,EAAE,CAAC,IAAK,EAAE,IAAMuD,EAAEvD,EAAE,EAAQkD,EAAE,CAAC,EAAEK,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,EAAC,EAAEA,GAAGA,GAAGA,CAAE,CAAC,EAAO1D,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,EAAC,CAAC,GAAG,EAAE,CAAE,EAAC,CAAC,EAAE,EAAE,CAAE,EAAC,CAAC,EAAE,GAAG,CAAE,EAAC,CAAC,EAAE,EAAE,CAAE,EAAC,CAAC,EAAE,EAAE,EAAG,CAAC,EAAOC,EAAE,CAAC,CAAC,EAAE,CAAE,EAAC,CAAC,EAAE,CAAE,EAAC,CAAC,EAAE,CAAE,EAAC,CAAC,EAAE,CAAE,CAAC,EAAOC,EAAE,GAASE,EAAE,EAA0B,EAAEF,EAAE,CAAOiD,EAAE,EAA0B,EAAEjD,EAAE,CAAOkD,EAAE,EAA0B,EAAElD,EAAE,CAAOK,EAAE,EAA0B,EAAE,GAAG,YAAY,CAAC,IAAI,IAAIJ,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAMuD,EAAE,GAAEvD,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAE,EAAE,EAAEA,EAAE,CAAC,IAAMK,EAAE8C,EAAEK,EAAExD,IAAUM,EAAER,EAAEG,GAASM,EAAER,EAAEC,GAAuB,AAApB,EAAE,KAAKK,EAAE,CAAC,EAAE,KAAKC,EAAE,CAAC,EAAE,KAAKC,EAAE,AAAC,KAAMP,EAAE,EAAEC,EAAsB,AAApB,EAAE,KAAKD,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,KAAKA,EAAE,EAAEA,EAAE,EAAEA,EAAE,EAAE,AAAC,OAAM,CAAC,SAASE,EAAE,OAAO+C,EAAE,SAASC,EAAE,QAAQ7C,CAAE,CAAC,CA6D3oB,SAAS,GAA4BJ,EAAEuD,EAAEL,EAAErD,EAAEC,EAAEC,EAAEE,EAAE,CAAC,GAAGJ,EAAE,EAAE,KAAM,CAAI,MAAM,0CAAA,CAA2C,GAAGC,EAAE,EAAE,KAAM,CAAI,MAAM,4CAAA,CAA6C,IAAMkD,EAAEjD,QAAS,IAAGA,EAAQkD,EAAEhD,QAAS,IAAGA,EAAQG,GAAG4C,EAAE,EAAE,IAAIC,EAAE,EAAE,GAAS5C,GAAGR,EAAE,IAAIC,EAAE,EAAEM,GAASE,EAAE,EAA0B,EAAED,EAAE,CAAOE,EAAE,EAA0B,EAAEF,EAAE,CAAOG,EAAE,EAA0B,EAAEH,EAAE,CAAOI,EAAE,EAA0B,EAAEZ,GAAGC,EAAEM,EAAE,GAAG,EAAE,YAAY,CAAOM,EAAEb,EAAE,EAAQuD,EAAE,KAAK,MAAMpD,EAAEuD,EAAEL,EAAE,CAAOC,EAAE,KAAK,IAAIC,EAAE,CAAOvC,EAAE,KAAK,IAAIuC,EAAE,CAAOtC,EAAEkC,EAAE,GAAG,EAAQjC,EAAEjB,GAAGmD,EAAE,EAAE,GAAG,IAAI,IAAIlD,EAAEe,EAAEf,GAAGgB,EAAE,EAAEhB,EAAE,CAAC,IAAIE,EAAEF,EAAED,EAAMkD,EAAEE,EAAEjD,EAAMgD,EAAKlD,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAEC,GAAUD,EAAED,GAAG,EAAEoD,EAAE,EAAE,EAAE,EAAEK,GAAO,EAAEvD,EAAED,EAAED,GAAGyD,EAAEvD,IAAMD,IAAI,IAAIA,IAAID,EAAE,KAAG,EAAE,EAAE,EAAE,MAAKoD,EAAE,EAAE,IAAI,IAAIlD,EAAE,EAAEA,EAAEU,EAAE,EAAEV,EAAE,CAAC,IAAMuD,EAAE,KAAK,IAAIvD,EAAE,KAAK,GAAG,EAAEH,EAAE,CAAOqD,EAAE,KAAK,IAAIlD,EAAE,KAAK,GAAG,EAAEH,EAAE,CAA8F,AAA7F,EAAE,KAAK0D,EAAEN,EAAED,EAAEE,EAAED,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAClD,EAAED,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAACmD,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,KAAKM,EAAEJ,EAAEtC,EAAEqC,EAAEC,EAAE,CAAC,EAAE,KAAKnD,EAAEH,EAAE,EAAEI,EAAE,AAAC,CAAC,KAAI,IAAID,EAAE,EAAEA,EAAEF,EAAEM,EAAE,EAAEJ,EAAE,KAAKA,IAAI,GAAGgD,GAAGhD,IAAIF,EAAEM,EAAE,GAAG6C,GAAG,IAAI,IAAIM,EAAE,EAAEA,EAAE1D,EAAE,EAAE0D,EAA+C,AAA5C,EAAE,KAAK7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE,CAAC,EAAE,KAAK7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE7C,GAAGV,EAAE,GAAG,EAAEuD,EAAE,OAAO,CAAC,SAASjD,EAAE,OAAOC,EAAE,SAASC,EAAE,QAAQC,CAAE,CAAC,CAO5lC,SAAS,GAAcT,EAAEuD,EAAE,CAAC,IAAK,CAAE,EAAC,IAAML,EAAE,CAAE,EAAC,IAAI,IAAIrD,EAAE,EAAEA,EAAEG,EAAE,OAAOH,GAAG,EAAE,CAAC,IAAMC,EAAEE,EAAEH,GAASE,EAAE,EAAE,MAAMF,EAAE,EAAEA,EAAE,EAAE,CAAC,EAAE,KAAK,MAAME,EAAEwD,EAAE,CAAC,IAAI,IAAIvD,EAAE,EAAEA,EAAEF,EAAE,EAAEE,EAAE,EAAE,KAAK,MAAMkD,EAAEnD,EAAE,AAAC,QAAOmD,CAAE,CAoBnL,SAAS,IAAmB,CAAC,IAAMlD,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,IAAI,CAAE,EAAOuD,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,EAAOL,EAAE,GAAc,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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"}