UNPKG

@needle-tools/engine

Version:

Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.

569 lines • 1.75 MB
var Vx = Object.defineProperty; var zy = (o) => { throw TypeError(o); }; var Hx = (o, t, e) => t in o ? Vx(o, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : o[t] = e; var r = (o, t, e) => Hx(o, typeof t != "symbol" ? t + "" : t, e), Tf = (o, t, e) => t.has(o) || zy("Cannot " + e); var fe = (o, t, e) => (Tf(o, t, "read from private field"), e ? e.call(o) : t.get(o)), dn = (o, t, e) => t.has(o) ? zy("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(o) : t.set(o, e), un = (o, t, e, i) => (Tf(o, t, "write to private field"), i ? i.call(o, e) : t.set(o, e), e), Dl = (o, t, e) => (Tf(o, t, "access private method"), e); import { Vector2 as re, Vector3 as v, Vector4 as ye, Quaternion as W, PlaneGeometry as is, PerspectiveCamera as ve, Scene as Li, ShaderMaterial as Cn, Uniform$1 as To, Mesh as G, WebGLRenderer as Gr, Texture as ze, Box3 as Ai, ShadowMaterial as s0, Euler as Lt, Color as le, MeshStandardMaterial as pt, Box3Helper as Gx, GridHelper as Km, Object3D as D, Material as Pe, Matrix3 as o0, Matrix4 as se, Layers as Fo, Ray as zo, MathUtils as As, AxesHelper as Ii, MeshBasicMaterial as Me, DoubleSide as Di, BufferGeometry as Xn, Group as Eo, CylinderGeometry as r0, SphereGeometry as bu, BoxGeometry as Ga, SpriteMaterial as qx, Sprite as Xx, Shape as Qx, ExtrudeGeometry as Yx, Fog as a0, DirectionalLight as Np, PointLight as Zm, EdgesGeometry as Kx, LineSegments as l0, LineBasicMaterial as c0, Line as Ac, BufferAttribute as mt, Raycaster as vu, Sphere as wu, ArrayCamera as Zx, Plane as Ur, SkinnedMesh as Is, InterleavedBufferAttribute as h0, Skeleton as Jx, Bone as eS, Source as tS, WebGLCubeRenderTarget as iS, CubeCamera as nS, AnimationClip as Ao, FileLoader as Jm, TextureLoader as Ba, PropertyBinding as qa, LinearSRGBColorSpace as zs, ShaderChunk as Jt, UniformsLib as sS, DataTexture as eg, RGBAFormat as xu, EquirectangularReflectionMapping as Ls, SRGBColorSpace as Us, Clock as oS, NoToneMapping as Xa, PCFSoftShadowMap$1 as rS, BasicNodeLibrary as aS, WebGLRenderTarget as Ns, DepthTexture as lS, NearestFilter as Od, LoopRepeat as cS, LoopOnce as $p, AnimationMixer as tg, CompressedTexture as hS, FrontSide as Uo, Camera as dS, Frustum as Uy, OrthographicCamera as ig, AudioListener as uS, PositionalAudio as fS, AudioLoader as Wp, EventDispatcher as ng, BackSide as Su, MeshDepthMaterial as pS, CustomBlending as mS, MaxEquation as gS, AmbientLight as yS, HemisphereLight as _S, AlwaysStencilFunc as bS, GreaterEqualStencilFunc as vS, NotEqualStencilFunc as wS, GreaterStencilFunc as xS, LessEqualStencilFunc as SS, EqualStencilFunc as CS, LessStencilFunc as PS, NeverStencilFunc as Ny, InvertStencilOp as OS, DecrementWrapStencilOp as kS, IncrementWrapStencilOp as MS, DecrementStencilOp as RS, IncrementStencilOp as TS, ReplaceStencilOp as ES, ZeroStencilOp as AS, KeepStencilOp as IS, RawShaderMaterial as d0, GLSL3 as LS, AlwaysDepth as DS, GreaterEqualDepth as jS, GreaterDepth as BS, LessEqualDepth as FS, LessDepth as zS, NotEqualDepth as US, EqualDepth as NS, BatchedMesh as $y, MeshPhysicalMaterial as Vp, LinearFilter as Wy, UnsignedByteType as $S, RingGeometry as WS, Line3 as VS, AdditiveBlending as u0, BoxHelper as HS, SpotLight as GS, DirectionalLightHelper as qS, CameraHelper as XS, LOD as QS, Triangle as YS, NormalBlending as KS, ReinhardToneMapping as sg, NeutralToneMapping as Ic, AgXToneMapping as Cu, ACESFilmicToneMapping as og, LinearToneMapping as Pu, HalfFloatType as ZS, VideoTexture as JS, CubeTexture as e1, CompressedCubeTexture as t1, EquirectangularRefractionMapping as i1, VectorKeyframeTrack as n1, QuaternionKeyframeTrack as s1, Audio as o1, ShaderLib as kd, UniformsUtils as f0, MirroredRepeatWrapping as Vy, MeshNormalMaterial as r1, AudioContext as a1, PMREMGenerator$1 as l1 } from "./three-1JG7vpNC.js"; import { createLoaders as rg, getRaycastMesh as p0, LODsManager as la, NEEDLE_progressive as Ke, addDracoAndKTX2Loaders as c1, configureLoader as h1, setKTX2TranscoderLocation as d1, setDracoDecoderLocation as u1 } from "./gltf-progressive-D8GP6sjZ.js"; import { GroundedSkybox as Qa, Font as f1, TextGeometry as p1, FontLoader as m1, GLTFLoader as $s, TransformControlsGizmo as m0, EXRLoader as Md, RGBELoader as Hp, Stats as g1, nodeFrame as y1, OrbitControls as g0, PositionalAudioHelper as _1, HorizontalBlurShader as b1, VerticalBlurShader as v1, GLTFExporter as y0, strToU8 as _0, zipSync as w1, XRControllerModelFactory as x1, XRHandMeshModel as S1, Line2 as C1, LineGeometry as P1, LineMaterial as O1, KTX2Loader as k1, TransformControls as M1, InteractiveGroup as R1, HTMLMesh as T1, VertexNormalsHelper as E1, OBJLoader as ag, FBXLoader as b0, mergeVertices as A1 } from "./three-examples-CyWe9wwo.js"; import { fetchProfile as I1, MotionController as L1, $70d766613f57b014$export$2e2bcd8739ae039 as Hy, ByteBuffer as D1, v5 as Gy, md5 as qy, SIZE_PREFIX_LENGTH as v0, Builder as lg, createNoise4D as j1, Matrix4 as Ef, BatchedParticleRenderer as B1, ParticleSystem as F1, RenderMode as _s, ConstantColor as z1, Vector4 as U1, ConstantValue as N1, TrailParticle as Xy, WorkerBase as $1, MeshBVH as W1 } from "./vendor-BbM-oI6p.js"; import { __webpack_exports__default as Ee, __webpack_exports__Text as w0, __webpack_exports__Block as x0, __webpack_exports__update as V1, SimpleStateBehavior as H1, __webpack_exports__Inline as Af, __webpack_exports__FontLibrary as Qy, ThreeMeshUI as Yy } from "./three-mesh-ui-B18kdQmk.js"; const If = /* @__PURE__ */ new Map(); function gi(o = ((t) => (t = globalThis.location) == null ? void 0 : t.hostname)()) { if (If.has(o)) return If.get(o); const e = /(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})|localhost/.test(o); return If.set(o, e), e === !0; } function G1() { return window.location.hostname.includes("glitch.me"); } const q1 = '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 160 187.74"><defs><linearGradient id="a" x1="89.64" y1="184.81" x2="90.48" y2="21.85" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#62d399"/><stop offset=".51" stop-color="#acd842"/><stop offset=".9" stop-color="#d7db0a"/></linearGradient><linearGradient id="b" x1="69.68" y1="178.9" x2="68.08" y2="16.77" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0ba398"/><stop offset=".5" stop-color="#4ca352"/><stop offset="1" stop-color="#76a30a"/></linearGradient><linearGradient id="c" x1="36.6" y1="152.17" x2="34.7" y2="84.19" gradientUnits="userSpaceOnUse"><stop offset=".19" stop-color="#36a382"/><stop offset=".54" stop-color="#49a459"/><stop offset="1" stop-color="#76a30b"/></linearGradient><linearGradient id="d" x1="15.82" y1="153.24" x2="18" y2="90.86" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#267880"/><stop offset=".51" stop-color="#457a5c"/><stop offset="1" stop-color="#717516"/></linearGradient><linearGradient id="e" x1="135.08" y1="135.43" x2="148.93" y2="63.47" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b0d939"/><stop offset="1" stop-color="#eadb04"/></linearGradient><linearGradient id="f" x1="-4163.25" y1="2285.12" x2="-4160.81" y2="2215.34" gradientTransform="rotate(20 4088.49 13316.712)" gradientUnits="userSpaceOnUse"><stop offset=".17" stop-color="#74af52"/><stop offset=".48" stop-color="#99be32"/><stop offset="1" stop-color="#c0c40a"/></linearGradient><symbol id="g" viewBox="0 0 160 187.74"><path style="fill:url(#a)" d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75z"/><path style="fill:url(#b)" d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98z"/><path style="fill:url(#c)" d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z"/><path style="fill:url(#d)" d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04z"/><path style="fill:#9c3" d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5z"/><path style="fill:url(#e)" d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59z"/><path style="fill:url(#f)" d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z"/><path style="fill:#ffe113" d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1z"/><path style="fill:#f3e600" d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75z"/></symbol></defs><use width="160" height="187.74" xlink:href="#g"/></svg>', X1 = btoa(q1), Q1 = "data:image/svg+xml;base64," + X1, S0 = Q1, Y1 = `<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'> <svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" version="1.1" viewBox="0 0 1014 282" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m665.95 132.73v44.88l-10.56-8.4c-0.8-0.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18 0.4-6.06 1.2s-3.54 1.8-4.98 3-2.56 2.5-3.36 3.9-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c0.32 0.24 0.56 0.44 0.72 0.6s0.36 0.32 0.6 0.48c0.96-1.2 2.14-2.28 3.54-3.24s2.92-1.76 4.56-2.4 3.34-1.14 5.1-1.5 3.44-0.54 5.04-0.54c1.44 0 2.92 0.04 4.44 0.12s2.84 0.28 3.96 0.6c4.56 1.12 7.8 3.12 9.72 6s2.88 6.56 2.88 11.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m732.38 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m795.93 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m858.57 97.21c0.64 0.48 0.96 1.16 0.96 2.04v74.88c-0.08 1.04-0.12 2.12-0.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18s-2.06-1.66-2.46-1.98c-1.76 2.48-4.26 4.44-7.5 5.88s-7.02 2.16-11.34 2.16c-3.84 0-7.4-0.7-10.68-2.1s-6.14-3.44-8.58-6.12-4.34-5.94-5.7-9.78-2.04-8.16-2.04-12.96c0-4.32 0.78-8.34 2.34-12.06s3.6-6.92 6.12-9.6 5.38-4.78 8.58-6.3 6.48-2.28 9.84-2.28c2.56 0 4.82 0.22 6.78 0.66s3.68 1.06 5.16 1.86 2.78 1.74 3.9 2.82 2.16 2.22 3.12 3.42v-35.04l10.68 8.64zm-27.96 67.92c3.6 0 6.52-0.68 8.76-2.04s3.98-3.06 5.22-5.1 2.1-4.22 2.58-6.54 0.72-4.44 0.72-6.36v-1.2c0-1.12-0.22-2.7-0.66-4.74s-1.28-4.06-2.52-6.06-3-3.7-5.28-5.1-5.22-2.02-8.82-1.86c-3.44 0-6.26 0.74-8.46 2.22s-3.96 3.26-5.28 5.34-2.24 4.2-2.76 6.36-0.78 3.92-0.78 5.28c0 1.84 0.24 3.92 0.72 6.24s1.36 4.48 2.64 6.48 3.04 3.68 5.28 5.04 5.12 2.04 8.64 2.04z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m882.81 97.09c0.64 0.48 0.96 1.12 0.96 1.92l-0.12 41.04v37.08l-10.56-8.4c-0.72-0.64-1.08-1.44-1.08-2.4v-77.88l10.8 8.64z" fill-rule="nonzero"/> </g> <g transform="matrix(1.008 0 0 1.008 -2.239 .61874)"> <path d="m950.36 146.05c0 0.88 0.02 1.5 0.06 1.86s-0.02 0.98-0.18 1.86h-7.08c-2.08 0-4.44-0.02-7.08-0.06s-5.36-0.06-8.16-0.06h-22.08c0 2.88 0.56 5.36 1.68 7.44s2.6 3.8 4.44 5.16 3.94 2.36 6.3 3 4.74 0.96 7.14 0.96c3.04 0 5.9-0.76 8.58-2.28s4.94-3.52 6.78-6c0.64 0.56 1.54 1.48 2.7 2.76s2.94 3.2 5.34 5.76c-2.8 3.36-6.22 6.02-10.26 7.98s-8.42 2.94-13.14 2.94-8.92-0.64-12.84-1.92-7.32-3.24-10.2-5.88-5.12-5.98-6.72-10.02-2.4-8.82-2.4-14.34c0-4.96 0.66-9.42 1.98-13.38s3.22-7.32 5.7-10.08 5.44-4.9 8.88-6.42 7.32-2.28 11.64-2.28c5.76 0 10.52 0.88 14.28 2.64s6.72 4.16 8.88 7.2 3.66 6.54 4.5 10.5 1.26 8.18 1.26 12.66zm-29.4-22.8c-2.16 0.16-4.16 0.72-6 1.68s-3.42 2.2-4.74 3.72-2.36 3.28-3.12 5.28-1.14 4.12-1.14 6.36h33.12c0-2-0.22-4.06-0.66-6.18s-1.3-4.02-2.58-5.7-3.1-3.02-5.46-4.02-5.5-1.38-9.42-1.14z" fill-rule="nonzero"/> </g> <g transform="matrix(1.8559 0 0 .7642 45.348 36.475)"> <g transform="translate(2.7114)"> <path d="m3.935 173.02c-0.331 0-0.497-0.402-0.497-1.207v-51.002c0-0.738 0.138-1.107 0.414-1.107h1.781c0.277 0 0.415 0.335 0.415 1.006v5.935c0 0.336 0.027 0.553 0.083 0.654 0.055 0.101 0.151-0.017 0.289-0.352 0.912-1.744 1.754-3.236 2.527-4.477 0.773-1.24 1.554-2.179 2.341-2.816s1.65-0.956 2.588-0.956c1.685 0 3.011 0.922 3.977 2.766 0.967 1.845 1.602 3.84 1.905 5.986 0.056 0.268 0.139 0.369 0.249 0.302s0.221-0.235 0.331-0.503c0.939-1.811 1.802-3.353 2.589-4.628 0.787-1.274 1.581-2.246 2.382-2.917s1.671-1.006 2.61-1.006c2.016 0 3.569 1.392 4.66 4.175 1.09 2.783 1.636 6.421 1.636 10.915v37.925c0 0.871-0.18 1.307-0.539 1.307h-1.739c-0.138 0-0.249-0.1-0.332-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.338-6.321-1.015-8.3-0.676-1.978-1.76-2.967-3.251-2.967-0.884 0-1.726 0.386-2.527 1.157s-1.519 1.727-2.154 2.867-1.201 2.213-1.699 3.219c-0.248 0.469-0.421 0.905-0.517 1.308-0.097 0.402-0.145 0.972-0.145 1.71v37.221c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.166 0-0.29-0.1-0.373-0.301-0.083-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.332-6.321-0.994-8.3-0.663-1.978-1.754-2.967-3.273-2.967-1.242 0-2.375 0.704-3.396 2.112-1.022 1.409-2.223 3.555-3.604 6.439v39.031c0 0.805-0.18 1.207-0.539 1.207h-1.698z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m53.642 166.28c-1.077 2.549-2.237 4.477-3.479 5.785-1.243 1.307-2.61 1.961-4.101 1.961-2.154 0-3.853-1.324-5.095-3.973-1.243-2.649-1.864-6.187-1.864-10.613 0-3.488 0.4-6.489 1.201-9.004s1.988-4.51 3.562-5.985c1.574-1.476 3.521-2.414 5.841-2.817l3.686-0.704c0.221-0.067 0.394-0.218 0.518-0.453 0.124-0.234 0.187-0.587 0.187-1.056v-2.917c0-3.89-0.504-6.975-1.512-9.255s-2.354-3.42-4.039-3.42c-1.298 0-2.472 0.72-3.521 2.162s-2.002 3.572-2.858 6.388c-0.083 0.268-0.159 0.453-0.228 0.554-0.069 0.1-0.172 0.083-0.311-0.051l-1.698-1.71c-0.083-0.134-0.138-0.285-0.166-0.453-0.027-0.167 0.014-0.452 0.125-0.855 0.856-3.353 2.009-6.052 3.459-8.098 1.449-2.045 3.224-3.068 5.322-3.068 1.74 0 3.211 0.687 4.412 2.062s2.112 3.37 2.734 5.986c0.621 2.615 0.932 5.7 0.932 9.255v35.712c0 0.536-0.035 0.888-0.104 1.056s-0.2 0.251-0.393 0.251h-1.533c-0.166 0-0.29-0.117-0.373-0.352-0.083-0.234-0.124-0.553-0.124-0.955l-0.083-5.231c-0.055-0.939-0.221-1.006-0.497-0.202zm0.456-19.314c0-1.14-0.194-1.643-0.58-1.509l-3.107 0.603c-1.436 0.202-2.686 0.638-3.749 1.308-1.063 0.671-1.953 1.543-2.671 2.616s-1.257 2.33-1.616 3.772-0.538 3.102-0.538 4.98c0 3.152 0.455 5.616 1.367 7.393 0.911 1.778 2.14 2.666 3.686 2.666 0.939 0 1.85-0.419 2.734-1.257s1.671-1.895 2.361-3.169c0.663-1.408 1.181-2.85 1.553-4.326 0.373-1.475 0.56-2.883 0.56-4.225v-8.852z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m79.034 173.02c-0.166 0-0.297-0.117-0.394-0.352-0.096-0.234-0.145-0.553-0.145-0.955v-4.628c0-0.536-0.041-0.838-0.124-0.905s-0.207 0.1-0.373 0.503c-0.276 0.67-0.69 1.593-1.242 2.766-0.553 1.174-1.271 2.23-2.154 3.169-0.884 0.939-1.961 1.408-3.231 1.408-1.74 0-3.314-0.989-4.722-2.967-1.409-1.979-2.534-4.963-3.376-8.953-0.843-3.991-1.264-8.937-1.264-14.838 0-5.701 0.415-10.68 1.243-14.939s1.988-7.595 3.479-10.009c1.492-2.415 3.204-3.622 5.137-3.622 1.436 0 2.616 0.57 3.541 1.71 0.926 1.14 1.719 2.381 2.382 3.722 0.249 0.47 0.414 0.637 0.497 0.503s0.125-0.536 0.125-1.207v-23.841c0-0.805 0.151-1.208 0.455-1.208h1.864c0.276 0 0.414 0.369 0.414 1.107v72.128c0 0.537-0.041 0.905-0.124 1.107-0.083 0.201-0.235 0.301-0.455 0.301h-1.533zm-0.621-42.049c-0.939-2.213-1.885-3.94-2.838-5.181s-2.009-1.861-3.169-1.861c-1.463 0-2.768 0.889-3.914 2.666s-2.044 4.376-2.693 7.796-0.973 7.578-0.973 12.474c0 5.097 0.338 9.272 1.015 12.524 0.676 3.253 1.567 5.651 2.672 7.193 1.104 1.543 2.305 2.314 3.603 2.314 1.188 0 2.258-0.704 3.211-2.113 0.952-1.408 1.705-3.118 2.257-5.13s0.829-3.957 0.829-5.835v-24.847z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m89.514 149.38c0 3.42 0.345 6.606 1.035 9.557 0.691 2.951 1.609 5.315 2.755 7.092s2.437 2.666 3.873 2.666c1.519 0 2.837-0.738 3.956-2.213 1.118-1.476 2.064-3.655 2.837-6.539 0.083-0.336 0.166-0.52 0.249-0.554 0.083-0.033 0.179 0.017 0.29 0.151l1.408 1.912c0.221 0.268 0.235 0.67 0.041 1.207-0.69 2.548-1.47 4.661-2.34 6.337-0.87 1.677-1.857 2.935-2.962 3.773-1.104 0.838-2.319 1.257-3.645 1.257-2.043 0-3.838-1.14-5.385-3.42-1.546-2.28-2.761-5.482-3.645-9.607-0.884-4.124-1.325-8.836-1.325-14.134 0-5.901 0.455-10.931 1.367-15.089 0.911-4.158 2.14-7.377 3.686-9.658 1.547-2.28 3.3-3.42 5.261-3.42 1.988 0 3.714 1.073 5.178 3.219 1.463 2.146 2.595 5.231 3.396 9.255s1.201 8.886 1.201 14.587c0 0.469-0.02 0.939-0.062 1.408-0.041 0.469-0.214 0.704-0.517 0.704h-16.362c-0.083 0-0.152 0.151-0.207 0.453-0.056 0.302-0.083 0.654-0.083 1.056zm13.752-6.237c0.304 0 0.497-0.1 0.58-0.302 0.083-0.201 0.124-0.57 0.124-1.106 0-3.219-0.283-6.187-0.849-8.903s-1.367-4.896-2.402-6.539c-1.036-1.643-2.272-2.464-3.708-2.464-1.629 0-2.996 0.955-4.101 2.867-1.104 1.911-1.94 4.342-2.506 7.293s-0.849 6.002-0.849 9.154h13.711z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m148.54 119.7c0.165 0 0.283 0.117 0.352 0.352s0.076 0.52 0.02 0.855l-6.254 50.902c-0.028 0.47-0.104 0.788-0.228 0.956s-0.297 0.251-0.518 0.251h-1.615c-0.442 0-0.718-0.402-0.829-1.207l-5.26-40.138c-0.111-0.604-0.201-0.905-0.27-0.905s-0.131 0.301-0.186 0.905l-5.012 40.138c-0.028 0.47-0.097 0.788-0.207 0.956-0.111 0.168-0.277 0.251-0.497 0.251h-1.74c-0.442 0-0.718-0.402-0.829-1.207l-6.503-50.801c-0.055-0.403-0.048-0.721 0.021-0.956s0.2-0.352 0.393-0.352h1.823c0.166 0 0.297 0.067 0.393 0.201 0.097 0.134 0.159 0.403 0.187 0.805l5.302 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.219-41.949c0.055-0.268 0.124-0.47 0.207-0.604s0.193-0.201 0.331-0.201h1.533c0.138 0 0.262 0.067 0.373 0.201 0.11 0.134 0.179 0.403 0.207 0.805l5.468 41.848c0.083 0.671 0.179 0.989 0.29 0.956 0.11-0.034 0.207-0.386 0.29-1.056l5.053-41.849c0.055-0.335 0.138-0.57 0.249-0.704 0.11-0.134 0.234-0.201 0.373-0.201h1.284z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m156.49 171.51c0 0.604-0.042 1.006-0.125 1.208-0.082 0.201-0.262 0.301-0.538 0.301h-1.533c-0.221 0-0.366-0.083-0.435-0.251s-0.103-0.486-0.103-0.956v-50.902c0-0.805 0.152-1.207 0.456-1.207h1.822c0.304 0 0.456 0.402 0.456 1.207v50.6zm0.165-63.979c0 1.207-0.207 1.811-0.621 1.811h-1.905c-0.221 0-0.366-0.135-0.435-0.403s-0.104-0.67-0.104-1.207v-7.847c0-1.006 0.18-1.509 0.539-1.509h1.988c0.359 0 0.538 0.47 0.538 1.409v7.746z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m168.3 124.83c-0.221 0-0.331 0.269-0.331 0.805v33.801c0 3.42 0.221 5.667 0.663 6.74 0.441 1.073 1.09 1.609 1.946 1.609h3.024c0.138 0 0.242 0.084 0.311 0.252 0.069 0.167 0.103 0.419 0.103 0.754v2.716c0 0.537-0.138 0.906-0.414 1.107-0.248 0.067-0.614 0.134-1.098 0.201-0.483 0.067-0.959 0.118-1.429 0.151-0.469 0.034-0.828 0.05-1.077 0.05-1.712 0-2.934-0.955-3.665-2.867-0.732-1.911-1.098-5.013-1.098-9.305v-35.108c0-0.604-0.124-0.906-0.373-0.906h-3.521c-0.248 0-0.373-0.268-0.373-0.804v-3.521c0-0.537 0.111-0.805 0.332-0.805h3.686c0.166 0 0.263-0.268 0.29-0.805l0.415-16.095c0-0.805 0.124-1.207 0.372-1.207h1.492c0.303 0 0.455 0.436 0.455 1.307v15.995c0 0.537 0.097 0.805 0.29 0.805h5.468c0.221 0 0.331 0.268 0.331 0.805v3.521c0 0.536-0.124 0.804-0.373 0.804h-5.426z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> <g transform="translate(2.7114)"> <path d="m179.4 173.02c-0.331 0-0.497-0.402-0.497-1.207v-72.329c0-0.738 0.138-1.107 0.414-1.107h1.782c0.276 0 0.414 0.336 0.414 1.006v27.162c0 0.335 0.034 0.536 0.103 0.603s0.159-0.033 0.27-0.302c0.994-1.81 1.898-3.319 2.713-4.526 0.814-1.208 1.629-2.113 2.444-2.717 0.814-0.603 1.691-0.905 2.63-0.905 2.182 0 3.839 1.375 4.971 4.125 1.132 2.749 1.698 6.404 1.698 10.965v37.925c0 0.871-0.166 1.307-0.497 1.307h-1.74c-0.165 0-0.29-0.1-0.373-0.301-0.082-0.202-0.124-0.503-0.124-0.906v-36.315c0-3.555-0.366-6.321-1.097-8.3-0.732-1.978-1.899-2.967-3.501-2.967-0.883 0-1.705 0.318-2.464 0.956-0.76 0.637-1.526 1.576-2.299 2.816-0.773 1.241-1.643 2.834-2.61 4.779v39.031c0 0.805-0.179 1.207-0.538 1.207h-1.699z" fill-rule="nonzero" stroke="#000" stroke-width=".7px"/> </g> </g> <g transform="matrix(.80638 0 0 .80638 452.53 65.421)" fill-rule="nonzero"> <path d="m79.32 36.98v150.76l15.68-13.2 6.59-156.31-22.27 18.75z" fill="url(#f)"/> <path d="m79.32 36.98-22.27-18.75 6.59 156.31 15.68 13.2v-150.76z" fill="url(#e)"/> <path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33z" fill="url(#d)"/> <path d="m25.19 104.83-25.19-14.59 16.97 53.86 16.85 9.77-8.63-49.04z" fill="url(#c)"/> <path d="M43.86,82.5L18.69,67.98L0,90.24L25.18,104.83L43.86,82.5Z" fill="#9c3"/> <path d="m134.82 78.69-9.97 56.5 15.58-9.04 19.57-62.05-25.18 14.59z" fill="url(#b)"/> <path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5z" fill="url(#a)"/> <path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33 25.19-14.59z" fill="#ffe113"/> <path d="M101.59,18.23L79.32,0L57.05,18.23L79.32,36.98L101.59,18.23Z" fill="#f3e600"/> </g> <defs> <linearGradient id="f" x2="1" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)" gradientUnits="userSpaceOnUse"><stop stop-color="#62d399" offset="0"/><stop stop-color="#acd842" offset=".51"/><stop stop-color="#d7db0a" offset=".9"/><stop stop-color="#d7db0a" offset="1"/></linearGradient> <linearGradient id="e" x2="1" gradientTransform="matrix(-1.6,-162.13,162.13,-1.6,69.68,178.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#0ba398" offset="0"/><stop stop-color="#4ca352" offset=".5"/><stop stop-color="#76a30a" offset="1"/></linearGradient> <linearGradient id="d" x2="1" gradientTransform="matrix(-1.9,-67.98,67.98,-1.9,36.6,152.17)" gradientUnits="userSpaceOnUse"><stop stop-color="#36a382" offset="0"/><stop stop-color="#36a382" offset=".19"/><stop stop-color="#49a459" offset=".54"/><stop stop-color="#76a30b" offset="1"/></linearGradient> <linearGradient id="c" x2="1" gradientTransform="matrix(2.18,-62.38,62.38,2.18,15.82,153.24)" gradientUnits="userSpaceOnUse"><stop stop-color="#267880" offset="0"/><stop stop-color="#457a5c" offset=".51"/><stop stop-color="#717516" offset="1"/></linearGradient> <linearGradient id="b" x2="1" gradientTransform="matrix(13.85,-71.96,71.96,13.85,135.08,135.43)" gradientUnits="userSpaceOnUse"><stop stop-color="#b0d939" offset="0"/><stop stop-color="#eadb04" offset="1"/></linearGradient> <linearGradient id="a" x2="1" gradientTransform="matrix(26.159 -64.737 64.737 26.159 107.42 128.14)" gradientUnits="userSpaceOnUse"><stop stop-color="#74af52" offset="0"/><stop stop-color="#74af52" offset=".17"/><stop stop-color="#99be32" offset=".48"/><stop stop-color="#c0c40a" offset="1"/></linearGradient> </defs> </svg>`; btoa(Y1); const K1 = '<svg viewBox="0 0 509 154" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"><path d="M665.95 132.73v44.88l-10.56-8.4c-.8-.64-1.2-1.44-1.2-2.4v-32.4c0-6.48-4.12-9.72-12.36-9.72-2.16 0-4.18.4-6.06 1.2-1.88.8-3.54 1.8-4.98 3-1.44 1.2-2.56 2.5-3.36 3.9-.8 1.4-1.2 2.7-1.2 3.9v40.92l-10.68-8.4c-.72-.64-1.08-1.44-1.08-2.4v-53.76l10.92 8.52c.32.24.56.44.72.6.16.16.36.32.6.48.96-1.2 2.14-2.28 3.54-3.24 1.4-.96 2.92-1.76 4.56-2.4 1.64-.64 3.34-1.14 5.1-1.5 1.76-.36 3.44-.54 5.04-.54 1.44 0 2.92.04 4.44.12 1.52.08 2.84.28 3.96.6 4.56 1.12 7.8 3.12 9.72 6 1.92 2.88 2.88 6.56 2.88 11.04ZM732.38 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM795.93 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14ZM858.57 97.21c.64.48.96 1.16.96 2.04v74.88c-.08 1.04-.12 2.12-.12 3.24-1.84-1.52-3.56-2.92-5.16-4.2-1.36-1.12-2.66-2.18-3.9-3.18-1.24-1-2.06-1.66-2.46-1.98-1.76 2.48-4.26 4.44-7.5 5.88-3.24 1.44-7.02 2.16-11.34 2.16-3.84 0-7.4-.7-10.68-2.1-3.28-1.4-6.14-3.44-8.58-6.12-2.44-2.68-4.34-5.94-5.7-9.78-1.36-3.84-2.04-8.16-2.04-12.96 0-4.32.78-8.34 2.34-12.06 1.56-3.72 3.6-6.92 6.12-9.6 2.52-2.68 5.38-4.78 8.58-6.3 3.2-1.52 6.48-2.28 9.84-2.28 2.56 0 4.82.22 6.78.66 1.96.44 3.68 1.06 5.16 1.86s2.78 1.74 3.9 2.82a35.92 35.92 0 0 1 3.12 3.42V88.57l10.68 8.64Zm-27.96 67.92c3.6 0 6.52-.68 8.76-2.04 2.24-1.36 3.98-3.06 5.22-5.1a20.5 20.5 0 0 0 2.58-6.54c.48-2.32.72-4.44.72-6.36v-1.2c0-1.12-.22-2.7-.66-4.74-.44-2.04-1.28-4.06-2.52-6.06s-3-3.7-5.28-5.1c-2.28-1.4-5.22-2.02-8.82-1.86-3.44 0-6.26.74-8.46 2.22-2.2 1.48-3.96 3.26-5.28 5.34-1.32 2.08-2.24 4.2-2.76 6.36-.52 2.16-.78 3.92-.78 5.28 0 1.84.24 3.92.72 6.24.48 2.32 1.36 4.48 2.64 6.48s3.04 3.68 5.28 5.04c2.24 1.36 5.12 2.04 8.64 2.04ZM882.81 97.09c.64.48.96 1.12.96 1.92l-.12 41.04v37.08l-10.56-8.4c-.72-.64-1.08-1.44-1.08-2.4V88.45l10.8 8.64ZM950.36 146.05c0 .88.02 1.5.06 1.86.04.36-.02.98-.18 1.86h-7.08c-2.08 0-4.44-.02-7.08-.06-2.64-.04-5.36-.06-8.16-.06h-22.08c0 2.88.56 5.36 1.68 7.44 1.12 2.08 2.6 3.8 4.44 5.16 1.84 1.36 3.94 2.36 6.3 3 2.36.64 4.74.96 7.14.96 3.04 0 5.9-.76 8.58-2.28 2.68-1.52 4.94-3.52 6.78-6 .64.56 1.54 1.48 2.7 2.76 1.16 1.28 2.94 3.2 5.34 5.76-2.8 3.36-6.22 6.02-10.26 7.98-4.04 1.96-8.42 2.94-13.14 2.94-4.72 0-8.92-.64-12.84-1.92-3.92-1.28-7.32-3.24-10.2-5.88-2.88-2.64-5.12-5.98-6.72-10.02-1.6-4.04-2.4-8.82-2.4-14.34 0-4.96.66-9.42 1.98-13.38 1.32-3.96 3.22-7.32 5.7-10.08s5.44-4.9 8.88-6.42c3.44-1.52 7.32-2.28 11.64-2.28 5.76 0 10.52.88 14.28 2.64 3.76 1.76 6.72 4.16 8.88 7.2 2.16 3.04 3.66 6.54 4.5 10.5.84 3.96 1.26 8.18 1.26 12.66Zm-29.4-22.8c-2.16.16-4.16.72-6 1.68-1.84.96-3.42 2.2-4.74 3.72-1.32 1.52-2.36 3.28-3.12 5.28-.76 2-1.14 4.12-1.14 6.36h33.12c0-2-.22-4.06-.66-6.18-.44-2.12-1.3-4.02-2.58-5.7-1.28-1.68-3.1-3.02-5.46-4.02-2.36-1-5.5-1.38-9.42-1.14Z" style="fill-rule:nonzero" transform="translate(-452.406 -63.709) scale(1.00797)"/><path d="M79.32 36.98v150.76L95 174.54l6.59-156.31-22.27 18.75Z" style="fill:url(#a);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M79.32 36.98 57.05 18.23l6.59 156.31 15.68 13.2V36.98Z" style="fill:url(#b);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m25.19 104.83 8.63 49.04 12.5-14.95-2.46-56.42-18.67 22.33Z" style="fill:url(#c);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M25.19 104.83 0 90.24l16.97 53.86 16.85 9.77-8.63-49.04Z" style="fill:url(#d);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M43.86 82.5 18.69 67.98 0 90.24l25.18 14.59L43.86 82.5Z" style="fill:#9c3;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-9.97 56.5 15.58-9.04L160 64.1l-25.18 14.59Z" style="fill:url(#e);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m134.82 78.69-18.68-22.33-2.86 65 11.57 13.83 9.97-56.5Z" style="fill:url(#f);fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="m160 64.1-18.69-22.26-25.17 14.52 18.67 22.33L160 64.1Z" style="fill:#ffe113;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><path d="M101.59 18.23 79.32 0 57.05 18.23l22.27 18.75 22.27-18.75Z" style="fill:#f3e600;fill-rule:nonzero" transform="matrix(.80638 0 0 .80638 2.361 1.094)"/><defs><linearGradient id="a" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.84 -162.96 162.96 .84 89.64 184.81)"><stop offset="0" style="stop-color:#62d399;stop-opacity:1"/><stop offset=".51" style="stop-color:#acd842;stop-opacity:1"/><stop offset=".9" style="stop-color:#d7db0a;stop-opacity:1"/><stop offset="1" style="stop-color:#d7db0a;stop-opacity:1"/></linearGradient><linearGradient id="b" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-90.565 123.412 54.953) scale(162.14)"><stop offset="0" style="stop-color:#0ba398;stop-opacity:1"/><stop offset=".5" style="stop-color:#4ca352;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30a;stop-opacity:1"/></linearGradient><linearGradient id="c" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="scale(-68) rotate(88.4 .881 -1.396)"><stop offset="0" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".19" style="stop-color:#36a382;stop-opacity:1"/><stop offset=".54" style="stop-color:#49a459;stop-opacity:1"/><stop offset="1" style="stop-color:#76a30b;stop-opacity:1"/></linearGradient><linearGradient id="d" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-88 87.255 68.431) scale(62.42)"><stop offset="0" style="stop-color:#267880;stop-opacity:1"/><stop offset=".51" style="stop-color:#457a5c;stop-opacity:1"/><stop offset="1" style="stop-color:#717516;stop-opacity:1"/></linearGradient><linearGradient id="e" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-79.1 149.53 -14.065) scale(73.28)"><stop offset="0" style="stop-color:#b0d939;stop-opacity:1"/><stop offset="1" style="stop-color:#eadb04;stop-opacity:1"/></linearGradient><linearGradient id="f" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-67.997 148.705 -15.558) scale(69.8226)"><stop offset="0" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".17" style="stop-color:#74af52;stop-opacity:1"/><stop offset=".48" style="stop-color:#99be32;stop-opacity:1"/><stop offset="1" style="stop-color:#c0c40a;stop-opacity:1"/></linearGradient></defs></svg>', Z1 = btoa(K1), J1 = "data:image/svg+xml;charset=utf-8;base64," + Z1, eC = J1, Ky = typeof window !== void 0 ? window.location.search.includes("debugcontext") : !1; var me = /* @__PURE__ */ ((o) => (o.ContextRegistered = "ContextRegistered", o.ContextCreationStart = "ContextCreationStart", o.ContextCreated = "ContextCreated", o.ContextFirstFrameRendered = "ContextFirstFrameRendered", o.ContextDestroying = "ContextDestroying", o.ContextDestroyed = "ContextDestroyed", o.MissingCamera = "MissingCamera", o.ContextClearing = "ContextClearing", o.ContextCleared = "ContextCleared", o))(me || {}); class pe { /** The currently active (rendering) Needle Engine context */ static get Current() { return globalThis["NeedleEngine.Context.Current"]; } /** @internal */ static set Current(t) { globalThis["NeedleEngine.Context.Current"] = t; } /** Returns the array of all registered Needle Engine contexts. Do not modify */ static get All() { return this.Registered; } /** @internal Internal use only */ static register(t) { this.Registered.indexOf(t) === -1 && (Ky && console.warn("Registering context"), this.Registered.push(t), this.dispatchCallback("ContextRegistered", t)); } /** @internal Internal use only */ static unregister(t) { const e = this.Registered.indexOf(t); e !== -1 && (Ky && console.warn("Unregistering context"), this.Registered.splice(e, 1)); } /** * Register a callback to be called when the given event occurs */ static registerCallback(t, e) { this._callbacks[t] || (this._callbacks[t] = []), this._callbacks[t].push(e); } /** Unregister a callback */ static unregisterCallback(t, e) { if (!this._callbacks[t]) return; const i = this._callbacks[t].indexOf(e); i !== -1 && this._callbacks[t].splice(i, 1); } /** @internal */ static dispatchCallback(t, e, i) { if (!this._callbacks[t]) return !0; const n = { event: t, context: e }; if (i) for (const a in i) n[a] = i[a]; const s = new Array(); return this._callbacks[t].forEach((a) => { const l = a(n); l instanceof Promise && s.push(l); }), Promise.all(s); } /** * Register a callback to be called when a context is created */ static addContextCreatedCallback(t) { this.registerCallback("ContextCreated", t); } /** * Register a callback to be called when a context is registered */ static addContextDestroyedCallback(t) { this.registerCallback("ContextDestroyed", t); } } /** All currently registered Needle Engine contexts. Do not modify */ r(pe, "Registered", []), r(pe, "_callbacks", {}); const tC = () => (o) => o; function VI(o) { return tC()(o); } function HI() { return !!x("debug"); } class tn { constructor(t, e) { r(this, "_factory"); r(this, "_cache", []); r(this, "_maxSize"); r(this, "_index", 0); this._factory = t, this._maxSize = e; } get() { const t = this._index % this._maxSize; return this._index++, this._cache.length <= t && (this._cache[t] = this._factory()), this._cache[t]; } } let pr = !1; const Gp = new Array(); typeof window < "u" && setTimeout(() => { if (pr) { const o = {}, t = new URL(window.location.href), e = new URL(t); e.searchParams.append("console", ""); const i = e.toString().replace(/=$|=(?=&)/g, ""); for (const s of Gp) { const a = new URL(t); a.searchParams.append(s, ""), o[s] = a.toString().replace(/=$|=(?=&)/g, ""); } console.log( `🌵 ?help: Debug Options for Needle Engine. Append any of these parameters to the URL to enable specific debug options. Example: ${i} will show an onscreen console window.` ); const n = pr === !0 ? "" : ` (containing "${pr}")`; console.group("Available URL parameters:" + n); for (const s of Object.keys(o).sort()) typeof pr == "string" && !s.toLowerCase().includes(pr.toLowerCase()) || (console.groupCollapsed(s), console.log("Reload with this flag enabled:"), console.log(o[s]), console.groupEnd()); console.groupEnd(); } }, 100); function Ou() { var o; return new URLSearchParams((o = globalThis.location) == null ? void 0 : o.search); } function x(o) { pr && !Gp.includes(o) && Gp.push(o); const t = Ou(); if (t.has(o)) { const e = t.get(o); if (e) { const i = Number(e); return isNaN(i) ? e : i; } else return !0; } return !1; } pr = x("help"); function GI(o, t) { const e = Ou(); e.has(o) ? e.set(o, t) : e.append(o, t), document.location.search = e.toString(); } function Rd(o, t, e = !0) { const i = Ou(); i.has(o) ? t === null ? i.delete(o) : i.set(o, t) : t !== null && i.append(o, t), e ? iC(o, i) : C0(o, i); } function Zy(o, t, e) { o.has(t) ? o.set(t, e.toString()) : o.append(t, e.toString()); } function iC(o, t, e) { window.history.pushState(e, o, "?" + t.toString()); } function C0(o, t, e) { window.history.replaceState(e, o, "?" + t.toString()); } function qI(o) { for (var t = "", e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", i = e.length, n = 0; n < o; n++) t += e.charAt(Math.floor(Math.random() * i)); return t; } function XI(o, t) { return Math.floor(Math.random() * (t - o + 1)) + o; } const Jy = ["smol", "tiny", "giant", "interesting", "smart", "bright", "dull", "extreme", "beautiful", "pretty", "dark", "epic", "salty", "silly", "funny", "lame", "lazy", "loud", "lucky", "mad", "mean", "mighty", "mysterious", "nasty", "odd", "old", "powerful", "quiet", "rapid", "scary", "shiny", "shy", "silly", "smooth", "sour", "spicy", "stupid", "sweet", "tasty", "terrible", "ugly", "unusual", "vast", "wet", "wild", "witty", "wrong", "zany", "zealous", "zippy", "zombie", "zorro"], e_ = ["cat", "dog", "mouse", "pig", "cow", "horse", "sheep", "chicken", "duck", "goat", "panda", "tiger", "lion", "elephant", "monkey", "bird", "fish", "snake", "frog", "turtle", "hamster", "penguin", "kangaroo", "whale", "dolphin", "crocodile", "snail", "ant", "bee", "beetle", "butterfly", "dragon", "eagle", "fish", "giraffe", "lizard", "panda", "penguin", "rabbit", "snake", "spider", "tiger", "zebra"]; function nC() { const o = Jy[Math.floor(Math.random() * Jy.length)], t = e_[Math.floor(Math.random() * e_.length)]; return o + "_" + t; } function sC(o) { return o = o.replace(/[^a-z0-9áéíóúñü \.,_-]/gim, ""), o.trim(); } function Lc(o, t, e = !0, i = !1) { var n; if (t == null) return null; if (t.userData && t.userData.guid === o) return t; if (t.guid == o) return t; if (i && (n = t.userData) != null && n.components) { for (const s of t.userData.components) if (s.guid === o) return s; } if (e) { if (t.scenes) for (const s in t.scenes) { const a = t.scenes[s], l = Lc(o, a, e, i); if (l) return l; } if (t.children) for (const s in t.children) { const a = t.children[s], l = Lc(o, a, e, i); if (l) return l; } } } function ku(o, t) { if (o != null && typeof o == "object") { let e; Array.isArray(o) ? e = [] : (e = Object.create(o), Object.assign(e, o)); for (const i of Object.keys(o)) { const n = o[i]; t && !t(o, i, n) ? e[i] = n : (n == null ? void 0 : n.clone) !== void 0 && typeof n.clone == "function" ? e[i] = n.clone() : e[i] = ku(n, t); } return e; } return o; } function Kn(o) { return new Promise((t, e) => { setTimeout(t, o); }); } function Mu(o, t) { if (o <= 0) return Promise.resolve(); if (t || (t = pe.Current), !t) return Promise.reject("No context"); const e = t.time.frameCount + o; return new Promise((i, n) => { if (!t) return n("No context"); const s = () => { t.time.frameCount >= e && (t.pre_update_callbacks.splice(t.pre_update_callbacks.indexOf(s), 1), i()); }; t.pre_update_callbacks.push(s); }); } const Eh = x("debugresolveurl"), oC = "rel:"; function QI(o, t) { return qr(o, t); } function qr(o, t) { if (t === void 0) return Eh && console.warn("getPath: uri is undefined, returning uri", t), t; if (t.startsWith("./")) return t; if (t.startsWith("http")) return Eh && console.warn("getPath: uri is absolute, returning uri", t), t; if (o === void 0) return Eh && console.warn("getPath: source is undefined, returning uri", t), t; t.startsWith(oC) && (t = t.substring(4)); const e = o.lastIndexOf("/"); if (e >= 0) { const i = o.substring(0, e + 1); for (; i.endsWith("/") && t.startsWith("/"); ) t = t.substring(1); const n = i + t; return Eh && console.log("source:", o, `changed uri from`, t, ` to `, n, ` basePath: ` + i), n; } return t; } class rC { constructor(t, e) { r(this, "writeCallbacks", []); r(this, "_applied", !1); r(this, "_object"); r(this, "_prop"); r(this, "_wrapperProp"); this._object = t, this._prop = e, this._wrapperProp = Symbol("$" + e), this.apply(); } subscribeWrite(t) { this.writeCallbacks.push(t); } unsubscribeWrite(t) { const e = this.writeCallbacks.indexOf(t); e !== -1 && this.writeCallbacks.splice(e, 1); } apply() { if (this._applied || !this._object) return; const t = this._object, e = this._prop; if (t[e] === void 0) return; this._applied = !0, t[this._wrapperProp] !== void 0 && console.warn("Watcher is being applied to an object that already has a wrapper property. This is not (yet) supported"); const i = t[e]; t[this._wrapperProp] = i, Object.defineProperty(t, e, { get: () => t[this._wrapperProp], set: (a) => { t[this._wrapperProp] = a; for (const l of this.writeCallbacks) l(a, this._prop); } }); } revoke() { if (!this._applied || !this._object) return; this._applied = !1; const t = this._object, e = this._prop; Reflect.deleteProperty(t, e); const i = t[this._wrapperProp]; t[e] = i, Reflect.deleteProperty(t, this._wrapperProp); } dispose() { this.revoke(), this.writeCallbacks.length = 0, this._object = null; } } class Io { constructor(t, e) { r(this, "_watches", []); if (Array.isArray(e)) for (const i of e) this._watches.push(new Io(t, i)); else this._watches.push(new rC(t, e)); } subscribeWrite(t) { for (const e of this._watches) e.subscribeWrite(t); } unsubscribeWrite(t) { for (const e of this._watches) e.unsubscribeWrite(t); } apply() { for (const t of this._watches) t.apply(); } revoke() { for (const t of this._watches) t.revoke(); } dispose() { for (const t of this._watches) t.dispose(); this._watches.length = 0; } } const ya = Symbol("needle:watches"); function cg(o, t) { if (!o[ya]) if (o instanceof re) o[ya] = new Io(o, ["x", "y"]); else if (o instanceof v) o[ya] = new Io(o, ["x", "y", "z"]); else if (o instanceof ye || o instanceof W) o[ya] = new Io(o, ["x", "y", "z", "w"]); else return !1; return o[ya].subscribeWrite(t), !0; } function P0(o, t) { if (!o) return; const e = o[ya]; e && e.unsubscribeWrite(t); } var Q; ((o) => { let t; function e() { if (t !== void 0) return t; const F = window.navigator.userAgent, V = /Windows|MacOS|Mac OS/.test(F), K = /Windows NT/.test(F) && /Edg/.test(F) && !/Win64/.test(F); return t = V && !K && !w(); } o.isDesktop = e; let i; function n() { return i !== void 0 ? i : typeof window.orientation < "u" || navigator.userAgent.indexOf("IEMobile") !== -1 ? i = !0 : i = /iPhone|iPad|iPod|Android|IEMobile/i.test(navigator.userAgent); } o.isMobileDevice = n; function s() { return l(); } o.isIPad = s; let a; function l() { return a !== void 0 ? a : a = /iPad/.test(navigator.userAgent); } o.isiPad = l; let c; function h() { return c !== void 0 ? c : c = /Android/.test(navigator.userAgent); } o.isAndroidDevice = h; let d; function u() { return d !== void 0 ? d : d = /WebXRViewer\//i.test(navigator.userAgent); } o.isMozillaXR = u; let f; function m() { if (f !== void 0) return f; if (navigator.userAgentData) return f = navigator.userAgentData.platform === "macOS"; { const F = navigator.userAgent.toLowerCase(); return f = F.includes("mac os x") || F.includes("macintosh"); } } o.isMacOS = m; let g; function y() { return g !== void 0 ? g : g = m() && "xr" in navigator; } o.isVisionOS = y; let b; const _ = ["iPad Simulator", "iPhone Simulator", "iPod Simulator", "iPad", "iPhone", "iPod"]; function w() { return b !== void 0 ? b : b = _.includes(navigator.platform) || navigator.userAgent.includes("Mac") && "ontouchend" in document; } o.isiOS = w; let S; function M() { return S !== void 0 || (S = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)), S; } o.isSafari = M; let O; function E() { return O !== void 0 ? O : O = navigator.userAgent.includes("OculusBrowser"); } o.isQuest = E; let R; function U() { return R !== void 0 || (R = document.createElement("a").relList.supports("ar")), R; } o.supportsQuickLookAR = U; async function T() { try { return (await navigator.permissions.query({ name: "microphone" })).state !== "denied"; } catch (F) { return console.error("Error querying `microphone` permissions.", F), !1; } } o.microphonePermissionsGranted = T; let I; function L() { if (I !== void 0) return I; const F = navigator.userAgent.match(/iPhone OS (\d+_\d+)/); if (F && (I = F[1].replace("_", ".")), !I) { const V = navigator.userAgent.match(/(?:\(Macintosh;|iPhone;|iPad;).*Version\/(\d+\.\d+)/); V && (I = V[1]); } return I || (I = null), I; } o.getiOSVersion = L; let Y; function A() { if (Y !== void 0) return Y; const F = navigator.userAgent.match(/(?:CriOS|Chrome)\/(\d+\.\d+\.\d+\.\d+)/); return F ? Y = F[1].replace("_", ".") : Y = null, Y; } o.getChromeVersion = A; })(Q || (Q = {})); function YI() { return Q.isDesktop(); } function KI() { return Q.isMobileDevice(); } function ZI() { return Q.isiPad(); } function JI() { return Q.isiPad(); } function eL() { return Q.isAndroidDevice(); } function tL() { return Q.isMozillaXR(); } function iL() { return Q.isMacOS(); } function nL() { return Q.isiOS(); } function sL() { return Q.isSafari(); } function oL() { return Q.isQuest(); } async function rL() { return Q.microphonePermissionsGranted(); } const Po = /* @__PURE__ */ new WeakMap(); function aC(o, t, e) { if (!Po.get(o)) { const n = new MutationObserver((s) => { cC(o, s); }); Po.set(o, { observer: n, attributeChangedListeners: /* @__PURE__ */ new Map() }), n.observe(o, { attributes: !0 }); } const i = Po.get(o).attributeChangedListeners; i.has(t) || i.set(t, []), i.get(t).push(e); } function lC(o, t, e) { if (!Po.get(o)) return; const i = Po.get(o).attributeChangedListeners; if (!i.has(t)) return; const n = i.get(t), s = n.indexOf(e); if (s !== -1 && (n.splice(s, 1), n.length <= 0)) { i.delete(t); const a = Po.get(o); a == null || a.observer.disconnect(), Po.delete(o); } } function cC(o, t) { const e = Po.get(o).attributeChangedListeners; for (const i of t) if (i.type === "attributes") { const n = i.attributeName, s = o.getAttribute(n); if (e.has(n)) for (const a of e.get(n)) a(s); } } class t_ { constructor(t) { r(this, "reason"); this.reason = t; } } async function O0(o) { const t = await Promise.allSettled(o).catch((n) => [ new t_(n.message) ]); let e = !1; const i = t.map((n) => "value" in n ? n.value : (e = !0, new t_(n.reason))); return { anyFailed: e, results: i }; } async function hC(o) { var c; if (!globalThis.QRCode) { const h = "https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"; let d = document.head.querySelector(`script[src="${h}"]`); d || (d = document.createElement("script"), d.src = h, document.head.appendChild(d)), await new Promise((u, f) => { d.addEventListener("load", () => { u(!0); }); }); } const t = globalThis.QRCode, e = o.domElement ?? document.createElement("div"), i = new t(e, { width: o.width ?? 256, height: o.height ?? 256, colorDark: "#000000", colorLight: "#ffffff", correctLevel: o.showLogo ? t.CorrectionLevel.H : t.CorrectLevel.M, ...o }), n = (i == null ? void 0 : i._oQRCode.moduleCount) || 0, s = (c = i == null ? void 0 : i._oDrawing) == null ? void 0 : c._elCanvas; let a = 0.25; n < 40 ? a = Math.floor(n / 4) / n : a = Math.floor(n / 6) / n; const l = Math.floor(n / 20) / n; try { const h = await dC(s, { showLogo: o.showLogo, logoSize: a, logoPadding: l }).catch((d) => { }); h && (e.innerHTML = "", e.append(h)); } catch { } if (o.showUrl !== !1 && o.text) { const h = e.querySelector(".qr-code-link-label"); let d = o.text.replace(/^(https?:\/\/)?(www\.)?/, "").replace(/\/+$/, "").replace(/\?+$/, ""); if (d = "Scan to visit " + d, h) h.textContent = d; else { const u = document.createElement("div"); u.classList.add("qr-code-link-label"), o.text = d, u.textContent = o.text, u.addEventListener("click", (f) => { f.stopImmediatePropagation(); }), u.style.textAlign = "center", u.style.fontSize = "0.8em", u.style.marginTop = "0.1em", u.style.color = "#000000", u.style.fontFamily = "'Roboto Flex', sans-serif", u.style.opacity = "0.5", u.