Commit 3ea4a87f authored by 陈冲's avatar 陈冲
parents b5e67f80 b16b33fc
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
'@msgpack/msgpack':
specifier: ^3.1.3
version: 3.1.3
crypto-js:
specifier: ^4.2.0
version: 4.2.0
msgpack:
specifier: ^1.0.3
version: 1.0.3
socket.io-client:
specifier: ^4.8.3
version: 4.8.3
vue:
specifier: ^3.5.32
version: 3.5.35(typescript@6.0.3)
vue-router:
specifier: ^4.6.4
version: 4.6.4(vue@3.5.35(typescript@6.0.3))
devDependencies:
'@tsconfig/node24':
specifier: ^24.0.4
version: 24.0.4
'@types/node':
specifier: ^24.12.2
version: 24.12.4
'@vitejs/plugin-vue':
specifier: ^6.0.6
version: 6.0.7(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))
'@vue/tsconfig':
specifier: ^0.9.1
version: 0.9.1(typescript@6.0.3)(vue@3.5.35(typescript@6.0.3))
npm-run-all2:
specifier: ^8.0.4
version: 8.0.4
typescript:
specifier: ~6.0.0
version: 6.0.3
vite:
specifier: ^8.0.8
version: 8.0.16(@types/node@24.12.4)
vite-plugin-vue-devtools:
specifier: ^8.1.1
version: 8.1.2(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))
vue-tsc:
specifier: ^3.2.6
version: 3.3.3(typescript@6.0.3)
packages:
'@babel/code-frame@7.29.7':
resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
engines: {node: '>=6.9.0'}
'@babel/compat-data@7.29.7':
resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
engines: {node: '>=6.9.0'}
'@babel/core@7.29.7':
resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.29.7':
resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.29.7':
resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.29.7':
resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
engines: {node: '>=6.9.0'}
'@babel/helper-create-class-features-plugin@7.29.7':
resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-globals@7.29.7':
resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
engines: {node: '>=6.9.0'}
'@babel/helper-member-expression-to-functions@7.29.7':
resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.29.7':
resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-transforms@7.29.7':
resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-optimise-call-expression@7.29.7':
resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==}
engines: {node: '>=6.9.0'}
'@babel/helper-plugin-utils@7.29.7':
resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
engines: {node: '>=6.9.0'}
'@babel/helper-replace-supers@7.29.7':
resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-skip-transparent-expression-wrappers@7.29.7':
resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.29.7':
resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.29.7':
resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
engines: {node: '>=6.9.0'}
'@babel/helpers@7.29.7':
resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.29.7':
resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-proposal-decorators@7.29.7':
resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-decorators@7.29.7':
resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-attributes@7.29.7':
resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-meta@7.10.4':
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-jsx@7.29.7':
resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-typescript@7.29.7':
resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-typescript@7.29.7':
resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/template@7.29.7':
resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.29.7':
resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
engines: {node: '>=6.9.0'}
'@babel/types@7.29.7':
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
'@emnapi/core@1.10.0':
resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
'@emnapi/runtime@1.10.0':
resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
'@emnapi/wasi-threads@1.2.1':
resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@msgpack/msgpack@3.1.3':
resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==}
engines: {node: '>= 18'}
'@napi-rs/wasm-runtime@1.1.4':
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
'@oxc-project/types@0.133.0':
resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
'@rolldown/binding-android-arm64@1.0.3':
resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@rolldown/binding-darwin-arm64@1.0.3':
resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@rolldown/binding-darwin-x64@1.0.3':
resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@rolldown/binding-freebsd-x64@1.0.3':
resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@rolldown/binding-linux-arm-gnueabihf@1.0.3':
resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@rolldown/binding-linux-arm64-gnu@1.0.3':
resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-arm64-musl@1.0.3':
resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rolldown/binding-linux-ppc64-gnu@1.0.3':
resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-s390x-gnu@1.0.3':
resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-gnu@1.0.3':
resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-musl@1.0.3':
resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@rolldown/binding-openharmony-arm64@1.0.3':
resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@rolldown/binding-wasm32-wasi@1.0.3':
resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
'@rolldown/binding-win32-arm64-msvc@1.0.3':
resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@rolldown/binding-win32-x64-msvc@1.0.3':
resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
'@rolldown/pluginutils@1.0.1':
resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@tsconfig/node24@24.0.4':
resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==}
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
'@types/node@24.12.4':
resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==}
'@vitejs/plugin-vue@6.0.7':
resolution: {integrity: sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vue: ^3.2.25
'@volar/language-core@2.4.28':
resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
'@volar/source-map@2.4.28':
resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
'@volar/typescript@2.4.28':
resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
'@vue/babel-helper-vue-transform-on@1.5.0':
resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==}
'@vue/babel-plugin-jsx@1.5.0':
resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
'@vue/babel-plugin-resolve-type@1.5.0':
resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@vue/compiler-core@3.5.35':
resolution: {integrity: sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==}
'@vue/compiler-dom@3.5.35':
resolution: {integrity: sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==}
'@vue/compiler-sfc@3.5.35':
resolution: {integrity: sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==}
'@vue/compiler-ssr@3.5.35':
resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==}
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
'@vue/devtools-core@8.1.2':
resolution: {integrity: sha512-ZGGyaSBP4/+bN2Nd9ZHNYAVDRIzMw1rv2RyXWtyZlo6mQal+IDmTvKY4V+DjAEBhaXt30mHmsgYp1yXJ/2tIWg==}
peerDependencies:
vue: ^3.0.0
'@vue/devtools-kit@8.1.2':
resolution: {integrity: sha512-f75/upc+GCyjXErpgPGz4582ujS0L/adAltGy+tqXMGUJpgAcfGr6CxnnhpZY8BHuMYt6KpbF8uaFrrQG66rGQ==}
'@vue/devtools-shared@8.1.2':
resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==}
'@vue/language-core@3.3.3':
resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==}
'@vue/reactivity@3.5.35':
resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==}
'@vue/runtime-core@3.5.35':
resolution: {integrity: sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==}
'@vue/runtime-dom@3.5.35':
resolution: {integrity: sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==}
'@vue/server-renderer@3.5.35':
resolution: {integrity: sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==}
peerDependencies:
vue: 3.5.35
'@vue/shared@3.5.35':
resolution: {integrity: sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==}
'@vue/tsconfig@0.9.1':
resolution: {integrity: sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==}
peerDependencies:
typescript: '>= 5.8'
vue: ^3.4.0
peerDependenciesMeta:
typescript:
optional: true
vue:
optional: true
alien-signals@3.2.1:
resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==}
ansi-styles@6.2.3:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
ansis@4.3.1:
resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==}
engines: {node: '>=14'}
baseline-browser-mapping@2.10.33:
resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==}
engines: {node: '>=6.0.0'}
hasBin: true
birpc@2.9.0:
resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==}
birpc@4.0.0:
resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==}
browserslist@4.28.2:
resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
caniuse-lite@1.0.30001793:
resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
default-browser-id@5.0.1:
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
engines: {node: '>=18'}
default-browser@5.5.0:
resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
engines: {node: '>=18'}
define-lazy-prop@3.0.0:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
electron-to-chromium@1.5.366:
resolution: {integrity: sha512-OlRuhb688YTCzzU3gXPLn6nGyd+F+53INE1qaKKlu6kETErE8FYsyDh0XqXEU+uBRn0MpCzz2vfNwORhkap8qg==}
engine.io-client@6.6.5:
resolution: {integrity: sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg==}
engine.io-parser@5.2.3:
resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
engines: {node: '>=10.0.0'}
entities@7.0.1:
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
engines: {node: '>=0.12'}
error-stack-parser-es@1.0.5:
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
is-in-ssh@1.0.0:
resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==}
engines: {node: '>=20'}
is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
hasBin: true
is-wsl@3.1.1:
resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
engines: {node: '>=16'}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
isexe@3.1.5:
resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==}
engines: {node: '>=18'}
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
hasBin: true
json-parse-even-better-errors@4.0.0:
resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==}
engines: {node: ^18.17.0 || >=20.5.0}
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
kolorist@1.8.0:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
lightningcss-android-arm64@1.32.0:
resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
lightningcss-darwin-arm64@1.32.0:
resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.32.0:
resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.32.0:
resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-linux-arm-gnueabihf@1.32.0:
resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm64-gnu@1.32.0:
resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-x64-msvc@1.32.0:
resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss@1.32.0:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
mrmime@2.0.1:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
msgpack@1.0.3:
resolution: {integrity: sha512-FX88+Pexuh+UItdqg68WhNPGPhqs57RlXAYyXNZ8eTQC/Tx5lzeIoxTxA2qAd7qU5a/crON5F0ADf4l6k2b7Jw==}
engines: {node: '>=0.12.7'}
hasBin: true
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
nan@2.27.0:
resolution: {integrity: sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ==}
nanoid@3.3.12:
resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
node-releases@2.0.47:
resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==}
engines: {node: '>=18'}
npm-normalize-package-bin@4.0.0:
resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==}
engines: {node: ^18.17.0 || >=20.5.0}
npm-run-all2@8.0.4:
resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==}
engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'}
hasBin: true
obug@2.1.1:
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
open@11.0.0:
resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==}
engines: {node: '>=20'}
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
perfect-debounce@2.1.0:
resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@4.0.4:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
hasBin: true
postcss@8.5.15:
resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
engines: {node: ^10 || ^12 || >=14}
powershell-utils@0.1.0:
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
engines: {node: '>=20'}
read-package-json-fast@4.0.0:
resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==}
engines: {node: ^18.17.0 || >=20.5.0}
rolldown@1.0.3:
resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
engines: {node: '>=18'}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shell-quote@1.8.4:
resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==}
engines: {node: '>= 0.4'}
sirv@3.0.2:
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
engines: {node: '>=18'}
socket.io-client@4.8.3:
resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==}
engines: {node: '>=10.0.0'}
socket.io-parser@4.2.6:
resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==}
engines: {node: '>=10.0.0'}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
typescript@6.0.3:
resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
hasBin: true
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
unplugin-utils@0.3.1:
resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
engines: {node: '>=20.19.0'}
update-browserslist-db@1.2.3:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
vite-dev-rpc@2.0.0:
resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0
vite-hot-client@2.2.0:
resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==}
peerDependencies:
vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0
vite-plugin-inspect@11.4.1:
resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': '*'
vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0
peerDependenciesMeta:
'@nuxt/kit':
optional: true
vite-plugin-vue-devtools@8.1.2:
resolution: {integrity: sha512-gt5h1CNryR9Hy0tvhSbqY3j0F7aj0pGxBxWLa1lXSiZVkhdWDf0vbCOZyjh8ivFGE6FDHTGy3zkcZGlMZdVHig==}
engines: {node: '>=v14.21.3'}
peerDependencies:
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
vite-plugin-vue-inspector@6.0.0:
resolution: {integrity: sha512-OpyITJLgZNibxlrik1EmRtvXHDjLRxNPsWkGFTERZs2LgMEdG4W0WoFt5GIgp3a3jRou+eJR8U1zOBk/XQgEbw==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vite@8.0.16:
resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
'@vitejs/devtools': ^0.1.18
esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
sugarss: ^5.0.0
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
'@vitejs/devtools':
optional: true
esbuild:
optional: true
jiti:
optional: true
less:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
vue-router@4.6.4:
resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
peerDependencies:
vue: ^3.5.0
vue-tsc@3.3.3:
resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
vue@3.5.35:
resolution: {integrity: sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
which@5.0.0:
resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==}
engines: {node: ^18.17.0 || >=20.5.0}
hasBin: true
ws@8.20.1:
resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
wsl-utils@0.3.1:
resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==}
engines: {node: '>=20'}
xmlhttprequest-ssl@2.1.2:
resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
engines: {node: '>=0.4.0'}
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
snapshots:
'@babel/code-frame@7.29.7':
dependencies:
'@babel/helper-validator-identifier': 7.29.7
js-tokens: 4.0.0
picocolors: 1.1.1
'@babel/compat-data@7.29.7': {}
'@babel/core@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
'@babel/helpers': 7.29.7
'@babel/parser': 7.29.7
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/generator@7.29.7':
dependencies:
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/helper-compilation-targets@7.29.7':
dependencies:
'@babel/compat-data': 7.29.7
'@babel/helper-validator-option': 7.29.7
browserslist: 4.28.2
lru-cache: 5.1.1
semver: 6.3.1
'@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
'@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7)
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
'@babel/traverse': 7.29.7
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/helper-globals@7.29.7': {}
'@babel/helper-member-expression-to-functions@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-module-imports': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/helper-plugin-utils@7.29.7': {}
'@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-string-parser@7.29.7': {}
'@babel/helper-validator-identifier@7.29.7': {}
'@babel/helper-validator-option@7.29.7': {}
'@babel/helpers@7.29.7':
dependencies:
'@babel/template': 7.29.7
'@babel/types': 7.29.7
'@babel/parser@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7)
transitivePeerDependencies:
- supports-color
'@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
'@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7)
transitivePeerDependencies:
- supports-color
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
'@babel/traverse@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-globals': 7.29.7
'@babel/parser': 7.29.7
'@babel/template': 7.29.7
'@babel/types': 7.29.7
debug: 4.4.3
transitivePeerDependencies:
- supports-color
'@babel/types@7.29.7':
dependencies:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@emnapi/core@1.10.0':
dependencies:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.10.0':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
tslib: 2.8.1
optional: true
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@msgpack/msgpack@3.1.3': {}
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.10.2
optional: true
'@oxc-project/types@0.133.0': {}
'@polka/url@1.0.0-next.29': {}
'@rolldown/binding-android-arm64@1.0.3':
optional: true
'@rolldown/binding-darwin-arm64@1.0.3':
optional: true
'@rolldown/binding-darwin-x64@1.0.3':
optional: true
'@rolldown/binding-freebsd-x64@1.0.3':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.3':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.3':
optional: true
'@rolldown/binding-linux-ppc64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-s390x-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.3':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.3':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.3':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
'@rolldown/binding-win32-arm64-msvc@1.0.3':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.3':
optional: true
'@rolldown/pluginutils@1.0.1': {}
'@socket.io/component-emitter@3.1.2': {}
'@tsconfig/node24@24.0.4': {}
'@tybys/wasm-util@0.10.2':
dependencies:
tslib: 2.8.1
optional: true
'@types/node@24.12.4':
dependencies:
undici-types: 7.16.0
'@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
vite: 8.0.16(@types/node@24.12.4)
vue: 3.5.35(typescript@6.0.3)
'@volar/language-core@2.4.28':
dependencies:
'@volar/source-map': 2.4.28
'@volar/source-map@2.4.28': {}
'@volar/typescript@2.4.28':
dependencies:
'@volar/language-core': 2.4.28
path-browserify: 1.0.1
vscode-uri: 3.1.0
'@vue/babel-helper-vue-transform-on@1.5.0': {}
'@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7)':
dependencies:
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
'@vue/babel-helper-vue-transform-on': 1.5.0
'@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7)
'@vue/shared': 3.5.35
optionalDependencies:
'@babel/core': 7.29.7
transitivePeerDependencies:
- supports-color
'@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7)':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/core': 7.29.7
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/parser': 7.29.7
'@vue/compiler-sfc': 3.5.35
transitivePeerDependencies:
- supports-color
'@vue/compiler-core@3.5.35':
dependencies:
'@babel/parser': 7.29.7
'@vue/shared': 3.5.35
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-dom@3.5.35':
dependencies:
'@vue/compiler-core': 3.5.35
'@vue/shared': 3.5.35
'@vue/compiler-sfc@3.5.35':
dependencies:
'@babel/parser': 7.29.7
'@vue/compiler-core': 3.5.35
'@vue/compiler-dom': 3.5.35
'@vue/compiler-ssr': 3.5.35
'@vue/shared': 3.5.35
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.15
source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.35':
dependencies:
'@vue/compiler-dom': 3.5.35
'@vue/shared': 3.5.35
'@vue/devtools-api@6.6.4': {}
'@vue/devtools-core@8.1.2(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@vue/devtools-kit': 8.1.2
'@vue/devtools-shared': 8.1.2
vue: 3.5.35(typescript@6.0.3)
'@vue/devtools-kit@8.1.2':
dependencies:
'@vue/devtools-shared': 8.1.2
birpc: 2.9.0
hookable: 5.5.3
perfect-debounce: 2.1.0
'@vue/devtools-shared@8.1.2': {}
'@vue/language-core@3.3.3':
dependencies:
'@volar/language-core': 2.4.28
'@vue/compiler-dom': 3.5.35
'@vue/shared': 3.5.35
alien-signals: 3.2.1
muggle-string: 0.4.1
path-browserify: 1.0.1
picomatch: 4.0.4
'@vue/reactivity@3.5.35':
dependencies:
'@vue/shared': 3.5.35
'@vue/runtime-core@3.5.35':
dependencies:
'@vue/reactivity': 3.5.35
'@vue/shared': 3.5.35
'@vue/runtime-dom@3.5.35':
dependencies:
'@vue/reactivity': 3.5.35
'@vue/runtime-core': 3.5.35
'@vue/shared': 3.5.35
csstype: 3.2.3
'@vue/server-renderer@3.5.35(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@vue/compiler-ssr': 3.5.35
'@vue/shared': 3.5.35
vue: 3.5.35(typescript@6.0.3)
'@vue/shared@3.5.35': {}
'@vue/tsconfig@0.9.1(typescript@6.0.3)(vue@3.5.35(typescript@6.0.3))':
optionalDependencies:
typescript: 6.0.3
vue: 3.5.35(typescript@6.0.3)
alien-signals@3.2.1: {}
ansi-styles@6.2.3: {}
ansis@4.3.1: {}
baseline-browser-mapping@2.10.33: {}
birpc@2.9.0: {}
birpc@4.0.0: {}
browserslist@4.28.2:
dependencies:
baseline-browser-mapping: 2.10.33
caniuse-lite: 1.0.30001793
electron-to-chromium: 1.5.366
node-releases: 2.0.47
update-browserslist-db: 1.2.3(browserslist@4.28.2)
bundle-name@4.1.0:
dependencies:
run-applescript: 7.1.0
caniuse-lite@1.0.30001793: {}
convert-source-map@2.0.0: {}
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
crypto-js@4.2.0: {}
csstype@3.2.3: {}
debug@4.4.3:
dependencies:
ms: 2.1.3
default-browser-id@5.0.1: {}
default-browser@5.5.0:
dependencies:
bundle-name: 4.1.0
default-browser-id: 5.0.1
define-lazy-prop@3.0.0: {}
detect-libc@2.1.2: {}
electron-to-chromium@1.5.366: {}
engine.io-client@6.6.5:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
engine.io-parser: 5.2.3
ws: 8.20.1
xmlhttprequest-ssl: 2.1.2
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
engine.io-parser@5.2.3: {}
entities@7.0.1: {}
error-stack-parser-es@1.0.5: {}
escalade@3.2.0: {}
estree-walker@2.0.2: {}
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
fsevents@2.3.3:
optional: true
gensync@1.0.0-beta.2: {}
hookable@5.5.3: {}
is-docker@3.0.0: {}
is-in-ssh@1.0.0: {}
is-inside-container@1.0.0:
dependencies:
is-docker: 3.0.0
is-wsl@3.1.1:
dependencies:
is-inside-container: 1.0.0
isexe@2.0.0: {}
isexe@3.1.5: {}
js-tokens@4.0.0: {}
jsesc@3.1.0: {}
json-parse-even-better-errors@4.0.0: {}
json5@2.2.3: {}
kolorist@1.8.0: {}
lightningcss-android-arm64@1.32.0:
optional: true
lightningcss-darwin-arm64@1.32.0:
optional: true
lightningcss-darwin-x64@1.32.0:
optional: true
lightningcss-freebsd-x64@1.32.0:
optional: true
lightningcss-linux-arm-gnueabihf@1.32.0:
optional: true
lightningcss-linux-arm64-gnu@1.32.0:
optional: true
lightningcss-linux-arm64-musl@1.32.0:
optional: true
lightningcss-linux-x64-gnu@1.32.0:
optional: true
lightningcss-linux-x64-musl@1.32.0:
optional: true
lightningcss-win32-arm64-msvc@1.32.0:
optional: true
lightningcss-win32-x64-msvc@1.32.0:
optional: true
lightningcss@1.32.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
lightningcss-android-arm64: 1.32.0
lightningcss-darwin-arm64: 1.32.0
lightningcss-darwin-x64: 1.32.0
lightningcss-freebsd-x64: 1.32.0
lightningcss-linux-arm-gnueabihf: 1.32.0
lightningcss-linux-arm64-gnu: 1.32.0
lightningcss-linux-arm64-musl: 1.32.0
lightningcss-linux-x64-gnu: 1.32.0
lightningcss-linux-x64-musl: 1.32.0
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
memorystream@0.3.1: {}
mrmime@2.0.1: {}
ms@2.1.3: {}
msgpack@1.0.3:
dependencies:
nan: 2.27.0
muggle-string@0.4.1: {}
nan@2.27.0: {}
nanoid@3.3.12: {}
node-releases@2.0.47: {}
npm-normalize-package-bin@4.0.0: {}
npm-run-all2@8.0.4:
dependencies:
ansi-styles: 6.2.3
cross-spawn: 7.0.6
memorystream: 0.3.1
picomatch: 4.0.4
pidtree: 0.6.0
read-package-json-fast: 4.0.0
shell-quote: 1.8.4
which: 5.0.0
obug@2.1.1: {}
ohash@2.0.11: {}
open@11.0.0:
dependencies:
default-browser: 5.5.0
define-lazy-prop: 3.0.0
is-in-ssh: 1.0.0
is-inside-container: 1.0.0
powershell-utils: 0.1.0
wsl-utils: 0.3.1
path-browserify@1.0.1: {}
path-key@3.1.1: {}
pathe@2.0.3: {}
perfect-debounce@2.1.0: {}
picocolors@1.1.1: {}
picomatch@4.0.4: {}
pidtree@0.6.0: {}
postcss@8.5.15:
dependencies:
nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
powershell-utils@0.1.0: {}
read-package-json-fast@4.0.0:
dependencies:
json-parse-even-better-errors: 4.0.0
npm-normalize-package-bin: 4.0.0
rolldown@1.0.3:
dependencies:
'@oxc-project/types': 0.133.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
'@rolldown/binding-android-arm64': 1.0.3
'@rolldown/binding-darwin-arm64': 1.0.3
'@rolldown/binding-darwin-x64': 1.0.3
'@rolldown/binding-freebsd-x64': 1.0.3
'@rolldown/binding-linux-arm-gnueabihf': 1.0.3
'@rolldown/binding-linux-arm64-gnu': 1.0.3
'@rolldown/binding-linux-arm64-musl': 1.0.3
'@rolldown/binding-linux-ppc64-gnu': 1.0.3
'@rolldown/binding-linux-s390x-gnu': 1.0.3
'@rolldown/binding-linux-x64-gnu': 1.0.3
'@rolldown/binding-linux-x64-musl': 1.0.3
'@rolldown/binding-openharmony-arm64': 1.0.3
'@rolldown/binding-wasm32-wasi': 1.0.3
'@rolldown/binding-win32-arm64-msvc': 1.0.3
'@rolldown/binding-win32-x64-msvc': 1.0.3
run-applescript@7.1.0: {}
semver@6.3.1: {}
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
shell-quote@1.8.4: {}
sirv@3.0.2:
dependencies:
'@polka/url': 1.0.0-next.29
mrmime: 2.0.1
totalist: 3.0.1
socket.io-client@4.8.3:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
engine.io-client: 6.6.5
socket.io-parser: 4.2.6
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
socket.io-parser@4.2.6:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
transitivePeerDependencies:
- supports-color
source-map-js@1.2.1: {}
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
totalist@3.0.1: {}
tslib@2.8.1:
optional: true
typescript@6.0.3: {}
undici-types@7.16.0: {}
unplugin-utils@0.3.1:
dependencies:
pathe: 2.0.3
picomatch: 4.0.4
update-browserslist-db@1.2.3(browserslist@4.28.2):
dependencies:
browserslist: 4.28.2
escalade: 3.2.0
picocolors: 1.1.1
vite-dev-rpc@2.0.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
birpc: 4.0.0
vite: 8.0.16(@types/node@24.12.4)
vite-hot-client: 2.2.0(vite@8.0.16(@types/node@24.12.4))
vite-hot-client@2.2.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
vite: 8.0.16(@types/node@24.12.4)
vite-plugin-inspect@11.4.1(vite@8.0.16(@types/node@24.12.4)):
dependencies:
ansis: 4.3.1
error-stack-parser-es: 1.0.5
obug: 2.1.1
ohash: 2.0.11
open: 11.0.0
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.1
vite: 8.0.16(@types/node@24.12.4)
vite-dev-rpc: 2.0.0(vite@8.0.16(@types/node@24.12.4))
vite-plugin-vue-devtools@8.1.2(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3)):
dependencies:
'@vue/devtools-core': 8.1.2(vue@3.5.35(typescript@6.0.3))
'@vue/devtools-kit': 8.1.2
'@vue/devtools-shared': 8.1.2
sirv: 3.0.2
vite: 8.0.16(@types/node@24.12.4)
vite-plugin-inspect: 11.4.1(vite@8.0.16(@types/node@24.12.4))
vite-plugin-vue-inspector: 6.0.0(vite@8.0.16(@types/node@24.12.4))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- vue
vite-plugin-vue-inspector@6.0.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
'@babel/core': 7.29.7
'@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7)
'@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7)
'@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7)
'@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7)
'@vue/compiler-dom': 3.5.35
kolorist: 1.8.0
magic-string: 0.30.21
vite: 8.0.16(@types/node@24.12.4)
transitivePeerDependencies:
- supports-color
vite@8.0.16(@types/node@24.12.4):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
postcss: 8.5.15
rolldown: 1.0.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 24.12.4
fsevents: 2.3.3
vscode-uri@3.1.0: {}
vue-router@4.6.4(vue@3.5.35(typescript@6.0.3)):
dependencies:
'@vue/devtools-api': 6.6.4
vue: 3.5.35(typescript@6.0.3)
vue-tsc@3.3.3(typescript@6.0.3):
dependencies:
'@volar/typescript': 2.4.28
'@vue/language-core': 3.3.3
typescript: 6.0.3
vue@3.5.35(typescript@6.0.3):
dependencies:
'@vue/compiler-dom': 3.5.35
'@vue/compiler-sfc': 3.5.35
'@vue/runtime-dom': 3.5.35
'@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@6.0.3))
'@vue/shared': 3.5.35
optionalDependencies:
typescript: 6.0.3
which@2.0.2:
dependencies:
isexe: 2.0.0
which@5.0.0:
dependencies:
isexe: 3.1.5
ws@8.20.1: {}
wsl-utils@0.3.1:
dependencies:
is-wsl: 3.1.1
powershell-utils: 0.1.0
xmlhttprequest-ssl@2.1.2: {}
yallist@3.1.1: {}
<svg width="338" height="119" viewBox="0 0 338 119" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.7199 17.3104C20.5429 12.5095 24.7052 9 29.5761 9H322.614C328.7 9 333.375 14.3899 332.514 20.4142L320.371 105.414C319.667 110.341 315.448 114 310.472 114H15.0047C8.80654 114 4.10121 108.419 5.14847 102.31L19.7199 17.3104Z" fill="#DDA706"/>
<path d="M322.614 6.5C330.221 6.5 336.065 13.2373 334.989 20.7676L322.846 105.768C321.966 111.926 316.692 116.5 310.472 116.5H15.0049C7.25719 116.5 1.37549 109.524 2.68457 101.888L17.2559 16.8877C18.2847 10.8867 23.4876 6.5 29.5762 6.5H322.614Z" stroke="#A27900" stroke-opacity="0.6" stroke-width="5"/>
<path d="M21.7199 8.31036C22.5429 3.5095 26.7052 0 31.5761 0H322.83C328.84 0 333.493 5.26398 332.754 11.2287L322.23 96.2287C321.61 101.238 317.354 105 312.306 105H17.0047C10.8065 105 6.10121 99.4194 7.14847 93.3104L21.7199 8.31036Z" fill="#FFCE3C"/>
<path d="M22.571 8.58873C23.4857 3.89102 27.6007 0.5 32.3866 0.5H322.991C328.944 0.5 333.579 5.6693 332.932 11.5873L328.058 56.1507C327.53 60.9784 323.609 64.7288 318.763 65.0425L173.514 74.4437C172.936 74.4812 172.355 74.4682 171.778 74.4049L23.9465 58.1852C18.1314 57.5472 14.1034 52.0757 15.2215 46.3336L22.571 8.58873Z" fill="white" fill-opacity="0.3"/>
<path d="M85.0725 69.576C89.2165 66.048 92.8565 62.464 95.8805 58.824L88.3765 48.072H86.3045V49.304C86.3045 56.584 85.1845 62.912 82.3285 69.576H74.0965C78.1845 62.8 79.3045 57.032 79.3045 49.304V29.928C89.7765 29.928 100.361 29.536 110.721 28.752V35.472C102.657 36.144 94.5365 36.48 86.3045 36.592V41.744H112.345C110.329 47.904 107.585 53.448 104.113 58.432L112.345 69.576H104.449L100.081 63.696C98.2885 65.768 96.3845 67.728 94.3125 69.576H85.0725ZM60.8245 52.44V45.16H74.7125C74.7125 54.456 74.1525 61.68 72.4725 69.464C75.8325 71.312 79.6965 72.04 85.4645 72.04H112.905V79.04H85.4645C78.6325 79.04 74.3765 78.312 70.7365 76.464C70.4005 77.472 70.1205 78.536 69.7845 79.6H62.0565C65.6405 69.632 67.0405 61.904 67.4325 52.44H60.8245ZM63.1205 29.2H70.6805L74.5445 41.352H66.9845L63.1205 29.2ZM96.3285 48.072L99.9125 53.336C101.089 51.6 102.097 49.864 102.993 48.072H96.3285ZM119.961 30.768H166.329V78.032H119.961V30.768ZM127.185 70.864H159.105V37.936H127.185V70.864ZM131.665 66.496V42.304H154.625V66.496H131.665ZM138.777 59.384H147.513V49.36H138.777V59.384ZM221.321 41.744V79.208H176.969V41.744H194.777L195.393 38.944H173.217V32.504H184.529L183.129 28.528H190.745L192.145 32.504H206.145L207.545 28.528H215.161L213.761 32.504H225.073V38.944H202.785L202.169 41.744H221.321ZM184.249 72.936H214.041V68.736H184.249V72.936ZM184.249 62.576H214.041V58.488H184.249V62.576ZM184.249 52.272H214.041V48.072H184.249V52.272ZM233.697 66.664V41.072H251.449V36.816H229.945V29.704H280.345V36.816H258.841V41.072H276.593V66.664H269.369V48.24H240.921V66.664H233.697ZM229.889 80.16V72.88C243.721 69.744 252.009 63.976 252.009 51.04H259.177C259.177 66.776 249.993 76.016 229.889 80.16ZM256.545 72.32V65.04L280.345 72.88V80.16L256.545 72.32Z" fill="white"/>
<path d="M83.0725 66.576C87.2165 63.048 90.8565 59.464 93.8805 55.824L86.3765 45.072H84.3045V46.304C84.3045 53.584 83.1845 59.912 80.3285 66.576H72.0965C76.1845 59.8 77.3045 54.032 77.3045 46.304V26.928C87.7765 26.928 98.3605 26.536 108.721 25.752V32.472C100.657 33.144 92.5365 33.48 84.3045 33.592V38.744H110.345C108.329 44.904 105.585 50.448 102.113 55.432L110.345 66.576H102.449L98.0805 60.696C96.2885 62.768 94.3845 64.728 92.3125 66.576H83.0725ZM58.8245 49.44V42.16H72.7125C72.7125 51.456 72.1525 58.68 70.4725 66.464C73.8325 68.312 77.6965 69.04 83.4645 69.04H110.905V76.04H83.4645C76.6325 76.04 72.3765 75.312 68.7365 73.464C68.4005 74.472 68.1205 75.536 67.7845 76.6H60.0565C63.6405 66.632 65.0405 58.904 65.4325 49.44H58.8245ZM61.1205 26.2H68.6805L72.5445 38.352H64.9845L61.1205 26.2ZM94.3285 45.072L97.9125 50.336C99.0885 48.6 100.097 46.864 100.993 45.072H94.3285ZM117.961 27.768H164.329V75.032H117.961V27.768ZM125.185 67.864H157.105V34.936H125.185V67.864ZM129.665 63.496V39.304H152.625V63.496H129.665ZM136.777 56.384H145.513V46.36H136.777V56.384ZM219.321 38.744V76.208H174.969V38.744H192.777L193.393 35.944H171.217V29.504H182.529L181.129 25.528H188.745L190.145 29.504H204.145L205.545 25.528H213.161L211.761 29.504H223.073V35.944H200.785L200.169 38.744H219.321ZM182.249 69.936H212.041V65.736H182.249V69.936ZM182.249 59.576H212.041V55.488H182.249V59.576ZM182.249 49.272H212.041V45.072H182.249V49.272ZM231.697 63.664V38.072H249.449V33.816H227.945V26.704H278.345V33.816H256.841V38.072H274.593V63.664H267.369V45.24H238.921V63.664H231.697ZM227.889 77.16V69.88C241.721 66.744 250.009 60.976 250.009 48.04H257.177C257.177 63.776 247.993 73.016 227.889 77.16ZM254.545 69.32V62.04L278.345 69.88V77.16L254.545 69.32Z" fill="#A00000"/>
</svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25 8C29.224 8 33.118 9.402 36.276 11.742L39.008 9.01C39.1937 8.82431 39.4141 8.67701 39.6567 8.57652C39.8994 8.47603 40.1594 8.4243 40.422 8.4243C40.6846 8.4243 40.9446 8.47603 41.1873 8.57652C41.4299 8.67701 41.6503 8.82431 41.836 9.01C42.0217 9.19569 42.169 9.41613 42.2695 9.65875C42.37 9.90136 42.4217 10.1614 42.4217 10.424C42.4217 10.6866 42.37 10.9466 42.2695 11.1893C42.169 11.4319 42.0217 11.6523 41.836 11.838L39.226 14.45C42.3 17.9079 43.9986 22.3733 44 27C44 37.476 35.476 46 25 46C14.524 46 6 37.476 6 27C6 16.524 14.524 8 25 8ZM25 12C16.728 12 10 18.728 10 27C10 35.272 16.728 42 25 42C33.272 42 40 35.272 40 27C40 18.728 33.272 12 25 12ZM24 18C24.2626 18 24.5227 18.0517 24.7654 18.1522C25.008 18.2528 25.2285 18.4001 25.4142 18.5858C25.5999 18.7715 25.7473 18.992 25.8478 19.2346C25.9483 19.4773 26 19.7374 26 20V26.93L31.11 30.336C31.5273 30.6403 31.8108 31.0941 31.9014 31.6026C31.9919 32.1111 31.8824 32.6349 31.5958 33.0645C31.3092 33.4942 30.8677 33.7964 30.3634 33.9081C29.8592 34.0199 29.3313 33.9324 28.89 33.664L22.89 29.664C22.6162 29.4813 22.3917 29.2338 22.2364 28.9436C22.0812 28.6533 22 28.3292 22 28V20C22 19.4696 22.2107 18.9609 22.5858 18.5858C22.9609 18.2107 23.4696 18 24 18ZM32 2C32.2627 1.99996 32.5228 2.05166 32.7655 2.15215C33.0082 2.25264 33.2287 2.39996 33.4144 2.58568C33.6002 2.7714 33.7475 2.99189 33.848 3.23456C33.9486 3.47723 34.0003 3.73733 34.0003 4C34.0003 4.26267 33.9486 4.52277 33.848 4.76544C33.7475 5.00811 33.6002 5.2286 33.4144 5.41432C33.2287 5.60004 33.0082 5.74736 32.7655 5.84785C32.5228 5.94834 32.2627 6.00004 32 6H18C17.7373 6.00004 17.4772 5.94834 17.2345 5.84785C16.9919 5.74736 16.7713 5.60004 16.5856 5.41432C16.3998 5.2286 16.2525 5.00811 16.152 4.76544C16.0514 4.52277 15.9997 4.26267 15.9997 4C15.9997 3.73733 16.0514 3.47723 16.152 3.23456C16.2525 2.99189 16.3998 2.7714 16.5856 2.58568C16.7713 2.39996 16.9919 2.25264 17.2345 2.15215C17.4772 2.05166 17.7373 1.99996 18 2H32Z" fill="white"/>
</svg>
<svg width="64" height="260" viewBox="0 0 64 260" fill="none" xmlns="http://www.w3.org/2000/svg">
<line x1="33.5" y1="6.55671e-08" x2="33.5" y2="196" stroke="white" stroke-width="3"/>
<g clip-path="url(#clip0_152_314)">
<path d="M61.4862 215.545C59.8798 211.742 57.5505 208.287 54.6275 205.372C51.6595 202.396 48.1325 200.036 44.2493 198.428C40.366 196.819 36.2032 195.994 32 196C27.7968 195.994 23.6339 196.819 19.7507 198.428C15.8675 200.036 12.3405 202.396 9.37247 205.372C6.39627 208.34 4.0361 211.867 2.42764 215.751C0.819185 219.634 -0.00582988 223.797 3.10085e-05 228C-0.00582988 232.203 0.819185 236.366 2.42764 240.249C4.0361 244.133 6.39627 247.66 9.37247 250.628C12.3405 253.604 15.8675 255.964 19.7507 257.572C23.6339 259.181 27.7968 260.006 32 260C36.2032 260.006 40.366 259.181 44.2493 257.572C48.1325 255.964 51.6595 253.604 54.6275 250.628C57.6037 247.66 59.9639 244.133 61.5723 240.249C63.1808 236.366 64.0058 232.203 64 228C64.0084 223.721 63.1534 219.485 61.4862 215.545ZM32 255.463C16.8569 255.463 4.53691 243.143 4.53691 228C4.53691 212.857 16.8569 200.537 32 200.537C47.1431 200.537 59.4631 212.857 59.4631 228C59.4631 243.143 47.1431 255.463 32 255.463Z" fill="white"/>
<path d="M43.3129 216.686C42.5307 215.904 41.3431 215.826 40.6605 216.508L31.9991 225.17L23.3378 216.508C22.6552 215.826 21.4676 215.904 20.6854 216.686C19.9032 217.468 19.8249 218.656 20.5076 219.339L29.1689 228L20.5076 236.661C19.8249 237.344 19.9032 238.532 20.6854 239.314C21.4676 240.096 22.6552 240.174 23.3378 239.492L31.9991 230.827L40.6605 239.492C41.3431 240.174 42.5307 240.096 43.3129 239.314C44.0951 238.532 44.1734 237.344 43.4907 236.661L34.8258 228L43.4907 219.339C44.1734 218.656 44.0951 217.468 43.3129 216.686Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_152_314">
<rect width="64" height="64" fill="white" transform="translate(0 196)"/>
</clipPath>
</defs>
</svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<svg width="515" height="229" viewBox="0 0 515 229" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M77.6746 145.143L77.0332 145.359L76.3883 145.573L75.7469 145.789L75.3175 146.005L74.6743 146.219L74.0329 146.435L73.6017 146.651L73.3879 146.865L72.7465 147.081L72.531 147.295L72.3172 147.511L71.8824 147.945L71.6686 148.161L71.4548 148.591L71.241 148.807L71.0254 149.238L70.8116 149.884L70.596 150.314V152.47L70.8116 153.117L71.0254 153.761L71.241 153.977L71.4548 154.407H71.8824V154.839L72.3118 155.269L72.5256 155.485L72.7411 155.7L73.3825 155.916L73.5963 156.13L74.2413 156.346H76.8177L77.459 156.13L77.8866 155.916L78.5316 155.7L79.173 155.485L79.6024 155.269L80.2456 155.053L80.8888 154.839L81.532 154.623L81.9596 154.407L82.6045 154.193L83.2459 153.977L83.6753 153.761L84.3185 153.547L84.9599 153.331L85.3893 153.117L86.6775 152.685L87.1068 152.47L87.7482 152.254L87.9638 152.038L88.3932 151.824L88.8208 151.392L89.0346 151.178L89.2484 150.962L89.464 150.748L89.6778 150.316L89.8934 150.102L90.321 148.807V146.653L90.1072 145.791L89.8934 145.36L89.6778 144.928L89.2484 144.498L89.0346 144.068L88.8208 143.852L88.607 143.638L87.9638 143.422L87.7482 143.206L87.3206 142.992L86.8931 142.776L85.8187 142.56H85.6049L83.8873 142.776L83.2441 142.992L82.8165 143.206L82.1716 143.422L81.5302 143.638L81.1008 143.852L80.4576 144.068L79.8162 144.284L79.3868 144.498L78.7436 144.714L78.1004 144.928L77.6746 145.143ZM94.1999 170.796L93.5549 171.01L92.9135 171.226L92.4841 171.441L91.8409 171.657L91.1995 171.873L90.7683 172.087L90.127 172.303L89.4838 172.519L89.0544 172.733L88.413 172.949L87.768 173.165L87.3404 173.379L86.0522 173.811L85.409 174.025L84.9797 174.241L84.3293 174.459L83.6861 174.675L83.2567 174.891L83.0429 175.105L82.6153 175.537L82.3997 175.752L81.9703 176.182L81.7565 176.398L81.5427 176.828L81.3289 177.044L81.1134 177.69L80.8996 178.552V180.277L81.1134 180.923L81.3289 181.569L81.5427 182.001L81.7565 182.215L81.9703 182.431L82.8309 183.294L83.0447 183.51L83.6879 183.726L83.9017 183.94L84.5449 184.156L85.6192 184.372H86.6918L87.335 184.156L87.7626 183.94L88.4076 183.726L89.049 183.51L89.4784 183.294L90.1216 183.079L90.7629 182.863L91.1941 182.647L91.8355 182.433L92.4787 182.217L92.9081 182.003L93.5495 181.787L94.1945 181.571L94.6221 181.357L95.9102 180.925L96.5534 180.711L96.9828 180.495L97.6242 180.279L98.2674 180.064L98.6968 179.634L99.1244 179.418L99.3382 179.202L99.5538 178.772L99.9831 178.342L100.197 177.912L100.411 177.48L100.625 177.049V174.247L100.411 173.817L100.197 173.17L99.9831 172.738L99.1226 171.876L98.695 171.444L98.2746 171.226L97.8452 171.01L97.4176 170.796L96.5588 170.58L94.6274 170.58L94.1999 170.796ZM89.2628 156.783L88.6196 156.999L87.9764 157.215L87.547 157.429L86.9056 157.645L86.2606 157.86L85.833 158.076L85.1899 158.292L84.5467 158.506L84.1191 158.722L83.4741 158.938L82.8327 159.152L82.1877 159.368L81.7601 159.584L81.117 159.798L80.4738 160.014L80.0462 160.23L79.403 160.444L78.7598 160.66L78.3322 160.875L78.1166 161.091L77.6872 161.307L77.4734 161.521L77.0458 161.953L76.6164 162.383L76.4008 162.813L76.187 163.029L75.9733 163.459L75.7595 164.322V166.476L75.9733 167.122L76.187 167.553L76.4008 167.769L76.6164 168.199L76.832 168.415L77.0458 168.845L77.2596 169.061L77.4734 169.275L77.901 169.491L78.1166 169.705L78.546 169.921L78.9736 170.137L79.6168 170.352H81.7619L82.4051 170.137L82.8345 169.921L83.4759 169.705L84.1209 169.491L84.5485 169.275L85.1917 169.061L85.8348 168.845L86.2624 168.629L86.9074 168.415L87.5488 168.199L88.192 167.983L88.6214 167.769L89.2628 167.553L89.9078 167.337L90.3354 167.122L90.9785 166.906L91.6217 166.692L92.0493 166.476L92.6943 166.26L93.1219 166.046L93.5495 165.83V165.4H93.9789L94.1945 165.184L94.4083 164.968L94.6221 164.538L94.8359 164.323L95.0497 163.891L95.4808 163.029V160.441L95.2653 159.795L95.0497 159.364L94.8359 158.934L94.6221 158.502L94.4083 158.288L94.1945 158.072L93.7651 157.642L93.3357 157.426L93.1219 157.212L92.4823 156.999L92.2685 156.783L91.1959 156.569H90.1216L89.2628 156.783ZM105.786 188.256L105.572 187.61L105.357 187.18L105.143 186.75L104.927 186.318L104.714 186.103L104.286 185.671L103.857 185.457L103.641 185.241L103.213 185.025L102.786 184.811L101.925 184.595H99.5663L99.1369 184.811L98.4956 185.025L97.8506 185.241L97.423 185.457L96.7798 185.671L96.1366 185.887L95.709 186.103L95.064 186.318L94.4226 186.534L93.7795 186.75L93.3501 186.964L92.7087 187.18L92.0637 187.394L91.6361 187.61L90.9929 187.826L90.3497 188.04L89.9221 188.256L89.2771 188.472L88.6358 188.686L88.422 188.902L88.2064 189.118L87.777 189.333L87.5632 189.549L87.3494 189.763L87.1356 190.195L86.7062 190.625L86.4906 191.271L86.2768 191.701L86.063 192.564V194.288L86.2768 194.718L86.4906 195.364L86.7062 195.795L87.1356 196.225L87.3494 196.657L87.5632 196.871L87.9926 197.087L88.2064 197.303L88.422 197.517L88.6358 197.733L89.2771 197.949L89.9221 198.163H92.0655L92.7105 197.949L93.3519 197.733L93.995 197.517L94.4244 197.303L95.0658 197.087L95.7108 196.871L96.1384 196.657L97.4266 196.225L97.8542 196.011L98.4992 195.795L99.1405 195.58L99.5699 195.364L100.213 195.148L100.856 194.934L101.499 194.718L101.927 194.502L102.57 194.288L103 194.072L103.641 193.856L103.857 193.642L104.07 193.426L104.286 193.212L104.714 192.78L104.927 192.565L105.143 192.133L105.357 191.919L105.572 191.489L105.786 190.843L106 189.981V189.334L105.786 188.256ZM19.0962 144.496L19.3118 145.143L19.5256 145.789L19.7412 146.219L19.9567 146.865L20.1705 147.511L20.3861 147.942L20.6017 148.588L20.8155 149.234L21.0311 149.664L21.2449 150.31L21.4605 150.957L21.6743 151.603L21.8899 152.033L22.1055 152.679L22.3193 153.325L22.5349 153.756L22.7487 154.402L22.9643 155.048L23.1799 155.48L23.3937 156.124L23.6093 156.556H23.823L24.2524 156.34L24.8956 156.124L25.5388 155.91L25.9682 155.694L26.6114 155.48L27.8996 155.048L28.1134 154.834L28.3289 153.972L28.5445 153.109L28.7583 152.893L28.9739 152.677L29.1877 152.463L29.4033 152.247L29.8327 152.031L30.4759 151.817L30.9053 151.601L31.5485 151.385L32.1917 151.171L32.621 150.955L33.2642 150.741L33.9074 150.525L34.3368 150.309L34.98 150.094L35.6232 149.878L36.0526 149.662L36.6958 149.448L37.9839 149.016L38.4133 148.802L39.0565 148.586L39.6997 148.372L40.1291 148.156L40.7723 147.94L41.4155 147.726L41.8448 147.51L42.488 147.294L43.1312 147.079L43.5606 146.863L44.2038 146.649L45.492 146.217L45.9214 146.003L47.2095 145.571L47.6389 145.357L48.9271 144.925L49.3565 144.711L49.9997 144.495L50.6428 144.28L51.0722 144.064L51.7154 143.848L52.3586 143.634L52.788 143.418L53.4312 143.202L54.0762 142.988L54.7176 142.772L55.1469 142.556L55.7901 142.342L56.4333 142.126L56.8627 141.912L57.5041 141.696L58.1473 141.48L58.5767 141.265L59.2181 141.049L59.863 140.833L60.2906 140.619L61.5788 140.187L62.0064 139.973L62.6514 139.757L63.2928 139.543L63.9378 139.327L64.3654 139.111L65.0085 138.897L65.6517 138.681L66.0793 138.465L66.7225 138.25L67.3657 138.034L67.7933 137.818L68.4508 137.599L69.0922 137.383H70.8098L71.0236 137.599L71.453 137.813L71.8806 138.245L72.0944 138.675L72.31 139.105L72.5238 139.752L72.7394 140.398L72.9532 140.828L73.3807 142.122L73.5945 142.552L73.8101 143.199L74.0257 143.415H74.6671L75.3103 143.199L75.7397 142.984L76.3811 142.768L77.0261 142.552L77.4537 142.338L78.0968 142.122L78.5262 141.908V141.476L78.3124 140.83L78.0968 140.184L77.8813 139.753L77.4608 138.459L77.247 138.029L76.8195 136.735L76.6039 136.305L76.3883 135.658L76.1745 135.012L75.9607 134.582L75.5331 133.288L75.3175 132.642L75.1037 132.211L74.8881 131.565L74.6743 130.919L74.4569 130.485L74.0293 129.191L73.8137 128.761L73.5981 128.115L73.3843 127.468L73.1705 127.038L72.743 125.744L72.5274 125.314L72.3136 124.668L72.098 124.021L71.8824 123.588L71.6686 123.372L71.4548 122.941L71.241 122.725L71.0254 122.509L70.596 122.295L70.1684 121.863L69.9546 121.649L69.3096 121.433L68.6646 121.215L67.5903 120.999H67.3765L66.0883 121.215L65.4469 121.429L65.0175 121.645L64.3725 121.861L63.7294 122.077L63.3 122.293L62.6586 122.508L62.0136 122.724L61.3722 122.94L60.9428 123.154L59.6546 123.586L59.2253 123.8L58.5839 124.016L57.9407 124.23L57.5113 124.446L56.8699 124.662L56.2249 124.876L55.7973 125.092L55.1541 125.308L54.511 125.523L54.0834 125.739L53.4384 125.955L52.7844 126.172L52.1412 126.388L51.7118 126.603L51.0686 126.819L50.4255 127.035L49.9961 127.249L48.7079 127.681L48.2785 127.895L47.6353 128.111L46.9921 128.325L46.5627 128.541L45.9196 128.757L45.2746 128.975L44.8452 129.191L44.202 129.407L43.5588 129.621L42.9156 129.837L42.4862 130.053L41.843 130.267L41.1999 130.483L40.7705 130.699L40.1273 130.914L39.4841 131.13L39.0547 131.344L37.7665 131.776L37.3372 131.99L36.694 132.206L36.0508 132.422L35.6214 132.636L34.9782 132.852L34.335 133.068L33.6918 133.282L33.2624 133.498L32.6193 133.713L31.9761 133.929L31.5467 134.145L30.9035 134.359L30.2603 134.575L29.8309 134.791L29.1877 135.005L28.5445 135.221L28.1152 135.435L27.472 135.651L26.8288 135.867L26.1856 136.081L25.7562 136.297L25.113 136.513L24.4698 136.728L24.0404 136.944L23.3973 137.16L22.7451 137.383L22.3157 137.599L21.6725 137.813L21.4587 138.029L21.0293 138.245L20.8137 138.459L20.5999 138.675L20.1705 138.891L19.9567 139.105L19.7412 139.537L19.5256 139.752L19.3118 140.182L19.0962 140.398L18.8824 140.828V141.26L18.6668 141.69V142.984L18.8824 144.063L19.0962 144.496ZM39.4823 139.539L39.6979 138.893L39.9117 138.461L40.5549 138.247L40.9843 138.031L41.6275 137.815L42.2706 137.601L42.7 137.385L43.3432 137.17L43.9864 136.954L44.4158 136.738L45.059 136.524L45.7022 136.308L46.3454 136.092L46.7747 135.878L48.0629 135.446L48.4923 135.232L49.1355 135.016L49.7787 134.802L50.2081 134.586L50.8513 134.37L51.4944 134.155L51.9238 133.939H53L53.6432 134.155L53.857 134.586L54.0726 134.802V136.526L53.857 136.74L53.6432 136.956L53.2138 137.172L52.7844 137.383L52.1412 137.599L51.498 137.813L51.0686 138.029L50.4255 138.245L49.7805 138.459L49.3529 138.675L48.7097 138.891L48.0665 139.105L47.4233 139.321L46.9939 139.537L46.3507 139.752L45.7076 139.968L45.2746 140.184L44.6314 140.4L43.9882 140.616L43.5588 140.83L42.2706 141.262L41.8413 141.476H40.7687L40.1255 141.262L39.9099 141.046L39.6961 140.83L39.4805 140.4V139.539H39.4823ZM102.137 205.072L101.923 204.64L101.496 203.346L101.282 202.915L101.067 202.269L100.853 201.623L100.637 201.193L100.21 199.899L99.9957 199.468L99.7819 198.822L99.5663 198.606H98.9232L98.28 198.822L97.8506 199.038L97.2092 199.252L95.921 199.684L95.4934 199.899L94.8484 200.115L94.207 200.329L93.7777 200.545L93.1345 200.761L92.0601 200.975C88.7615 200.975 85.7468 199.931 84.1227 196.664L83.9071 196.018L83.6933 195.588L83.4777 195.156H83.0501L82.6225 195.372L81.9775 195.588L81.3361 195.802L80.6911 196.018L80.2636 196.232L78.9754 196.664L78.5478 196.878L77.9028 197.094L77.2614 197.31L76.8338 197.524L76.1889 197.74L75.5475 197.956L75.1181 198.171L74.4749 198.387L73.8317 198.601L73.4023 198.817L72.7609 199.033L72.1159 199.247L71.4745 199.463L71.0452 199.679L70.402 199.893L69.7606 200.109L69.3294 200.323L68.688 200.539L68.0448 200.755L67.6154 200.97L66.974 201.186L66.329 201.402L65.9015 201.616L64.6133 202.048L64.1857 202.262L63.5407 202.478L62.8993 202.694L62.2561 202.908L61.8267 203.124L61.1854 203.338L60.5404 203.554L60.1128 203.77L59.4696 203.985L58.8264 204.201L58.3988 204.417L57.7538 204.631L57.1124 204.847L56.683 205.063L56.0399 205.277L55.3985 205.493L54.9673 205.707L54.3259 205.923L53.6827 206.139L53 206.364L52.5706 206.58L51.9274 206.796L51.2842 207.01L50.8548 207.226L50.2117 207.441H49.1373L48.4941 207.226L48.0647 207.01L47.8509 206.796L47.4215 206.58L47.2077 205.934L46.9921 205.288L46.7765 204.858L46.5627 204.211L46.3472 203.565L46.1334 203.135L45.9178 202.489L45.704 201.843L45.4884 201.196L45.2728 200.766L45.059 200.12L44.8434 199.474L44.6296 199.044L44.2002 197.749L43.9864 197.319L43.7708 196.673L43.557 196.027L43.3414 195.597L43.1258 194.95L42.912 194.304L42.6964 193.872L42.4826 193.228L42.2671 192.582L42.0515 192.15L41.8377 191.505L41.6221 190.859L41.4083 190.213L41.1927 189.781L40.9771 189.136L40.7633 188.49L40.5477 188.058L40.3321 187.412L40.1183 186.768L39.9027 186.336L39.6889 185.689L39.4733 185.043L39.2595 184.613L38.8301 183.319L38.6163 182.889L38.4007 182.242L38.187 181.596L37.9714 181.166L37.7558 180.52L37.542 179.874L37.3264 179.443L37.1126 178.797L36.6832 177.503L36.4694 177.073H35.8262L35.183 177.289L34.7536 177.503L33.4655 177.935L33.0361 178.149L32.3929 178.365L32.1791 178.579V179.011L32.3929 179.658L32.6085 180.088L32.8241 180.734L33.0379 181.38L33.2535 181.81L33.4673 182.457L33.6828 183.103L33.8984 183.533L34.1122 184.179L34.3278 184.825L34.5416 185.256L34.971 186.55L35.1848 187.196L35.4004 187.626L35.6142 188.272L35.8298 188.919L36.0454 189.349L36.2592 189.995L36.4748 190.641L36.6886 191.071L37.118 192.366L37.3318 192.796L37.5474 193.442L37.7612 194.088L37.9767 194.734L38.1923 195.165L38.4061 195.811L38.6217 196.457L38.8355 197.103L39.0511 197.749L39.2667 198.18V198.61L39.4805 198.826L39.6961 199.688L39.9099 200.332L40.1255 200.764L40.3393 201.411L40.7687 202.705L40.9825 203.135L41.1981 203.781L41.4137 204.211L41.6275 205.074L41.843 205.504L42.0568 206.15L42.2724 206.796L42.488 207.226L42.7018 207.873L42.9174 208.519L43.1312 208.949L43.5606 210.243L43.7744 210.673L43.99 211.32L44.2038 211.966L44.4194 212.396L44.635 213.042L44.8488 213.688L45.0644 214.335L45.2782 214.765L45.7076 216.059L45.9214 216.489L46.1369 217.135L46.3507 217.782L46.5663 218.212L46.7801 218.858L46.9957 219.504L47.2113 219.934L47.4251 220.581L47.6407 221.227L47.8563 221.657L48.0701 222.303L48.2857 222.949L48.4995 223.38L48.9289 224.674L49.1427 225.32L49.3583 225.75L49.5721 226.396L49.7877 226.612L50.0033 227.043H50.4326V227.473L50.6464 227.689L50.862 227.905L51.0776 228.119L51.9364 228.551L52.3658 228.765L53 228.999H54.9296L55.5745 228.783L56.0021 228.569L57.2903 228.137L57.7179 227.923L58.3629 227.707L59.0043 227.491L59.4337 227.277L60.0768 227.061L60.7182 226.846L61.1494 226.63L61.7908 226.414L62.434 226.2L62.8634 225.984L63.5048 225.768L64.1498 225.554L64.7912 225.338L65.2205 225.124L66.5087 224.692L66.9381 224.478L67.5795 224.262L68.2227 224.046L68.6521 223.831L69.2935 223.615L69.9384 223.399L70.366 223.185L71.0092 222.969L71.6524 222.755L72.08 222.539L72.725 222.323L73.3664 222.109L74.0114 221.893L74.4389 221.677L75.0821 221.463L75.7253 221.247L76.1529 221.031L76.7979 220.816L77.4393 220.6L77.8669 220.386L78.5119 220.17L79.1533 219.954L79.5826 219.74L80.8708 219.308L81.3002 219.094L81.9416 218.878L82.5866 218.664L83.228 218.448L83.6574 218.232L84.3005 218.017L84.9419 217.801L85.3713 217.585L86.0145 217.371L86.6577 217.155L87.0871 216.939L87.7285 216.725L88.3735 216.509L88.801 216.295L90.0892 215.863L90.5168 215.649L91.1618 215.433L91.8032 215.217L92.4464 215.002L92.8758 214.786L93.5172 214.57L94.1621 214.356L94.5897 214.14L95.2329 213.926L95.8761 213.71L96.3037 213.494L96.9487 213.28L97.5901 213.064L98.0195 212.848L98.6626 212.634L99.304 212.418L100.165 211.987L100.592 211.771L100.808 211.557L101.022 211.341L101.451 210.911L101.665 210.479L101.879 210.265L102.092 210.049L102.308 209.403L102.522 208.54V206.384L102.308 205.738L102.137 205.072ZM73.8856 215.821C70.6445 215.821 68.0179 213.183 68.0179 209.93C68.0179 208.836 68.3161 207.811 68.8317 206.933L68.8766 206.798L68.9826 206.69C69.0437 206.596 69.1084 206.505 69.1731 206.416L69.3042 206.152L69.7354 205.72L69.827 205.675C70.8799 204.661 72.3082 204.039 73.8838 204.039C77.1231 204.039 79.7479 206.679 79.7479 209.932C79.7479 213.184 77.1249 215.821 73.8856 215.821ZM44.6314 220.161L44.4158 219.515L44.2002 219.085L43.9864 218.439L43.7708 217.792L43.557 217.362L43.1276 216.068L42.9138 215.638L42.6982 214.992L42.4844 214.345L42.2688 213.915L42.0533 213.269L41.8395 212.623L41.6239 212.191L41.4137 211.539L40.9843 210.245L40.7705 209.813L40.5549 209.169L40.3393 208.522L40.1255 208.09L39.9099 207.444L39.6961 206.8L39.4805 206.368L39.2667 205.722L39.0511 205.077L38.8355 204.645L38.6217 203.999L38.4061 203.353L38.1923 202.923L37.7647 201.621L37.5509 201.191L37.3354 200.545L37.1216 199.899L36.906 199.468L36.6904 198.822L36.4766 198.176L36.261 197.53L36.0472 197.1L35.6178 195.805L35.404 195.375L35.1884 194.729L34.9746 194.083L34.759 193.653L34.547 192.999L34.3332 192.353L34.1176 191.923L33.9038 191.277L33.6882 190.63L33.4726 190.2L33.2588 189.554L33.0433 188.908L32.8295 188.262L32.6139 187.831L32.3983 187.185L32.1845 186.539L31.9689 186.109L31.7551 185.463L31.5395 184.816L31.3239 184.386L31.1101 183.74L30.8945 183.094L30.6807 182.662L30.4651 182.017L30.2495 181.371L30.0357 180.725L29.8201 180.293L29.6063 179.649L29.3907 179.002L29.1752 178.57V177.926L29.3907 177.28L29.6063 177.064L29.8201 176.634L30.0357 176.418L30.4651 176.202L30.8945 175.987L31.3239 175.771L31.9671 175.557L32.6103 175.341L33.0397 175.125L33.6828 174.911L34.326 174.695L34.7554 174.479L35.3986 174.265L36.0418 174.049L36.685 173.835L37.1144 173.619L37.7576 173.403L38.4007 173.188L38.8301 172.972L39.4733 172.756L40.1165 172.542L40.5459 172.326L41.1891 172.11L41.8323 171.896L42.2617 171.68L42.9048 171.464L43.548 171.25L43.9774 171.034L44.6206 170.82L45.2638 170.604L45.907 170.388L46.3364 170.173L47.6245 169.741L48.0539 169.527L48.6971 169.311L49.3403 169.097L49.7697 168.881L50.4129 168.665L51.0561 168.451L51.4855 168.235L52.1286 168.019L52.3424 167.805L52.7718 167.589L52.9874 167.373L53.4168 167.158L53.6324 166.942L54.0618 166.512L54.2756 166.296L54.4894 166.082L54.917 165.65L55.1326 165.436L55.3482 165.004L55.562 164.79L55.7758 164.359L55.9896 163.713L56.2034 163.497L56.4189 162.851C57.4179 159.843 56.807 156.598 55.2943 154.598C53.4096 152.105 50.1057 151.21 46.5484 151.21H46.119C45.1057 151.549 44.1283 151.948 43.115 152.289L42.6857 152.505L42.0425 152.719L41.3993 152.935L40.9699 153.151L40.3267 153.365L39.6835 153.581L39.2541 153.795L37.966 154.227L37.3228 154.441L36.8934 154.657L36.2502 154.873L35.607 155.088L35.1776 155.304L34.5344 155.52L33.8913 155.734L33.4619 155.95L32.8187 156.164L32.1755 156.38L31.7461 156.596L31.1029 156.81L29.8147 157.242L29.3854 157.456L28.7422 157.672L28.099 157.887L27.6696 158.103L27.0264 158.319L26.3832 158.533L25.9538 158.749L25.3106 158.965L24.6675 159.179L24.2381 159.395L23.5949 159.611L22.9517 159.825L22.5223 160.041L21.8791 160.257L21.2359 160.471L21.0221 160.687L20.5927 160.902L19.9496 161.118L19.734 161.334L19.3046 161.548L18.8752 161.764L18.4458 161.98L18.232 162.194L17.8026 162.41L17.3732 162.624L16.9438 162.84L16.73 163.056L16.3006 163.27L16.0868 163.486L15.8713 163.702L15.4419 163.917L15.0125 164.133L14.7969 164.349L14.5831 164.563L14.1537 164.779L13.9381 164.993L13.7225 165.209L13.5087 165.425L13.0901 165.621L12.6607 166.053L12.4469 166.267L12.0175 166.483L11.8037 166.699L11.5881 166.914L11.3743 167.13L11.1587 167.344L10.9449 167.56L10.7294 167.776L10.5138 167.99L10.3 168.206L10.0844 168.422L9.86878 168.636L9.65498 168.852L9.43939 169.068L9.22559 169.282L9.01 169.713L8.79441 169.929L8.58061 170.145L8.36502 170.359L8.15122 170.575L7.93563 170.791L7.72542 171.01L7.50983 171.441L7.29424 171.657L7.08044 171.873L6.86485 172.303L6.65105 172.519L6.43546 172.733L6.21986 173.165L6.00607 173.379L5.79047 173.595L5.57488 174.025L5.36468 174.459L5.14908 174.675L4.93529 175.107L4.71969 175.539L4.5041 175.753L4.29031 176.184L4.07471 176.616L3.86271 177.048L3.64712 177.264L3.43153 177.91L3.21773 178.34L3.00214 178.77L2.78834 178.986L2.57275 179.632L2.35715 180.277L2.14336 180.709L1.92776 181.355L1.71397 182.001L1.49837 182.646L1.28817 183.297L1.07258 183.729V184.159L0.856983 184.806L0.643186 185.668L0.427593 186.962L0.215593 188.256L0 191.059V193.647L0.215593 195.588V196.232L0.42939 197.526L0.644983 198.604L0.85878 199.684L1.07437 200.115L1.28997 201.193L1.50376 201.839L1.71936 202.485L1.93315 202.915L2.14875 203.562L2.36254 204.208L2.57814 204.854L2.79373 205.284L3.00752 205.5L3.22312 206.146L3.43692 206.577L3.65251 207.007L3.8681 207.223L4.0819 207.869L4.29749 208.083L4.51129 208.515L4.72688 208.729L4.94247 209.161L5.15627 209.376L5.37186 210.022L5.58566 210.238L5.80125 210.452L6.01685 210.668L6.23064 211.098L6.44624 211.53H6.87563V212.175L7.09122 212.391L7.30502 212.607L7.52061 212.821L7.7362 213.037L7.95 213.253L8.16559 213.467L8.37939 213.899L8.59498 214.113L8.80878 214.329L9.02437 214.543L9.23997 214.759L9.45376 214.975L9.66935 215.19L9.88315 215.406L10.0987 215.622L10.3143 215.836L10.5281 216.052L10.9575 216.268L11.1713 216.482L11.3869 216.698L11.6007 216.912L11.8163 217.128L12.0301 217.344L12.2457 217.558L12.4613 217.774L12.8907 217.99L13.1063 218.205L13.5357 218.421L13.7495 218.637L13.965 218.851L14.3944 219.067L14.8238 219.281L15.0394 219.497L15.4688 219.713L15.8982 219.927L16.1138 220.143L16.5432 220.359L16.7588 220.573L17.1882 220.789L17.8314 221.004L18.0452 221.22L18.6883 221.436L18.9039 221.65L19.5471 221.866L19.9765 222.082L20.4059 222.296L21.0491 222.512L21.6923 222.728L22.3355 222.942L22.9786 223.158L23.6218 223.372L24.4806 223.588L25.3394 223.804L25.9826 224.019H26.412L27.4845 224.235L29.2021 224.451H30.0609L31.9922 224.665H32.2078L35.4274 224.451L37.3587 224.235H37.7881L38.6469 224.019L39.7195 223.804H40.1488L40.5782 223.588L41.6508 223.372L42.294 223.158H42.7234L43.1528 222.942L43.796 222.728L44.4391 222.512L44.8685 222.296L45.0841 222.082V221.436L44.8685 220.789L44.6314 220.161Z" fill="#B00000"/>
<path d="M105.655 113L119.61 109.062L123.521 122.921L129.776 121.156L133.442 134.149L127.187 135.914L133.568 158.531L139.728 156.793L143.394 169.786L137.234 171.524L143.453 193.563L129.498 197.501L123.279 175.461L116.253 177.443L112.587 164.451L119.613 162.468L113.231 139.851L106.302 141.807L102.636 128.814L109.565 126.859L105.655 113ZM176.159 93.3145L180.363 105.636L132.261 121.494L128.085 109.269L176.159 93.3145ZM147.394 118.783L150.843 131.006L137.85 134.672L134.401 122.449L147.394 118.783ZM164.044 114.085L167.493 126.308L154.5 129.974L151.051 117.751L164.044 114.085ZM180.501 109.441L183.95 121.664L170.957 125.33L167.508 113.107L180.501 109.441ZM191.42 143.351L194.868 155.573L176.871 160.651L179.532 170.083L184.056 168.807L182.128 161.974L194.928 158.362L200.305 177.418L151.702 191.131L146.326 172.075L159.222 168.437L161.15 175.27L165.577 174.021L162.916 164.589L145.015 169.64L141.566 157.417L159.467 152.366L158.327 148.324L140.329 153.402L135.957 137.907L149.624 134.051L150.629 137.612L185.276 127.836L188.643 139.77L172.282 144.386L173.422 148.429L191.42 143.351ZM200.593 136.918L196.927 123.925L275.942 101.63L279.608 114.623L200.593 136.918ZM284.042 62.6667L297.997 58.7291L301.907 72.588L308.163 70.8229L311.829 83.8156L305.573 85.5807L311.955 108.198L318.114 106.46L321.78 119.452L315.621 121.19L321.839 143.23L307.884 147.167L301.666 125.128L294.64 127.11L290.974 114.118L298 112.135L291.618 89.5183L284.689 91.4735L281.023 78.4808L287.952 76.5256L284.042 62.6667ZM354.545 42.9813L358.749 55.3027L310.648 71.1607L306.471 58.9356L354.545 42.9813ZM325.78 68.4496L329.229 80.6724L316.236 84.3383L312.788 72.1156L325.78 68.4496ZM342.43 63.7517L345.879 75.9744L332.886 79.6404L329.438 67.4177L342.43 63.7517ZM358.888 59.1081L362.337 71.3308L349.344 74.9968L345.895 62.7741L358.888 59.1081ZM369.806 93.0173L373.255 105.24L355.258 110.318L357.919 119.75L362.442 118.474L360.514 111.64L373.315 108.029L378.691 127.085L330.089 140.798L324.712 121.742L337.609 118.103L339.537 124.937L343.964 123.687L341.303 114.256L323.402 119.307L319.953 107.084L337.854 102.033L336.713 97.9908L318.716 103.069L314.344 87.5738L328.01 83.7178L329.015 87.2787L363.662 77.5027L367.03 89.4368L350.668 94.0532L351.809 98.0954L369.806 93.0173Z" fill="white"/>
<path d="M100.237 111.966L114.192 108.028L118.103 121.887L124.358 120.122L128.024 133.115L121.769 134.88L128.15 157.497L134.31 155.759L137.976 168.751L131.816 170.489L138.035 192.529L124.08 196.466L117.861 174.427L110.835 176.409L107.169 163.417L114.195 161.434L107.813 138.817L100.884 140.772L97.218 127.78L104.147 125.825L100.237 111.966ZM170.741 92.2803L174.945 104.602L126.843 120.46L122.667 108.235L170.741 92.2803ZM141.976 117.749L145.425 129.971L132.432 133.637L128.983 121.415L141.976 117.749ZM158.626 113.051L162.075 125.273L149.082 128.939L145.633 116.717L158.626 113.051ZM175.083 108.407L178.532 120.63L165.539 124.296L162.091 112.073L175.083 108.407ZM186.002 142.316L189.45 154.539L171.453 159.617L174.114 169.049L178.638 167.773L176.71 160.939L189.51 157.328L194.887 176.384L146.284 190.097L140.908 171.041L153.804 167.402L155.732 174.236L160.159 172.986L157.498 163.555L139.597 168.606L136.148 156.383L154.049 151.332L152.909 147.29L134.911 152.368L130.539 136.873L144.206 133.017L145.211 136.578L179.858 126.802L183.225 138.736L166.864 143.352L168.004 147.394L186.002 142.316ZM195.175 135.883L191.509 122.891L270.524 100.596L274.19 113.589L195.175 135.883ZM278.624 61.6325L292.579 57.6949L296.489 71.5538L302.745 69.7887L306.411 82.7814L300.155 84.5465L306.537 107.163L312.696 105.426L316.362 118.418L310.203 120.156L316.421 142.196L302.466 146.133L296.248 124.094L289.222 126.076L285.556 113.083L292.582 111.101L286.2 88.4841L279.271 90.4393L275.605 77.4466L282.534 75.4914L278.624 61.6325ZM349.127 41.9471L353.331 54.2685L305.23 70.1266L301.053 57.9014L349.127 41.9471ZM320.362 67.4154L323.811 79.6382L310.819 83.3042L307.37 71.0814L320.362 67.4154ZM337.012 62.7175L340.461 74.9403L327.468 78.6063L324.02 66.3835L337.012 62.7175ZM353.47 58.0739L356.919 70.2967L343.926 73.9627L340.477 61.7399L353.47 58.0739ZM364.388 91.9831L367.837 104.206L349.84 109.284L352.501 118.716L357.024 117.439L355.096 110.606L367.897 106.995L373.273 126.051L324.671 139.764L319.294 120.708L332.191 117.069L334.119 123.902L338.546 122.653L335.885 113.222L317.984 118.272L314.535 106.05L332.436 100.999L331.295 96.9566L313.298 102.035L308.926 86.5397L322.592 82.6836L323.597 86.2445L358.244 76.4686L361.612 88.4026L345.25 93.019L346.391 97.0612L364.388 91.9831Z" fill="#861800"/>
</svg>
<svg width="338" height="119" viewBox="0 0 338 119" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.7199 17.3104C20.5429 12.5095 24.7052 9 29.5761 9H322.614C328.7 9 333.375 14.3899 332.514 20.4142L320.371 105.414C319.667 110.341 315.448 114 310.472 114H15.0047C8.80654 114 4.10121 108.419 5.14847 102.31L19.7199 17.3104Z" fill="#DDA706"/>
<path d="M322.614 6.5C330.221 6.5 336.065 13.2373 334.989 20.7676L322.846 105.768C321.966 111.926 316.692 116.5 310.472 116.5H15.0049C7.25719 116.5 1.37549 109.524 2.68457 101.888L17.2559 16.8877C18.2847 10.8867 23.4876 6.5 29.5762 6.5H322.614Z" stroke="#A27900" stroke-opacity="0.6" stroke-width="5"/>
<path d="M21.7199 8.31036C22.5429 3.5095 26.7052 0 31.5761 0H322.83C328.84 0 333.493 5.26398 332.754 11.2287L322.23 96.2287C321.61 101.238 317.354 105 312.306 105H17.0047C10.8065 105 6.10121 99.4194 7.14847 93.3104L21.7199 8.31036Z" fill="#FF7700"/>
<path d="M22.571 8.58873C23.4857 3.89102 27.6007 0.5 32.3866 0.5H322.991C328.944 0.5 333.579 5.6693 332.932 11.5873L328.058 56.1507C327.53 60.9784 323.609 64.7288 318.763 65.0425L173.514 74.4437C172.936 74.4812 172.355 74.4682 171.778 74.4049L23.9465 58.1852C18.1314 57.5472 14.1034 52.0757 15.2215 46.3336L22.571 8.58873Z" fill="white" fill-opacity="0.3"/>
<path d="M94.3685 79.6V72.6H101.929V69.52H72.3605V79.6H65.1925V69.52H60.8245V62.688H65.1925V39.952H83.5605V36.424H61.9445V29.592H112.345V36.424H90.7285V39.952H109.097V62.688H113.465V69.52H109.097V79.6H94.3685ZM72.3605 62.688H83.5605V57.872H72.3605V62.688ZM72.3605 51.488H83.5605V46.784H72.3605V51.488ZM90.7285 62.688H101.929V57.872H90.7285V62.688ZM90.7285 51.488H101.929V46.784H90.7285V51.488ZM168.345 79.768C157.537 76.016 151.489 68.736 149.865 57.648H146.785V79.6H139.561V57.648H136.425C134.801 68.736 128.753 76.016 117.945 79.768V72.208C124.217 69.632 128.137 64.928 129.537 57.648H117.497V50.648H139.505V38.44H119.513V31.44H139.505V28.08H146.785V31.44H166.777V38.44H146.785V50.648H168.793V57.648H156.753C158.153 64.928 162.073 69.632 168.345 72.208V79.768ZM122.593 40.008H129.761L132.729 48.912H125.561L122.593 40.008ZM153.561 48.912L156.529 40.008H163.697L160.729 48.912H153.561ZM173.945 56.36V48.632H224.345V56.36H173.945ZM258.953 43.032H266.905V52.328C266.905 53.84 266.849 55.296 266.737 56.752C274.297 62.632 280.009 70.304 280.905 79.432H273.065C272.393 73.832 269.089 69.184 264.721 65.32C261.921 71.76 256.041 76.576 244.561 80.16V71.144C256.489 67.504 258.953 62.296 258.953 52.328V43.032ZM229.609 76.688H237.897C240.473 69.464 243.161 61.96 245.401 50.424H237.785C235.657 60.616 232.745 68.12 229.609 76.688ZM230.001 31.608L237.337 46.896H245.233L237.897 31.608H230.001ZM246.577 48.856C249.321 42.584 251.057 35.976 251.561 29.088H259.625C259.569 30.208 259.457 31.384 259.289 32.504H280.737C280.177 38.216 279.001 43.592 277.265 48.856H269.089C270.153 46.112 271.049 43.256 271.721 40.4H257.889C257.217 43.256 256.265 46.112 255.089 48.856H246.577Z" fill="white"/>
<path d="M92.3685 76.6V69.6H99.9285V66.52H70.3605V76.6H63.1925V66.52H58.8245V59.688H63.1925V36.952H81.5605V33.424H59.9445V26.592H110.345V33.424H88.7285V36.952H107.097V59.688H111.465V66.52H107.097V76.6H92.3685ZM70.3605 59.688H81.5605V54.872H70.3605V59.688ZM70.3605 48.488H81.5605V43.784H70.3605V48.488ZM88.7285 59.688H99.9285V54.872H88.7285V59.688ZM88.7285 48.488H99.9285V43.784H88.7285V48.488ZM166.345 76.768C155.537 73.016 149.489 65.736 147.865 54.648H144.785V76.6H137.561V54.648H134.425C132.801 65.736 126.753 73.016 115.945 76.768V69.208C122.217 66.632 126.137 61.928 127.537 54.648H115.497V47.648H137.505V35.44H117.513V28.44H137.505V25.08H144.785V28.44H164.777V35.44H144.785V47.648H166.793V54.648H154.753C156.153 61.928 160.073 66.632 166.345 69.208V76.768ZM120.593 37.008H127.761L130.729 45.912H123.561L120.593 37.008ZM151.561 45.912L154.529 37.008H161.697L158.729 45.912H151.561ZM171.945 53.36V45.632H222.345V53.36H171.945ZM256.953 40.032H264.905V49.328C264.905 50.84 264.849 52.296 264.737 53.752C272.297 59.632 278.009 67.304 278.905 76.432H271.065C270.393 70.832 267.089 66.184 262.721 62.32C259.921 68.76 254.041 73.576 242.561 77.16V68.144C254.489 64.504 256.953 59.296 256.953 49.328V40.032ZM227.609 73.688H235.897C238.473 66.464 241.161 58.96 243.401 47.424H235.785C233.657 57.616 230.745 65.12 227.609 73.688ZM228.001 28.608L235.337 43.896H243.233L235.897 28.608H228.001ZM244.577 45.856C247.321 39.584 249.057 32.976 249.561 26.088H257.625C257.569 27.208 257.457 28.384 257.289 29.504H278.737C278.177 35.216 277.001 40.592 275.265 45.856H267.089C268.153 43.112 269.049 40.256 269.721 37.4H255.889C255.217 40.256 254.265 43.112 253.089 45.856H244.577Z" fill="#A00000"/>
</svg>
<script setup lang="ts">
import { onBeforeUnmount, onMounted, ref } from 'vue'
import { cssAssetUrl } from '@/commons/assets.ts'
import MobileStage from '@/components/MobileStage.vue'
import { useGameSocket, joinSharedRoom, sendGameMessage, userJoinStatus } from '@/composables/useGameSocket'
import LoadingView from './views/LoadingView.vue'
import PlayingView from './views/PlayingView.vue'
import ScoreView from './views/ScoreView.vue'
import { $getWechat } from '@/commons/utils.ts'
type GameView = 'loading' | 'playing' | 'score'
const imageUrls = {
bg: cssAssetUrl('game4/h5-game4-bg.svg'),
bg2: cssAssetUrl('game1/bg2.png'),
playBg: cssAssetUrl('game4/h5-game4-bg2.svg'),
logo: cssAssetUrl('game1/logo.png'),
time: cssAssetUrl('game4/h5-game4-clock.svg'),
title: cssAssetUrl('game4/h5-game4-title1.svg'),
title2: cssAssetUrl('game4/h5-game4-title2.svg'),
avatarBg: cssAssetUrl('game4/h5-game4-join.svg'),
gift: cssAssetUrl('game4/h5-game4-gift.svg'),
avatar: cssAssetUrl('game1/avatar.png'),
gu: cssAssetUrl('game4/h5-game4-horse.svg'),
clock: cssAssetUrl('game1/clock.png'),
horse: cssAssetUrl('game4/h5-game4-horse.svg'),
yaoyiyao: cssAssetUrl('game4/h5-game4-yaoyiyao.svg'),
scoreBg: cssAssetUrl('game1/score-bg.png'),
back: cssAssetUrl('game4/back.svg'),
replay: cssAssetUrl('game4/replay.svg'),
close: cssAssetUrl('game4/h5-game4-close.svg'),
}
const wechat = $getWechat()
const currentView = ref<GameView>('loading')
const countdownInterval = ref(60)
const isDivDescVisible = ref(false)
const tick = ref(0) // 点击次数/摇动次数
const rank = ref(0) // 排名
const level = ref(5)
const currentHorse = ref(imageUrls.horse)
const currentYaoyiyao = ref(imageUrls.yaoyiyao)
const token = ref(wechat?.token ?? '')
const nickname = ref(wechat?.nickname ?? '')
const avatar = ref(wechat?.avatar ?? '')
const showGameRule = ref(false)
const mobileStageRef = ref<InstanceType<typeof MobileStage> | null>(null)
const _offSocketMessage = ref<(() => void) | undefined>()
let gameCountdownTimer: ReturnType<typeof window.setTimeout> | undefined
const confirmRefresh = (event: BeforeUnloadEvent) => {
event.preventDefault()
event.returnValue = ''
}
function setDivDescVisible(visible: boolean) {
isDivDescVisible.value = visible
}
function stopGameCountdown() {
if (gameCountdownTimer) {
window.clearTimeout(gameCountdownTimer)
gameCountdownTimer = undefined
}
}
function submitScore(save: boolean = false) {
// 最后提交保存在数据库中
if (save) {
// item_num 游戏项目(1到6)
// wechat 原始token
sendGameMessage('submit_score_save', {
score: tick.value,
wechat: wechat.token_origin,
item_num: 4,
nickname: wechat.nickname,
avatar: wechat.avatar,
rank: rank.value,
})
} else {
sendGameMessage('submit_score', { score: tick.value })
}
}
function startGameCountdown(seconds = 60) {
stopGameCountdown()
countdownInterval.value = seconds
setDivDescVisible(true)
const tickCountdown = () => {
countdownInterval.value -= 1
if (countdownInterval.value <= 0) {
countdownInterval.value = 0
gameCountdownTimer = undefined
setDivDescVisible(false)
submitScore(true)
showScoreView()
return
}
gameCountdownTimer = window.setTimeout(tickCountdown, 1000)
}
gameCountdownTimer = window.setTimeout(tickCountdown, 1000)
}
function showLoadingView() {
stopGameCountdown()
currentView.value = 'loading'
setDivDescVisible(false)
}
function resetToLoadingView() {
stopGameCountdown()
tick.value = 0
rank.value = 0
countdownInterval.value = 60
currentHorse.value = imageUrls.horse
currentYaoyiyao.value = imageUrls.yaoyiyao
userJoinStatus.value = false
currentView.value = 'loading'
setDivDescVisible(false)
}
function startGameView() {
stopGameCountdown()
tick.value = 0
currentHorse.value = imageUrls.horse
currentView.value = 'playing'
startGameCountdown(60)
}
function showScoreView() {
stopGameCountdown()
setDivDescVisible(false)
level.value = rank.value
currentView.value = 'score'
}
function replayGame() {
startGameView()
}
function backToWaiting() {
resetToLoadingView()
joinSharedRoom(nickname.value, token.value, avatar.value)
}
function handleRoomBack() {
resetToLoadingView()
window.setTimeout(() => {
joinSharedRoom(nickname.value, token.value, avatar.value)
}, 200)
}
const touchHandler = () => {
tick.value += 1
submitScore()
}
const showGameRuleHandler = () => {
showGameRule.value = !showGameRule.value
}
if (wechat) {
const { offSocketMessage } = useGameSocket({
gameId: 'game4',
auth: {
userid: wechat.token,
},
onConnect: () => {
window.setTimeout(() => {
joinSharedRoom(nickname.value, token.value, avatar.value)
}, 200)
},
onGameStart: async () => {
showGameRule.value = false
await mobileStageRef.value?.startCountdown()
startGameView()
},
onScoreSubmitted: (is_save, data) => {
if (!is_save) {
const nextRank = Number(typeof data === 'object' ? data?.rank : data)
if (Number.isFinite(nextRank) && nextRank > 0) {
rank.value = nextRank
}
}
},
onRescoreSubmitted: (_recount) => {
submitScore(true)
},
onRoomClosed: showLoadingView,
onRoomBack: handleRoomBack,
})
_offSocketMessage.value = offSocketMessage
}
onMounted(() => {
document.title = '小游戏 - 策马奔腾'
if (token.value) {
window.addEventListener('beforeunload', confirmRefresh)
}
})
onBeforeUnmount(() => {
_offSocketMessage.value?.()
stopGameCountdown()
if (token.value) {
window.removeEventListener('beforeunload', confirmRefresh)
}
})
</script>
<template>
<MobileStage v-if="token" :showGameRule="showGameRule" ref="mobileStageRef"
:background="`${imageUrls.bg} center/cover`">
<template #gameRule>
<div class="rule-container">
<div class="rule-txt-container">
<div class="rule-title">游戏规则</div>
<div class="rule-txt">
<!-- 微信用户通过扫描大屏幕二维码参与,可容纳多人同时进行,摇晃手机控制赛马奔跑,摇晃越快赛马跑得越快,游戏结束按分值高低先后排名,有机会获得新疆福彩定制周边礼品一份。 -->
1. 主持人开赛即可摇手机,单次摇晃得 5 分;
2. 得分越高大屏幕上面的马跑得越快;
3. 限时比拼摇速,结束后按积分排名;
4. 高分用户有机会领取新疆福彩定制周边;
5. 禁止外挂作弊,违规账号取消成绩与领奖资格;
</div>
</div>
<div class="rule-close">
<div @click="showGameRuleHandler"></div>
</div>
</div>
</template>
<LoadingView v-if="currentView === 'loading'" :image-urls="imageUrls" :user-join-status="userJoinStatus"
@touchGameRule="showGameRuleHandler" />
<PlayingView v-else-if="currentView === 'playing'" :image-urls="imageUrls" :tick="tick" :rank="rank"
:currentHorse="currentHorse" :currentYaoyiyao="currentYaoyiyao" :countdown-interval="countdownInterval"
:is-div-desc-visible="isDivDescVisible" @touch="touchHandler" />
<ScoreView v-else :image-urls="imageUrls" :tick="tick" :level="level" @replay="replayGame"
@back="backToWaiting" />
</MobileStage>
<div v-else style="text-align: center; width: 100vw; height: 100vh; line-height: 30; font-size: 20px;">
请使用微信扫码进入游戏
</div>
</template>
<style scoped>
.rule-container {
.rule-txt-container {
background: #FFF9E4;
margin: 0 40px;
border-radius: 5px;
padding-top: 20px;
padding-bottom: 10px;
.rule-title {
text-align: center;
color: #850000;
font-weight: bold;
font-size: 15pt;
}
.rule-txt {
font-size: 12pt;
padding: 10px;
margin-top: 10px;
}
}
.rule-close {
width: 32px;
height: 130px;
margin: 0 auto;
background: v-bind('imageUrls.close') center/cover;
position: relative;
>div {
position: absolute;
bottom: 0;
width: 32px;
height: 32px;
border-radius: 16px;
}
}
}
</style>
<script setup lang="ts">
defineProps<{
imageUrls: Record<string, string>
userJoinStatus: boolean
}>()
defineEmits<{
touchGameRule: []
}>()
</script>
<template>
<div class="h5-page game-stage">
<div class="game-desc" @click="$emit('touchGameRule')">游戏规则</div>
<div class="img-logo"></div>
<div class="img-title"></div>
<div class="img-title2"></div>
<div class="img-gift"></div>
<div class="img-avatar-bg"></div>
<div class="img-avatar"></div>
</div>
</template>
<style scoped>
.game-stage {
position: absolute;
width: 750px;
height: 1624px;
padding: 0;
}
.game-desc {
position: absolute;
top: 40%;
left: var(--stage-viewport-left, 0);
display: flex;
width: 58px;
height: 158px;
padding-top: 10px;
align-items: center;
justify-content: center;
border-radius: 0 12px 12px 0;
background: rgba(40, 12, 8, 0.52);
color: rgba(255, 255, 255, 0.9);
font-size: 25px;
letter-spacing: 10px;
line-height: 1.25;
text-align: center;
text-orientation: upright;
transform: translateY(-50%);
writing-mode: vertical-rl;
}
.bg-bottom {
position: absolute;
bottom: 0;
left: var(--stage-viewport-left, 0);
width: var(--stage-viewport-width, 750px);
height: 479px;
background: v-bind('imageUrls.bg2') center/cover;
opacity: 0.6;
}
.img-logo {
position: absolute;
top: 66px;
left: 50%;
width: 428px;
height: 77px;
background: v-bind('imageUrls.logo') center/cover;
transform: translateX(-50%);
}
.img-title {
position: absolute;
top: 200px;
left: 50%;
width: 609px;
height: 87.04px;
background: v-bind('imageUrls.title') center/cover;
transform: translateX(-50%);
}
.img-title2 {
position: absolute;
top: 290px;
left: 50%;
width: 491.77px;
height: 200px;
background: v-bind('imageUrls.title2') center/cover;
transform: translateX(-50%);
}
.img-gift {
position: absolute;
top: 421px;
right: -10px;
right: -10%;
width: 234.1px;
height: 142.21px;
background: v-bind('imageUrls.gift') center/cover;
}
.img-avatar-bg {
position: absolute;
top: 568px;
left: calc(50% + 12px);
width: 500px;
height: 821px;
background: v-bind('imageUrls.avatarBg') center/cover;
transform: translateX(-50%);
}
.img-avatar {
position: absolute;
top: 564px;
left: 50%;
width: 156px;
height: 156px;
background: v-bind('imageUrls.avatar') center/cover;
transform: translateX(-50%);
}
.txt-nickname {
position: absolute;
top: 650px;
left: 50%;
color: #E00000;
font-size: 25pt;
font-weight: bold;
transform: translateX(-50%);
}
.txt-loading {
position: absolute;
top: 710px;
left: 50%;
width: 288px;
color: #E00000;
font-size: 25pt;
font-weight: bold;
text-align: center;
transform: translateX(-50%);
}
.txt-loading label {
display: inline-block;
transform-origin: center;
animation: loading-text-scale 1.2s ease-in-out infinite;
}
@keyframes loading-text-scale {
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.08);
}
}
.loading-gu {
position: absolute;
bottom: 100px;
left: 50%;
width: 600px;
height: 534px;
background: v-bind('imageUrls.gu') center/cover;
transform: translateX(-50%);
}
</style>
<script setup lang="ts">
import { onBeforeUnmount, onMounted } from 'vue'
import shakeSound from '@/assets/images/game4/yaoyiyao.mp3'
defineProps<{
imageUrls: Record<string, string>
countdownInterval: number
isDivDescVisible: boolean
tick: number
rank: number
currentHorse: string
currentYaoyiyao: string
}>()
const emit = defineEmits<{
touch: []
}>()
// ========== 摇一摇 ==========
const shakeCooldown = 300
let lastShakeTime = 0
let lastPosition = {
x: 0,
y: 0,
z: 0,
time: Date.now(),
}
// 是否正在摇晃(用于停止检测)
let wasShaking = false
let audioContext: AudioContext | null = null
let shakeAudioBuffer: AudioBuffer | null = null
const initAudio = async () => {
try {
audioContext = new (window.AudioContext || (window as any).webkitAudioContext)()
const response = await fetch(shakeSound)
const arrayBuffer = await response.arrayBuffer()
shakeAudioBuffer = await audioContext.decodeAudioData(arrayBuffer)
} catch (error) {
console.error('[摇一摇] 音频初始化失败:', error)
}
}
const playShakeSound = () => {
if (!audioContext || !shakeAudioBuffer) return
if (audioContext.state === 'suspended') {
audioContext.resume()
}
const source = audioContext.createBufferSource()
source.buffer = shakeAudioBuffer
source.connect(audioContext.destination)
source.start(0)
}
const handleDeviceMotion = (ev: DeviceMotionEvent) => {
const nowTime = Date.now()
const motion = ev.accelerationIncludingGravity
if (!motion || motion.x === null) return
const range = 50
if (nowTime - lastPosition.time > 100) {
const nowPosition = {
x: motion.x!,
y: motion.y!,
z: motion.z!,
}
// 两次摇晃的差值(位移法)
const dis =
Math.abs(nowPosition.x - lastPosition.x) +
Math.abs(nowPosition.y - lastPosition.y) +
Math.abs(nowPosition.z - lastPosition.z)
if (dis > range) {
wasShaking = true
const now = Date.now()
if (now - lastShakeTime < shakeCooldown) return
lastShakeTime = now
playShakeSound()
emit('touch')
}
// 用户停止摇晃(停止事件不需要处理)
if (dis < range && wasShaking) {
wasShaking = false
}
lastPosition.x = nowPosition.x
lastPosition.y = nowPosition.y
lastPosition.z = nowPosition.z
lastPosition.time = nowTime
}
}
window.addEventListener('devicemotion', handleDeviceMotion)
// ========== 生命周期 ==========
onMounted(async () => {
try {
await initAudio()
} catch (error) {
console.error('初始化失败:', error)
}
})
onBeforeUnmount(() => {
window.removeEventListener('devicemotion', handleDeviceMotion)
if (audioContext) {
audioContext.close()
}
})
</script>
<template>
<div class="h5-page game-stage">
<Transition name="div-desc-slide" appear>
<div v-if="isDivDescVisible" class="div-desc">
<span class="desc-clock" aria-hidden="true"></span>
<span class="desc-time">{{ countdownInterval }}</span>
</div>
</Transition>
<div class="img-logo"></div>
<div class="img-gift"></div>
<!-- <div class="img-time"></div> -->
<div class="play-content">
<div>当前得分</div>
<div>{{ tick }}</div>
<div>当前排名: &nbsp;&nbsp;<label>{{ rank }}</label>&nbsp;</div>
</div>
<!-- <div class="bg-bottom"></div> -->
<div class="bg-yaoyiyao" :style="{ background: `${currentYaoyiyao} center/cover` }"></div>
<div class="play-horse" :style="{ background: `${currentHorse} center/cover` }" @click="$emit('touch')"></div>
</div>
</template>
<style scoped>
.game-stage {
position: absolute;
width: 750px;
height: 1624px;
padding: 0;
}
.div-desc {
position: absolute;
top: 150px;
left: var(--stage-viewport-left, 0);
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
gap: 24px;
width: 180px;
height: 80px;
border-radius: 0 56px 56px 0;
background: rgba(40, 12, 8, 0.48);
color: #fff;
.desc-clock {
position: absolute;
left: 20px;
width: 38px;
height: 44px;
border-radius: 50%;
background: v-bind('imageUrls.clock') center/cover;
}
.desc-time {
position: absolute;
right: 40px;
color: white;
font-size: 35pt;
line-height: 1;
}
}
.div-desc-slide-enter-active {
transition:
transform 360ms ease-out 220ms,
opacity 360ms ease-out 220ms;
}
.div-desc-slide-leave-active {
transition:
transform 260ms ease-in,
opacity 260ms ease-in;
}
.div-desc-slide-enter-from,
.div-desc-slide-leave-to {
opacity: 0;
transform: translateX(-110%);
}
.div-desc-slide-enter-to,
.div-desc-slide-leave-from {
opacity: 1;
transform: translateX(0);
}
.bg-bottom {
position: absolute;
bottom: 0;
left: var(--stage-viewport-left, 0);
width: var(--stage-viewport-width, 750px);
height: 479px;
background: v-bind('imageUrls.bg2') center/cover;
opacity: 0.6;
}
.img-logo {
position: absolute;
top: 66px;
left: 50%;
width: 428px;
height: 77px;
background: v-bind('imageUrls.logo') center/cover;
transform: translateX(-50%);
}
.img-gift {
position: absolute;
top: 421px;
right: -10px;
right: -10%;
width: 234.1px;
height: 142.21px;
background: v-bind('imageUrls.gift') center/cover;
/* transform: scale(0.8); */
}
/* .img-time {
position: absolute;
top: 66px;
left: 50%;
width: 428px;
height: 77px;
background: v-bind('imageUrls.time') center/cover;
transform: translateX(-50%);
} */
.play-content {
position: absolute;
top: 250px;
left:0;
right: 0;
margin: 0 auto;
width: 556px;
padding: 30px 0;
border-radius: 25px;
background: rgba(40, 12, 8, 0.52);
color: white;
font-size: 28pt;
text-align: center;
}
.play-content>div:nth-child(2) {
display: inline-block;
margin: 10px 0;
background: linear-gradient(180deg, #FFE68D 0%, #FAD500 100%);
background-clip: text;
color: transparent;
font-size: 48pt;
font-weight: bold;
transform: scaleY(1.2);
transform-origin: center;
-webkit-background-clip: text;
}
.play-content>div:nth-child(3) {
position: relative;
top: -10px;
}
.play-content>div:nth-child(3) label {
color: white;
font-size: 42pt;
}
.bg-yaoyiyao {
position: absolute;
top: 698px;
left: 50%;
width: 514.51px;
height: 229px;
transform: translateX(-50%);
}
.play-horse {
position: absolute;
bottom: 164px;
left: 50%;
width: 597px;
height: 679px;
/* transform: translateX(-50%) scale(2.4); */
transform: translateX(-50%);
}
</style>
<script setup lang="ts">
defineProps<{
imageUrls: Record<string, string>
tick: number
level: number
}>()
defineEmits<{
replay: []
back: []
}>()
</script>
<template>
<div class="h5-page game-stage">
<div class="img-logo"></div>
<!-- <div class="bg-bottom"></div> -->
<div class="img-score">
<div class="score-avatar"></div>
<div class="score-content">
<div>张小明</div>
<div>您的成绩</div>
<div>策马跑道</div>
<div>{{ tick }}</div>
<div>最终排名</div>
<div><label>{{ level }}</label></div>
</div>
</div>
<div class="btn-group">
<div class="btn-replay" @click="$emit('replay')"></div>
<div class="btn-back" @click="$emit('back')"></div>
</div>
</div>
</template>
<style scoped>
.game-stage {
position: absolute;
width: 750px;
height: 1624px;
padding: 0;
}
.bg-bottom {
position: absolute;
bottom: 0;
left: var(--stage-viewport-left, 0);
width: var(--stage-viewport-width, 750px);
height: 479px;
background: v-bind('imageUrls.bg') center/cover no-repeat;
opacity: 0.6;
}
.img-logo {
position: absolute;
top: 66px;
left: 50%;
width: 428px;
height: 77px;
background: v-bind('imageUrls.logo') center/cover;
transform: translateX(-50%);
}
.img-score {
position: absolute;
top: 500px;
left: 50%;
width: 465px;
height: 731px;
background: v-bind('imageUrls.scoreBg') center/cover;
transform: translateX(-50%) scale(1.2);
}
.score-avatar {
position: absolute;
top: -20px;
left: 50%;
width: 60px;
height: 60px;
background: v-bind('imageUrls.avatar') center/cover;
transform: translateX(-50%) scale(2);
}
.score-content {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: calc(100% - 100px);
font-size: 28pt;
text-align: center;
}
.score-content > div:nth-child(1) {
color: #E00000;
font-size: 32pt;
font-weight: bold;
}
.score-content > div:nth-child(2) {
margin-top: 20px;
font-size: 32pt;
}
.score-content > div:nth-child(3) {
margin-top: 40px;
}
.score-content > div:nth-child(4) {
margin-top: 30px;
color: #A00000;
font-size: 32pt;
font-weight: bold;
transform: scale(2.4);
}
.score-content > div:nth-child(5) {
margin-top: 40px;
}
.score-content > div:nth-child(6) {
margin-top: 20px;
color: #A00000;
font-size: 32pt;
font-weight: bold;
}
.score-content > div:nth-child(6) label {
color: #A00000;
font-size: 42pt;
margin: 0 10px;
}
.btn-group {
position: absolute;
top: 1354px;
left: 50%;
display: flex;
gap: 40px;
transform: translateX(-50%);
}
.btn-replay,
.btn-back {
width: 315px;
height: 100px;
}
.btn-replay {
background: v-bind('imageUrls.replay') center/cover;
}
.btn-back {
background: v-bind('imageUrls.back') center/cover;
}
</style>
import { createRouter, createWebHashHistory } from 'vue-router' import { createRouter, createWebHashHistory } from 'vue-router'
import { $read } from '@/commons/utils' import { $read } from '@/commons/utils'
import Game1 from '@/pages/game1/Game.vue' import Game1 from '@/pages/game1/Game.vue'
import Game4 from '@/pages/game4/Game4.vue'
import Game6 from '@/pages/game6/Game.vue' import Game6 from '@/pages/game6/Game.vue'
const getWechatId = () => { const getWechatId = () => {
...@@ -23,6 +24,11 @@ const router = createRouter({ ...@@ -23,6 +24,11 @@ const router = createRouter({
// }, // },
}, },
{ {
path: '/game4',
name: 'Game4',
component: Game4,
},
{
path: '/game6', path: '/game6',
name: 'Game6', name: 'Game6',
component: Game6, component: Game6,
......
...@@ -36,6 +36,7 @@ export default defineConfig(({ command }) => ({ ...@@ -36,6 +36,7 @@ export default defineConfig(({ command }) => ({
copyImageAssets(), copyImageAssets(),
], ],
server: { server: {
host: true,
proxy: { proxy: {
'/socket.io': { '/socket.io': {
target: 'http://localhost:8082', target: 'http://localhost:8082',
......
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
'@msgpack/msgpack':
specifier: ^3.1.3
version: 3.1.3
crypto-js:
specifier: ^4.2.0
version: 4.2.0
msgpack:
specifier: ^1.0.3
version: 1.0.3
socket.io-client:
specifier: ^4.8.3
version: 4.8.3
vue:
specifier: ^3.5.32
version: 3.5.35(typescript@6.0.3)
vue-router:
specifier: ^4.6.4
version: 4.6.4(vue@3.5.35(typescript@6.0.3))
devDependencies:
'@tsconfig/node24':
specifier: ^24.0.4
version: 24.0.4
'@types/node':
specifier: ^24.12.2
version: 24.12.4
'@vitejs/plugin-vue':
specifier: ^6.0.6
version: 6.0.7(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))
'@vue/tsconfig':
specifier: ^0.9.1
version: 0.9.1(typescript@6.0.3)(vue@3.5.35(typescript@6.0.3))
npm-run-all2:
specifier: ^8.0.4
version: 8.0.4
typescript:
specifier: ~6.0.0
version: 6.0.3
vite:
specifier: ^8.0.8
version: 8.0.16(@types/node@24.12.4)
vite-plugin-vue-devtools:
specifier: ^8.1.1
version: 8.1.2(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))
vue-tsc:
specifier: ^3.2.6
version: 3.3.3(typescript@6.0.3)
packages:
'@babel/code-frame@7.29.7':
resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
engines: {node: '>=6.9.0'}
'@babel/compat-data@7.29.7':
resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==}
engines: {node: '>=6.9.0'}
'@babel/core@7.29.7':
resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.29.7':
resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.29.7':
resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.29.7':
resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==}
engines: {node: '>=6.9.0'}
'@babel/helper-create-class-features-plugin@7.29.7':
resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-globals@7.29.7':
resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==}
engines: {node: '>=6.9.0'}
'@babel/helper-member-expression-to-functions@7.29.7':
resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-imports@7.29.7':
resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==}
engines: {node: '>=6.9.0'}
'@babel/helper-module-transforms@7.29.7':
resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-optimise-call-expression@7.29.7':
resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==}
engines: {node: '>=6.9.0'}
'@babel/helper-plugin-utils@7.29.7':
resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==}
engines: {node: '>=6.9.0'}
'@babel/helper-replace-supers@7.29.7':
resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
'@babel/helper-skip-transparent-expression-wrappers@7.29.7':
resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.29.7':
resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.29.7':
resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-option@7.29.7':
resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==}
engines: {node: '>=6.9.0'}
'@babel/helpers@7.29.7':
resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.29.7':
resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/plugin-proposal-decorators@7.29.7':
resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-decorators@7.29.7':
resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-attributes@7.29.7':
resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-import-meta@7.10.4':
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-jsx@7.29.7':
resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-syntax-typescript@7.29.7':
resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-typescript@7.29.7':
resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/template@7.29.7':
resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.29.7':
resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==}
engines: {node: '>=6.9.0'}
'@babel/types@7.29.7':
resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==}
engines: {node: '>=6.9.0'}
'@emnapi/core@1.10.0':
resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
'@emnapi/runtime@1.10.0':
resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
'@emnapi/wasi-threads@1.2.1':
resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/remapping@2.3.5':
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
'@jridgewell/resolve-uri@3.1.2':
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@msgpack/msgpack@3.1.3':
resolution: {integrity: sha512-47XIizs9XZXvuJgoaJUIE2lFoID8ugvc0jzSHP+Ptfk8nTbnR8g788wv48N03Kx0UkAv559HWRQ3yzOgzlRNUA==}
engines: {node: '>= 18'}
'@napi-rs/wasm-runtime@1.1.4':
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
'@emnapi/core': ^1.7.1
'@emnapi/runtime': ^1.7.1
'@oxc-project/types@0.133.0':
resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
'@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
'@rolldown/binding-android-arm64@1.0.3':
resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
'@rolldown/binding-darwin-arm64@1.0.3':
resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
'@rolldown/binding-darwin-x64@1.0.3':
resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
'@rolldown/binding-freebsd-x64@1.0.3':
resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
'@rolldown/binding-linux-arm-gnueabihf@1.0.3':
resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
'@rolldown/binding-linux-arm64-gnu@1.0.3':
resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-arm64-musl@1.0.3':
resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rolldown/binding-linux-ppc64-gnu@1.0.3':
resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-s390x-gnu@1.0.3':
resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-gnu@1.0.3':
resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rolldown/binding-linux-x64-musl@1.0.3':
resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@rolldown/binding-openharmony-arm64@1.0.3':
resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
'@rolldown/binding-wasm32-wasi@1.0.3':
resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [wasm32]
'@rolldown/binding-win32-arm64-msvc@1.0.3':
resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
'@rolldown/binding-win32-x64-msvc@1.0.3':
resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
'@rolldown/pluginutils@1.0.1':
resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
'@tsconfig/node24@24.0.4':
resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==}
'@tybys/wasm-util@0.10.2':
resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
'@types/node@24.12.4':
resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==}
'@vitejs/plugin-vue@6.0.7':
resolution: {integrity: sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vue: ^3.2.25
'@volar/language-core@2.4.28':
resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==}
'@volar/source-map@2.4.28':
resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==}
'@volar/typescript@2.4.28':
resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==}
'@vue/babel-helper-vue-transform-on@1.5.0':
resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==}
'@vue/babel-plugin-jsx@1.5.0':
resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==}
peerDependencies:
'@babel/core': ^7.0.0-0
peerDependenciesMeta:
'@babel/core':
optional: true
'@vue/babel-plugin-resolve-type@1.5.0':
resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==}
peerDependencies:
'@babel/core': ^7.0.0-0
'@vue/compiler-core@3.5.35':
resolution: {integrity: sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==}
'@vue/compiler-dom@3.5.35':
resolution: {integrity: sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==}
'@vue/compiler-sfc@3.5.35':
resolution: {integrity: sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==}
'@vue/compiler-ssr@3.5.35':
resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==}
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
'@vue/devtools-core@8.1.2':
resolution: {integrity: sha512-ZGGyaSBP4/+bN2Nd9ZHNYAVDRIzMw1rv2RyXWtyZlo6mQal+IDmTvKY4V+DjAEBhaXt30mHmsgYp1yXJ/2tIWg==}
peerDependencies:
vue: ^3.0.0
'@vue/devtools-kit@8.1.2':
resolution: {integrity: sha512-f75/upc+GCyjXErpgPGz4582ujS0L/adAltGy+tqXMGUJpgAcfGr6CxnnhpZY8BHuMYt6KpbF8uaFrrQG66rGQ==}
'@vue/devtools-shared@8.1.2':
resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==}
'@vue/language-core@3.3.3':
resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==}
'@vue/reactivity@3.5.35':
resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==}
'@vue/runtime-core@3.5.35':
resolution: {integrity: sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==}
'@vue/runtime-dom@3.5.35':
resolution: {integrity: sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==}
'@vue/server-renderer@3.5.35':
resolution: {integrity: sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==}
peerDependencies:
vue: 3.5.35
'@vue/shared@3.5.35':
resolution: {integrity: sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==}
'@vue/tsconfig@0.9.1':
resolution: {integrity: sha512-buvjm+9NzLCJL29KY1j1991YYJ5e6275OiK+G4jtmfIb+z4POywbdm0wXusT9adVWqe0xqg70TbI7+mRx4uU9w==}
peerDependencies:
typescript: '>= 5.8'
vue: ^3.4.0
peerDependenciesMeta:
typescript:
optional: true
vue:
optional: true
alien-signals@3.2.1:
resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==}
ansi-styles@6.2.3:
resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
engines: {node: '>=12'}
ansis@4.3.1:
resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==}
engines: {node: '>=14'}
baseline-browser-mapping@2.10.33:
resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==}
engines: {node: '>=6.0.0'}
hasBin: true
birpc@2.9.0:
resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==}
birpc@4.0.0:
resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==}
browserslist@4.28.2:
resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
engines: {node: '>=18'}
caniuse-lite@1.0.30001793:
resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
crypto-js@4.2.0:
resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
csstype@3.2.3:
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
debug@4.4.3:
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
default-browser-id@5.0.1:
resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
engines: {node: '>=18'}
default-browser@5.5.0:
resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
engines: {node: '>=18'}
define-lazy-prop@3.0.0:
resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
engines: {node: '>=12'}
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
electron-to-chromium@1.5.366:
resolution: {integrity: sha512-OlRuhb688YTCzzU3gXPLn6nGyd+F+53INE1qaKKlu6kETErE8FYsyDh0XqXEU+uBRn0MpCzz2vfNwORhkap8qg==}
engine.io-client@6.6.5:
resolution: {integrity: sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg==}
engine.io-parser@5.2.3:
resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
engines: {node: '>=10.0.0'}
entities@7.0.1:
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
engines: {node: '>=0.12'}
error-stack-parser-es@1.0.5:
resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
engines: {node: '>=12.0.0'}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
is-docker@3.0.0:
resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
is-in-ssh@1.0.0:
resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==}
engines: {node: '>=20'}
is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
hasBin: true
is-wsl@3.1.1:
resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
engines: {node: '>=16'}
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
isexe@3.1.5:
resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==}
engines: {node: '>=18'}
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
hasBin: true
json-parse-even-better-errors@4.0.0:
resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==}
engines: {node: ^18.17.0 || >=20.5.0}
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
kolorist@1.8.0:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
lightningcss-android-arm64@1.32.0:
resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [android]
lightningcss-darwin-arm64@1.32.0:
resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
lightningcss-darwin-x64@1.32.0:
resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
lightningcss-freebsd-x64@1.32.0:
resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
lightningcss-linux-arm-gnueabihf@1.32.0:
resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
lightningcss-linux-arm64-gnu@1.32.0:
resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [glibc]
lightningcss-linux-arm64-musl@1.32.0:
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
libc: [musl]
lightningcss-linux-x64-gnu@1.32.0:
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [glibc]
lightningcss-linux-x64-musl@1.32.0:
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
libc: [musl]
lightningcss-win32-arm64-msvc@1.32.0:
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [win32]
lightningcss-win32-x64-msvc@1.32.0:
resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
lightningcss@1.32.0:
resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
engines: {node: '>= 12.0.0'}
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
memorystream@0.3.1:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
mrmime@2.0.1:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
msgpack@1.0.3:
resolution: {integrity: sha512-FX88+Pexuh+UItdqg68WhNPGPhqs57RlXAYyXNZ8eTQC/Tx5lzeIoxTxA2qAd7qU5a/crON5F0ADf4l6k2b7Jw==}
engines: {node: '>=0.12.7'}
hasBin: true
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
nan@2.27.0:
resolution: {integrity: sha512-hC+0LidcL3XE4rp1C4H54KujgXKzbfyTngZTwBByQxsOxCEKZT0MPQ4hOKUH2jU1OYstqdDH4onyHPDzcV0XdQ==}
nanoid@3.3.12:
resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
node-releases@2.0.47:
resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==}
engines: {node: '>=18'}
npm-normalize-package-bin@4.0.0:
resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==}
engines: {node: ^18.17.0 || >=20.5.0}
npm-run-all2@8.0.4:
resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==}
engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'}
hasBin: true
obug@2.1.1:
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
open@11.0.0:
resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==}
engines: {node: '>=20'}
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-key@3.1.1:
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
engines: {node: '>=8'}
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
perfect-debounce@2.1.0:
resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@4.0.4:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
hasBin: true
postcss@8.5.15:
resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
engines: {node: ^10 || ^12 || >=14}
powershell-utils@0.1.0:
resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==}
engines: {node: '>=20'}
read-package-json-fast@4.0.0:
resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==}
engines: {node: ^18.17.0 || >=20.5.0}
rolldown@1.0.3:
resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
run-applescript@7.1.0:
resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
engines: {node: '>=18'}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
shell-quote@1.8.4:
resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==}
engines: {node: '>= 0.4'}
sirv@3.0.2:
resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
engines: {node: '>=18'}
socket.io-client@4.8.3:
resolution: {integrity: sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==}
engines: {node: '>=10.0.0'}
socket.io-parser@4.2.6:
resolution: {integrity: sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==}
engines: {node: '>=10.0.0'}
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
tinyglobby@0.2.17:
resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
engines: {node: '>=12.0.0'}
totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
typescript@6.0.3:
resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==}
engines: {node: '>=14.17'}
hasBin: true
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
unplugin-utils@0.3.1:
resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==}
engines: {node: '>=20.19.0'}
update-browserslist-db@1.2.3:
resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
vite-dev-rpc@2.0.0:
resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==}
peerDependencies:
vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0
vite-hot-client@2.2.0:
resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==}
peerDependencies:
vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0
vite-plugin-inspect@11.4.1:
resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': '*'
vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0
peerDependenciesMeta:
'@nuxt/kit':
optional: true
vite-plugin-vue-devtools@8.1.2:
resolution: {integrity: sha512-gt5h1CNryR9Hy0tvhSbqY3j0F7aj0pGxBxWLa1lXSiZVkhdWDf0vbCOZyjh8ivFGE6FDHTGy3zkcZGlMZdVHig==}
engines: {node: '>=v14.21.3'}
peerDependencies:
vite: ^6.0.0 || ^7.0.0 || ^8.0.0
vite-plugin-vue-inspector@6.0.0:
resolution: {integrity: sha512-OpyITJLgZNibxlrik1EmRtvXHDjLRxNPsWkGFTERZs2LgMEdG4W0WoFt5GIgp3a3jRou+eJR8U1zOBk/XQgEbw==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
vite@8.0.16:
resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
'@vitejs/devtools': ^0.1.18
esbuild: ^0.27.0 || ^0.28.0
jiti: '>=1.21.0'
less: ^4.0.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
sugarss: ^5.0.0
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
'@vitejs/devtools':
optional: true
esbuild:
optional: true
jiti:
optional: true
less:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vscode-uri@3.1.0:
resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==}
vue-router@4.6.4:
resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
peerDependencies:
vue: ^3.5.0
vue-tsc@3.3.3:
resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
vue@3.5.35:
resolution: {integrity: sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
which@5.0.0:
resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==}
engines: {node: ^18.17.0 || >=20.5.0}
hasBin: true
ws@8.20.1:
resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
wsl-utils@0.3.1:
resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==}
engines: {node: '>=20'}
xmlhttprequest-ssl@2.1.2:
resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==}
engines: {node: '>=0.4.0'}
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
snapshots:
'@babel/code-frame@7.29.7':
dependencies:
'@babel/helper-validator-identifier': 7.29.7
js-tokens: 4.0.0
picocolors: 1.1.1
'@babel/compat-data@7.29.7': {}
'@babel/core@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-compilation-targets': 7.29.7
'@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7)
'@babel/helpers': 7.29.7
'@babel/parser': 7.29.7
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/generator@7.29.7':
dependencies:
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/helper-compilation-targets@7.29.7':
dependencies:
'@babel/compat-data': 7.29.7
'@babel/helper-validator-option': 7.29.7
browserslist: 4.28.2
lru-cache: 5.1.1
semver: 6.3.1
'@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
'@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7)
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
'@babel/traverse': 7.29.7
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/helper-globals@7.29.7': {}
'@babel/helper-member-expression-to-functions@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-module-imports': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/helper-plugin-utils@7.29.7': {}
'@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-member-expression-to-functions': 7.29.7
'@babel/helper-optimise-call-expression': 7.29.7
'@babel/traverse': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.29.7':
dependencies:
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
transitivePeerDependencies:
- supports-color
'@babel/helper-string-parser@7.29.7': {}
'@babel/helper-validator-identifier@7.29.7': {}
'@babel/helper-validator-option@7.29.7': {}
'@babel/helpers@7.29.7':
dependencies:
'@babel/template': 7.29.7
'@babel/types': 7.29.7
'@babel/parser@7.29.7':
dependencies:
'@babel/types': 7.29.7
'@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7)
transitivePeerDependencies:
- supports-color
'@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)':
dependencies:
'@babel/core': 7.29.7
'@babel/helper-annotate-as-pure': 7.29.7
'@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7)
'@babel/helper-plugin-utils': 7.29.7
'@babel/helper-skip-transparent-expression-wrappers': 7.29.7
'@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7)
transitivePeerDependencies:
- supports-color
'@babel/template@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/parser': 7.29.7
'@babel/types': 7.29.7
'@babel/traverse@7.29.7':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/generator': 7.29.7
'@babel/helper-globals': 7.29.7
'@babel/parser': 7.29.7
'@babel/template': 7.29.7
'@babel/types': 7.29.7
debug: 4.4.3
transitivePeerDependencies:
- supports-color
'@babel/types@7.29.7':
dependencies:
'@babel/helper-string-parser': 7.29.7
'@babel/helper-validator-identifier': 7.29.7
'@emnapi/core@1.10.0':
dependencies:
'@emnapi/wasi-threads': 1.2.1
tslib: 2.8.1
optional: true
'@emnapi/runtime@1.10.0':
dependencies:
tslib: 2.8.1
optional: true
'@emnapi/wasi-threads@1.2.1':
dependencies:
tslib: 2.8.1
optional: true
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/remapping@2.3.5':
dependencies:
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
'@jridgewell/resolve-uri@3.1.2': {}
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@msgpack/msgpack@3.1.3': {}
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@tybys/wasm-util': 0.10.2
optional: true
'@oxc-project/types@0.133.0': {}
'@polka/url@1.0.0-next.29': {}
'@rolldown/binding-android-arm64@1.0.3':
optional: true
'@rolldown/binding-darwin-arm64@1.0.3':
optional: true
'@rolldown/binding-darwin-x64@1.0.3':
optional: true
'@rolldown/binding-freebsd-x64@1.0.3':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.3':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.3':
optional: true
'@rolldown/binding-linux-ppc64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-s390x-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.3':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.3':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.3':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.3':
dependencies:
'@emnapi/core': 1.10.0
'@emnapi/runtime': 1.10.0
'@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
optional: true
'@rolldown/binding-win32-arm64-msvc@1.0.3':
optional: true
'@rolldown/binding-win32-x64-msvc@1.0.3':
optional: true
'@rolldown/pluginutils@1.0.1': {}
'@socket.io/component-emitter@3.1.2': {}
'@tsconfig/node24@24.0.4': {}
'@tybys/wasm-util@0.10.2':
dependencies:
tslib: 2.8.1
optional: true
'@types/node@24.12.4':
dependencies:
undici-types: 7.16.0
'@vitejs/plugin-vue@6.0.7(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@rolldown/pluginutils': 1.0.1
vite: 8.0.16(@types/node@24.12.4)
vue: 3.5.35(typescript@6.0.3)
'@volar/language-core@2.4.28':
dependencies:
'@volar/source-map': 2.4.28
'@volar/source-map@2.4.28': {}
'@volar/typescript@2.4.28':
dependencies:
'@volar/language-core': 2.4.28
path-browserify: 1.0.1
vscode-uri: 3.1.0
'@vue/babel-helper-vue-transform-on@1.5.0': {}
'@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7)':
dependencies:
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7)
'@babel/template': 7.29.7
'@babel/traverse': 7.29.7
'@babel/types': 7.29.7
'@vue/babel-helper-vue-transform-on': 1.5.0
'@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7)
'@vue/shared': 3.5.35
optionalDependencies:
'@babel/core': 7.29.7
transitivePeerDependencies:
- supports-color
'@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7)':
dependencies:
'@babel/code-frame': 7.29.7
'@babel/core': 7.29.7
'@babel/helper-module-imports': 7.29.7
'@babel/helper-plugin-utils': 7.29.7
'@babel/parser': 7.29.7
'@vue/compiler-sfc': 3.5.35
transitivePeerDependencies:
- supports-color
'@vue/compiler-core@3.5.35':
dependencies:
'@babel/parser': 7.29.7
'@vue/shared': 3.5.35
entities: 7.0.1
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-dom@3.5.35':
dependencies:
'@vue/compiler-core': 3.5.35
'@vue/shared': 3.5.35
'@vue/compiler-sfc@3.5.35':
dependencies:
'@babel/parser': 7.29.7
'@vue/compiler-core': 3.5.35
'@vue/compiler-dom': 3.5.35
'@vue/compiler-ssr': 3.5.35
'@vue/shared': 3.5.35
estree-walker: 2.0.2
magic-string: 0.30.21
postcss: 8.5.15
source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.35':
dependencies:
'@vue/compiler-dom': 3.5.35
'@vue/shared': 3.5.35
'@vue/devtools-api@6.6.4': {}
'@vue/devtools-core@8.1.2(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@vue/devtools-kit': 8.1.2
'@vue/devtools-shared': 8.1.2
vue: 3.5.35(typescript@6.0.3)
'@vue/devtools-kit@8.1.2':
dependencies:
'@vue/devtools-shared': 8.1.2
birpc: 2.9.0
hookable: 5.5.3
perfect-debounce: 2.1.0
'@vue/devtools-shared@8.1.2': {}
'@vue/language-core@3.3.3':
dependencies:
'@volar/language-core': 2.4.28
'@vue/compiler-dom': 3.5.35
'@vue/shared': 3.5.35
alien-signals: 3.2.1
muggle-string: 0.4.1
path-browserify: 1.0.1
picomatch: 4.0.4
'@vue/reactivity@3.5.35':
dependencies:
'@vue/shared': 3.5.35
'@vue/runtime-core@3.5.35':
dependencies:
'@vue/reactivity': 3.5.35
'@vue/shared': 3.5.35
'@vue/runtime-dom@3.5.35':
dependencies:
'@vue/reactivity': 3.5.35
'@vue/runtime-core': 3.5.35
'@vue/shared': 3.5.35
csstype: 3.2.3
'@vue/server-renderer@3.5.35(vue@3.5.35(typescript@6.0.3))':
dependencies:
'@vue/compiler-ssr': 3.5.35
'@vue/shared': 3.5.35
vue: 3.5.35(typescript@6.0.3)
'@vue/shared@3.5.35': {}
'@vue/tsconfig@0.9.1(typescript@6.0.3)(vue@3.5.35(typescript@6.0.3))':
optionalDependencies:
typescript: 6.0.3
vue: 3.5.35(typescript@6.0.3)
alien-signals@3.2.1: {}
ansi-styles@6.2.3: {}
ansis@4.3.1: {}
baseline-browser-mapping@2.10.33: {}
birpc@2.9.0: {}
birpc@4.0.0: {}
browserslist@4.28.2:
dependencies:
baseline-browser-mapping: 2.10.33
caniuse-lite: 1.0.30001793
electron-to-chromium: 1.5.366
node-releases: 2.0.47
update-browserslist-db: 1.2.3(browserslist@4.28.2)
bundle-name@4.1.0:
dependencies:
run-applescript: 7.1.0
caniuse-lite@1.0.30001793: {}
convert-source-map@2.0.0: {}
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
crypto-js@4.2.0: {}
csstype@3.2.3: {}
debug@4.4.3:
dependencies:
ms: 2.1.3
default-browser-id@5.0.1: {}
default-browser@5.5.0:
dependencies:
bundle-name: 4.1.0
default-browser-id: 5.0.1
define-lazy-prop@3.0.0: {}
detect-libc@2.1.2: {}
electron-to-chromium@1.5.366: {}
engine.io-client@6.6.5:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
engine.io-parser: 5.2.3
ws: 8.20.1
xmlhttprequest-ssl: 2.1.2
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
engine.io-parser@5.2.3: {}
entities@7.0.1: {}
error-stack-parser-es@1.0.5: {}
escalade@3.2.0: {}
estree-walker@2.0.2: {}
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
fsevents@2.3.3:
optional: true
gensync@1.0.0-beta.2: {}
hookable@5.5.3: {}
is-docker@3.0.0: {}
is-in-ssh@1.0.0: {}
is-inside-container@1.0.0:
dependencies:
is-docker: 3.0.0
is-wsl@3.1.1:
dependencies:
is-inside-container: 1.0.0
isexe@2.0.0: {}
isexe@3.1.5: {}
js-tokens@4.0.0: {}
jsesc@3.1.0: {}
json-parse-even-better-errors@4.0.0: {}
json5@2.2.3: {}
kolorist@1.8.0: {}
lightningcss-android-arm64@1.32.0:
optional: true
lightningcss-darwin-arm64@1.32.0:
optional: true
lightningcss-darwin-x64@1.32.0:
optional: true
lightningcss-freebsd-x64@1.32.0:
optional: true
lightningcss-linux-arm-gnueabihf@1.32.0:
optional: true
lightningcss-linux-arm64-gnu@1.32.0:
optional: true
lightningcss-linux-arm64-musl@1.32.0:
optional: true
lightningcss-linux-x64-gnu@1.32.0:
optional: true
lightningcss-linux-x64-musl@1.32.0:
optional: true
lightningcss-win32-arm64-msvc@1.32.0:
optional: true
lightningcss-win32-x64-msvc@1.32.0:
optional: true
lightningcss@1.32.0:
dependencies:
detect-libc: 2.1.2
optionalDependencies:
lightningcss-android-arm64: 1.32.0
lightningcss-darwin-arm64: 1.32.0
lightningcss-darwin-x64: 1.32.0
lightningcss-freebsd-x64: 1.32.0
lightningcss-linux-arm-gnueabihf: 1.32.0
lightningcss-linux-arm64-gnu: 1.32.0
lightningcss-linux-arm64-musl: 1.32.0
lightningcss-linux-x64-gnu: 1.32.0
lightningcss-linux-x64-musl: 1.32.0
lightningcss-win32-arm64-msvc: 1.32.0
lightningcss-win32-x64-msvc: 1.32.0
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
memorystream@0.3.1: {}
mrmime@2.0.1: {}
ms@2.1.3: {}
msgpack@1.0.3:
dependencies:
nan: 2.27.0
muggle-string@0.4.1: {}
nan@2.27.0: {}
nanoid@3.3.12: {}
node-releases@2.0.47: {}
npm-normalize-package-bin@4.0.0: {}
npm-run-all2@8.0.4:
dependencies:
ansi-styles: 6.2.3
cross-spawn: 7.0.6
memorystream: 0.3.1
picomatch: 4.0.4
pidtree: 0.6.0
read-package-json-fast: 4.0.0
shell-quote: 1.8.4
which: 5.0.0
obug@2.1.1: {}
ohash@2.0.11: {}
open@11.0.0:
dependencies:
default-browser: 5.5.0
define-lazy-prop: 3.0.0
is-in-ssh: 1.0.0
is-inside-container: 1.0.0
powershell-utils: 0.1.0
wsl-utils: 0.3.1
path-browserify@1.0.1: {}
path-key@3.1.1: {}
pathe@2.0.3: {}
perfect-debounce@2.1.0: {}
picocolors@1.1.1: {}
picomatch@4.0.4: {}
pidtree@0.6.0: {}
postcss@8.5.15:
dependencies:
nanoid: 3.3.12
picocolors: 1.1.1
source-map-js: 1.2.1
powershell-utils@0.1.0: {}
read-package-json-fast@4.0.0:
dependencies:
json-parse-even-better-errors: 4.0.0
npm-normalize-package-bin: 4.0.0
rolldown@1.0.3:
dependencies:
'@oxc-project/types': 0.133.0
'@rolldown/pluginutils': 1.0.1
optionalDependencies:
'@rolldown/binding-android-arm64': 1.0.3
'@rolldown/binding-darwin-arm64': 1.0.3
'@rolldown/binding-darwin-x64': 1.0.3
'@rolldown/binding-freebsd-x64': 1.0.3
'@rolldown/binding-linux-arm-gnueabihf': 1.0.3
'@rolldown/binding-linux-arm64-gnu': 1.0.3
'@rolldown/binding-linux-arm64-musl': 1.0.3
'@rolldown/binding-linux-ppc64-gnu': 1.0.3
'@rolldown/binding-linux-s390x-gnu': 1.0.3
'@rolldown/binding-linux-x64-gnu': 1.0.3
'@rolldown/binding-linux-x64-musl': 1.0.3
'@rolldown/binding-openharmony-arm64': 1.0.3
'@rolldown/binding-wasm32-wasi': 1.0.3
'@rolldown/binding-win32-arm64-msvc': 1.0.3
'@rolldown/binding-win32-x64-msvc': 1.0.3
run-applescript@7.1.0: {}
semver@6.3.1: {}
shebang-command@2.0.0:
dependencies:
shebang-regex: 3.0.0
shebang-regex@3.0.0: {}
shell-quote@1.8.4: {}
sirv@3.0.2:
dependencies:
'@polka/url': 1.0.0-next.29
mrmime: 2.0.1
totalist: 3.0.1
socket.io-client@4.8.3:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
engine.io-client: 6.6.5
socket.io-parser: 4.2.6
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
socket.io-parser@4.2.6:
dependencies:
'@socket.io/component-emitter': 3.1.2
debug: 4.4.3
transitivePeerDependencies:
- supports-color
source-map-js@1.2.1: {}
tinyglobby@0.2.17:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
totalist@3.0.1: {}
tslib@2.8.1:
optional: true
typescript@6.0.3: {}
undici-types@7.16.0: {}
unplugin-utils@0.3.1:
dependencies:
pathe: 2.0.3
picomatch: 4.0.4
update-browserslist-db@1.2.3(browserslist@4.28.2):
dependencies:
browserslist: 4.28.2
escalade: 3.2.0
picocolors: 1.1.1
vite-dev-rpc@2.0.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
birpc: 4.0.0
vite: 8.0.16(@types/node@24.12.4)
vite-hot-client: 2.2.0(vite@8.0.16(@types/node@24.12.4))
vite-hot-client@2.2.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
vite: 8.0.16(@types/node@24.12.4)
vite-plugin-inspect@11.4.1(vite@8.0.16(@types/node@24.12.4)):
dependencies:
ansis: 4.3.1
error-stack-parser-es: 1.0.5
obug: 2.1.1
ohash: 2.0.11
open: 11.0.0
perfect-debounce: 2.1.0
sirv: 3.0.2
unplugin-utils: 0.3.1
vite: 8.0.16(@types/node@24.12.4)
vite-dev-rpc: 2.0.0(vite@8.0.16(@types/node@24.12.4))
vite-plugin-vue-devtools@8.1.2(vite@8.0.16(@types/node@24.12.4))(vue@3.5.35(typescript@6.0.3)):
dependencies:
'@vue/devtools-core': 8.1.2(vue@3.5.35(typescript@6.0.3))
'@vue/devtools-kit': 8.1.2
'@vue/devtools-shared': 8.1.2
sirv: 3.0.2
vite: 8.0.16(@types/node@24.12.4)
vite-plugin-inspect: 11.4.1(vite@8.0.16(@types/node@24.12.4))
vite-plugin-vue-inspector: 6.0.0(vite@8.0.16(@types/node@24.12.4))
transitivePeerDependencies:
- '@nuxt/kit'
- supports-color
- vue
vite-plugin-vue-inspector@6.0.0(vite@8.0.16(@types/node@24.12.4)):
dependencies:
'@babel/core': 7.29.7
'@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7)
'@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7)
'@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7)
'@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7)
'@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7)
'@vue/compiler-dom': 3.5.35
kolorist: 1.8.0
magic-string: 0.30.21
vite: 8.0.16(@types/node@24.12.4)
transitivePeerDependencies:
- supports-color
vite@8.0.16(@types/node@24.12.4):
dependencies:
lightningcss: 1.32.0
picomatch: 4.0.4
postcss: 8.5.15
rolldown: 1.0.3
tinyglobby: 0.2.17
optionalDependencies:
'@types/node': 24.12.4
fsevents: 2.3.3
vscode-uri@3.1.0: {}
vue-router@4.6.4(vue@3.5.35(typescript@6.0.3)):
dependencies:
'@vue/devtools-api': 6.6.4
vue: 3.5.35(typescript@6.0.3)
vue-tsc@3.3.3(typescript@6.0.3):
dependencies:
'@volar/typescript': 2.4.28
'@vue/language-core': 3.3.3
typescript: 6.0.3
vue@3.5.35(typescript@6.0.3):
dependencies:
'@vue/compiler-dom': 3.5.35
'@vue/compiler-sfc': 3.5.35
'@vue/runtime-dom': 3.5.35
'@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@6.0.3))
'@vue/shared': 3.5.35
optionalDependencies:
typescript: 6.0.3
which@2.0.2:
dependencies:
isexe: 2.0.0
which@5.0.0:
dependencies:
isexe: 3.1.5
ws@8.20.1: {}
wsl-utils@0.3.1:
dependencies:
is-wsl: 3.1.1
powershell-utils: 0.1.0
xmlhttprequest-ssl@2.1.2: {}
yallist@3.1.1: {}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<svg width="564" height="564" viewBox="0 0 564 564" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<rect width="564" height="564" fill="#ffffff"/>
<defs>
<rect id="p" width="12" height="12" />
</defs>
<g>
<use x="36" y="36" xlink:href="#p" fill="#000000" />
<use x="48" y="36" xlink:href="#p" fill="#000000" />
<use x="60" y="36" xlink:href="#p" fill="#000000" />
<use x="72" y="36" xlink:href="#p" fill="#000000" />
<use x="84" y="36" xlink:href="#p" fill="#000000" />
<use x="96" y="36" xlink:href="#p" fill="#000000" />
<use x="108" y="36" xlink:href="#p" fill="#000000" />
<use x="144" y="36" xlink:href="#p" fill="#000000" />
<use x="192" y="36" xlink:href="#p" fill="#000000" />
<use x="240" y="36" xlink:href="#p" fill="#000000" />
<use x="276" y="36" xlink:href="#p" fill="#000000" />
<use x="300" y="36" xlink:href="#p" fill="#000000" />
<use x="336" y="36" xlink:href="#p" fill="#000000" />
<use x="372" y="36" xlink:href="#p" fill="#000000" />
<use x="396" y="36" xlink:href="#p" fill="#000000" />
<use x="444" y="36" xlink:href="#p" fill="#000000" />
<use x="456" y="36" xlink:href="#p" fill="#000000" />
<use x="468" y="36" xlink:href="#p" fill="#000000" />
<use x="480" y="36" xlink:href="#p" fill="#000000" />
<use x="492" y="36" xlink:href="#p" fill="#000000" />
<use x="504" y="36" xlink:href="#p" fill="#000000" />
<use x="516" y="36" xlink:href="#p" fill="#000000" />
<use x="36" y="48" xlink:href="#p" fill="#000000" />
<use x="108" y="48" xlink:href="#p" fill="#000000" />
<use x="132" y="48" xlink:href="#p" fill="#000000" />
<use x="144" y="48" xlink:href="#p" fill="#000000" />
<use x="252" y="48" xlink:href="#p" fill="#000000" />
<use x="264" y="48" xlink:href="#p" fill="#000000" />
<use x="276" y="48" xlink:href="#p" fill="#000000" />
<use x="288" y="48" xlink:href="#p" fill="#000000" />
<use x="348" y="48" xlink:href="#p" fill="#000000" />
<use x="360" y="48" xlink:href="#p" fill="#000000" />
<use x="372" y="48" xlink:href="#p" fill="#000000" />
<use x="384" y="48" xlink:href="#p" fill="#000000" />
<use x="408" y="48" xlink:href="#p" fill="#000000" />
<use x="420" y="48" xlink:href="#p" fill="#000000" />
<use x="444" y="48" xlink:href="#p" fill="#000000" />
<use x="516" y="48" xlink:href="#p" fill="#000000" />
<use x="36" y="60" xlink:href="#p" fill="#000000" />
<use x="60" y="60" xlink:href="#p" fill="#000000" />
<use x="72" y="60" xlink:href="#p" fill="#000000" />
<use x="84" y="60" xlink:href="#p" fill="#000000" />
<use x="108" y="60" xlink:href="#p" fill="#000000" />
<use x="228" y="60" xlink:href="#p" fill="#000000" />
<use x="240" y="60" xlink:href="#p" fill="#000000" />
<use x="252" y="60" xlink:href="#p" fill="#000000" />
<use x="276" y="60" xlink:href="#p" fill="#000000" />
<use x="312" y="60" xlink:href="#p" fill="#000000" />
<use x="336" y="60" xlink:href="#p" fill="#000000" />
<use x="348" y="60" xlink:href="#p" fill="#000000" />
<use x="372" y="60" xlink:href="#p" fill="#000000" />
<use x="408" y="60" xlink:href="#p" fill="#000000" />
<use x="420" y="60" xlink:href="#p" fill="#000000" />
<use x="444" y="60" xlink:href="#p" fill="#000000" />
<use x="468" y="60" xlink:href="#p" fill="#000000" />
<use x="480" y="60" xlink:href="#p" fill="#000000" />
<use x="492" y="60" xlink:href="#p" fill="#000000" />
<use x="516" y="60" xlink:href="#p" fill="#000000" />
<use x="36" y="72" xlink:href="#p" fill="#000000" />
<use x="60" y="72" xlink:href="#p" fill="#000000" />
<use x="72" y="72" xlink:href="#p" fill="#000000" />
<use x="84" y="72" xlink:href="#p" fill="#000000" />
<use x="108" y="72" xlink:href="#p" fill="#000000" />
<use x="144" y="72" xlink:href="#p" fill="#000000" />
<use x="168" y="72" xlink:href="#p" fill="#000000" />
<use x="240" y="72" xlink:href="#p" fill="#000000" />
<use x="252" y="72" xlink:href="#p" fill="#000000" />
<use x="264" y="72" xlink:href="#p" fill="#000000" />
<use x="276" y="72" xlink:href="#p" fill="#000000" />
<use x="288" y="72" xlink:href="#p" fill="#000000" />
<use x="336" y="72" xlink:href="#p" fill="#000000" />
<use x="348" y="72" xlink:href="#p" fill="#000000" />
<use x="360" y="72" xlink:href="#p" fill="#000000" />
<use x="384" y="72" xlink:href="#p" fill="#000000" />
<use x="408" y="72" xlink:href="#p" fill="#000000" />
<use x="444" y="72" xlink:href="#p" fill="#000000" />
<use x="468" y="72" xlink:href="#p" fill="#000000" />
<use x="480" y="72" xlink:href="#p" fill="#000000" />
<use x="492" y="72" xlink:href="#p" fill="#000000" />
<use x="516" y="72" xlink:href="#p" fill="#000000" />
<use x="36" y="84" xlink:href="#p" fill="#000000" />
<use x="60" y="84" xlink:href="#p" fill="#000000" />
<use x="72" y="84" xlink:href="#p" fill="#000000" />
<use x="84" y="84" xlink:href="#p" fill="#000000" />
<use x="108" y="84" xlink:href="#p" fill="#000000" />
<use x="132" y="84" xlink:href="#p" fill="#000000" />
<use x="144" y="84" xlink:href="#p" fill="#000000" />
<use x="180" y="84" xlink:href="#p" fill="#000000" />
<use x="204" y="84" xlink:href="#p" fill="#000000" />
<use x="216" y="84" xlink:href="#p" fill="#000000" />
<use x="228" y="84" xlink:href="#p" fill="#000000" />
<use x="240" y="84" xlink:href="#p" fill="#000000" />
<use x="252" y="84" xlink:href="#p" fill="#000000" />
<use x="264" y="84" xlink:href="#p" fill="#000000" />
<use x="276" y="84" xlink:href="#p" fill="#000000" />
<use x="288" y="84" xlink:href="#p" fill="#000000" />
<use x="312" y="84" xlink:href="#p" fill="#000000" />
<use x="324" y="84" xlink:href="#p" fill="#000000" />
<use x="348" y="84" xlink:href="#p" fill="#000000" />
<use x="360" y="84" xlink:href="#p" fill="#000000" />
<use x="384" y="84" xlink:href="#p" fill="#000000" />
<use x="408" y="84" xlink:href="#p" fill="#000000" />
<use x="444" y="84" xlink:href="#p" fill="#000000" />
<use x="468" y="84" xlink:href="#p" fill="#000000" />
<use x="480" y="84" xlink:href="#p" fill="#000000" />
<use x="492" y="84" xlink:href="#p" fill="#000000" />
<use x="516" y="84" xlink:href="#p" fill="#000000" />
<use x="36" y="96" xlink:href="#p" fill="#000000" />
<use x="108" y="96" xlink:href="#p" fill="#000000" />
<use x="156" y="96" xlink:href="#p" fill="#000000" />
<use x="192" y="96" xlink:href="#p" fill="#000000" />
<use x="216" y="96" xlink:href="#p" fill="#000000" />
<use x="252" y="96" xlink:href="#p" fill="#000000" />
<use x="264" y="96" xlink:href="#p" fill="#000000" />
<use x="288" y="96" xlink:href="#p" fill="#000000" />
<use x="312" y="96" xlink:href="#p" fill="#000000" />
<use x="348" y="96" xlink:href="#p" fill="#000000" />
<use x="360" y="96" xlink:href="#p" fill="#000000" />
<use x="372" y="96" xlink:href="#p" fill="#000000" />
<use x="384" y="96" xlink:href="#p" fill="#000000" />
<use x="408" y="96" xlink:href="#p" fill="#000000" />
<use x="420" y="96" xlink:href="#p" fill="#000000" />
<use x="444" y="96" xlink:href="#p" fill="#000000" />
<use x="516" y="96" xlink:href="#p" fill="#000000" />
<use x="36" y="108" xlink:href="#p" fill="#000000" />
<use x="48" y="108" xlink:href="#p" fill="#000000" />
<use x="60" y="108" xlink:href="#p" fill="#000000" />
<use x="72" y="108" xlink:href="#p" fill="#000000" />
<use x="84" y="108" xlink:href="#p" fill="#000000" />
<use x="96" y="108" xlink:href="#p" fill="#000000" />
<use x="108" y="108" xlink:href="#p" fill="#000000" />
<use x="132" y="108" xlink:href="#p" fill="#000000" />
<use x="156" y="108" xlink:href="#p" fill="#000000" />
<use x="180" y="108" xlink:href="#p" fill="#000000" />
<use x="204" y="108" xlink:href="#p" fill="#000000" />
<use x="228" y="108" xlink:href="#p" fill="#000000" />
<use x="252" y="108" xlink:href="#p" fill="#000000" />
<use x="276" y="108" xlink:href="#p" fill="#000000" />
<use x="300" y="108" xlink:href="#p" fill="#000000" />
<use x="324" y="108" xlink:href="#p" fill="#000000" />
<use x="348" y="108" xlink:href="#p" fill="#000000" />
<use x="372" y="108" xlink:href="#p" fill="#000000" />
<use x="396" y="108" xlink:href="#p" fill="#000000" />
<use x="420" y="108" xlink:href="#p" fill="#000000" />
<use x="444" y="108" xlink:href="#p" fill="#000000" />
<use x="456" y="108" xlink:href="#p" fill="#000000" />
<use x="468" y="108" xlink:href="#p" fill="#000000" />
<use x="480" y="108" xlink:href="#p" fill="#000000" />
<use x="492" y="108" xlink:href="#p" fill="#000000" />
<use x="504" y="108" xlink:href="#p" fill="#000000" />
<use x="516" y="108" xlink:href="#p" fill="#000000" />
<use x="156" y="120" xlink:href="#p" fill="#000000" />
<use x="216" y="120" xlink:href="#p" fill="#000000" />
<use x="240" y="120" xlink:href="#p" fill="#000000" />
<use x="252" y="120" xlink:href="#p" fill="#000000" />
<use x="264" y="120" xlink:href="#p" fill="#000000" />
<use x="276" y="120" xlink:href="#p" fill="#000000" />
<use x="288" y="120" xlink:href="#p" fill="#000000" />
<use x="300" y="120" xlink:href="#p" fill="#000000" />
<use x="312" y="120" xlink:href="#p" fill="#000000" />
<use x="336" y="120" xlink:href="#p" fill="#000000" />
<use x="348" y="120" xlink:href="#p" fill="#000000" />
<use x="372" y="120" xlink:href="#p" fill="#000000" />
<use x="384" y="120" xlink:href="#p" fill="#000000" />
<use x="420" y="120" xlink:href="#p" fill="#000000" />
<use x="36" y="132" xlink:href="#p" fill="#000000" />
<use x="60" y="132" xlink:href="#p" fill="#000000" />
<use x="84" y="132" xlink:href="#p" fill="#000000" />
<use x="108" y="132" xlink:href="#p" fill="#000000" />
<use x="168" y="132" xlink:href="#p" fill="#000000" />
<use x="180" y="132" xlink:href="#p" fill="#000000" />
<use x="192" y="132" xlink:href="#p" fill="#000000" />
<use x="204" y="132" xlink:href="#p" fill="#000000" />
<use x="228" y="132" xlink:href="#p" fill="#000000" />
<use x="240" y="132" xlink:href="#p" fill="#000000" />
<use x="264" y="132" xlink:href="#p" fill="#000000" />
<use x="276" y="132" xlink:href="#p" fill="#000000" />
<use x="288" y="132" xlink:href="#p" fill="#000000" />
<use x="300" y="132" xlink:href="#p" fill="#000000" />
<use x="312" y="132" xlink:href="#p" fill="#000000" />
<use x="324" y="132" xlink:href="#p" fill="#000000" />
<use x="336" y="132" xlink:href="#p" fill="#000000" />
<use x="360" y="132" xlink:href="#p" fill="#000000" />
<use x="372" y="132" xlink:href="#p" fill="#000000" />
<use x="384" y="132" xlink:href="#p" fill="#000000" />
<use x="408" y="132" xlink:href="#p" fill="#000000" />
<use x="468" y="132" xlink:href="#p" fill="#000000" />
<use x="504" y="132" xlink:href="#p" fill="#000000" />
<use x="36" y="144" xlink:href="#p" fill="#000000" />
<use x="48" y="144" xlink:href="#p" fill="#000000" />
<use x="72" y="144" xlink:href="#p" fill="#000000" />
<use x="84" y="144" xlink:href="#p" fill="#000000" />
<use x="120" y="144" xlink:href="#p" fill="#000000" />
<use x="144" y="144" xlink:href="#p" fill="#000000" />
<use x="156" y="144" xlink:href="#p" fill="#000000" />
<use x="180" y="144" xlink:href="#p" fill="#000000" />
<use x="192" y="144" xlink:href="#p" fill="#000000" />
<use x="216" y="144" xlink:href="#p" fill="#000000" />
<use x="252" y="144" xlink:href="#p" fill="#000000" />
<use x="276" y="144" xlink:href="#p" fill="#000000" />
<use x="300" y="144" xlink:href="#p" fill="#000000" />
<use x="324" y="144" xlink:href="#p" fill="#000000" />
<use x="348" y="144" xlink:href="#p" fill="#000000" />
<use x="372" y="144" xlink:href="#p" fill="#000000" />
<use x="384" y="144" xlink:href="#p" fill="#000000" />
<use x="396" y="144" xlink:href="#p" fill="#000000" />
<use x="420" y="144" xlink:href="#p" fill="#000000" />
<use x="432" y="144" xlink:href="#p" fill="#000000" />
<use x="444" y="144" xlink:href="#p" fill="#000000" />
<use x="480" y="144" xlink:href="#p" fill="#000000" />
<use x="492" y="144" xlink:href="#p" fill="#000000" />
<use x="48" y="156" xlink:href="#p" fill="#000000" />
<use x="60" y="156" xlink:href="#p" fill="#000000" />
<use x="72" y="156" xlink:href="#p" fill="#000000" />
<use x="96" y="156" xlink:href="#p" fill="#000000" />
<use x="108" y="156" xlink:href="#p" fill="#000000" />
<use x="120" y="156" xlink:href="#p" fill="#000000" />
<use x="168" y="156" xlink:href="#p" fill="#000000" />
<use x="192" y="156" xlink:href="#p" fill="#000000" />
<use x="204" y="156" xlink:href="#p" fill="#000000" />
<use x="228" y="156" xlink:href="#p" fill="#000000" />
<use x="240" y="156" xlink:href="#p" fill="#000000" />
<use x="276" y="156" xlink:href="#p" fill="#000000" />
<use x="288" y="156" xlink:href="#p" fill="#000000" />
<use x="348" y="156" xlink:href="#p" fill="#000000" />
<use x="372" y="156" xlink:href="#p" fill="#000000" />
<use x="396" y="156" xlink:href="#p" fill="#000000" />
<use x="444" y="156" xlink:href="#p" fill="#000000" />
<use x="456" y="156" xlink:href="#p" fill="#000000" />
<use x="492" y="156" xlink:href="#p" fill="#000000" />
<use x="516" y="156" xlink:href="#p" fill="#000000" />
<use x="36" y="168" xlink:href="#p" fill="#000000" />
<use x="48" y="168" xlink:href="#p" fill="#000000" />
<use x="72" y="168" xlink:href="#p" fill="#000000" />
<use x="84" y="168" xlink:href="#p" fill="#000000" />
<use x="96" y="168" xlink:href="#p" fill="#000000" />
<use x="120" y="168" xlink:href="#p" fill="#000000" />
<use x="144" y="168" xlink:href="#p" fill="#000000" />
<use x="180" y="168" xlink:href="#p" fill="#000000" />
<use x="228" y="168" xlink:href="#p" fill="#000000" />
<use x="240" y="168" xlink:href="#p" fill="#000000" />
<use x="252" y="168" xlink:href="#p" fill="#000000" />
<use x="276" y="168" xlink:href="#p" fill="#000000" />
<use x="288" y="168" xlink:href="#p" fill="#000000" />
<use x="312" y="168" xlink:href="#p" fill="#000000" />
<use x="336" y="168" xlink:href="#p" fill="#000000" />
<use x="348" y="168" xlink:href="#p" fill="#000000" />
<use x="372" y="168" xlink:href="#p" fill="#000000" />
<use x="384" y="168" xlink:href="#p" fill="#000000" />
<use x="396" y="168" xlink:href="#p" fill="#000000" />
<use x="420" y="168" xlink:href="#p" fill="#000000" />
<use x="468" y="168" xlink:href="#p" fill="#000000" />
<use x="36" y="180" xlink:href="#p" fill="#000000" />
<use x="60" y="180" xlink:href="#p" fill="#000000" />
<use x="84" y="180" xlink:href="#p" fill="#000000" />
<use x="96" y="180" xlink:href="#p" fill="#000000" />
<use x="108" y="180" xlink:href="#p" fill="#000000" />
<use x="132" y="180" xlink:href="#p" fill="#000000" />
<use x="180" y="180" xlink:href="#p" fill="#000000" />
<use x="192" y="180" xlink:href="#p" fill="#000000" />
<use x="216" y="180" xlink:href="#p" fill="#000000" />
<use x="228" y="180" xlink:href="#p" fill="#000000" />
<use x="240" y="180" xlink:href="#p" fill="#000000" />
<use x="264" y="180" xlink:href="#p" fill="#000000" />
<use x="288" y="180" xlink:href="#p" fill="#000000" />
<use x="324" y="180" xlink:href="#p" fill="#000000" />
<use x="336" y="180" xlink:href="#p" fill="#000000" />
<use x="360" y="180" xlink:href="#p" fill="#000000" />
<use x="384" y="180" xlink:href="#p" fill="#000000" />
<use x="408" y="180" xlink:href="#p" fill="#000000" />
<use x="420" y="180" xlink:href="#p" fill="#000000" />
<use x="444" y="180" xlink:href="#p" fill="#000000" />
<use x="480" y="180" xlink:href="#p" fill="#000000" />
<use x="516" y="180" xlink:href="#p" fill="#000000" />
<use x="36" y="192" xlink:href="#p" fill="#000000" />
<use x="48" y="192" xlink:href="#p" fill="#000000" />
<use x="60" y="192" xlink:href="#p" fill="#000000" />
<use x="84" y="192" xlink:href="#p" fill="#000000" />
<use x="120" y="192" xlink:href="#p" fill="#000000" />
<use x="132" y="192" xlink:href="#p" fill="#000000" />
<use x="156" y="192" xlink:href="#p" fill="#000000" />
<use x="180" y="192" xlink:href="#p" fill="#000000" />
<use x="192" y="192" xlink:href="#p" fill="#000000" />
<use x="216" y="192" xlink:href="#p" fill="#000000" />
<use x="228" y="192" xlink:href="#p" fill="#000000" />
<use x="264" y="192" xlink:href="#p" fill="#000000" />
<use x="288" y="192" xlink:href="#p" fill="#000000" />
<use x="312" y="192" xlink:href="#p" fill="#000000" />
<use x="324" y="192" xlink:href="#p" fill="#000000" />
<use x="360" y="192" xlink:href="#p" fill="#000000" />
<use x="396" y="192" xlink:href="#p" fill="#000000" />
<use x="408" y="192" xlink:href="#p" fill="#000000" />
<use x="420" y="192" xlink:href="#p" fill="#000000" />
<use x="480" y="192" xlink:href="#p" fill="#000000" />
<use x="504" y="192" xlink:href="#p" fill="#000000" />
<use x="516" y="192" xlink:href="#p" fill="#000000" />
<use x="72" y="204" xlink:href="#p" fill="#000000" />
<use x="84" y="204" xlink:href="#p" fill="#000000" />
<use x="96" y="204" xlink:href="#p" fill="#000000" />
<use x="108" y="204" xlink:href="#p" fill="#000000" />
<use x="120" y="204" xlink:href="#p" fill="#000000" />
<use x="156" y="204" xlink:href="#p" fill="#000000" />
<use x="180" y="204" xlink:href="#p" fill="#000000" />
<use x="192" y="204" xlink:href="#p" fill="#000000" />
<use x="204" y="204" xlink:href="#p" fill="#000000" />
<use x="216" y="204" xlink:href="#p" fill="#000000" />
<use x="228" y="204" xlink:href="#p" fill="#000000" />
<use x="240" y="204" xlink:href="#p" fill="#000000" />
<use x="300" y="204" xlink:href="#p" fill="#000000" />
<use x="312" y="204" xlink:href="#p" fill="#000000" />
<use x="324" y="204" xlink:href="#p" fill="#000000" />
<use x="336" y="204" xlink:href="#p" fill="#000000" />
<use x="408" y="204" xlink:href="#p" fill="#000000" />
<use x="420" y="204" xlink:href="#p" fill="#000000" />
<use x="444" y="204" xlink:href="#p" fill="#000000" />
<use x="456" y="204" xlink:href="#p" fill="#000000" />
<use x="480" y="204" xlink:href="#p" fill="#000000" />
<use x="504" y="204" xlink:href="#p" fill="#000000" />
<use x="516" y="204" xlink:href="#p" fill="#000000" />
<use x="60" y="216" xlink:href="#p" fill="#000000" />
<use x="144" y="216" xlink:href="#p" fill="#000000" />
<use x="180" y="216" xlink:href="#p" fill="#000000" />
<use x="192" y="216" xlink:href="#p" fill="#000000" />
<use x="228" y="216" xlink:href="#p" fill="#000000" />
<use x="264" y="216" xlink:href="#p" fill="#000000" />
<use x="288" y="216" xlink:href="#p" fill="#000000" />
<use x="300" y="216" xlink:href="#p" fill="#000000" />
<use x="324" y="216" xlink:href="#p" fill="#000000" />
<use x="360" y="216" xlink:href="#p" fill="#000000" />
<use x="384" y="216" xlink:href="#p" fill="#000000" />
<use x="396" y="216" xlink:href="#p" fill="#000000" />
<use x="420" y="216" xlink:href="#p" fill="#000000" />
<use x="444" y="216" xlink:href="#p" fill="#000000" />
<use x="48" y="228" xlink:href="#p" fill="#000000" />
<use x="108" y="228" xlink:href="#p" fill="#000000" />
<use x="120" y="228" xlink:href="#p" fill="#000000" />
<use x="132" y="228" xlink:href="#p" fill="#000000" />
<use x="144" y="228" xlink:href="#p" fill="#000000" />
<use x="192" y="228" xlink:href="#p" fill="#000000" />
<use x="228" y="228" xlink:href="#p" fill="#000000" />
<use x="276" y="228" xlink:href="#p" fill="#000000" />
<use x="300" y="228" xlink:href="#p" fill="#000000" />
<use x="312" y="228" xlink:href="#p" fill="#000000" />
<use x="372" y="228" xlink:href="#p" fill="#000000" />
<use x="408" y="228" xlink:href="#p" fill="#000000" />
<use x="420" y="228" xlink:href="#p" fill="#000000" />
<use x="444" y="228" xlink:href="#p" fill="#000000" />
<use x="456" y="228" xlink:href="#p" fill="#000000" />
<use x="504" y="228" xlink:href="#p" fill="#000000" />
<use x="36" y="240" xlink:href="#p" fill="#000000" />
<use x="48" y="240" xlink:href="#p" fill="#000000" />
<use x="72" y="240" xlink:href="#p" fill="#000000" />
<use x="120" y="240" xlink:href="#p" fill="#000000" />
<use x="132" y="240" xlink:href="#p" fill="#000000" />
<use x="144" y="240" xlink:href="#p" fill="#000000" />
<use x="168" y="240" xlink:href="#p" fill="#000000" />
<use x="180" y="240" xlink:href="#p" fill="#000000" />
<use x="192" y="240" xlink:href="#p" fill="#000000" />
<use x="204" y="240" xlink:href="#p" fill="#000000" />
<use x="228" y="240" xlink:href="#p" fill="#000000" />
<use x="240" y="240" xlink:href="#p" fill="#000000" />
<use x="264" y="240" xlink:href="#p" fill="#000000" />
<use x="276" y="240" xlink:href="#p" fill="#000000" />
<use x="300" y="240" xlink:href="#p" fill="#000000" />
<use x="312" y="240" xlink:href="#p" fill="#000000" />
<use x="336" y="240" xlink:href="#p" fill="#000000" />
<use x="360" y="240" xlink:href="#p" fill="#000000" />
<use x="372" y="240" xlink:href="#p" fill="#000000" />
<use x="396" y="240" xlink:href="#p" fill="#000000" />
<use x="408" y="240" xlink:href="#p" fill="#000000" />
<use x="420" y="240" xlink:href="#p" fill="#000000" />
<use x="444" y="240" xlink:href="#p" fill="#000000" />
<use x="504" y="240" xlink:href="#p" fill="#000000" />
<use x="516" y="240" xlink:href="#p" fill="#000000" />
<use x="36" y="252" xlink:href="#p" fill="#000000" />
<use x="48" y="252" xlink:href="#p" fill="#000000" />
<use x="60" y="252" xlink:href="#p" fill="#000000" />
<use x="72" y="252" xlink:href="#p" fill="#000000" />
<use x="108" y="252" xlink:href="#p" fill="#000000" />
<use x="120" y="252" xlink:href="#p" fill="#000000" />
<use x="144" y="252" xlink:href="#p" fill="#000000" />
<use x="168" y="252" xlink:href="#p" fill="#000000" />
<use x="204" y="252" xlink:href="#p" fill="#000000" />
<use x="252" y="252" xlink:href="#p" fill="#000000" />
<use x="264" y="252" xlink:href="#p" fill="#000000" />
<use x="276" y="252" xlink:href="#p" fill="#000000" />
<use x="288" y="252" xlink:href="#p" fill="#000000" />
<use x="348" y="252" xlink:href="#p" fill="#000000" />
<use x="360" y="252" xlink:href="#p" fill="#000000" />
<use x="372" y="252" xlink:href="#p" fill="#000000" />
<use x="384" y="252" xlink:href="#p" fill="#000000" />
<use x="444" y="252" xlink:href="#p" fill="#000000" />
<use x="468" y="252" xlink:href="#p" fill="#000000" />
<use x="480" y="252" xlink:href="#p" fill="#000000" />
<use x="492" y="252" xlink:href="#p" fill="#000000" />
<use x="504" y="252" xlink:href="#p" fill="#000000" />
<use x="516" y="252" xlink:href="#p" fill="#000000" />
<use x="36" y="264" xlink:href="#p" fill="#000000" />
<use x="48" y="264" xlink:href="#p" fill="#000000" />
<use x="72" y="264" xlink:href="#p" fill="#000000" />
<use x="96" y="264" xlink:href="#p" fill="#000000" />
<use x="144" y="264" xlink:href="#p" fill="#000000" />
<use x="168" y="264" xlink:href="#p" fill="#000000" />
<use x="216" y="264" xlink:href="#p" fill="#000000" />
<use x="228" y="264" xlink:href="#p" fill="#000000" />
<use x="240" y="264" xlink:href="#p" fill="#000000" />
<use x="252" y="264" xlink:href="#p" fill="#000000" />
<use x="276" y="264" xlink:href="#p" fill="#000000" />
<use x="312" y="264" xlink:href="#p" fill="#000000" />
<use x="336" y="264" xlink:href="#p" fill="#000000" />
<use x="348" y="264" xlink:href="#p" fill="#000000" />
<use x="372" y="264" xlink:href="#p" fill="#000000" />
<use x="408" y="264" xlink:href="#p" fill="#000000" />
<use x="420" y="264" xlink:href="#p" fill="#000000" />
<use x="456" y="264" xlink:href="#p" fill="#000000" />
<use x="504" y="264" xlink:href="#p" fill="#000000" />
<use x="516" y="264" xlink:href="#p" fill="#000000" />
<use x="36" y="276" xlink:href="#p" fill="#000000" />
<use x="72" y="276" xlink:href="#p" fill="#000000" />
<use x="84" y="276" xlink:href="#p" fill="#000000" />
<use x="108" y="276" xlink:href="#p" fill="#000000" />
<use x="120" y="276" xlink:href="#p" fill="#000000" />
<use x="144" y="276" xlink:href="#p" fill="#000000" />
<use x="168" y="276" xlink:href="#p" fill="#000000" />
<use x="216" y="276" xlink:href="#p" fill="#000000" />
<use x="252" y="276" xlink:href="#p" fill="#000000" />
<use x="264" y="276" xlink:href="#p" fill="#000000" />
<use x="276" y="276" xlink:href="#p" fill="#000000" />
<use x="348" y="276" xlink:href="#p" fill="#000000" />
<use x="360" y="276" xlink:href="#p" fill="#000000" />
<use x="372" y="276" xlink:href="#p" fill="#000000" />
<use x="408" y="276" xlink:href="#p" fill="#000000" />
<use x="432" y="276" xlink:href="#p" fill="#000000" />
<use x="444" y="276" xlink:href="#p" fill="#000000" />
<use x="468" y="276" xlink:href="#p" fill="#000000" />
<use x="480" y="276" xlink:href="#p" fill="#000000" />
<use x="492" y="276" xlink:href="#p" fill="#000000" />
<use x="504" y="276" xlink:href="#p" fill="#000000" />
<use x="48" y="288" xlink:href="#p" fill="#000000" />
<use x="84" y="288" xlink:href="#p" fill="#000000" />
<use x="96" y="288" xlink:href="#p" fill="#000000" />
<use x="144" y="288" xlink:href="#p" fill="#000000" />
<use x="156" y="288" xlink:href="#p" fill="#000000" />
<use x="168" y="288" xlink:href="#p" fill="#000000" />
<use x="192" y="288" xlink:href="#p" fill="#000000" />
<use x="204" y="288" xlink:href="#p" fill="#000000" />
<use x="240" y="288" xlink:href="#p" fill="#000000" />
<use x="252" y="288" xlink:href="#p" fill="#000000" />
<use x="276" y="288" xlink:href="#p" fill="#000000" />
<use x="288" y="288" xlink:href="#p" fill="#000000" />
<use x="324" y="288" xlink:href="#p" fill="#000000" />
<use x="336" y="288" xlink:href="#p" fill="#000000" />
<use x="348" y="288" xlink:href="#p" fill="#000000" />
<use x="408" y="288" xlink:href="#p" fill="#000000" />
<use x="420" y="288" xlink:href="#p" fill="#000000" />
<use x="432" y="288" xlink:href="#p" fill="#000000" />
<use x="444" y="288" xlink:href="#p" fill="#000000" />
<use x="468" y="288" xlink:href="#p" fill="#000000" />
<use x="492" y="288" xlink:href="#p" fill="#000000" />
<use x="504" y="288" xlink:href="#p" fill="#000000" />
<use x="516" y="288" xlink:href="#p" fill="#000000" />
<use x="84" y="300" xlink:href="#p" fill="#000000" />
<use x="96" y="300" xlink:href="#p" fill="#000000" />
<use x="108" y="300" xlink:href="#p" fill="#000000" />
<use x="132" y="300" xlink:href="#p" fill="#000000" />
<use x="168" y="300" xlink:href="#p" fill="#000000" />
<use x="204" y="300" xlink:href="#p" fill="#000000" />
<use x="240" y="300" xlink:href="#p" fill="#000000" />
<use x="252" y="300" xlink:href="#p" fill="#000000" />
<use x="288" y="300" xlink:href="#p" fill="#000000" />
<use x="300" y="300" xlink:href="#p" fill="#000000" />
<use x="372" y="300" xlink:href="#p" fill="#000000" />
<use x="396" y="300" xlink:href="#p" fill="#000000" />
<use x="432" y="300" xlink:href="#p" fill="#000000" />
<use x="444" y="300" xlink:href="#p" fill="#000000" />
<use x="504" y="300" xlink:href="#p" fill="#000000" />
<use x="516" y="300" xlink:href="#p" fill="#000000" />
<use x="36" y="312" xlink:href="#p" fill="#000000" />
<use x="48" y="312" xlink:href="#p" fill="#000000" />
<use x="60" y="312" xlink:href="#p" fill="#000000" />
<use x="84" y="312" xlink:href="#p" fill="#000000" />
<use x="132" y="312" xlink:href="#p" fill="#000000" />
<use x="144" y="312" xlink:href="#p" fill="#000000" />
<use x="168" y="312" xlink:href="#p" fill="#000000" />
<use x="180" y="312" xlink:href="#p" fill="#000000" />
<use x="192" y="312" xlink:href="#p" fill="#000000" />
<use x="216" y="312" xlink:href="#p" fill="#000000" />
<use x="240" y="312" xlink:href="#p" fill="#000000" />
<use x="264" y="312" xlink:href="#p" fill="#000000" />
<use x="276" y="312" xlink:href="#p" fill="#000000" />
<use x="288" y="312" xlink:href="#p" fill="#000000" />
<use x="300" y="312" xlink:href="#p" fill="#000000" />
<use x="312" y="312" xlink:href="#p" fill="#000000" />
<use x="324" y="312" xlink:href="#p" fill="#000000" />
<use x="336" y="312" xlink:href="#p" fill="#000000" />
<use x="348" y="312" xlink:href="#p" fill="#000000" />
<use x="360" y="312" xlink:href="#p" fill="#000000" />
<use x="384" y="312" xlink:href="#p" fill="#000000" />
<use x="408" y="312" xlink:href="#p" fill="#000000" />
<use x="420" y="312" xlink:href="#p" fill="#000000" />
<use x="432" y="312" xlink:href="#p" fill="#000000" />
<use x="468" y="312" xlink:href="#p" fill="#000000" />
<use x="492" y="312" xlink:href="#p" fill="#000000" />
<use x="84" y="324" xlink:href="#p" fill="#000000" />
<use x="96" y="324" xlink:href="#p" fill="#000000" />
<use x="108" y="324" xlink:href="#p" fill="#000000" />
<use x="120" y="324" xlink:href="#p" fill="#000000" />
<use x="132" y="324" xlink:href="#p" fill="#000000" />
<use x="180" y="324" xlink:href="#p" fill="#000000" />
<use x="204" y="324" xlink:href="#p" fill="#000000" />
<use x="216" y="324" xlink:href="#p" fill="#000000" />
<use x="240" y="324" xlink:href="#p" fill="#000000" />
<use x="264" y="324" xlink:href="#p" fill="#000000" />
<use x="276" y="324" xlink:href="#p" fill="#000000" />
<use x="288" y="324" xlink:href="#p" fill="#000000" />
<use x="300" y="324" xlink:href="#p" fill="#000000" />
<use x="324" y="324" xlink:href="#p" fill="#000000" />
<use x="336" y="324" xlink:href="#p" fill="#000000" />
<use x="360" y="324" xlink:href="#p" fill="#000000" />
<use x="372" y="324" xlink:href="#p" fill="#000000" />
<use x="384" y="324" xlink:href="#p" fill="#000000" />
<use x="420" y="324" xlink:href="#p" fill="#000000" />
<use x="432" y="324" xlink:href="#p" fill="#000000" />
<use x="444" y="324" xlink:href="#p" fill="#000000" />
<use x="492" y="324" xlink:href="#p" fill="#000000" />
<use x="516" y="324" xlink:href="#p" fill="#000000" />
<use x="48" y="336" xlink:href="#p" fill="#000000" />
<use x="60" y="336" xlink:href="#p" fill="#000000" />
<use x="84" y="336" xlink:href="#p" fill="#000000" />
<use x="96" y="336" xlink:href="#p" fill="#000000" />
<use x="120" y="336" xlink:href="#p" fill="#000000" />
<use x="144" y="336" xlink:href="#p" fill="#000000" />
<use x="204" y="336" xlink:href="#p" fill="#000000" />
<use x="216" y="336" xlink:href="#p" fill="#000000" />
<use x="240" y="336" xlink:href="#p" fill="#000000" />
<use x="300" y="336" xlink:href="#p" fill="#000000" />
<use x="324" y="336" xlink:href="#p" fill="#000000" />
<use x="384" y="336" xlink:href="#p" fill="#000000" />
<use x="432" y="336" xlink:href="#p" fill="#000000" />
<use x="444" y="336" xlink:href="#p" fill="#000000" />
<use x="504" y="336" xlink:href="#p" fill="#000000" />
<use x="48" y="348" xlink:href="#p" fill="#000000" />
<use x="108" y="348" xlink:href="#p" fill="#000000" />
<use x="132" y="348" xlink:href="#p" fill="#000000" />
<use x="144" y="348" xlink:href="#p" fill="#000000" />
<use x="156" y="348" xlink:href="#p" fill="#000000" />
<use x="168" y="348" xlink:href="#p" fill="#000000" />
<use x="180" y="348" xlink:href="#p" fill="#000000" />
<use x="192" y="348" xlink:href="#p" fill="#000000" />
<use x="228" y="348" xlink:href="#p" fill="#000000" />
<use x="240" y="348" xlink:href="#p" fill="#000000" />
<use x="300" y="348" xlink:href="#p" fill="#000000" />
<use x="336" y="348" xlink:href="#p" fill="#000000" />
<use x="372" y="348" xlink:href="#p" fill="#000000" />
<use x="432" y="348" xlink:href="#p" fill="#000000" />
<use x="456" y="348" xlink:href="#p" fill="#000000" />
<use x="492" y="348" xlink:href="#p" fill="#000000" />
<use x="504" y="348" xlink:href="#p" fill="#000000" />
<use x="36" y="360" xlink:href="#p" fill="#000000" />
<use x="48" y="360" xlink:href="#p" fill="#000000" />
<use x="60" y="360" xlink:href="#p" fill="#000000" />
<use x="72" y="360" xlink:href="#p" fill="#000000" />
<use x="132" y="360" xlink:href="#p" fill="#000000" />
<use x="192" y="360" xlink:href="#p" fill="#000000" />
<use x="204" y="360" xlink:href="#p" fill="#000000" />
<use x="228" y="360" xlink:href="#p" fill="#000000" />
<use x="240" y="360" xlink:href="#p" fill="#000000" />
<use x="252" y="360" xlink:href="#p" fill="#000000" />
<use x="264" y="360" xlink:href="#p" fill="#000000" />
<use x="276" y="360" xlink:href="#p" fill="#000000" />
<use x="288" y="360" xlink:href="#p" fill="#000000" />
<use x="336" y="360" xlink:href="#p" fill="#000000" />
<use x="384" y="360" xlink:href="#p" fill="#000000" />
<use x="396" y="360" xlink:href="#p" fill="#000000" />
<use x="420" y="360" xlink:href="#p" fill="#000000" />
<use x="432" y="360" xlink:href="#p" fill="#000000" />
<use x="444" y="360" xlink:href="#p" fill="#000000" />
<use x="456" y="360" xlink:href="#p" fill="#000000" />
<use x="504" y="360" xlink:href="#p" fill="#000000" />
<use x="516" y="360" xlink:href="#p" fill="#000000" />
<use x="60" y="372" xlink:href="#p" fill="#000000" />
<use x="84" y="372" xlink:href="#p" fill="#000000" />
<use x="96" y="372" xlink:href="#p" fill="#000000" />
<use x="108" y="372" xlink:href="#p" fill="#000000" />
<use x="120" y="372" xlink:href="#p" fill="#000000" />
<use x="144" y="372" xlink:href="#p" fill="#000000" />
<use x="156" y="372" xlink:href="#p" fill="#000000" />
<use x="180" y="372" xlink:href="#p" fill="#000000" />
<use x="204" y="372" xlink:href="#p" fill="#000000" />
<use x="240" y="372" xlink:href="#p" fill="#000000" />
<use x="276" y="372" xlink:href="#p" fill="#000000" />
<use x="288" y="372" xlink:href="#p" fill="#000000" />
<use x="336" y="372" xlink:href="#p" fill="#000000" />
<use x="360" y="372" xlink:href="#p" fill="#000000" />
<use x="372" y="372" xlink:href="#p" fill="#000000" />
<use x="384" y="372" xlink:href="#p" fill="#000000" />
<use x="408" y="372" xlink:href="#p" fill="#000000" />
<use x="432" y="372" xlink:href="#p" fill="#000000" />
<use x="480" y="372" xlink:href="#p" fill="#000000" />
<use x="504" y="372" xlink:href="#p" fill="#000000" />
<use x="60" y="384" xlink:href="#p" fill="#000000" />
<use x="72" y="384" xlink:href="#p" fill="#000000" />
<use x="84" y="384" xlink:href="#p" fill="#000000" />
<use x="96" y="384" xlink:href="#p" fill="#000000" />
<use x="168" y="384" xlink:href="#p" fill="#000000" />
<use x="228" y="384" xlink:href="#p" fill="#000000" />
<use x="240" y="384" xlink:href="#p" fill="#000000" />
<use x="264" y="384" xlink:href="#p" fill="#000000" />
<use x="276" y="384" xlink:href="#p" fill="#000000" />
<use x="300" y="384" xlink:href="#p" fill="#000000" />
<use x="312" y="384" xlink:href="#p" fill="#000000" />
<use x="336" y="384" xlink:href="#p" fill="#000000" />
<use x="360" y="384" xlink:href="#p" fill="#000000" />
<use x="372" y="384" xlink:href="#p" fill="#000000" />
<use x="396" y="384" xlink:href="#p" fill="#000000" />
<use x="408" y="384" xlink:href="#p" fill="#000000" />
<use x="432" y="384" xlink:href="#p" fill="#000000" />
<use x="492" y="384" xlink:href="#p" fill="#000000" />
<use x="504" y="384" xlink:href="#p" fill="#000000" />
<use x="516" y="384" xlink:href="#p" fill="#000000" />
<use x="36" y="396" xlink:href="#p" fill="#000000" />
<use x="60" y="396" xlink:href="#p" fill="#000000" />
<use x="84" y="396" xlink:href="#p" fill="#000000" />
<use x="108" y="396" xlink:href="#p" fill="#000000" />
<use x="120" y="396" xlink:href="#p" fill="#000000" />
<use x="132" y="396" xlink:href="#p" fill="#000000" />
<use x="144" y="396" xlink:href="#p" fill="#000000" />
<use x="156" y="396" xlink:href="#p" fill="#000000" />
<use x="168" y="396" xlink:href="#p" fill="#000000" />
<use x="180" y="396" xlink:href="#p" fill="#000000" />
<use x="192" y="396" xlink:href="#p" fill="#000000" />
<use x="216" y="396" xlink:href="#p" fill="#000000" />
<use x="252" y="396" xlink:href="#p" fill="#000000" />
<use x="264" y="396" xlink:href="#p" fill="#000000" />
<use x="276" y="396" xlink:href="#p" fill="#000000" />
<use x="288" y="396" xlink:href="#p" fill="#000000" />
<use x="348" y="396" xlink:href="#p" fill="#000000" />
<use x="360" y="396" xlink:href="#p" fill="#000000" />
<use x="372" y="396" xlink:href="#p" fill="#000000" />
<use x="396" y="396" xlink:href="#p" fill="#000000" />
<use x="456" y="396" xlink:href="#p" fill="#000000" />
<use x="504" y="396" xlink:href="#p" fill="#000000" />
<use x="516" y="396" xlink:href="#p" fill="#000000" />
<use x="48" y="408" xlink:href="#p" fill="#000000" />
<use x="72" y="408" xlink:href="#p" fill="#000000" />
<use x="120" y="408" xlink:href="#p" fill="#000000" />
<use x="132" y="408" xlink:href="#p" fill="#000000" />
<use x="168" y="408" xlink:href="#p" fill="#000000" />
<use x="192" y="408" xlink:href="#p" fill="#000000" />
<use x="240" y="408" xlink:href="#p" fill="#000000" />
<use x="252" y="408" xlink:href="#p" fill="#000000" />
<use x="276" y="408" xlink:href="#p" fill="#000000" />
<use x="312" y="408" xlink:href="#p" fill="#000000" />
<use x="336" y="408" xlink:href="#p" fill="#000000" />
<use x="348" y="408" xlink:href="#p" fill="#000000" />
<use x="372" y="408" xlink:href="#p" fill="#000000" />
<use x="384" y="408" xlink:href="#p" fill="#000000" />
<use x="396" y="408" xlink:href="#p" fill="#000000" />
<use x="408" y="408" xlink:href="#p" fill="#000000" />
<use x="432" y="408" xlink:href="#p" fill="#000000" />
<use x="444" y="408" xlink:href="#p" fill="#000000" />
<use x="468" y="408" xlink:href="#p" fill="#000000" />
<use x="480" y="408" xlink:href="#p" fill="#000000" />
<use x="36" y="420" xlink:href="#p" fill="#000000" />
<use x="72" y="420" xlink:href="#p" fill="#000000" />
<use x="96" y="420" xlink:href="#p" fill="#000000" />
<use x="108" y="420" xlink:href="#p" fill="#000000" />
<use x="120" y="420" xlink:href="#p" fill="#000000" />
<use x="132" y="420" xlink:href="#p" fill="#000000" />
<use x="180" y="420" xlink:href="#p" fill="#000000" />
<use x="204" y="420" xlink:href="#p" fill="#000000" />
<use x="252" y="420" xlink:href="#p" fill="#000000" />
<use x="264" y="420" xlink:href="#p" fill="#000000" />
<use x="324" y="420" xlink:href="#p" fill="#000000" />
<use x="348" y="420" xlink:href="#p" fill="#000000" />
<use x="360" y="420" xlink:href="#p" fill="#000000" />
<use x="372" y="420" xlink:href="#p" fill="#000000" />
<use x="420" y="420" xlink:href="#p" fill="#000000" />
<use x="432" y="420" xlink:href="#p" fill="#000000" />
<use x="444" y="420" xlink:href="#p" fill="#000000" />
<use x="456" y="420" xlink:href="#p" fill="#000000" />
<use x="468" y="420" xlink:href="#p" fill="#000000" />
<use x="516" y="420" xlink:href="#p" fill="#000000" />
<use x="132" y="432" xlink:href="#p" fill="#000000" />
<use x="156" y="432" xlink:href="#p" fill="#000000" />
<use x="168" y="432" xlink:href="#p" fill="#000000" />
<use x="192" y="432" xlink:href="#p" fill="#000000" />
<use x="204" y="432" xlink:href="#p" fill="#000000" />
<use x="216" y="432" xlink:href="#p" fill="#000000" />
<use x="228" y="432" xlink:href="#p" fill="#000000" />
<use x="252" y="432" xlink:href="#p" fill="#000000" />
<use x="264" y="432" xlink:href="#p" fill="#000000" />
<use x="288" y="432" xlink:href="#p" fill="#000000" />
<use x="312" y="432" xlink:href="#p" fill="#000000" />
<use x="324" y="432" xlink:href="#p" fill="#000000" />
<use x="348" y="432" xlink:href="#p" fill="#000000" />
<use x="360" y="432" xlink:href="#p" fill="#000000" />
<use x="384" y="432" xlink:href="#p" fill="#000000" />
<use x="420" y="432" xlink:href="#p" fill="#000000" />
<use x="468" y="432" xlink:href="#p" fill="#000000" />
<use x="492" y="432" xlink:href="#p" fill="#000000" />
<use x="504" y="432" xlink:href="#p" fill="#000000" />
<use x="516" y="432" xlink:href="#p" fill="#000000" />
<use x="36" y="444" xlink:href="#p" fill="#000000" />
<use x="48" y="444" xlink:href="#p" fill="#000000" />
<use x="60" y="444" xlink:href="#p" fill="#000000" />
<use x="72" y="444" xlink:href="#p" fill="#000000" />
<use x="84" y="444" xlink:href="#p" fill="#000000" />
<use x="96" y="444" xlink:href="#p" fill="#000000" />
<use x="108" y="444" xlink:href="#p" fill="#000000" />
<use x="168" y="444" xlink:href="#p" fill="#000000" />
<use x="192" y="444" xlink:href="#p" fill="#000000" />
<use x="228" y="444" xlink:href="#p" fill="#000000" />
<use x="240" y="444" xlink:href="#p" fill="#000000" />
<use x="300" y="444" xlink:href="#p" fill="#000000" />
<use x="312" y="444" xlink:href="#p" fill="#000000" />
<use x="324" y="444" xlink:href="#p" fill="#000000" />
<use x="336" y="444" xlink:href="#p" fill="#000000" />
<use x="372" y="444" xlink:href="#p" fill="#000000" />
<use x="396" y="444" xlink:href="#p" fill="#000000" />
<use x="408" y="444" xlink:href="#p" fill="#000000" />
<use x="420" y="444" xlink:href="#p" fill="#000000" />
<use x="444" y="444" xlink:href="#p" fill="#000000" />
<use x="468" y="444" xlink:href="#p" fill="#000000" />
<use x="480" y="444" xlink:href="#p" fill="#000000" />
<use x="516" y="444" xlink:href="#p" fill="#000000" />
<use x="36" y="456" xlink:href="#p" fill="#000000" />
<use x="108" y="456" xlink:href="#p" fill="#000000" />
<use x="144" y="456" xlink:href="#p" fill="#000000" />
<use x="168" y="456" xlink:href="#p" fill="#000000" />
<use x="180" y="456" xlink:href="#p" fill="#000000" />
<use x="192" y="456" xlink:href="#p" fill="#000000" />
<use x="204" y="456" xlink:href="#p" fill="#000000" />
<use x="216" y="456" xlink:href="#p" fill="#000000" />
<use x="264" y="456" xlink:href="#p" fill="#000000" />
<use x="288" y="456" xlink:href="#p" fill="#000000" />
<use x="300" y="456" xlink:href="#p" fill="#000000" />
<use x="324" y="456" xlink:href="#p" fill="#000000" />
<use x="372" y="456" xlink:href="#p" fill="#000000" />
<use x="384" y="456" xlink:href="#p" fill="#000000" />
<use x="396" y="456" xlink:href="#p" fill="#000000" />
<use x="408" y="456" xlink:href="#p" fill="#000000" />
<use x="420" y="456" xlink:href="#p" fill="#000000" />
<use x="468" y="456" xlink:href="#p" fill="#000000" />
<use x="516" y="456" xlink:href="#p" fill="#000000" />
<use x="36" y="468" xlink:href="#p" fill="#000000" />
<use x="60" y="468" xlink:href="#p" fill="#000000" />
<use x="72" y="468" xlink:href="#p" fill="#000000" />
<use x="84" y="468" xlink:href="#p" fill="#000000" />
<use x="108" y="468" xlink:href="#p" fill="#000000" />
<use x="132" y="468" xlink:href="#p" fill="#000000" />
<use x="144" y="468" xlink:href="#p" fill="#000000" />
<use x="156" y="468" xlink:href="#p" fill="#000000" />
<use x="192" y="468" xlink:href="#p" fill="#000000" />
<use x="204" y="468" xlink:href="#p" fill="#000000" />
<use x="216" y="468" xlink:href="#p" fill="#000000" />
<use x="276" y="468" xlink:href="#p" fill="#000000" />
<use x="300" y="468" xlink:href="#p" fill="#000000" />
<use x="312" y="468" xlink:href="#p" fill="#000000" />
<use x="324" y="468" xlink:href="#p" fill="#000000" />
<use x="372" y="468" xlink:href="#p" fill="#000000" />
<use x="396" y="468" xlink:href="#p" fill="#000000" />
<use x="420" y="468" xlink:href="#p" fill="#000000" />
<use x="432" y="468" xlink:href="#p" fill="#000000" />
<use x="444" y="468" xlink:href="#p" fill="#000000" />
<use x="456" y="468" xlink:href="#p" fill="#000000" />
<use x="468" y="468" xlink:href="#p" fill="#000000" />
<use x="504" y="468" xlink:href="#p" fill="#000000" />
<use x="516" y="468" xlink:href="#p" fill="#000000" />
<use x="36" y="480" xlink:href="#p" fill="#000000" />
<use x="60" y="480" xlink:href="#p" fill="#000000" />
<use x="72" y="480" xlink:href="#p" fill="#000000" />
<use x="84" y="480" xlink:href="#p" fill="#000000" />
<use x="108" y="480" xlink:href="#p" fill="#000000" />
<use x="144" y="480" xlink:href="#p" fill="#000000" />
<use x="180" y="480" xlink:href="#p" fill="#000000" />
<use x="192" y="480" xlink:href="#p" fill="#000000" />
<use x="204" y="480" xlink:href="#p" fill="#000000" />
<use x="216" y="480" xlink:href="#p" fill="#000000" />
<use x="228" y="480" xlink:href="#p" fill="#000000" />
<use x="240" y="480" xlink:href="#p" fill="#000000" />
<use x="276" y="480" xlink:href="#p" fill="#000000" />
<use x="288" y="480" xlink:href="#p" fill="#000000" />
<use x="300" y="480" xlink:href="#p" fill="#000000" />
<use x="324" y="480" xlink:href="#p" fill="#000000" />
<use x="372" y="480" xlink:href="#p" fill="#000000" />
<use x="396" y="480" xlink:href="#p" fill="#000000" />
<use x="432" y="480" xlink:href="#p" fill="#000000" />
<use x="468" y="480" xlink:href="#p" fill="#000000" />
<use x="480" y="480" xlink:href="#p" fill="#000000" />
<use x="504" y="480" xlink:href="#p" fill="#000000" />
<use x="36" y="492" xlink:href="#p" fill="#000000" />
<use x="60" y="492" xlink:href="#p" fill="#000000" />
<use x="72" y="492" xlink:href="#p" fill="#000000" />
<use x="84" y="492" xlink:href="#p" fill="#000000" />
<use x="108" y="492" xlink:href="#p" fill="#000000" />
<use x="132" y="492" xlink:href="#p" fill="#000000" />
<use x="156" y="492" xlink:href="#p" fill="#000000" />
<use x="168" y="492" xlink:href="#p" fill="#000000" />
<use x="180" y="492" xlink:href="#p" fill="#000000" />
<use x="216" y="492" xlink:href="#p" fill="#000000" />
<use x="252" y="492" xlink:href="#p" fill="#000000" />
<use x="276" y="492" xlink:href="#p" fill="#000000" />
<use x="288" y="492" xlink:href="#p" fill="#000000" />
<use x="324" y="492" xlink:href="#p" fill="#000000" />
<use x="336" y="492" xlink:href="#p" fill="#000000" />
<use x="372" y="492" xlink:href="#p" fill="#000000" />
<use x="384" y="492" xlink:href="#p" fill="#000000" />
<use x="396" y="492" xlink:href="#p" fill="#000000" />
<use x="408" y="492" xlink:href="#p" fill="#000000" />
<use x="420" y="492" xlink:href="#p" fill="#000000" />
<use x="456" y="492" xlink:href="#p" fill="#000000" />
<use x="468" y="492" xlink:href="#p" fill="#000000" />
<use x="480" y="492" xlink:href="#p" fill="#000000" />
<use x="492" y="492" xlink:href="#p" fill="#000000" />
<use x="504" y="492" xlink:href="#p" fill="#000000" />
<use x="516" y="492" xlink:href="#p" fill="#000000" />
<use x="36" y="504" xlink:href="#p" fill="#000000" />
<use x="108" y="504" xlink:href="#p" fill="#000000" />
<use x="156" y="504" xlink:href="#p" fill="#000000" />
<use x="192" y="504" xlink:href="#p" fill="#000000" />
<use x="216" y="504" xlink:href="#p" fill="#000000" />
<use x="240" y="504" xlink:href="#p" fill="#000000" />
<use x="252" y="504" xlink:href="#p" fill="#000000" />
<use x="264" y="504" xlink:href="#p" fill="#000000" />
<use x="276" y="504" xlink:href="#p" fill="#000000" />
<use x="288" y="504" xlink:href="#p" fill="#000000" />
<use x="312" y="504" xlink:href="#p" fill="#000000" />
<use x="324" y="504" xlink:href="#p" fill="#000000" />
<use x="336" y="504" xlink:href="#p" fill="#000000" />
<use x="348" y="504" xlink:href="#p" fill="#000000" />
<use x="360" y="504" xlink:href="#p" fill="#000000" />
<use x="372" y="504" xlink:href="#p" fill="#000000" />
<use x="384" y="504" xlink:href="#p" fill="#000000" />
<use x="408" y="504" xlink:href="#p" fill="#000000" />
<use x="420" y="504" xlink:href="#p" fill="#000000" />
<use x="444" y="504" xlink:href="#p" fill="#000000" />
<use x="456" y="504" xlink:href="#p" fill="#000000" />
<use x="480" y="504" xlink:href="#p" fill="#000000" />
<use x="504" y="504" xlink:href="#p" fill="#000000" />
<use x="36" y="516" xlink:href="#p" fill="#000000" />
<use x="48" y="516" xlink:href="#p" fill="#000000" />
<use x="60" y="516" xlink:href="#p" fill="#000000" />
<use x="72" y="516" xlink:href="#p" fill="#000000" />
<use x="84" y="516" xlink:href="#p" fill="#000000" />
<use x="96" y="516" xlink:href="#p" fill="#000000" />
<use x="108" y="516" xlink:href="#p" fill="#000000" />
<use x="132" y="516" xlink:href="#p" fill="#000000" />
<use x="144" y="516" xlink:href="#p" fill="#000000" />
<use x="180" y="516" xlink:href="#p" fill="#000000" />
<use x="204" y="516" xlink:href="#p" fill="#000000" />
<use x="216" y="516" xlink:href="#p" fill="#000000" />
<use x="228" y="516" xlink:href="#p" fill="#000000" />
<use x="240" y="516" xlink:href="#p" fill="#000000" />
<use x="252" y="516" xlink:href="#p" fill="#000000" />
<use x="288" y="516" xlink:href="#p" fill="#000000" />
<use x="300" y="516" xlink:href="#p" fill="#000000" />
<use x="324" y="516" xlink:href="#p" fill="#000000" />
<use x="336" y="516" xlink:href="#p" fill="#000000" />
<use x="384" y="516" xlink:href="#p" fill="#000000" />
<use x="408" y="516" xlink:href="#p" fill="#000000" />
<use x="420" y="516" xlink:href="#p" fill="#000000" />
<use x="432" y="516" xlink:href="#p" fill="#000000" />
<use x="444" y="516" xlink:href="#p" fill="#000000" />
<use x="456" y="516" xlink:href="#p" fill="#000000" />
<use x="468" y="516" xlink:href="#p" fill="#000000" />
<use x="480" y="516" xlink:href="#p" fill="#000000" />
<use x="492" y="516" xlink:href="#p" fill="#000000" />
<use x="504" y="516" xlink:href="#p" fill="#000000" />
<use x="516" y="516" xlink:href="#p" fill="#000000" />
</g>
</svg>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<svg width="722" height="70" viewBox="0 0 722 70" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="722" height="70" fill="url(#paint0_linear_94_288)"/>
<path d="M275.11 23.63H289.63V27.05H275.11V23.63ZM274.09 31.61H290.56V35.06H274.09V31.61ZM283.84 32.81C284.22 34.37 284.74 35.84 285.4 37.22C286.08 38.6 286.9 39.83 287.86 40.91C288.84 41.97 289.98 42.82 291.28 43.46C291.02 43.7 290.73 43.99 290.41 44.33C290.09 44.69 289.79 45.06 289.51 45.44C289.23 45.84 289 46.2 288.82 46.52C287.4 45.7 286.17 44.64 285.13 43.34C284.11 42.04 283.24 40.56 282.52 38.9C281.82 37.22 281.24 35.4 280.78 33.44L283.84 32.81ZM280.27 18.53H283.9V26.96C283.9 28.28 283.84 29.65 283.72 31.07C283.6 32.49 283.37 33.91 283.03 35.33C282.69 36.75 282.18 38.15 281.5 39.53C280.82 40.91 279.93 42.21 278.83 43.43C277.73 44.65 276.35 45.77 274.69 46.79C274.53 46.49 274.3 46.15 274 45.77C273.7 45.41 273.38 45.05 273.04 44.69C272.72 44.35 272.42 44.08 272.14 43.88C273.98 42.78 275.44 41.55 276.52 40.19C277.6 38.83 278.41 37.39 278.95 35.87C279.49 34.35 279.84 32.83 280 31.31C280.18 29.79 280.27 28.34 280.27 26.96V18.53ZM262.93 33.74C263.81 33.58 264.81 33.37 265.93 33.11C267.05 32.83 268.22 32.54 269.44 32.24C270.68 31.94 271.91 31.64 273.13 31.34L273.55 34.61C271.83 35.09 270.09 35.56 268.33 36.02C266.57 36.48 264.96 36.9 263.5 37.28L262.93 33.74ZM263.26 24.23H273.61V27.56H263.26V24.23ZM266.83 18.5H270.34V42.68C270.34 43.52 270.25 44.18 270.07 44.66C269.89 45.16 269.54 45.54 269.02 45.8C268.52 46.06 267.9 46.23 267.16 46.31C266.42 46.41 265.53 46.46 264.49 46.46C264.45 46 264.33 45.45 264.13 44.81C263.93 44.19 263.72 43.65 263.5 43.19C264.08 43.21 264.63 43.22 265.15 43.22C265.69 43.22 266.06 43.22 266.26 43.22C266.64 43.22 266.83 43.03 266.83 42.65V18.5ZM293.35 28.4H320.68V31.73H293.35V28.4ZM296.08 22.13H313.06V25.43H296.08V22.13ZM302.89 18.5H306.64V30.23H302.89V18.5ZM314.44 33.71L317.41 36.32C316.05 36.86 314.57 37.38 312.97 37.88C311.37 38.36 309.74 38.81 308.08 39.23C306.44 39.63 304.84 39.99 303.28 40.31C303.2 39.93 303.04 39.47 302.8 38.93C302.58 38.39 302.37 37.94 302.17 37.58C303.65 37.26 305.14 36.89 306.64 36.47C308.16 36.05 309.59 35.6 310.93 35.12C312.29 34.64 313.46 34.17 314.44 33.71ZM316.27 19.67L319.63 21.32C317.67 24.2 315.39 26.85 312.79 29.27C310.21 31.67 307.41 33.81 304.39 35.69C301.39 37.55 298.27 39.15 295.03 40.49C294.87 40.21 294.63 39.88 294.31 39.5C294.01 39.12 293.7 38.74 293.38 38.36C293.08 37.98 292.8 37.66 292.54 37.4C295.8 36.24 298.9 34.79 301.84 33.05C304.8 31.31 307.51 29.32 309.97 27.08C312.43 24.82 314.53 22.35 316.27 19.67ZM301 33.74H304.75V41.66C304.75 42.06 304.81 42.36 304.93 42.56C305.05 42.74 305.29 42.86 305.65 42.92C306.03 42.98 306.58 43.01 307.3 43.01C307.52 43.01 307.83 43.01 308.23 43.01C308.65 43.01 309.13 43.01 309.67 43.01C310.21 43.01 310.75 43.01 311.29 43.01C311.83 43.01 312.32 43.01 312.76 43.01C313.22 43.01 313.58 43.01 313.84 43.01C314.46 43.01 314.93 42.92 315.25 42.74C315.57 42.56 315.8 42.21 315.94 41.69C316.08 41.15 316.18 40.35 316.24 39.29C316.54 39.49 316.89 39.68 317.29 39.86C317.69 40.02 318.1 40.17 318.52 40.31C318.94 40.45 319.31 40.55 319.63 40.61C319.47 42.09 319.2 43.24 318.82 44.06C318.46 44.88 317.91 45.45 317.17 45.77C316.43 46.09 315.4 46.25 314.08 46.25C313.88 46.25 313.54 46.25 313.06 46.25C312.6 46.25 312.06 46.25 311.44 46.25C310.84 46.25 310.24 46.25 309.64 46.25C309.06 46.25 308.53 46.25 308.05 46.25C307.57 46.25 307.23 46.25 307.03 46.25C305.47 46.25 304.25 46.11 303.37 45.83C302.49 45.57 301.87 45.11 301.51 44.45C301.17 43.79 301 42.87 301 41.69V33.74Z" fill="white"/>
<path d="M177.13 26.98H189.13V30.4H177.13V26.98ZM187.69 26.98H191.11C191.11 26.98 191.11 27.09 191.11 27.31C191.11 27.51 191.11 27.74 191.11 28C191.11 28.24 191.11 28.44 191.11 28.6C191.03 31.7 190.95 34.33 190.87 36.49C190.81 38.63 190.73 40.41 190.63 41.83C190.53 43.23 190.39 44.32 190.21 45.1C190.03 45.88 189.82 46.45 189.58 46.81C189.24 47.31 188.87 47.67 188.47 47.89C188.09 48.11 187.63 48.26 187.09 48.34C186.59 48.42 185.97 48.46 185.23 48.46C184.51 48.48 183.77 48.47 183.01 48.43C182.99 47.95 182.88 47.37 182.68 46.69C182.48 46.03 182.23 45.47 181.93 45.01C182.67 45.05 183.35 45.08 183.97 45.1C184.59 45.12 185.06 45.13 185.38 45.13C185.64 45.13 185.85 45.1 186.01 45.04C186.19 44.96 186.35 44.82 186.49 44.62C186.67 44.4 186.82 43.94 186.94 43.24C187.06 42.52 187.16 41.51 187.24 40.21C187.34 38.89 187.42 37.21 187.48 35.17C187.56 33.11 187.63 30.63 187.69 27.73V26.98ZM181.09 20.53H184.63C184.63 23.03 184.6 25.43 184.54 27.73C184.48 30.03 184.32 32.21 184.06 34.27C183.82 36.31 183.41 38.22 182.83 40C182.27 41.78 181.48 43.4 180.46 44.86C179.44 46.32 178.12 47.6 176.5 48.7C176.24 48.26 175.86 47.77 175.36 47.23C174.88 46.71 174.42 46.29 173.98 45.97C175.48 44.99 176.68 43.86 177.58 42.58C178.5 41.3 179.21 39.87 179.71 38.29C180.21 36.71 180.55 35 180.73 33.16C180.93 31.3 181.04 29.32 181.06 27.22C181.08 25.1 181.09 22.87 181.09 20.53ZM165.85 21.76H176.32V41.35H172.99V25H169.03V43.24H165.85V21.76ZM163.72 42.07C164.88 41.85 166.21 41.6 167.71 41.32C169.23 41.02 170.84 40.69 172.54 40.33C174.26 39.97 175.95 39.61 177.61 39.25L177.97 42.46C176.39 42.86 174.79 43.26 173.17 43.66C171.55 44.04 169.99 44.41 168.49 44.77C166.99 45.11 165.61 45.44 164.35 45.76L163.72 42.07ZM167.5 28.03H174.67V31.18H167.5V28.03ZM167.5 34.24H174.67V37.39H167.5V34.24ZM206.17 27.43L220.39 25.24L220.96 28.42L206.77 30.67L206.17 27.43ZM205.54 33.91L221.2 31.06L221.77 34.18L206.11 37.12L205.54 33.91ZM210.13 20.41H213.73C213.69 22.39 213.72 24.38 213.82 26.38C213.92 28.38 214.07 30.3 214.27 32.14C214.49 33.96 214.75 35.65 215.05 37.21C215.37 38.77 215.72 40.14 216.1 41.32C216.5 42.48 216.92 43.39 217.36 44.05C217.8 44.71 218.25 45.04 218.71 45.04C218.91 45.04 219.07 44.94 219.19 44.74C219.33 44.54 219.44 44.21 219.52 43.75C219.6 43.29 219.66 42.66 219.7 41.86C220.02 42.26 220.42 42.64 220.9 43C221.4 43.36 221.84 43.64 222.22 43.84C222.04 45.08 221.79 46.03 221.47 46.69C221.17 47.37 220.76 47.84 220.24 48.1C219.74 48.38 219.09 48.52 218.29 48.52C217.29 48.52 216.39 48.14 215.59 47.38C214.79 46.62 214.09 45.57 213.49 44.23C212.89 42.87 212.38 41.3 211.96 39.52C211.54 37.72 211.2 35.77 210.94 33.67C210.68 31.57 210.48 29.4 210.34 27.16C210.22 24.9 210.15 22.65 210.13 20.41ZM214.21 22.66L216.31 20.8C216.71 21.02 217.15 21.29 217.63 21.61C218.11 21.91 218.57 22.22 219.01 22.54C219.45 22.86 219.81 23.15 220.09 23.41L217.93 25.51C217.51 25.11 216.93 24.64 216.19 24.1C215.47 23.56 214.81 23.08 214.21 22.66ZM194.17 22H206.32V25.24H194.17V22ZM198.34 27.97H203.41V31.18H198.34V27.97ZM197.32 37.24L199.18 34.87C199.58 35.13 200.01 35.42 200.47 35.74C200.95 36.06 201.41 36.38 201.85 36.7C202.29 37.02 202.65 37.31 202.93 37.57L200.98 40.24C200.72 39.98 200.38 39.67 199.96 39.31C199.54 38.95 199.1 38.59 198.64 38.23C198.18 37.87 197.74 37.54 197.32 37.24ZM197.89 22.96L201.22 23.56C200.9 25.52 200.48 27.45 199.96 29.35C199.46 31.23 198.86 32.99 198.16 34.63C197.46 36.25 196.65 37.68 195.73 38.92C195.59 38.68 195.38 38.38 195.1 38.02C194.84 37.66 194.56 37.3 194.26 36.94C193.96 36.56 193.69 36.27 193.45 36.07C194.25 35.05 194.93 33.85 195.49 32.47C196.07 31.07 196.56 29.57 196.96 27.97C197.36 26.35 197.67 24.68 197.89 22.96ZM202.54 27.97H203.17L203.77 27.88L205.81 28.45C205.25 33.53 204.15 37.71 202.51 40.99C200.87 44.25 198.78 46.68 196.24 48.28C196.1 48.04 195.88 47.75 195.58 47.41C195.3 47.09 195 46.77 194.68 46.45C194.38 46.13 194.11 45.89 193.87 45.73C196.31 44.31 198.26 42.2 199.72 39.4C201.18 36.58 202.12 32.99 202.54 28.63V27.97ZM218.86 35.47L221.89 36.82C220.73 38.6 219.34 40.2 217.72 41.62C216.1 43.04 214.32 44.29 212.38 45.37C210.44 46.43 208.4 47.33 206.26 48.07C206.02 47.61 205.7 47.1 205.3 46.54C204.9 46 204.49 45.52 204.07 45.1C206.11 44.52 208.07 43.78 209.95 42.88C211.83 41.96 213.53 40.88 215.05 39.64C216.59 38.38 217.86 36.99 218.86 35.47Z" fill="white"/>
<path d="M363.2 23.51H378.17V26.81H363.2V23.51ZM369.11 18.47H372.65V42.83C372.65 43.69 372.54 44.35 372.32 44.81C372.12 45.29 371.76 45.66 371.24 45.92C370.72 46.18 370.08 46.34 369.32 46.4C368.56 46.48 367.62 46.52 366.5 46.52C366.44 46.08 366.31 45.55 366.11 44.93C365.91 44.33 365.7 43.81 365.48 43.37C366.1 43.39 366.71 43.41 367.31 43.43C367.91 43.43 368.31 43.43 368.51 43.43C368.73 43.43 368.88 43.38 368.96 43.28C369.06 43.18 369.11 43.03 369.11 42.83V18.47ZM362.69 38.96C363.59 38.4 364.67 37.69 365.93 36.83C367.19 35.97 368.47 35.08 369.77 34.16L370.97 37.07C369.89 37.89 368.76 38.72 367.58 39.56C366.4 40.4 365.31 41.17 364.31 41.87L362.69 38.96ZM363.65 29.42L366.32 28.19C366.68 28.71 367.03 29.27 367.37 29.87C367.73 30.47 368.05 31.06 368.33 31.64C368.63 32.2 368.85 32.71 368.99 33.17L366.14 34.55C366.02 34.09 365.82 33.57 365.54 32.99C365.28 32.39 364.98 31.78 364.64 31.16C364.32 30.52 363.99 29.94 363.65 29.42ZM374.66 27.83L377.75 29.06C377.29 29.74 376.8 30.43 376.28 31.13C375.78 31.81 375.27 32.46 374.75 33.08C374.23 33.68 373.74 34.22 373.28 34.7L370.52 33.5C371 33.02 371.49 32.46 371.99 31.82C372.49 31.16 372.98 30.48 373.46 29.78C373.94 29.08 374.34 28.43 374.66 27.83ZM372.95 20.06L375.44 18.59C375.98 19.09 376.52 19.66 377.06 20.3C377.6 20.94 378.01 21.51 378.29 22.01L375.65 23.66C375.43 23.14 375.06 22.55 374.54 21.89C374.02 21.21 373.49 20.6 372.95 20.06ZM370.28 35.6L372.65 33.53C373.31 33.99 374 34.5 374.72 35.06C375.46 35.62 376.16 36.18 376.82 36.74C377.48 37.3 378.02 37.82 378.44 38.3L375.89 40.61C375.51 40.13 375.01 39.6 374.39 39.02C373.77 38.42 373.09 37.82 372.35 37.22C371.63 36.62 370.94 36.08 370.28 35.6ZM380.09 24.05H391.04V27.38H380.09V24.05ZM380.93 18.53L384.5 19.01C384.22 21.09 383.84 23.12 383.36 25.1C382.9 27.06 382.32 28.88 381.62 30.56C380.94 32.22 380.13 33.68 379.19 34.94C379.03 34.7 378.78 34.41 378.44 34.07C378.12 33.73 377.78 33.4 377.42 33.08C377.08 32.74 376.77 32.47 376.49 32.27C377.33 31.21 378.03 29.96 378.59 28.52C379.17 27.06 379.65 25.48 380.03 23.78C380.41 22.08 380.71 20.33 380.93 18.53ZM382.13 27.26C382.59 29.58 383.22 31.79 384.02 33.89C384.84 35.97 385.85 37.84 387.05 39.5C388.27 41.16 389.72 42.48 391.4 43.46C391.12 43.7 390.81 44 390.47 44.36C390.13 44.74 389.81 45.13 389.51 45.53C389.21 45.93 388.96 46.31 388.76 46.67C387 45.43 385.5 43.86 384.26 41.96C383.04 40.06 382.02 37.91 381.2 35.51C380.4 33.11 379.74 30.55 379.22 27.83L382.13 27.26ZM386.51 24.2L389.6 25.82C389.28 29.1 388.69 32.11 387.83 34.85C386.99 37.59 385.79 39.97 384.23 41.99C382.67 44.01 380.66 45.59 378.2 46.73C378.02 46.41 377.78 46.06 377.48 45.68C377.18 45.32 376.86 44.96 376.52 44.6C376.18 44.24 375.85 43.94 375.53 43.7C378.01 42.76 380 41.38 381.5 39.56C383 37.72 384.13 35.51 384.89 32.93C385.67 30.35 386.21 27.44 386.51 24.2ZM418.13 18.29L420.62 21.14C419.2 21.56 417.64 21.94 415.94 22.28C414.24 22.6 412.51 22.88 410.75 23.12C408.99 23.34 407.27 23.54 405.59 23.72C405.53 23.3 405.4 22.81 405.2 22.25C405 21.67 404.8 21.2 404.6 20.84C406.22 20.66 407.85 20.44 409.49 20.18C411.15 19.92 412.72 19.63 414.2 19.31C415.7 18.99 417.01 18.65 418.13 18.29ZM418.16 20.9C418.24 23.08 418.35 25.26 418.49 27.44C418.63 29.62 418.82 31.71 419.06 33.71C419.3 35.71 419.61 37.55 419.99 39.23C420.37 40.91 420.85 42.34 421.43 43.52C421.01 43.82 420.54 44.23 420.02 44.75C419.52 45.27 419.12 45.77 418.82 46.25C418.16 44.81 417.62 43.17 417.2 41.33C416.78 39.47 416.44 37.45 416.18 35.27C415.92 33.09 415.72 30.81 415.58 28.43C415.44 26.03 415.32 23.59 415.22 21.11L418.16 20.9ZM412.46 37.58L414.83 36.89C415.13 37.77 415.42 38.72 415.7 39.74C416 40.74 416.26 41.72 416.48 42.68C416.7 43.62 416.87 44.48 416.99 45.26L414.47 46.01C414.37 45.25 414.21 44.39 413.99 43.43C413.79 42.45 413.55 41.45 413.27 40.43C413.01 39.41 412.74 38.46 412.46 37.58ZM404.6 20.84H407.78V26.33C407.78 27.69 407.72 29.23 407.6 30.95C407.5 32.67 407.31 34.45 407.03 36.29C406.77 38.11 406.38 39.9 405.86 41.66C405.34 43.42 404.65 45.01 403.79 46.43C403.61 46.23 403.35 46 403.01 45.74C402.69 45.48 402.36 45.22 402.02 44.96C401.68 44.72 401.39 44.56 401.15 44.48C401.95 43.12 402.58 41.66 403.04 40.1C403.5 38.52 403.84 36.92 404.06 35.3C404.28 33.66 404.42 32.07 404.48 30.53C404.56 28.99 404.6 27.59 404.6 26.33V20.84ZM408.95 45.8L408.65 43.07L409.82 42.08L415.34 40.67C415.4 41.09 415.49 41.57 415.61 42.11C415.73 42.63 415.84 43.06 415.94 43.4C414.58 43.78 413.48 44.1 412.64 44.36C411.8 44.64 411.13 44.86 410.63 45.02C410.15 45.2 409.78 45.35 409.52 45.47C409.28 45.59 409.09 45.7 408.95 45.8ZM408.95 45.8C408.81 45.58 408.6 45.31 408.32 44.99C408.04 44.67 407.75 44.35 407.45 44.03C407.15 43.73 406.89 43.5 406.67 43.34C407.53 42.12 408.19 40.79 408.65 39.35C409.13 37.89 409.48 36.4 409.7 34.88C409.92 33.34 410.05 31.84 410.09 30.38C410.13 28.92 410.15 27.57 410.15 26.33V21.92H413.18V26.39C413.18 27.57 413.15 28.9 413.09 30.38C413.05 31.84 412.92 33.36 412.7 34.94C412.5 36.52 412.18 38.1 411.74 39.68C411.32 41.26 410.71 42.76 409.91 44.18C409.63 44.32 409.4 44.55 409.22 44.87C409.04 45.21 408.95 45.52 408.95 45.8ZM392.81 33.89C393.69 33.71 394.7 33.48 395.84 33.2C396.98 32.9 398.18 32.58 399.44 32.24C400.72 31.88 401.99 31.53 403.25 31.19L403.64 34.34C401.92 34.88 400.18 35.42 398.42 35.96C396.66 36.48 395.05 36.95 393.59 37.37L392.81 33.89ZM393.68 20.18H401.3V23.51H393.68V20.18ZM396.59 27.08H400.01V42.5C400.01 43.3 399.92 43.95 399.74 44.45C399.58 44.97 399.25 45.38 398.75 45.68C398.27 45.96 397.69 46.14 397.01 46.22C396.33 46.3 395.53 46.34 394.61 46.34C394.55 45.84 394.42 45.26 394.22 44.6C394.04 43.94 393.83 43.36 393.59 42.86C394.13 42.88 394.64 42.89 395.12 42.89C395.62 42.89 395.96 42.89 396.14 42.89C396.44 42.89 396.59 42.75 396.59 42.47V27.08ZM400.61 20.18H401.45L402.11 20L404.45 21.59C403.97 22.49 403.41 23.42 402.77 24.38C402.15 25.32 401.5 26.22 400.82 27.08C400.14 27.94 399.47 28.69 398.81 29.33C398.55 28.99 398.19 28.6 397.73 28.16C397.29 27.72 396.91 27.36 396.59 27.08C397.11 26.54 397.63 25.91 398.15 25.19C398.67 24.45 399.15 23.7 399.59 22.94C400.03 22.18 400.37 21.5 400.61 20.9V20.18Z" fill="white"/>
<path d="M482.27 21.71H501.71V24.83H482.27V21.71ZM488.81 19.28L492.08 18.38C492.44 19 492.78 19.69 493.1 20.45C493.44 21.21 493.68 21.86 493.82 22.4L490.37 23.45C490.27 22.91 490.06 22.25 489.74 21.47C489.44 20.67 489.13 19.94 488.81 19.28ZM495.5 23.15L499.1 23.72C498.26 26.02 497.09 27.91 495.59 29.39C494.11 30.87 492.3 32.05 490.16 32.93C488.04 33.81 485.62 34.5 482.9 35C482.82 34.72 482.69 34.39 482.51 34.01C482.35 33.61 482.17 33.21 481.97 32.81C481.77 32.41 481.58 32.09 481.4 31.85C483.84 31.53 486.01 31.04 487.91 30.38C489.83 29.72 491.43 28.81 492.71 27.65C494.01 26.47 494.94 24.97 495.5 23.15ZM494.45 34.25H497.96V46.25H494.45V34.25ZM485.81 34.25H489.32V38C489.32 38.72 489.24 39.47 489.08 40.25C488.92 41.03 488.62 41.8 488.18 42.56C487.74 43.32 487.1 44.03 486.26 44.69C485.42 45.35 484.32 45.92 482.96 46.4C482.78 46.18 482.53 45.93 482.21 45.65C481.91 45.37 481.59 45.09 481.25 44.81C480.93 44.55 480.64 44.34 480.38 44.18C481.58 43.78 482.53 43.33 483.23 42.83C483.95 42.31 484.5 41.77 484.88 41.21C485.26 40.65 485.51 40.09 485.63 39.53C485.75 38.95 485.81 38.41 485.81 37.91V34.25ZM487.76 23.54C488.9 25.84 490.69 27.62 493.13 28.88C495.59 30.14 498.73 30.93 502.55 31.25C502.29 31.51 502.02 31.83 501.74 32.21C501.48 32.59 501.23 32.98 500.99 33.38C500.75 33.78 500.56 34.14 500.42 34.46C497.74 34.1 495.4 33.51 493.4 32.69C491.4 31.85 489.69 30.74 488.27 29.36C486.87 27.98 485.7 26.29 484.76 24.29L487.76 23.54ZM475.31 21.56L477.56 19.19C478.06 19.49 478.6 19.83 479.18 20.21C479.78 20.59 480.35 20.97 480.89 21.35C481.43 21.73 481.88 22.08 482.24 22.4L479.87 25.07C479.55 24.73 479.13 24.35 478.61 23.93C478.09 23.51 477.53 23.09 476.93 22.67C476.35 22.25 475.81 21.88 475.31 21.56ZM473.96 29.06L476.21 26.72C476.73 27.04 477.28 27.41 477.86 27.83C478.46 28.23 479.03 28.64 479.57 29.06C480.11 29.46 480.55 29.83 480.89 30.17L478.49 32.78C478.19 32.42 477.78 32.03 477.26 31.61C476.74 31.17 476.18 30.73 475.58 30.29C475 29.83 474.46 29.42 473.96 29.06ZM474.41 43.85C474.87 43.09 475.37 42.2 475.91 41.18C476.45 40.16 476.99 39.07 477.53 37.91C478.09 36.75 478.61 35.61 479.09 34.49L481.91 36.68C481.49 37.72 481.04 38.78 480.56 39.86C480.1 40.94 479.62 42.01 479.12 43.07C478.62 44.11 478.12 45.11 477.62 46.07L474.41 43.85ZM510.08 27.53H526.01V30.68H510.08V27.53ZM516.32 23.96H519.65V41.21H516.32V23.96ZM515.72 28.91L518.33 29.75C517.81 31.03 517.17 32.28 516.41 33.5C515.67 34.72 514.85 35.84 513.95 36.86C513.07 37.88 512.13 38.73 511.13 39.41C510.89 39.03 510.55 38.59 510.11 38.09C509.67 37.57 509.27 37.15 508.91 36.83C509.83 36.29 510.72 35.6 511.58 34.76C512.44 33.92 513.23 33 513.95 32C514.67 30.98 515.26 29.95 515.72 28.91ZM505.19 19.82H530.9V46.76H527.12V23.15H508.79V46.76H505.19V19.82ZM507.29 42.11H528.56V45.44H507.29V42.11ZM517.52 32.3L519.59 30.32C520.23 30.82 520.88 31.36 521.54 31.94C522.22 32.52 522.88 33.11 523.52 33.71C524.18 34.29 524.78 34.85 525.32 35.39C525.88 35.91 526.36 36.38 526.76 36.8L524.66 39.2C524.28 38.76 523.81 38.26 523.25 37.7C522.69 37.12 522.09 36.52 521.45 35.9C520.81 35.26 520.15 34.64 519.47 34.04C518.79 33.42 518.14 32.84 517.52 32.3Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_94_288" x1="0" y1="35" x2="722" y2="35" gradientUnits="userSpaceOnUse">
<stop stop-color="#BF0000" stop-opacity="0"/>
<stop offset="0.355769" stop-color="#BE3900"/>
<stop offset="0.658654" stop-color="#A00000"/>
<stop offset="0.961538" stop-color="#BE3900" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
<svg width="117" height="50" viewBox="0 0 117 50" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M109 0C113.418 0 117 3.58172 117 8V22C117 26.4183 113.418 30 109 30H103.547L92 50L80.4531 30H8C3.58172 30 2.25497e-07 26.4183 0 22V8C0 3.58172 3.58172 2.1341e-07 8 0H109Z" fill="white" fill-opacity="0.7"/>
</svg>
<script setup lang="ts">
import { nextTick, onMounted, onUnmounted, ref } from "vue";
import Loading from "./views/LoadingView.vue";
import Rank1 from "./views/Rank1View.vue";
import Rank2 from "./views/Rank2View.vue";
import { useAdminGameSocket } from "@/composables/useAdminGameSocket";
import { onSocketMessage } from "@/commons/ws";
import type Player from "@/commons/player.ts";
type GameScreen = "loading" | "rank1" | "rank2";
const PLAYER_LIMIT = 20;
const RANK_LIMIT = 10;
const emptyLoadingPlayer = () => ({
score: 0,
telephone: "",
userid: "",
wechat_id: "",
nickname: "虚位以待",
avatar: "",
});
const emptyRankPlayer = (index: number): Player => ({
active: false,
wechat_id: `empty-${index}`,
nickname: "虚位以待",
avatar: "",
score: 0,
});
const screen = ref<GameScreen>("loading");
const loadingPlayers = ref<any[]>(
Array.from({ length: PLAYER_LIMIT }, emptyLoadingPlayer),
);
const playerCount = ref(0);
const rankPlayers = ref<Player[]>(
Array.from({ length: RANK_LIMIT }, (_, index) => emptyRankPlayer(index)),
);
const rank1Ref = ref<InstanceType<typeof Rank1> | null>(null);
let isPlayingStartAnimation = false;
// H5 操控传来的加速度: { [userid]: boost(叠加系数, 0~N) }
const horseBoosts = ref<Record<string, number>>({});
let offHorseBoost: (() => void) | undefined;
// 监听 WebSocket 获取 H5 玩家操控的马匹加速度
offHorseBoost = onSocketMessage((evt, payload) => {
const data = payload?.data ?? payload;
if (!Array.isArray(data)) return;
const boosts: Record<string, number> = {};
let hasBoost = false;
data.forEach((item: any) => {
const id = item.userid || item.wechat_id || "";
if (!id) return;
// 尝试多种字段名: boost / acceleration / speed / progress
const raw = item.boost ?? item.acceleration ?? item.speed ?? item.progress;
if (raw === undefined || raw === null) return;
const val = Number(raw);
if (isNaN(val)) return;
// boost 范围 0~N,0 表示无加速(基准60秒跑完),>0 越快
boosts[id] = Math.max(0, val);
hasBoost = true;
});
if (hasBoost) {
horseBoosts.value = { ...boosts };
}
});
const confirmRefresh = (event: BeforeUnloadEvent) => {
event.preventDefault();
event.returnValue = "";
};
const renderPlayers = (data: any) => {
const players = Array.isArray(data?.list) ? data.list : [];
playerCount.value = Number(data?.count ?? players.length);
loadingPlayers.value = Array.from(
{ length: PLAYER_LIMIT },
(_, index) => players[index] ?? emptyLoadingPlayer(),
);
};
const updateRankPlayers = (data: any) => {
if (!Array.isArray(data)) return;
rankPlayers.value = Array.from(
{ length: RANK_LIMIT },
(_, index) => data[index] ?? emptyRankPlayer(index),
);
};
const gotoLoading = () => {
screen.value = "loading";
};
const gotoRank1WithIntro = async () => {
if (isPlayingStartAnimation) return;
isPlayingStartAnimation = true;
screen.value = "rank1";
await nextTick();
await rank1Ref.value?.startIntro();
screen.value = "rank2";
isPlayingStartAnimation = false;
};
function handleRoomState(data: any) {
if (Array.isArray(data?.list)) {
renderPlayers(data);
}
switch (data?.status) {
case 0:
gotoLoading();
createRoom(1);
break;
case 1:
gotoLoading();
break;
case 2:
screen.value = "rank1";
break;
case 3:
screen.value = "rank2";
break;
}
}
const { startGame, createRoom, requestRoomState } = useAdminGameSocket({
gameId: "game4",
// loginRedirectPath: '/game4',
onGameStartRejected: gotoLoading,
onRoomState: handleRoomState,
onRoomJoin: (data) => {
renderPlayers(data);
gotoLoading();
},
onGameStart: gotoRank1WithIntro,
onRoomRank: updateRankPlayers,
});
const nextRound = () => {
gotoLoading();
createRoom(1);
setTimeout(() => {
requestRoomState();
}, 200);
};
onMounted(() => {
window.addEventListener("beforeunload", confirmRefresh);
});
onUnmounted(() => {
window.removeEventListener("beforeunload", confirmRefresh);
offHorseBoost?.();
});
</script>
<template>
<Loading
v-if="screen === 'loading'"
:players="loadingPlayers"
:player-count="playerCount"
@start="startGame"
/>
<!-- v-else-if="screen === 'rank1'" -->
<Rank1 ref="rank1Ref" :rank-list="rankPlayers" :horse-boosts="horseBoosts" @start="startGame" />
<!-- <Rank2 v-else :rank-list="rankPlayers" @next="nextRound" /> -->
</template>
<script setup lang="ts">
import { ref } from "vue";
import { $format_str } from "@/commons/utils.ts";
import DesignStage from "@/components/DesignStage.vue";
import { assetUrl, cssAssetUrl } from "@/commons/assets.ts";
defineProps<{
players: any[];
playerCount: number;
}>();
const emit = defineEmits<{
start: [];
}>();
const imageUrls = {
bg: cssAssetUrl("game4/bg.svg"),
logo: cssAssetUrl("game1/logo.png"),
title1: cssAssetUrl("game4/title1.svg"),
title2: cssAssetUrl("game4/title2.svg"),
qrcode: assetUrl("game4/qrcode.svg"),
gift: cssAssetUrl("game4/gift.svg"),
gu: cssAssetUrl("game4/big-brum.svg"),
smallGu: cssAssetUrl("game4/small-brum.svg"),
bottomLayers: cssAssetUrl("game1/bottom-layers.png"),
avatarAnimation: cssAssetUrl("avatar_animation.png"),
avatar: cssAssetUrl("avatar.png"),
line: cssAssetUrl("game1/line.png"),
start1: cssAssetUrl("game1/start-1.png"),
start2: cssAssetUrl("game1/start-2.png"),
};
const isStartPressed = ref(false);
const pressStartButton = () => {
isStartPressed.value = true;
emit("start");
};
const releaseStartButton = () => {
isStartPressed.value = false;
};
</script>
<template>
<DesignStage>
<div class="bg">
<div class="img-logo"></div>
<div class="img-title1"></div>
<div class="img-title2"></div>
<div class="img-qrcode-container">
<div class="img-qrcode"><img :src="imageUrls.qrcode" /></div>
<div class="txt-qrcode">微信扫码参与</div>
</div>
<div class="img-gift"></div>
<div class="img-small-gu"></div>
<div class="img-gu"></div>
<div class="list-container">
<div class="txt-count">
当前在线人数 <span>{{ playerCount }}</span>
</div>
<div class="list-container-left">
<div
v-for="(item, index) in players"
:key="item.userid || item.wechat_id || `empty-${index}`"
>
<div>
<div class="img-avatar-container">
<div class="img-avatar"></div>
</div>
<div class="txt-nickname">
{{ $format_str(item.nickname, 12) }}
</div>
</div>
</div>
</div>
<div class="list-container-line"></div>
<div class="list-container-right">
<div
class="btn-start"
:class="{ pressed: isStartPressed }"
@pointerdown="pressStartButton"
@pointerup="releaseStartButton"
@pointerleave="releaseStartButton"
@pointercancel="releaseStartButton"
></div>
</div>
</div>
</div>
</DesignStage>
</template>
<style scoped>
.bg {
width: 1920px;
height: 1080px;
background: v-bind("imageUrls.bg") center / cover no-repeat;
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
}
.img-logo {
background: v-bind("imageUrls.logo");
background-size: cover;
width: 428px;
height: 77px;
position: absolute;
left: 37px;
top: 82px;
}
.img-title1 {
background: v-bind("imageUrls.title1") no-repeat;
width: 831px;
height: 314px;
margin: 0 auto;
position: relative;
top: 60px;
}
.img-title2 {
background: v-bind("imageUrls.title2") no-repeat;
width: 643px;
height: 140px;
margin: 0 auto;
position: relative;
top: 80px;
}
.img-qrcode-container {
width: 144px;
height: 177px;
position: absolute;
z-index: 1;
top: 40px;
right: 40px;
.img-qrcode {
width: 100%;
height: 144px;
border-radius: 10px;
img {
width: 140px;
height: 140px;
}
}
.txt-qrcode {
font-size: 24px;
color: white;
}
}
.img-gift {
background: v-bind("imageUrls.gift") no-repeat;
width: 315px;
height: 202px;
position: absolute;
top: 124px;
right: 320px;
}
.img-small-gu {
background: v-bind("imageUrls.smallGu") no-repeat;
width: 161px;
height: 150px;
position: absolute;
top: 500px;
right: 340px;
}
.img-gu {
background: v-bind("imageUrls.gu") no-repeat;
width: 320px;
height: 297px;
position: absolute;
top: 387px;
right: 20px;
}
.list-container {
background: v-bind("imageUrls.bottomLayers");
width: 1800px;
height: 397px;
position: absolute;
left: 60px;
bottom: 60px;
.txt-count {
font-size: 36px;
margin-left: 30px;
margin-top: 20px;
color: #aa0000;
font-weight: bold;
> span {
margin-left: 20px;
font-size: 48px;
position: relative;
top: 5px;
}
}
.list-container-left {
float: left;
display: grid;
grid-template-columns: repeat(10, 1fr);
row-gap: 20px;
width: 73%;
margin-top: 30px;
height: 250px;
align-content: center;
.img-avatar-container {
position: relative;
margin: 0 auto;
width: 72px;
height: 72px;
border-radius: 36px;
}
.img-avatar-container::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background: v-bind("imageUrls.avatarAnimation");
animation: avatar-rotate 10s linear infinite;
}
.img-avatar {
position: relative;
top: 6px;
z-index: 1;
margin: 0 auto;
width: 60px;
height: 60px;
border-radius: 30px;
background: v-bind("imageUrls.avatar");
}
.txt-nickname {
color: #666;
font-size: 20px;
text-align: center;
}
}
.list-container-line {
float: left;
width: 1px;
height: 281px;
margin-left: 50px;
background: v-bind("imageUrls.line") center no-repeat;
}
.list-container-right {
float: left;
.btn-start {
width: 316px;
height: 105px;
margin-left: 60px;
margin-top: 80px;
background: v-bind("imageUrls.start1");
cursor: pointer;
}
.btn-start.pressed {
background: v-bind("imageUrls.start2");
}
}
}
</style>
<script setup lang="ts">
import { ref, watch, onMounted, onUnmounted } from "vue";
import DesignStage from "../../../components/DesignStage.vue";
import type Player from "@/commons/player.ts";
import { $is_run_local } from "@/commons/utils.ts";
import { cssAssetUrl } from "@/commons/assets.ts";
const props = defineProps<{
rankList: Player[];
/** H5 玩家操控产生的加速度: { [userid]: boost(叠加系数, 0~N) } */
horseBoosts: Record<string, number>;
}>();
const emit = defineEmits<{
start: [];
}>();
const designStage = ref<InstanceType<typeof DesignStage> | null>(null);
const imageUrls = {
logo: cssAssetUrl("game1/logo.png"),
titleBg: cssAssetUrl("game4/horse-title-bg.svg"),
bigBrum: cssAssetUrl("game4/big-brum.svg"),
username: cssAssetUrl("game4/username.svg"),
avatar: cssAssetUrl("game4/avator.svg"),
resultBg: cssAssetUrl("game4/resultBg.svg"),
next: cssAssetUrl("game1/next-1.png"),
};
// ========== 速度基准: 60秒从屏幕左侧跑到右侧 ==========
const TOTAL_DISTANCE_PX = 2160; // -120px ~ 2040px
const BASE_DURATION_SEC = 60;
const BASE_SPEED_PERCENT_PER_SEC = 100 / BASE_DURATION_SEC; // ≈ 1.667%/s 基准速度
interface Horse {
id: string;
lane: number;
startY: number;
xPercent: number;
boost: number; // boost=0 按基准60秒跑完,boost越大越快
nickname: string;
avatar: string;
}
interface RankItem {
rank: number;
userid: string;
nickname: string;
avatar: string;
score: number;
}
const horses = ref<Horse[]>([]);
const isGameRunning = ref(false);
const showResult = ref(false);
const finalRankList = ref<RankItem[]>([]);
const LANE_POSITIONS = [42, 160, 270, 380, 490];
const updateHorses = (players: Player[]) => {
const validPlayers = players.filter(
(p) => p.nickname !== "虚位以待" && !p.wechat_id?.startsWith("empty-"),
);
if (validPlayers.length === 0) return;
// 保留已存在的 xPercent 和 boost,避免新玩家列表覆盖进度
const existingMap = new Map(horses.value.map((h) => [h.id, h]));
horses.value = validPlayers.map((player, index) => {
const id = player.userid || player.wechat_id || `horse-${index}`;
const existing = existingMap.get(id);
return {
id,
lane: index % LANE_POSITIONS.length,
startY: LANE_POSITIONS[index % LANE_POSITIONS.length]!,
xPercent: existing?.xPercent ?? 0,
boost: existing?.boost ?? 0,
nickname: player.nickname,
avatar: player.avatar || "",
};
});
};
const mockHorses = () => {
const mockPlayers: Player[] = Array.from({ length: 10 }, (_, i) => ({
userid: `mock-${i}`,
nickname: `玩家${i + 1}`,
avatar: "",
score: Math.floor(Math.random() * 1000),
}));
updateHorses(mockPlayers);
};
watch(
() => props.rankList,
(players) => {
if (players && players.length > 0) {
updateHorses(players);
}
},
{ immediate: true, deep: true },
);
// 进度百分比 → 屏幕像素位置
const horseTranslateX = (xPercent: number) => {
return -120 + (xPercent / 100) * TOTAL_DISTANCE_PX;
};
// ========== 接收 H5 传来的加速度 ==========
watch(
() => props.horseBoosts,
(boosts) => {
if (!boosts) return;
horses.value.forEach((horse) => {
const boost = boosts[horse.id];
if (boost !== undefined) {
horse.boost = boost;
}
});
},
{ deep: true },
);
// ========== 游戏主循环 (~60fps) ==========
let gameLoopTimer: ReturnType<typeof setInterval> | undefined;
const TICK_MS = 16;
const TICK_SEC = TICK_MS / 1000;
const startGameLoop = () => {
stopGameLoop();
gameLoopTimer = setInterval(() => {
if (!isGameRunning.value) return;
let allFinished = true;
horses.value.forEach((horse) => {
if (horse.xPercent >= 100) return;
// 实际速度 = 基准速度 × (1 + boost)
horse.xPercent = Math.min(
100,
horse.xPercent + BASE_SPEED_PERCENT_PER_SEC * (1 + horse.boost) * TICK_SEC,
);
if (horse.xPercent < 100) allFinished = false;
});
if (allFinished && horses.value.length > 0) {
stopGame();
}
}, TICK_MS);
};
const stopGameLoop = () => {
if (gameLoopTimer) {
clearInterval(gameLoopTimer);
gameLoopTimer = undefined;
}
};
// ========== 本地 mock 加速 ==========
let mockBoostTimer: ReturnType<typeof setInterval> | undefined;
const startMockBoost = () => {
stopMockBoost();
mockBoostTimer = setInterval(() => {
if (!isGameRunning.value) return;
// 随机选 1~3 匹马触发加速
const count = 1 + Math.floor(Math.random() * 3);
const shuffled = [...horses.value].sort(() => Math.random() - 0.5);
shuffled.slice(0, count).forEach((horse) => {
horse.boost = Math.min(3, horse.boost + 0.3 + Math.random() * 0.7);
});
}, 2000);
};
const stopMockBoost = () => {
if (mockBoostTimer) {
clearInterval(mockBoostTimer);
mockBoostTimer = undefined;
}
};
const computeFinalRank = (): RankItem[] => {
// 从 WebSocket rankList 中取有效玩家
const valid = (props.rankList || []).filter(
(p) => p.nickname !== "虚位以待" && !(p.wechat_id || "").startsWith("empty-"),
);
if (valid.length > 0) {
// 优先用 WebSocket 的 score 排序
const sorted = [...valid].sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
return sorted.map((p, i) => ({
rank: i + 1,
userid: p.userid || p.wechat_id || `unknown-${i}`,
nickname: p.nickname,
avatar: p.avatar || "",
score: p.score ?? 0,
}));
}
// 无 WebSocket 数据时降级:按 xPercent 降序
return horses.value
.slice()
.sort((a, b) => b.xPercent - a.xPercent)
.map((h, i) => ({
rank: i + 1,
userid: h.id,
nickname: h.nickname,
avatar: h.avatar,
score: Math.round(h.xPercent * 10),
}));
};
const stopGame = () => {
isGameRunning.value = false;
showResult.value = true;
stopGameLoop();
stopMockBoost();
// 计算最终排名
finalRankList.value = computeFinalRank();
// 打印排名数据到控制台
console.log("========== 游戏结束 - 最终排名 ==========");
console.table(
finalRankList.value.map((item) => ({
名次: item.rank,
用户ID: item.userid,
昵称: item.nickname,
分数: item.score,
})),
);
console.log("原始排名数据:", JSON.parse(JSON.stringify(finalRankList.value)));
};
const startIntro = async () => {
if ($is_run_local()) {
mockHorses();
}
isGameRunning.value = true;
showResult.value = false;
finalRankList.value = [];
startGameLoop();
if ($is_run_local()) {
startMockBoost();
}
// DesignStage 倒计时: 开场3秒 + 游戏60秒
await designStage.value?.startCountdown(3, 60);
stopGame();
};
const horseAvatarStyle = (horse: Horse) => {
if (!horse.avatar) return {};
return { backgroundImage: `url(${horse.avatar})`, backgroundSize: "cover" };
};
onMounted(() => {
if ($is_run_local()) {
mockHorses();
isGameRunning.value = true;
startGameLoop();
startMockBoost();
}
});
onUnmounted(() => {
stopGame();
});
defineExpose({
startIntro,
});
</script>
<template>
<DesignStage ref="designStage">
<div class="screen-container" :class="{ paused: !isGameRunning }">
<div class="img-logo"></div>
<div class="img-title-bg"></div>
<div class="img-big-brum"></div>
<div class="bg-top">
<div class="bg-top-inner"></div>
<div class="bg-top-inner"></div>
</div>
<div class="bg-bottom">
<div class="bg-bottom-inner"></div>
<div class="bg-bottom-inner"></div>
</div>
<div
v-for="horse in horses"
:key="horse.id"
class="horse-wrapper"
:style="{
bottom: `${horse.startY}px`,
transform: `translateX(${horseTranslateX(horse.xPercent)}px)`,
}"
>
<div class="horse"></div>
<div class="horse-username">
<span class="username-text">{{ horse.nickname }}</span>
</div>
<div class="horse-avatar" :style="horseAvatarStyle(horse)"></div>
</div>
<div v-if="showResult" class="result-overlay">
<div class="result-mask"></div>
<div class="result-bg">
<!-- 排名列表 -->
<div class="rank-list">
<div
v-for="item in finalRankList"
:key="item.userid"
class="rank-row"
:class="{ 'rank-top-3': item.rank <= 3 }"
>
<span class="rank-num">{{ item.rank }}</span>
<div class="rank-avatar-wrap">
<div
class="rank-avatar"
:style="item.avatar ? { backgroundImage: `url(${item.avatar})`, backgroundSize: 'cover' } : {}"
></div>
</div>
<span class="rank-nickname">{{ item.nickname }}</span>
<span class="rank-score">{{ item.score }}</span>
</div>
<div v-if="finalRankList.length === 0" class="rank-empty">暂无排名数据</div>
</div>
</div>
<div class="btn-next"></div>
</div>
</div>
</DesignStage>
</template>
<style scoped>
.screen-container {
width: 1920px;
height: 1080px;
position: relative;
overflow: hidden;
}
.img-logo {
background: v-bind("imageUrls.logo");
background-size: cover;
width: 428px;
height: 77px;
position: absolute;
left: 37px;
top: 82px;
z-index: 20;
}
.img-title-bg {
background: v-bind("imageUrls.titleBg");
background-size: cover;
width: 743px;
height: 164.2px;
position: absolute;
left: 50%;
top: 16px;
transform: translateX(-50%);
z-index: 20;
}
.img-big-brum {
background: v-bind("imageUrls.bigBrum");
background-size: cover;
width: 161px;
height: 150px;
position: absolute;
right: 59px;
top: 392px;
z-index: 2;
}
.screen-container.paused .bg-top,
.screen-container.paused .bg-bottom,
.screen-container.paused .horse {
animation-play-state: paused;
}
.bg-top {
width: 7680px;
height: 1080px;
position: absolute;
top: 0;
left: 0;
display: flex;
animation: bg-scroll-left 20s linear infinite;
z-index: 1;
}
.bg-top-inner {
width: 3840px;
height: 1080px;
background: url("@/assets/images/game4/bg-top.svg") 0 0 / 3840px 1080px
no-repeat;
flex-shrink: 0;
}
.bg-bottom {
width: 7680px;
height: 577px;
position: absolute;
bottom: 0;
left: 0;
display: flex;
animation: bg-scroll-left 20s linear infinite;
z-index: 2;
}
.bg-bottom-inner {
width: 3840px;
height: 577px;
background: url("@/assets/images/game4/bg-bottom.svg") 0 0 / 3840px 577px
no-repeat;
flex-shrink: 0;
}
.horse-wrapper {
position: absolute;
left: 0;
transition: transform 0.2s linear;
will-change: transform;
z-index: 10;
}
.horse {
width: 120px;
height: 109px;
background: url("@/assets/images/game4/horse.png") -17px 0 / 1472px 109px
no-repeat;
animation: horse-run 0.6s steps(12) infinite;
}
.horse-username {
background: v-bind("imageUrls.username");
background-size: contain;
background-repeat: no-repeat;
width: 100px;
height: 40px;
position: absolute;
top: 10px;
left: -24px;
display: flex;
align-items: center;
justify-content: center;
}
.username-text {
position: absolute;
top: 1px;
color: #000;
font-size: 14px;
font-weight: bold;
}
.horse-avatar {
background: v-bind("imageUrls.avatar");
background-size: cover;
width: 30px;
height: 30px;
position: absolute;
top: -4px;
left: -22px;
border-radius: 50%;
}
@keyframes bg-scroll-left {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-3840px);
}
}
@keyframes horse-run {
0% {
background-position: -17px 0;
}
100% {
background-position: -1457px 0;
}
}
.result-overlay {
width: 1920px;
height: 1080px;
position: absolute;
top: 0;
left: 0;
z-index: 100;
display: flex;
align-items: center;
justify-content: center;
}
.result-mask {
width: 1920px;
height: 1080px;
position: absolute;
top: 0;
left: 0;
background: rgba(0, 0, 0, 0.5);
z-index: -1;
}
.result-bg {
position: absolute;
top: 96px;
width: 1270px;
height: 717px;
background: v-bind("imageUrls.resultBg") center / cover no-repeat;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
}
.rank-list {
width: 90%;
max-height: 500px;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 8px;
padding: 20px 40px;
}
.rank-row {
display: flex;
align-items: center;
height: 52px;
background: rgba(255, 255, 255, 0.08);
border-radius: 8px;
padding: 0 16px;
gap: 12px;
}
.rank-row.rank-top-3 {
background: rgba(255, 215, 0, 0.15);
border: 1px solid rgba(255, 215, 0, 0.3);
}
.rank-num {
width: 36px;
height: 36px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.2);
color: #fff;
font-size: 18px;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.rank-avatar-wrap {
width: 40px;
height: 40px;
border-radius: 50%;
overflow: hidden;
flex-shrink: 0;
background: v-bind("imageUrls.avatar") center / cover no-repeat;
}
.rank-avatar {
width: 100%;
height: 100%;
border-radius: 50%;
}
.rank-nickname {
flex: 1;
color: #fff;
font-size: 22px;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.rank-score {
color: #ffcf44;
font-size: 20px;
font-weight: bold;
flex-shrink: 0;
}
.rank-empty {
color: rgba(255, 255, 255, 0.5);
font-size: 24px;
text-align: center;
padding: 40px;
}
.btn-next {
position: absolute;
bottom: 100px;
left: 820px;
width: 316px;
height: 105px;
cursor: pointer;
background: v-bind("imageUrls.next") center / cover no-repeat;
z-index: 2;
}
</style>
<script setup lang="ts">
import { ref, watch } from "vue";
import DesignStage from "../../../components/DesignStage.vue";
import type Player from "../../../commons/player.ts";
import { cssAssetUrl } from "@/commons/assets.ts";
const props = defineProps<{
rankList: Player[];
}>();
const emit = defineEmits<{
next: [];
}>();
const FINAL_RANK_LIMIT = 10;
const imageUrls = {
bg: cssAssetUrl("game4/bg.png"),
logo: cssAssetUrl("game1/logo.png"),
title: cssAssetUrl("game1/title3.png"),
title2: cssAssetUrl("game1/title4.png"),
podium: cssAssetUrl("game1/podium.png"),
fireworks: cssAssetUrl("game1/fireworks.png"),
avatar: cssAssetUrl("avatar.png"),
guan1: cssAssetUrl("game1/guan1.png"),
pai1: cssAssetUrl("game1/pai1.png"),
guan2: cssAssetUrl("game1/guan2.png"),
pai2: cssAssetUrl("game1/pai2.png"),
guan3: cssAssetUrl("game1/guan3.png"),
pai3: cssAssetUrl("game1/pai3.png"),
rankIcon: cssAssetUrl("game1/no-icon.png"),
avatarAnimation: cssAssetUrl("avatar_animation.png"),
next: cssAssetUrl("game1/next-1.png"),
};
const emptyPlayer = (index: number): Player => ({
active: false,
wechat_id: `empty-${index}`,
nickname: "虚位以待",
avatar: "",
score: 0,
});
const list = ref<Player[]>(
Array.from({ length: FINAL_RANK_LIMIT }, (_, index) => emptyPlayer(index)),
);
const updateFinalRank = (rankList: Player[]) => {
list.value = Array.from(
{ length: FINAL_RANK_LIMIT },
(_, index) => rankList[index] ?? emptyPlayer(index),
);
};
watch(
() => props.rankList,
(rankList) => updateFinalRank(rankList),
{ immediate: true, deep: true },
);
</script>
<template>
<DesignStage>
<div class="bg">
<div class="img-logo"></div>
<div class="img-title"></div>
<div class="img-title2"></div>
<div class="podium">
<div class="rank-no1">
<div class="gu-burst"></div>
<div class="avatar"></div>
<div class="nickname">{{ list[0]?.nickname }}</div>
<div class="guan"></div>
<div class="pai"></div>
</div>
<div class="rank-no2">
<div class="gu-burst"></div>
<div class="avatar"></div>
<div class="nickname">{{ list[1]?.nickname }}</div>
<div class="guan"></div>
<div class="pai"></div>
</div>
<div class="rank-no3">
<div class="gu-burst"></div>
<div class="avatar"></div>
<div class="nickname">{{ list[2]?.nickname }}</div>
<div class="guan"></div>
<div class="pai"></div>
</div>
</div>
<div class="rank-container">
<div
v-for="(item, index) in list.slice(3)"
:key="item.userid || item.wechat_id || `rank-${index}`"
>
<div class="no-icon">{{ index + 4 }}</div>
<div>
<div class="img-avatar-container">
<div class="img-avatar"></div>
</div>
<div class="txt-nickname">{{ item.nickname }}</div>
</div>
</div>
</div>
<div class="btn-next" @click="emit('next')"></div>
</div>
</DesignStage>
</template>
<style scoped>
.bg {
width: 1920px;
height: 1080px;
background: v-bind("imageUrls.bg") center / cover no-repeat;
display: flex;
flex-direction: column;
overflow: hidden;
position: relative;
}
.img-logo {
background: v-bind("imageUrls.logo");
background-size: cover;
width: 428px;
height: 77px;
position: absolute;
left: 37px;
top: 82px;
}
.img-title {
background: v-bind("imageUrls.title");
width: 967px;
height: 122px;
margin: 0 auto;
margin-top: 37px;
}
.img-title2 {
background: v-bind("imageUrls.title2") no-repeat center;
width: 457px;
height: 57px;
margin: 0 auto;
margin-top: 37px;
}
.podium {
background: v-bind("imageUrls.podium") no-repeat center;
width: 1347px;
height: 269px;
position: absolute;
top: 427px;
left: 287px;
.gu-burst {
width: 200px;
height: 200px;
position: absolute;
z-index: 1;
border-radius: 50%;
opacity: 1;
transform: scale(0.6);
transform-origin: center center;
background: v-bind("imageUrls.fireworks") center / cover no-repeat;
pointer-events: none;
animation: gu-burst-expand 1.2s ease-out infinite;
}
.rank-no1 {
position: relative;
.gu-burst {
left: 580px;
top: -200px;
}
.avatar {
background: v-bind("imageUrls.avatar") center / cover no-repeat;
width: 120px;
height: 120px;
border-radius: 60px;
position: absolute;
left: 610px;
top: -136px;
}
.nickname {
width: 167px;
height: 46px;
background: #ffcf44;
color: white;
text-align: center;
line-height: 46px;
position: absolute;
left: 590px;
top: -25px;
z-index: 1;
border-radius: 23px;
}
.guan {
background: v-bind("imageUrls.guan1");
width: 64px;
height: 64px;
position: absolute;
left: 580px;
top: -153px;
}
.pai {
background: v-bind("imageUrls.pai1");
width: 212px;
height: 200px;
position: absolute;
left: 570px;
top: 40px;
}
}
.rank-no2 {
position: relative;
.gu-burst {
left: 140px;
top: -170px;
}
.avatar {
background: v-bind("imageUrls.avatar") center / cover no-repeat;
width: 120px;
height: 120px;
border-radius: 60px;
position: absolute;
left: 180px;
top: -110px;
}
.nickname {
width: 167px;
height: 46px;
background: #ca9600;
color: white;
text-align: center;
line-height: 46px;
position: absolute;
left: 157px;
top: 2px;
z-index: 1;
border-radius: 23px;
}
.guan {
background: v-bind("imageUrls.guan2") no-repeat center;
width: 96px;
height: 96px;
position: absolute;
left: 134px;
top: -144px;
}
.pai {
background: v-bind("imageUrls.pai2") no-repeat center;
width: 212px;
height: 200px;
position: absolute;
left: 140px;
top: 50px;
}
}
.rank-no3 {
position: relative;
.gu-burst {
left: 1020px;
top: -170px;
}
.avatar {
background: v-bind("imageUrls.avatar") center / cover no-repeat;
width: 120px;
height: 120px;
border-radius: 60px;
position: absolute;
left: 1046px;
top: -110px;
}
.nickname {
width: 167px;
height: 46px;
background: #e2e2e2;
color: #afafaf;
text-align: center;
line-height: 46px;
position: absolute;
left: 1028px;
top: 2px;
z-index: 1;
border-radius: 23px;
}
.guan {
background: v-bind("imageUrls.guan3") no-repeat center;
width: 96px;
height: 96px;
position: absolute;
left: 1003px;
top: -146px;
}
.pai {
background: v-bind("imageUrls.pai3") no-repeat center;
width: 212px;
height: 200px;
position: absolute;
right: 130px;
top: 50px;
}
}
}
.rank-container {
display: flex;
align-items: center;
width: 1270px;
height: 115px;
position: absolute;
bottom: 243px;
left: 325px;
> div {
flex: 1;
display: grid;
width: 100px;
height: 100%;
.no-icon {
background: v-bind("imageUrls.rankIcon") no-repeat center;
width: 40px;
height: 40px;
position: absolute;
text-align: center;
line-height: 40px;
color: white;
font-weight: bold;
}
.img-avatar-container {
position: relative;
margin: 0 auto;
margin-top: 10px;
width: 72px;
height: 72px;
border-radius: 36px;
}
.img-avatar-container::before {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
background: v-bind("imageUrls.avatarAnimation");
animation: avatar-rotate 10s linear infinite;
}
.img-avatar {
position: relative;
top: 6px;
z-index: 1;
margin: 0 auto;
width: 60px;
height: 60px;
border-radius: 30px;
background: v-bind("imageUrls.avatar");
}
.txt-nickname {
color: white;
font-size: 20px;
text-align: center;
}
}
}
.btn-next {
position: absolute;
bottom: 100px;
left: 820px;
width: 316px;
height: 105px;
cursor: pointer;
background: v-bind("imageUrls.next") center / cover no-repeat;
}
</style>
...@@ -3,6 +3,7 @@ import { $read } from '@/commons/utils' ...@@ -3,6 +3,7 @@ import { $read } from '@/commons/utils'
import Login from '@/pages/Login.vue' import Login from '@/pages/Login.vue'
import Game1 from '@/pages/game1/Game.vue' import Game1 from '@/pages/game1/Game.vue'
import Game6 from '@/pages/game6/Game.vue' import Game6 from '@/pages/game6/Game.vue'
import Game4 from '@/pages/game4/Game4.vue'
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(), history: createWebHashHistory(),
...@@ -25,9 +26,17 @@ const router = createRouter({ ...@@ -25,9 +26,17 @@ const router = createRouter({
}, },
}, },
{ {
path: '/game4',
name: 'Game4',
component: Game1,
meta: {
requiresAuth: true,
},
},
{
path: '/game6', path: '/game6',
name: 'Game6', name: 'Game6',
component: Game6, component: Game1,
meta: { meta: {
requiresAuth: true, requiresAuth: true,
}, },
......
...@@ -37,6 +37,7 @@ export default defineConfig(({ command }) => ({ ...@@ -37,6 +37,7 @@ export default defineConfig(({ command }) => ({
copyImageAssets(), copyImageAssets(),
], ],
server: { server: {
host: true,
proxy: { proxy: {
'/socket.io': { '/socket.io': {
target: 'http://localhost:8082', target: 'http://localhost:8082',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment