From 163290d8415b825a12b1dac3f576382abf110981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Fri, 1 Mar 2024 03:03:44 +0300 Subject: [PATCH 001/303] Stash Co-authored-by: Vitaly --- .../examples/_FragmentShader.frag | 7 + prismarine-viewer/examples/_VertexShader.vert | 11 + prismarine-viewer/examples/playground.ts | 346 ++++++++++++------ prismarine-viewer/viewer/lib/viewer.ts | 35 +- prismarine-viewer/viewer/lib/worldrenderer.ts | 154 ++++---- 5 files changed, 345 insertions(+), 208 deletions(-) create mode 100644 prismarine-viewer/examples/_FragmentShader.frag create mode 100644 prismarine-viewer/examples/_VertexShader.vert diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag new file mode 100644 index 000000000..f99b66f7b --- /dev/null +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -0,0 +1,7 @@ +varying vec2 vUv; + +void main() { + + gl_FragColor = vec4(0.5f,5.0f,0.0f,1.0f); + +} \ No newline at end of file diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert new file mode 100644 index 000000000..17b161251 --- /dev/null +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -0,0 +1,11 @@ +layout (location = 0) in vec3 aPos; + +varying vec2 vUv; + +void main() { + + vUv = uv; + + gl_Position = vec4( aPos, 1.0 ); + +} \ No newline at end of file diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index b31c082e5..69c3dada4 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -33,13 +33,13 @@ const params = { metadata: 0, supportBlock: false, entity: '', - removeEntity () { + removeEntity() { this.entity = '' }, entityRotate: false, camera: '', - playSound () { }, - blockIsomorphicRenderBundle () { } + playSound() { }, + blockIsomorphicRenderBundle() { } } const qs = new URLSearchParams(window.location.search) @@ -59,7 +59,7 @@ const setQs = () => { let ignoreResize = false -async function main () { +async function main() { let continuousRender = false const { version } = params @@ -126,20 +126,96 @@ async function main () { const worldView = new WorldDataEmitter(world, viewDistance, targetPos) - // Create three.js context, add to page - const renderer = new THREE.WebGLRenderer({ alpha: true, ...localStorage['renderer'] }) - renderer.setPixelRatio(window.devicePixelRatio || 1) - renderer.setSize(window.innerWidth, window.innerHeight) - document.body.appendChild(renderer.domElement) + const canvas = document.createElement('canvas') + const gl = canvas.getContext('webgl2')! + + const program = createProgram(gl, ` #version 300 es + precision highp float; + layout (location = 0) in vec3 aPos; + void main() + { + gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0f); + } + `, `#version 300 es + precision highp float; + out vec4 FragColor; + void main() + { + FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); + } + + + `) + + let vertices = new Float32Array([ + 0.5, 0.5, 0.0, // top right + 0.5, -0.5, 0.0, // bottom right + -0.5, -0.5, 0.0, // bottom left + -0.5, 0.5, 0.0 // top left + ]) + let indices = new Uint8Array([ // note that we start from 0! + 0, 1, 3, // first Triangle + 1, 2, 3 // second Triangle + ]) + let VBO, VAO, EBO + VAO = gl.createVertexArray(); + VBO = gl.createBuffer(); + EBO = gl.createBuffer(); + + gl.bindVertexArray(VAO); + gl.bindBuffer(gl.ARRAY_BUFFER, VBO) + gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) + + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) + + new THREE.BufferAttribute(vertices, 3) + gl.vertexAttribPointer(0,3,gl.FLOAT, false, 0 , 0) + gl.enableVertexAttribArray(0) + + + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindVertexArray(null) + + //gl.attachShader(program, program) + + //gl.clearColor(0, 0, 0, 1) + //gl.clear(gl.COLOR_BUFFER_BIT) + document.body.appendChild(canvas) + + //gl.createVertexArray + + //const model = + //gl. + //gl.texImage2D() + // loop + const loop = () => { + gl.canvas.width = window.innerWidth + gl.canvas.height = window.innerHeight + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) + + + gl.clear(gl.COLOR_BUFFER_BIT) + gl.clearColor(0.5, 0, 0, 0); + gl.useProgram(program) + gl.bindVertexArray(VAO) + gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0); + + + requestAnimationFrame(loop) + //gl.Swa + } + loop() + + // gl.deleteVertexArray(VAO); + // gl.deleteBuffer(VBO) + // gl.deleteBuffer(EBO) + // gl.deleteProgram(program) + + return // Create viewer const viewer = new Viewer(renderer, 1) - viewer.entities.setDebugMode('basic') - viewer.setVersion(version) - viewer.entities.onSkinUpdate = () => { - viewer.update() - viewer.render() - } viewer.listen(worldView) // Load chunks @@ -147,115 +223,115 @@ async function main () { window['worldView'] = worldView window['viewer'] = viewer - params.blockIsomorphicRenderBundle = () => { - const canvas = renderer.domElement - const onlyCurrent = !confirm('Ok - render all blocks, Cancel - render only current one') - const sizeRaw = prompt('Size', '512') - if (!sizeRaw) return - const size = parseInt(sizeRaw) - // const size = 512 - - ignoreResize = true - canvas.width = size - canvas.height = size - renderer.setSize(size, size) - - //@ts-ignore - viewer.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 10) - viewer.scene.background = null - - const rad = THREE.MathUtils.degToRad(-120) - viewer.directionalLight.position.set( - Math.cos(rad), - Math.sin(rad), - 0.2 - ).normalize() - viewer.directionalLight.intensity = 1 - - const cameraPos = targetPos.offset(2, 2, 2) - const pitch = THREE.MathUtils.degToRad(-30) - const yaw = THREE.MathUtils.degToRad(45) - viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') - // viewer.camera.lookAt(center.x + 0.5, center.y + 0.5, center.z + 0.5) - viewer.camera.position.set(cameraPos.x + 1, cameraPos.y + 0.5, cameraPos.z + 1) - - const allBlocks = mcData.blocksArray.map(b => b.name) - // const allBlocks = ['stone', 'warped_slab'] - - let blockCount = 1 - let blockName = allBlocks[0] - - const updateBlock = () => { - - //@ts-ignore - // viewer.setBlockStateId(targetPos, mcData.blocksByName[blockName].minStateId) - params.block = blockName - // todo cleanup (introduce getDefaultState) - onUpdate.block() - applyChanges(false, true) - } - viewer.waitForChunksToRender().then(async () => { - // wait for next macro task - await new Promise(resolve => { - setTimeout(resolve, 0) - }) - if (onlyCurrent) { - viewer.render() - onWorldUpdate() - } else { - // will be called on every render update - viewer.world.renderUpdateEmitter.addListener('update', onWorldUpdate) - updateBlock() - } - }) + // params.blockIsomorphicRenderBundle = () => { + // const canvas = renderer.domElement + // const onlyCurrent = !confirm('Ok - render all blocks, Cancel - render only current one') + // const sizeRaw = prompt('Size', '512') + // if (!sizeRaw) return + // const size = parseInt(sizeRaw) + // // const size = 512 + + // ignoreResize = true + // canvas.width = size + // canvas.height = size + // renderer.setSize(size, size) + + // //@ts-ignore + // viewer.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 10) + // viewer.scene.background = null + + // const rad = THREE.MathUtils.degToRad(-120) + // viewer.directionalLight.position.set( + // Math.cos(rad), + // Math.sin(rad), + // 0.2 + // ).normalize() + // viewer.directionalLight.intensity = 1 + + // const cameraPos = targetPos.offset(2, 2, 2) + // const pitch = THREE.MathUtils.degToRad(-30) + // const yaw = THREE.MathUtils.degToRad(45) + // viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') + // // viewer.camera.lookAt(center.x + 0.5, center.y + 0.5, center.z + 0.5) + // viewer.camera.position.set(cameraPos.x + 1, cameraPos.y + 0.5, cameraPos.z + 1) + + // const allBlocks = mcData.blocksArray.map(b => b.name) + // // const allBlocks = ['stone', 'warped_slab'] + + // let blockCount = 1 + // let blockName = allBlocks[0] + + // const updateBlock = () => { + + // //@ts-ignore + // // viewer.setBlockStateId(targetPos, mcData.blocksByName[blockName].minStateId) + // params.block = blockName + // // todo cleanup (introduce getDefaultState) + // onUpdate.block() + // applyChanges(false, true) + // } + // viewer.waitForChunksToRender().then(async () => { + // // wait for next macro task + // await new Promise(resolve => { + // setTimeout(resolve, 0) + // }) + // if (onlyCurrent) { + // viewer.render() + // onWorldUpdate() + // } else { + // // will be called on every render update + // viewer.world.renderUpdateEmitter.addListener('update', onWorldUpdate) + // updateBlock() + // } + // }) - const zip = new JSZip() - zip.file('description.txt', 'Generated with prismarine-viewer') + // const zip = new JSZip() + // zip.file('description.txt', 'Generated with prismarine-viewer') - const end = async () => { - // download zip file + // const end = async () => { + // // download zip file - const a = document.createElement('a') - const blob = await zip.generateAsync({ type: 'blob' }) - const dataUrlZip = URL.createObjectURL(blob) - a.href = dataUrlZip - a.download = 'blocks_render.zip' - a.click() - URL.revokeObjectURL(dataUrlZip) - console.log('end') + // const a = document.createElement('a') + // const blob = await zip.generateAsync({ type: 'blob' }) + // const dataUrlZip = URL.createObjectURL(blob) + // a.href = dataUrlZip + // a.download = 'blocks_render.zip' + // a.click() + // URL.revokeObjectURL(dataUrlZip) + // console.log('end') - viewer.world.renderUpdateEmitter.removeListener('update', onWorldUpdate) - } + // viewer.world.renderUpdateEmitter.removeListener('update', onWorldUpdate) + // } - async function onWorldUpdate () { - // await new Promise(resolve => { - // setTimeout(resolve, 50) - // }) - const dataUrl = canvas.toDataURL('image/png') + // async function onWorldUpdate () { + // // await new Promise(resolve => { + // // setTimeout(resolve, 50) + // // }) + // const dataUrl = canvas.toDataURL('image/png') - zip.file(`${blockName}.png`, dataUrl.split(',')[1], { base64: true }) + // zip.file(`${blockName}.png`, dataUrl.split(',')[1], { base64: true }) - if (onlyCurrent) { - end() - } else { - nextBlock() - } - } - const nextBlock = async () => { - blockName = allBlocks[blockCount++] - console.log(allBlocks.length, '/', blockCount, blockName) - if (blockCount % 5 === 0) { - await new Promise(resolve => { - setTimeout(resolve, 100) - }) - } - if (blockName) { - updateBlock() - } else { - end() - } - } - } + // if (onlyCurrent) { + // end() + // } else { + // nextBlock() + // } + // } + // const nextBlock = async () => { + // blockName = allBlocks[blockCount++] + // console.log(allBlocks.length, '/', blockCount, blockName) + // if (blockCount % 5 === 0) { + // await new Promise(resolve => { + // setTimeout(resolve, 100) + // }) + // } + // if (blockName) { + // updateBlock() + // } else { + // end() + // } + // } + // } // const jsonData = await fetch('https://bluecolored.de/bluemap/maps/overworld/tiles/0/x-2/2/z1/6.json?584662').then(r => r.json()) @@ -315,7 +391,7 @@ async function main () { id: 'id', name: params.entity, pos: targetPos.offset(0.5, 1, 0.5), width: 1, height: 1, username: localStorage.testUsername, yaw: Math.PI, pitch: 0 }) const enableSkeletonDebug = (obj) => { - const {children, isSkeletonHelper} = obj + const { children, isSkeletonHelper } = obj if (!Array.isArray(children)) return if (isSkeletonHelper) { obj.visible = true @@ -333,7 +409,7 @@ async function main () { } const onUpdate = { - block () { + block() { metadataFolder.destroy() const block = mcData.blocksByName[params.block] if (!block) return @@ -376,7 +452,7 @@ async function main () { } metadataFolder.open() }, - entity () { + entity() { continuousRender = params.entity === 'player' entityUpdateShared() if (!params.entity) return @@ -396,7 +472,7 @@ async function main () { // entityRotationFolder.add(params, 'entityRotate') // entityRotationFolder.open() }, - supportBlock () { + supportBlock() { viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) } } @@ -515,3 +591,31 @@ async function main () { }, { capture: true }) } main() + +export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { + const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { + const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' + const shader = gl.createShader(type)! + gl.shaderSource(shader, source) + gl.compileShader(shader) + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) + if (!success) { + const info = gl.getShaderInfoLog(shader) + gl.deleteShader(shader) + throw new Error(`Shader ${shaderName} compile error: ` + info) + } + return shader + } + + const program = gl.createProgram()! + gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) + gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) + gl.linkProgram(program) + const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) + if (!linkSuccess) { + const info = gl.getProgramInfoLog(program) + gl.deleteProgram(program) + throw new Error('Program link error: ' + info) + } + return program +} \ No newline at end of file diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 02888293a..d4c4f066f 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -7,7 +7,9 @@ import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' +import { WorldHolder } from './worldrenderer' +THREE.ShaderChunk export class Viewer { scene: THREE.Scene ambientLight: THREE.AmbientLight @@ -28,17 +30,10 @@ export class Viewer { fxaaPass: ShaderPass renderPass: RenderPass - constructor(public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { - this.scene = new THREE.Scene() - this.resetScene() - if (this.enableFXAA) { - this.enableFxaaScene() - } - this.world = new WorldRenderer(this.scene, numWorkers) - this.entities = new Entities(this.scene) - this.primitives = new Primitives(this.scene, this.camera) - - this.domElement = renderer.domElement + constructor(public holder: WorldHolder, numWorkers?: number, public enableFXAA = false) { + this.world = new WorldRenderer(holder, numWorkers) + // this.entities = new Entities(this.scene) + // this.primitives = new Primitives(this.scene, this.camera) } resetScene () { @@ -187,15 +182,15 @@ export class Viewer { tweenJs.update() } - render () { - if (this.composer) { - this.renderPass.camera = this.camera - this.composer.render() - } else { - this.renderer.render(this.scene, this.camera) - } - this.entities.render() - } + // render () { + // if (this.composer) { + // this.renderPass.camera = this.camera + // this.composer.render() + // } else { + // this.renderer.render(this.scene, this.camera) + // } + // this.entities.render() + // } async waitForChunksToRender () { await this.world.waitForChunksToRender() diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index bc8f55f9a..977fdfad1 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -15,6 +15,23 @@ function mod (x, n) { return ((x % n) + n) % n } +export type WorldHolder = { + add(opt: { + geometry: { + positions: Float32Array, + normals: Float32Array, + colors: Float32Array, + uvs: Float32Array, + indices: Uint32Array, + sx: number, + sy: number, + sz: number, + signs: Record + } + }) + remove(opt: { key: string }) +} + export class WorldRenderer { worldConfig = { minY: 0, worldHeight: 256 } material = new THREE.MeshLambertMaterial({ vertexColors: true, transparent: true, alphaTest: 0.1 }) @@ -43,7 +60,7 @@ export class WorldRenderer { promisesQueue = [] as Promise[] - constructor(public scene: THREE.Scene, numWorkers = 4) { + constructor(public holder: WorldHolder, numWorkers = 4) { // init workers for (let i = 0; i < numWorkers; i++) { // Node environment needs an absolute path, but browser needs the url of the file @@ -58,12 +75,13 @@ export class WorldRenderer { setTimeout(resolve, 0) }) if (data.type === 'geometry') { - let object: THREE.Object3D = this.sectionObjects[data.key] - if (object) { - this.scene.remove(object) - dispose3(object) - delete this.sectionObjects[data.key] - } + // let object: THREE.Object3D = this.sectionObjects[data.key] + // if (object) { + // this.scene.remove(object) + // dispose3(object) + // delete this.sectionObjects[data.key] + // } + // if const chunkCoords = data.key.split(',') if (!this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || !data.geometry.positions.length || !this.active) return @@ -82,39 +100,41 @@ export class WorldRenderer { // } // } - const geometry = new THREE.BufferGeometry() - geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) - geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) - geometry.setAttribute('color', new THREE.BufferAttribute(data.geometry.colors, 3)) - geometry.setAttribute('uv', new THREE.BufferAttribute(data.geometry.uvs, 2)) - geometry.setIndex(data.geometry.indices) - - const mesh = new THREE.Mesh(geometry, this.material) - mesh.position.set(data.geometry.sx, data.geometry.sy, data.geometry.sz) - mesh.name = 'mesh' - object = new THREE.Group() - object.add(mesh) - const boxHelper = new THREE.BoxHelper(mesh, 0xffff00) - boxHelper.name = 'helper' - object.add(boxHelper) - object.name = 'chunk' - if (!this.showChunkBorders) { - boxHelper.visible = false - } - // should not compute it once - if (Object.keys(data.geometry.signs).length) { - for (const [posKey, { isWall, rotation }] of Object.entries(data.geometry.signs)) { - const [x, y, z] = posKey.split(',') - const signBlockEntity = this.blockEntities[posKey] - if (!signBlockEntity) continue - const sign = this.renderSign(new Vec3(+x, +y, +z), rotation, isWall, nbt.simplify(signBlockEntity)); - if (!sign) continue - object.add(sign) - } - } - this.sectionObjects[data.key] = object - this.updatePosDataChunk(data.key) - this.scene.add(object) + return + + // const geometry = new THREE.BufferGeometry() + // geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) + // geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) + // geometry.setAttribute('color', new THREE.BufferAttribute(data.geometry.colors, 3)) + // geometry.setAttribute('uv', new THREE.BufferAttribute(data.geometry.uvs, 2)) + // geometry.setIndex(data.geometry.indices) + + // const mesh = new THREE.Mesh(geometry, this.material) + // mesh.position.set(data.geometry.sx, data.geometry.sy, data.geometry.sz) + // mesh.name = 'mesh' + // object = new THREE.Group() + // object.add(mesh) + // const boxHelper = new THREE.BoxHelper(mesh, 0xffff00) + // boxHelper.name = 'helper' + // object.add(boxHelper) + // object.name = 'chunk' + // if (!this.showChunkBorders) { + // boxHelper.visible = false + // } + // // should not compute it once + // if (Object.keys(data.geometry.signs).length) { + // for (const [posKey, { isWall, rotation }] of Object.entries(data.geometry.signs)) { + // const [x, y, z] = posKey.split(',') + // const signBlockEntity = this.blockEntities[posKey] + // if (!signBlockEntity) continue + // const sign = this.renderSign(new Vec3(+x, +y, +z), rotation, isWall, nbt.simplify(signBlockEntity)); + // if (!sign) continue + // object.add(sign) + // } + // } + // this.sectionObjects[data.key] = object + // this.updatePosDataChunk(data.key) + // this.scene.add(object) } else if (data.type === 'sectionFinished') { this.sectionsOutstanding.delete(data.key) this.renderUpdateEmitter.emit('update') @@ -230,19 +250,19 @@ export class WorldRenderer { } setVersion (version, texturesVersion = version) { - this.version = version - this.texturesVersion = texturesVersion - this.resetWorld() - this.active = true - - const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] - for (const worker of this.workers) { - const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) - mcData.version = JSON.parse(JSON.stringify(mcData.version)) - worker.postMessage({ type: 'mcData', mcData, version: this.version }) - } + // this.version = version + // this.texturesVersion = texturesVersion + // this.resetWorld() + // this.active = true + + // const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] + // for (const worker of this.workers) { + // const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) + // mcData.version = JSON.parse(JSON.stringify(mcData.version)) + // worker.postMessage({ type: 'mcData', mcData, version: this.version }) + // } - this.updateTexturesData() + // this.updateTexturesData() } updateTexturesData () { @@ -308,22 +328,22 @@ export class WorldRenderer { } removeColumn (x, z) { - this.cleanChunkTextures(x, z) + // this.cleanChunkTextures(x, z) - delete this.loadedChunks[`${x},${z}`] - for (const worker of this.workers) { - worker.postMessage({ type: 'unloadChunk', x, z }) - } - for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { - this.setSectionDirty(new Vec3(x, y, z), false) - const key = `${x},${y},${z}` - const mesh = this.sectionObjects[key] - if (mesh) { - this.scene.remove(mesh) - dispose3(mesh) - } - delete this.sectionObjects[key] - } + // delete this.loadedChunks[`${x},${z}`] + // for (const worker of this.workers) { + // worker.postMessage({ type: 'unloadChunk', x, z }) + // } + // for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { + // this.setSectionDirty(new Vec3(x, y, z), false) + // const key = `${x},${y},${z}` + // const mesh = this.sectionObjects[key] + // if (mesh) { + // this.scene.remove(mesh) + // dispose3(mesh) + // } + // delete this.sectionObjects[key] + // } } setBlockStateId (pos, stateId) { From 1175d3fae99ff5b50f26550f1591a95467d77208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 6 Mar 2024 02:36:52 +0300 Subject: [PATCH 002/303] Working texture bindings --- prismarine-viewer/esbuild.mjs | 2 + .../examples/_FragmentShader.frag | 15 ++- prismarine-viewer/examples/_VertexShader.vert | 17 +-- prismarine-viewer/examples/playground.ts | 110 +++++++++++++----- 4 files changed, 106 insertions(+), 38 deletions(-) diff --git a/prismarine-viewer/esbuild.mjs b/prismarine-viewer/esbuild.mjs index 91b787db9..1be3ca498 100644 --- a/prismarine-viewer/esbuild.mjs +++ b/prismarine-viewer/esbuild.mjs @@ -52,6 +52,8 @@ const buildOptions = { metafile: true, loader: { '.png': 'dataurl', + '.vert': 'text', + '.frag': 'text' }, plugins: [ { diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index f99b66f7b..93477e147 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -1,7 +1,16 @@ -varying vec2 vUv; +#version 300 es +precision highp float; +out vec4 FragColor; -void main() { +in vec3 ourColor; +in vec2 TexCoord; - gl_FragColor = vec4(0.5f,5.0f,0.0f,1.0f); +// texture samplers +uniform sampler2D texture1; +uniform sampler2D texture2; +void main() +{ + // linearly interpolate between both textures (80% container, 20% awesomeface) + FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord),0.0); } \ No newline at end of file diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 17b161251..3325f6550 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -1,11 +1,14 @@ +#version 300 es layout (location = 0) in vec3 aPos; +layout (location = 1) in vec3 aColor; +layout (location = 2) in vec2 aTexCoord; -varying vec2 vUv; - -void main() { - - vUv = uv; - - gl_Position = vec4( aPos, 1.0 ); +out vec3 ourColor; +out vec2 TexCoord; +void main() +{ + gl_Position = vec4(aPos, 1.0); + ourColor = aColor; + TexCoord = vec2(aTexCoord.x, aTexCoord.y); } \ No newline at end of file diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 69c3dada4..1914e7961 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -13,6 +13,16 @@ import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' +//@ts-ignore +import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' +//@ts-ignore +import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.png' + +//@ts-ignore +import VertShader from './_VertexShader.vert' +//@ts-ignore +import FragShader from './_FragmentShader.frag' + globalThis.THREE = THREE //@ts-ignore require('three/examples/js/controls/OrbitControls') @@ -129,29 +139,13 @@ async function main() { const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2')! - const program = createProgram(gl, ` #version 300 es - precision highp float; - layout (location = 0) in vec3 aPos; - void main() - { - gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0f); - } - `, `#version 300 es - precision highp float; - out vec4 FragColor; - void main() - { - FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); - } - - - `) + const program = createProgram(gl,VertShader, FragShader) let vertices = new Float32Array([ - 0.5, 0.5, 0.0, // top right - 0.5, -0.5, 0.0, // bottom right - -0.5, -0.5, 0.0, // bottom left - -0.5, 0.5, 0.0 // top left + 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top right + 0.5, -0.5, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // bottom right + -0.5, -0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // bottom left + -0.5, 0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 ]) let indices = new Uint8Array([ // note that we start from 0! 0, 1, 3, // first Triangle @@ -169,14 +163,65 @@ async function main() { gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - new THREE.BufferAttribute(vertices, 3) - gl.vertexAttribPointer(0,3,gl.FLOAT, false, 0 , 0) + //new THREE.BufferAttribute(vertices, 3) + + gl.vertexAttribPointer(0,3,gl.FLOAT, false, 8 * 4, 0) gl.enableVertexAttribArray(0) + gl.vertexAttribPointer(1,3,gl.FLOAT, false, 8*4, 3*4) + gl.enableVertexAttribArray(1) + + gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) + gl.enableVertexAttribArray(2) + gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindVertexArray(null) + let image = new Image(); + // simple black white chess image 10x10 + image.src = Dirt + let image2 = new Image(); + // simple black white chess image 10x10 + image2.src = Stone + + console.log(image.src) + await new Promise((resolve) => { + image.onload = resolve + }) + await new Promise((resolve) => { + image2.onload = resolve + }) + + let texture1 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture1); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + //.tset texture fgl.ering paramegl.s + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image.width, image.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image); + //gl.generateMipmap(gl.TEXTURE_2D); + + let texture2 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + //.tset texture fgl.ering paramegl.s + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image2.width, image2.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image2); + //gl.generateMipmap(gl.TEXTURE_2D); + + gl.useProgram(program) + + gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); + gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); + //gl.attachShader(program, program) //gl.clearColor(0, 0, 0, 1) @@ -194,14 +239,20 @@ async function main() { gl.canvas.height = window.innerHeight gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - + gl.clearColor(0.1, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT) - gl.clearColor(0.5, 0, 0, 0); + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture1); + gl.activeTexture(gl.TEXTURE1); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + gl.useProgram(program) gl.bindVertexArray(VAO) gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0); - + requestAnimationFrame(loop) //gl.Swa } @@ -215,7 +266,7 @@ async function main() { return // Create viewer - const viewer = new Viewer(renderer, 1) + const viewer = new Viewer(null as any | null, 1) as any viewer.listen(worldView) // Load chunks @@ -575,7 +626,7 @@ async function main() { const { camera } = viewer viewer.camera.aspect = window.innerWidth / window.innerHeight viewer.camera.updateProjectionMatrix() - renderer.setSize(window.innerWidth, window.innerHeight) + // renderer.setSize(window.innerWidth, window.innerHeight) animate() } @@ -598,6 +649,7 @@ export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, const shader = gl.createShader(type)! gl.shaderSource(shader, source) gl.compileShader(shader) + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) if (!success) { const info = gl.getShaderInfoLog(shader) @@ -607,6 +659,8 @@ export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, return shader } + + const program = gl.createProgram()! gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) From 06b2f3bfa87a9b8d7f4171a24dc34994a864ad21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 6 Mar 2024 03:26:03 +0300 Subject: [PATCH 003/303] degrees_to_radians --- package.json | 3 +- prismarine-viewer/examples/playground.ts | 43 ++++++++++++++++++------ 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index f9cfe4627..cfbd6955e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0-dev", "description": "A minecraft client running in a browser", "scripts": { - "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node esbuild.mjs --watch", + "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node 4 --watch", "start-watch-script": "nodemon -w esbuild.mjs --watch", "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod", "check-build": "tsc && pnpm test-unit && pnpm build", @@ -52,6 +52,7 @@ "jszip": "^3.10.1", "lit": "^2.8.0", "lodash-es": "^4.17.21", + "math.gl": "^4.0.0", "minecraft-assets": "^1.12.2", "minecraft-data": "3.61.0", "net-browserify": "github:zardoy/prismarinejs-net-browserify", diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 1914e7961..dc058ceb3 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -12,6 +12,7 @@ import { loadScript } from '../viewer/lib/utils' import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' +import * as Mathgl from 'math.gl' //@ts-ignore import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' @@ -22,6 +23,8 @@ import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.pn import VertShader from './_VertexShader.vert' //@ts-ignore import FragShader from './_FragmentShader.frag' +import { WebGLUtils } from 'three/src/renderers/webgl/WebGLUtils' +import { transform } from 'esbuild' globalThis.THREE = THREE //@ts-ignore @@ -142,10 +145,10 @@ async function main() { const program = createProgram(gl,VertShader, FragShader) let vertices = new Float32Array([ - 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top right - 0.5, -0.5, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // bottom right - -0.5, -0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // bottom left - -0.5, 0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 + 0.5, 0.5, 0.0, 1.0, 1.0, // top right + 0.5, -0.5, 0.0, 1.0, 0.0, // bottom right + -0.5, -0.5, 0.0, 0.0, 0.0, // bottom left + -0.5, 0.5, 0.0, 0.0, 1.0 ]) let indices = new Uint8Array([ // note that we start from 0! 0, 1, 3, // first Triangle @@ -165,14 +168,14 @@ async function main() { //new THREE.BufferAttribute(vertices, 3) - gl.vertexAttribPointer(0,3,gl.FLOAT, false, 8 * 4, 0) + gl.vertexAttribPointer(0,3,gl.FLOAT, false, 5 * 4, 0) gl.enableVertexAttribArray(0) - gl.vertexAttribPointer(1,3,gl.FLOAT, false, 8*4, 3*4) + gl.vertexAttribPointer(1,2,gl.FLOAT, false, 5*4, 3*4) gl.enableVertexAttribArray(1) - gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) - gl.enableVertexAttribArray(2) + //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) + //gl.enableVertexAttribArray(2) gl.bindBuffer(gl.ARRAY_BUFFER, null); @@ -228,13 +231,16 @@ async function main() { //gl.clear(gl.COLOR_BUFFER_BIT) document.body.appendChild(canvas) + //console.log('webglUtils', webglUtils) + + //WebGLUtils. //gl.createVertexArray //const model = //gl. //gl.texImage2D() // loop - const loop = () => { + const loop = (performance) => { gl.canvas.width = window.innerWidth gl.canvas.height = window.innerHeight gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) @@ -246,8 +252,17 @@ async function main() { gl.bindTexture(gl.TEXTURE_2D, texture1); gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, texture2); - + let transform = Mathgl.Matrix4.IDENTITY + //transform = transform.translate([0.2,-0.5,0.0]) + //transform = transform.rotateXYZ([0,3,0]) + transform = transform.rotateAxis(0, [0,0,1]) + // glm::mat4 transform = glm::mat4(1.0f); // make sure to initialize matrix to identity matrix first + //transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f)); + //transform = glm::rotate(transform, (float)glfwGetTime(), glm::vec3(0.0f, 0.0f, 1.0f)); + console.log(transform) + gl.uniformMatrix4fv(gl.getUniformLocation(program, "transform"), false, transform); + // Mathgl gl.useProgram(program) gl.bindVertexArray(VAO) gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0); @@ -256,7 +271,7 @@ async function main() { requestAnimationFrame(loop) //gl.Swa } - loop() + loop(performance.now) // gl.deleteVertexArray(VAO); // gl.deleteBuffer(VBO) @@ -274,6 +289,12 @@ async function main() { window['worldView'] = worldView window['viewer'] = viewer + function degrees_to_radians(degrees) +{ + var pi = Math.PI; + return degrees * (pi/180); +} + // params.blockIsomorphicRenderBundle = () => { // const canvas = renderer.domElement // const onlyCurrent = !confirm('Ok - render all blocks, Cancel - render only current one') From b28f69c12677433608b9b1c7b62abca2b9ab24ec Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 18 Mar 2024 21:42:42 +0300 Subject: [PATCH 004/303] nice work by ilya --- package.json | 1 + pnpm-lock.yaml | 26 ++++++ prismarine-viewer/examples/_VertexShader.vert | 9 +- prismarine-viewer/examples/playground.ts | 84 ++++++++++--------- 4 files changed, 77 insertions(+), 43 deletions(-) diff --git a/package.json b/package.json index cfbd6955e..0900795c7 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "stats.js": "^0.17.0", "tabbable": "^6.2.0", "title-case": "3.x", + "twgl.js": "^5.5.4", "ua-parser-js": "^1.0.37", "valtio": "^1.11.1", "workbox-build": "^7.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6df7d660b..0e3d8e6f4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,6 +93,9 @@ importers: lodash-es: specifier: ^4.17.21 version: 4.17.21 + math.gl: + specifier: ^4.0.0 + version: 4.0.1 minecraft-assets: specifier: ^1.12.2 version: 1.12.2 @@ -141,6 +144,9 @@ importers: title-case: specifier: 3.x version: 3.0.3 + twgl.js: + specifier: ^5.5.4 + version: 5.5.4 ua-parser-js: specifier: ^1.0.37 version: 1.0.37 @@ -3187,6 +3193,16 @@ packages: - supports-color dev: false + /@math.gl/core@4.0.1: + resolution: {integrity: sha512-9IewNjR9V66o+gYIIq5agFoHy6ZT6DRpRGQBfsUpZz4glAqOjVt64he8GGzjpmqfT+kKT4qwQ7nQl/hZLF15qA==} + dependencies: + '@math.gl/types': 4.0.1 + dev: false + + /@math.gl/types@4.0.1: + resolution: {integrity: sha512-E9qBKAjVBiZD8Is7TbygiLGtYBP3GSLus6RUJSuzFQegdYXeVagvrs4UkBJxhrRAxw4crfH0Tq7IhTMKuuJNQw==} + dev: false + /@mdx-js/react@2.3.0(react@18.2.0): resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: @@ -10745,6 +10761,12 @@ packages: react: 18.2.0 dev: true + /math.gl@4.0.1: + resolution: {integrity: sha512-Yvw1HfmsDePxwhCBvGT8teyPN0mwxcxUaWLoDaRuZYxoUYa9HRg+6ywBS+yXopC0wIS9MFi+BCVKP8hdJpaJjw==} + dependencies: + '@math.gl/core': 4.0.1 + dev: false + /md5-file@4.0.0: resolution: {integrity: sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==} engines: {node: '>=6.0'} @@ -14158,6 +14180,10 @@ packages: /tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + /twgl.js@5.5.4: + resolution: {integrity: sha512-6kFOmijOpmblTN9CCwOTCxK4lPg7rCyQjLuub6EMOlEp89Ex6yUcsMjsmH7andNPL2NE3XmHdqHeP5gVKKPhxw==} + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 3325f6550..cc9d30837 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -6,9 +6,14 @@ layout (location = 2) in vec2 aTexCoord; out vec3 ourColor; out vec2 TexCoord; +//uniform mat4 transform; +uniform mat4 projection; +uniform mat4 model; +uniform mat4 view; + void main() { - gl_Position = vec4(aPos, 1.0); + gl_Position = projection * view * model * vec4(aPos, 1.0); ourColor = aColor; TexCoord = vec2(aTexCoord.x, aTexCoord.y); -} \ No newline at end of file +} diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index dc058ceb3..713abd3a8 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -12,7 +12,8 @@ import { loadScript } from '../viewer/lib/utils' import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' -import * as Mathgl from 'math.gl' +// import * as Mathgl from 'math.gl' +import { m4 } from 'twgl.js' //@ts-ignore import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' @@ -23,8 +24,6 @@ import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.pn import VertShader from './_VertexShader.vert' //@ts-ignore import FragShader from './_FragmentShader.frag' -import { WebGLUtils } from 'three/src/renderers/webgl/WebGLUtils' -import { transform } from 'esbuild' globalThis.THREE = THREE //@ts-ignore @@ -142,13 +141,14 @@ async function main() { const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2')! - const program = createProgram(gl,VertShader, FragShader) + const program = createProgram(gl,VertShader, FragShader) + const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000) let vertices = new Float32Array([ - 0.5, 0.5, 0.0, 1.0, 1.0, // top right - 0.5, -0.5, 0.0, 1.0, 0.0, // bottom right - -0.5, -0.5, 0.0, 0.0, 0.0, // bottom left - -0.5, 0.5, 0.0, 0.0, 1.0 + 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top right + 0.5, -0.5, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // bottom right + -0.5, -0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // bottom left + -0.5, 0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 ]) let indices = new Uint8Array([ // note that we start from 0! 0, 1, 3, // first Triangle @@ -168,14 +168,14 @@ async function main() { //new THREE.BufferAttribute(vertices, 3) - gl.vertexAttribPointer(0,3,gl.FLOAT, false, 5 * 4, 0) + gl.vertexAttribPointer(0,3,gl.FLOAT, false, 8 * 4, 0) gl.enableVertexAttribArray(0) - gl.vertexAttribPointer(1,2,gl.FLOAT, false, 5*4, 3*4) + gl.vertexAttribPointer(1,3,gl.FLOAT, false, 8*4, 3*4) gl.enableVertexAttribArray(1) - //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) - //gl.enableVertexAttribArray(2) + gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) + gl.enableVertexAttribArray(2) gl.bindBuffer(gl.ARRAY_BUFFER, null); @@ -195,9 +195,9 @@ async function main() { await new Promise((resolve) => { image2.onload = resolve }) - - let texture1 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture1); + + let texture1 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture1); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); @@ -208,8 +208,8 @@ async function main() { gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image.width, image.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image); //gl.generateMipmap(gl.TEXTURE_2D); - let texture2 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture2); + let texture2 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture2); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); @@ -231,15 +231,6 @@ async function main() { //gl.clear(gl.COLOR_BUFFER_BIT) document.body.appendChild(canvas) - //console.log('webglUtils', webglUtils) - - //WebGLUtils. - //gl.createVertexArray - - //const model = - //gl. - //gl.texImage2D() - // loop const loop = (performance) => { gl.canvas.width = window.innerWidth gl.canvas.height = window.innerHeight @@ -252,22 +243,32 @@ async function main() { gl.bindTexture(gl.TEXTURE_2D, texture1); gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, texture2); - let transform = Mathgl.Matrix4.IDENTITY - //transform = transform.translate([0.2,-0.5,0.0]) - - //transform = transform.rotateXYZ([0,3,0]) - transform = transform.rotateAxis(0, [0,0,1]) - // glm::mat4 transform = glm::mat4(1.0f); // make sure to initialize matrix to identity matrix first - //transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f)); + + const view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) + const projection = m4.perspective(45 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 100) + const model = m4.identity() + m4.rotateX(model, performance / 1000, model); + m4.rotateY(model, performance / 2500, model) + m4.translate(view, [0, 0, -10], view) + + + + //let transform = m4.identity() + // transform = m4.translate(transform, [0.5, 0.5, 0.0], transform) + //m4.axisRotate(transform, [0,1.0,0.0], performance/100, transform) + + // glm::mat4 transform = glm::mat4(1.0f); // make sure to initialize matrix to identity matrix first + //transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f)); //transform = glm::rotate(transform, (float)glfwGetTime(), glm::vec3(0.0f, 0.0f, 1.0f)); - console.log(transform) - gl.uniformMatrix4fv(gl.getUniformLocation(program, "transform"), false, transform); - // Mathgl + //gl.uniformMatrix4fv(gl.getUniformLocation(program, "transform"), false, transform); + gl.uniformMatrix4fv(gl.getUniformLocation(program, "projection"), false, projection); + gl.uniformMatrix4fv(gl.getUniformLocation(program, "model"), false, model); + gl.uniformMatrix4fv(gl.getUniformLocation(program, "view"), false, view); gl.useProgram(program) gl.bindVertexArray(VAO) gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0); - + requestAnimationFrame(loop) //gl.Swa } @@ -281,7 +282,7 @@ async function main() { return // Create viewer - const viewer = new Viewer(null as any | null, 1) as any + const viewer = new Viewer(null as any | null, 1) viewer.listen(worldView) // Load chunks @@ -440,6 +441,7 @@ async function main() { //@ts-ignore const controls = new globalThis.THREE.OrbitControls(viewer.camera, renderer.domElement) + viewer.camer controls.target.set(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) const cameraPos = targetPos.offset(2, 2, 2) @@ -670,7 +672,7 @@ export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, const shader = gl.createShader(type)! gl.shaderSource(shader, source) gl.compileShader(shader) - + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) if (!success) { const info = gl.getShaderInfoLog(shader) @@ -680,7 +682,7 @@ export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, return shader } - + const program = gl.createProgram()! gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) @@ -693,4 +695,4 @@ export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, throw new Error('Program link error: ' + info) } return program -} \ No newline at end of file +} From 6e84db0a7ad0770fb2e3bf542b0f4f369ae69dad Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 21 Mar 2024 02:56:32 +0300 Subject: [PATCH 005/303] make cubes undo viewer changes before merge --- .../examples/_FragmentShader.frag | 14 +- prismarine-viewer/examples/_VertexShader.vert | 13 +- prismarine-viewer/examples/playground.ts | 568 ++++++------------ prismarine-viewer/viewer/lib/worldrenderer.ts | 32 +- 4 files changed, 212 insertions(+), 415 deletions(-) diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index 93477e147..0a0bfa7fe 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -2,15 +2,19 @@ precision highp float; out vec4 FragColor; -in vec3 ourColor; in vec2 TexCoord; -// texture samplers uniform sampler2D texture1; uniform sampler2D texture2; +uniform vec2 uv; +uniform vec2 suv; + void main() { - // linearly interpolate between both textures (80% container, 20% awesomeface) - FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord),0.0); -} \ No newline at end of file + vec2 position = vec2(1, 1); // I assume gets tile at (1, 1) since the size of the tiles are 1/16 + vec2 size = vec2(1/64, 1/64); + vec2 coord = uv + TexCoord * (1.0f/64.0f); + + FragColor = mix(texture(texture1, coord), texture(texture2, coord), 1.0); +} diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index cc9d30837..ce5fee718 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -1,19 +1,16 @@ #version 300 es layout (location = 0) in vec3 aPos; -layout (location = 1) in vec3 aColor; -layout (location = 2) in vec2 aTexCoord; +layout (location = 1) in vec2 aTexCoord; -out vec3 ourColor; out vec2 TexCoord; -//uniform mat4 transform; -uniform mat4 projection; uniform mat4 model; uniform mat4 view; +uniform mat4 projection; +//uniform vec4 uv; void main() { - gl_Position = projection * view * model * vec4(aPos, 1.0); - ourColor = aColor; - TexCoord = vec2(aTexCoord.x, aTexCoord.y); + gl_Position = projection * view * model * vec4(aPos, 1.0f); + TexCoord = vec2(aTexCoord.x, (1.0 - aTexCoord.y)); } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 713abd3a8..693c4eefc 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -14,6 +14,7 @@ import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' import { m4 } from 'twgl.js' +import Stats from 'stats.js' //@ts-ignore import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' @@ -94,7 +95,8 @@ async function main() { const mcData = require('minecraft-data')(version) window['loadedData'] = mcData - gui.add(params, 'version', globalThis.includedVersions) +const stats = new Stats() +gui.add(params, 'version', globalThis.includedVersions) gui.add(params, 'block', mcData.blocksArray.map(b => b.name).sort((a, b) => a.localeCompare(b))) const metadataGui = gui.add(params, 'metadata') gui.add(params, 'supportBlock') @@ -141,41 +143,82 @@ async function main() { const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2')! - const program = createProgram(gl,VertShader, FragShader) - const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000) + const program = createProgram(gl, VertShader, FragShader) + const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) let vertices = new Float32Array([ - 0.5, 0.5, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, // top right - 0.5, -0.5, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, // bottom right - -0.5, -0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, // bottom left - -0.5, 0.5, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0 + -0.5, -0.5, -0.5, 0.0, 0.0, + 0.5, -0.5, -0.5, 1.0, 0.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + -0.5, 0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 0.0, + + -0.5, -0.5, 0.5, 0.0, 0.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 1.0, + 0.5, 0.5, 0.5, 1.0, 1.0, + -0.5, 0.5, 0.5, 0.0, 1.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + + -0.5, 0.5, 0.5, 1.0, 0.0, + -0.5, 0.5, -0.5, 1.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + -0.5, 0.5, 0.5, 1.0, 0.0, + + 0.5, 0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, 0.5, 0.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + + -0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, -0.5, 1.0, 1.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + + -0.5, 0.5, -0.5, 0.0, 1.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + -0.5, 0.5, 0.5, 0.0, 0.0, + -0.5, 0.5, -0.5, 0.0, 1.0 ]) - let indices = new Uint8Array([ // note that we start from 0! - 0, 1, 3, // first Triangle - 1, 2, 3 // second Triangle - ]) - let VBO, VAO, EBO - VAO = gl.createVertexArray(); + + let CubePositions = [] as any + + //write random coordinates to cube positions xyz ten cubes; + for (let i = 0; i < 100_000; i++) { + let x = Math.random() * 100 - 50; + let y = Math.random() * 100 - 50; + let z = Math.random() * 100 - 100; + CubePositions.push([x, y, z]); + } + + let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); - EBO = gl.createBuffer(); + //EBO = gl.createBuffer(); gl.bindVertexArray(VAO); gl.bindBuffer(gl.ARRAY_BUFFER, VBO) gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - - //new THREE.BufferAttribute(vertices, 3) + //gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) + //gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - gl.vertexAttribPointer(0,3,gl.FLOAT, false, 8 * 4, 0) + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) gl.enableVertexAttribArray(0) - gl.vertexAttribPointer(1,3,gl.FLOAT, false, 8*4, 3*4) + gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) gl.enableVertexAttribArray(1) - gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) - gl.enableVertexAttribArray(2) + //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) + //gl.enableVertexAttribArray(2) gl.bindBuffer(gl.ARRAY_BUFFER, null); @@ -186,7 +229,7 @@ async function main() { image.src = Dirt let image2 = new Image(); // simple black white chess image 10x10 - image2.src = Stone + image2.src = '/textures/1.18.1.png' console.log(image.src) await new Promise((resolve) => { @@ -196,6 +239,55 @@ async function main() { image2.onload = resolve }) + let pitch = 0, yaw = 0; + let x = 0, y = 0, z = 0; + + const keys = (e) => { + const code = e.code + const pressed = e.type === 'keydown' + if (pressed) { + if (code === 'KeyW') { + z--; + } + if (code === 'KeyS') { + z++; + } + if (code === 'KeyA') { + x--; + } + if (code === 'KeyD') { + x++; + } + } + } + window.addEventListener('keydown', keys) + window.addEventListener('keyup', keys) + + // mouse + const mouse = { x: 0, y: 0 } + const mouseMove = (e) => { + if (e.buttons === 1) { + yaw += e.movementY/20; + pitch += e.movementX/20; + } + } + window.addEventListener('mousemove', mouseMove) + + const viewer = new Viewer(null as any | null, 1) + globalThis.viewer = viewer + viewer.world.texturesVersion = ('1.18.1') + viewer.world.updateTexturesData() + await new Promise(resolve => { + // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) + // viewer.world.material.map!.image.onload = () => { + // console.log(this.material.map!.image) + // resolve() + // } + viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + }) + console.log(viewer.world.downloadedBlockStatesData) + const names = Object.keys(viewer.world.downloadedBlockStatesData) + let texture1 = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture1); @@ -226,51 +318,93 @@ async function main() { gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); //gl.attachShader(program, program) - + gl.enable(gl.DEPTH_TEST) + //gl.generateMipmap() + //gl.enable(gl) //gl.clearColor(0, 0, 0, 1) //gl.clear(gl.COLOR_BUFFER_BIT) document.body.appendChild(canvas) + let view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) + const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 512) + // view = m4.identity(); + // m4.rotateX(view, yaw * Math.PI / 180) + // m4.rotateY(view, pitch * Math.PI / 180) + // m4.translate(view, [x,y,z], view) + let ModelUniform = gl.getUniformLocation(program, "model") + let uvUniform = gl.getUniformLocation(program, "uv"); + let ViewUniform = gl.getUniformLocation(program, "view") + let ProjectionUniform = gl.getUniformLocation(program, "projection") + + // stats.addPanel(new Stats.Panel('FPS', '#0ff', '#002')) + document.body.appendChild(stats.dom) const loop = (performance) => { - gl.canvas.width = window.innerWidth - gl.canvas.height = window.innerHeight + stats.begin() + gl.canvas.width = window.innerWidth * window.devicePixelRatio + gl.canvas.height = window.innerHeight * window.devicePixelRatio gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) + view = m4.identity(); + m4.rotateX(view, yaw * Math.PI / 180, view) + m4.rotateY(view, pitch * Math.PI / 180, view) + m4.translate(view, [x,y,z], view) + gl.clearColor(0.1, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT) + gl.clear(gl.DEPTH_BUFFER_BIT) gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, texture1); gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, texture2); - const view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) - const projection = m4.perspective(45 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 100) - const model = m4.identity() - m4.rotateX(model, performance / 1000, model); - m4.rotateY(model, performance / 2500, model) - m4.translate(view, [0, 0, -10], view) + gl.useProgram(program) + gl.uniformMatrix4fv(ViewUniform, false, view); + gl.uniformMatrix4fv(ProjectionUniform, false, projection); - //let transform = m4.identity() - // transform = m4.translate(transform, [0.5, 0.5, 0.0], transform) - //m4.axisRotate(transform, [0,1.0,0.0], performance/100, transform) - // glm::mat4 transform = glm::mat4(1.0f); // make sure to initialize matrix to identity matrix first - //transform = glm::translate(transform, glm::vec3(0.5f, -0.5f, 0.0f)); - //transform = glm::rotate(transform, (float)glfwGetTime(), glm::vec3(0.0f, 0.0f, 1.0f)); - //gl.uniformMatrix4fv(gl.getUniformLocation(program, "transform"), false, transform); - gl.uniformMatrix4fv(gl.getUniformLocation(program, "projection"), false, projection); - gl.uniformMatrix4fv(gl.getUniformLocation(program, "model"), false, model); - gl.uniformMatrix4fv(gl.getUniformLocation(program, "view"), false, view); - gl.useProgram(program) gl.bindVertexArray(VAO) - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_BYTE, 0); + let i = 0 + CubePositions.forEach((cubePosition) => { + const model = m4.identity() + + m4.translate(model, [cubePosition[0], cubePosition[1], cubePosition[2]], model); + //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); + //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) + //m4.rotateZ(model, Math.random() / 1010, model) + gl.uniformMatrix4fv(ModelUniform, false, model); + gl.uniform2fv(uvUniform, [i%64 * 1/64,parseInt(i/64) * 1/64]); + + // let result + // i %= names.length / 2 + // for (const name of ['stone']) { + // result = viewer.world.downloadedBlockStatesData[name]?.variants?.['']?.[0]?.model?.elements?.[0]?.faces?.north?.texture + // i++ + // if (result) break + // } + // const + // const tileSize = image.width + // const blocks = + // result = { + // v: 3*1/64, + // u: 4*1/64 + // } + + i++ + i %= 800; + + + gl.drawArrays(gl.TRIANGLES, 0, 36); + }) + ///model.translate([0, 0, 0], model) + requestAnimationFrame(loop) //gl.Swa + stats.end() } loop(performance.now) @@ -282,7 +416,6 @@ async function main() { return // Create viewer - const viewer = new Viewer(null as any | null, 1) viewer.listen(worldView) // Load chunks @@ -290,121 +423,10 @@ async function main() { window['worldView'] = worldView window['viewer'] = viewer - function degrees_to_radians(degrees) -{ - var pi = Math.PI; - return degrees * (pi/180); -} - - // params.blockIsomorphicRenderBundle = () => { - // const canvas = renderer.domElement - // const onlyCurrent = !confirm('Ok - render all blocks, Cancel - render only current one') - // const sizeRaw = prompt('Size', '512') - // if (!sizeRaw) return - // const size = parseInt(sizeRaw) - // // const size = 512 - - // ignoreResize = true - // canvas.width = size - // canvas.height = size - // renderer.setSize(size, size) - - // //@ts-ignore - // viewer.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0, 10) - // viewer.scene.background = null - - // const rad = THREE.MathUtils.degToRad(-120) - // viewer.directionalLight.position.set( - // Math.cos(rad), - // Math.sin(rad), - // 0.2 - // ).normalize() - // viewer.directionalLight.intensity = 1 - - // const cameraPos = targetPos.offset(2, 2, 2) - // const pitch = THREE.MathUtils.degToRad(-30) - // const yaw = THREE.MathUtils.degToRad(45) - // viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') - // // viewer.camera.lookAt(center.x + 0.5, center.y + 0.5, center.z + 0.5) - // viewer.camera.position.set(cameraPos.x + 1, cameraPos.y + 0.5, cameraPos.z + 1) - - // const allBlocks = mcData.blocksArray.map(b => b.name) - // // const allBlocks = ['stone', 'warped_slab'] - - // let blockCount = 1 - // let blockName = allBlocks[0] - - // const updateBlock = () => { - - // //@ts-ignore - // // viewer.setBlockStateId(targetPos, mcData.blocksByName[blockName].minStateId) - // params.block = blockName - // // todo cleanup (introduce getDefaultState) - // onUpdate.block() - // applyChanges(false, true) - // } - // viewer.waitForChunksToRender().then(async () => { - // // wait for next macro task - // await new Promise(resolve => { - // setTimeout(resolve, 0) - // }) - // if (onlyCurrent) { - // viewer.render() - // onWorldUpdate() - // } else { - // // will be called on every render update - // viewer.world.renderUpdateEmitter.addListener('update', onWorldUpdate) - // updateBlock() - // } - // }) - - // const zip = new JSZip() - // zip.file('description.txt', 'Generated with prismarine-viewer') - - // const end = async () => { - // // download zip file - - // const a = document.createElement('a') - // const blob = await zip.generateAsync({ type: 'blob' }) - // const dataUrlZip = URL.createObjectURL(blob) - // a.href = dataUrlZip - // a.download = 'blocks_render.zip' - // a.click() - // URL.revokeObjectURL(dataUrlZip) - // console.log('end') - - // viewer.world.renderUpdateEmitter.removeListener('update', onWorldUpdate) - // } - - // async function onWorldUpdate () { - // // await new Promise(resolve => { - // // setTimeout(resolve, 50) - // // }) - // const dataUrl = canvas.toDataURL('image/png') - - // zip.file(`${blockName}.png`, dataUrl.split(',')[1], { base64: true }) - - // if (onlyCurrent) { - // end() - // } else { - // nextBlock() - // } - // } - // const nextBlock = async () => { - // blockName = allBlocks[blockCount++] - // console.log(allBlocks.length, '/', blockCount, blockName) - // if (blockCount % 5 === 0) { - // await new Promise(resolve => { - // setTimeout(resolve, 100) - // }) - // } - // if (blockName) { - // updateBlock() - // } else { - // end() - // } - // } - // } + function degrees_to_radians(degrees) { + var pi = Math.PI; + return degrees * (pi / 180); + } // const jsonData = await fetch('https://bluecolored.de/bluemap/maps/overworld/tiles/0/x-2/2/z1/6.json?584662').then(r => r.json()) @@ -437,232 +459,6 @@ async function main() { // side: THREE.FrontSide, // wireframe: false // }) - - - //@ts-ignore - const controls = new globalThis.THREE.OrbitControls(viewer.camera, renderer.domElement) - viewer.camer - controls.target.set(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) - - const cameraPos = targetPos.offset(2, 2, 2) - const pitch = THREE.MathUtils.degToRad(-45) - const yaw = THREE.MathUtils.degToRad(45) - viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') - viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) - viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) - controls.update() - - let blockProps = {} - let entityOverrides = {} - const getBlock = () => { - return mcData.blocksByName[params.block || 'air'] - } - - const entityUpdateShared = () => { - viewer.entities.clear() - if (!params.entity) return - worldView.emit('entity', { - id: 'id', name: params.entity, pos: targetPos.offset(0.5, 1, 0.5), width: 1, height: 1, username: localStorage.testUsername, yaw: Math.PI, pitch: 0 - }) - const enableSkeletonDebug = (obj) => { - const { children, isSkeletonHelper } = obj - if (!Array.isArray(children)) return - if (isSkeletonHelper) { - obj.visible = true - return - } - for (const child of children) { - if (typeof child === 'object') enableSkeletonDebug(child) - } - } - enableSkeletonDebug(viewer.entities.entities['id']) - setTimeout(() => { - viewer.update() - viewer.render() - }, TWEEN_DURATION) - } - - const onUpdate = { - block() { - metadataFolder.destroy() - const block = mcData.blocksByName[params.block] - if (!block) return - const props = new Block(block.id, 0, 0).getProperties() - //@ts-ignore - const { states } = mcData.blocksByStateId[getBlock()?.minStateId] ?? {} - metadataFolder = gui.addFolder('metadata') - if (states) { - for (const state of states) { - let defaultValue - switch (state.type) { - case 'enum': - defaultValue = state.values[0] - break - case 'bool': - defaultValue = false - break - case 'int': - defaultValue = 0 - break - case 'direction': - defaultValue = 'north' - break - - default: - continue - } - blockProps[state.name] = defaultValue - if (state.type === 'enum') { - metadataFolder.add(blockProps, state.name, state.values) - } else { - metadataFolder.add(blockProps, state.name) - } - } - } else { - for (const [name, value] of Object.entries(props)) { - blockProps[name] = value - metadataFolder.add(blockProps, name) - } - } - metadataFolder.open() - }, - entity() { - continuousRender = params.entity === 'player' - entityUpdateShared() - if (!params.entity) return - if (params.entity === 'player') { - viewer.entities.updatePlayerSkin('id', viewer.entities.entities.id.username, true, true) - viewer.entities.playAnimation('id', 'running') - } - // let prev = false - // setInterval(() => { - // viewer.entities.playAnimation('id', prev ? 'running' : 'idle') - // prev = !prev - // }, 1000) - - Entity.getStaticData(params.entity) - // entityRotationFolder.destroy() - // entityRotationFolder = gui.addFolder('entity metadata') - // entityRotationFolder.add(params, 'entityRotate') - // entityRotationFolder.open() - }, - supportBlock() { - viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) - } - } - - - const applyChanges = (metadataUpdate = false, skipQs = false) => { - const blockId = getBlock()?.id - let block: BlockLoader.Block - if (metadataUpdate) { - block = new Block(blockId, 0, params.metadata) - Object.assign(blockProps, block.getProperties()) - for (const _child of metadataFolder.children) { - const child = _child as import('lil-gui').Controller - child.updateDisplay() - } - } else { - try { - //@ts-ignore - block = Block.fromProperties(blockId ?? -1, blockProps, 0) - } catch (err) { - console.error(err) - block = Block.fromStateId(0, 0) - } - } - - //@ts-ignore - viewer.setBlockStateId(targetPos, block.stateId) - console.log('up stateId', block.stateId) - params.metadata = block.metadata - metadataGui.updateDisplay() - if (!skipQs) { - setQs() - } - } - gui.onChange(({ property, object }) => { - if (object === params) { - if (property === 'camera') return - onUpdate[property]?.() - applyChanges(property === 'metadata') - } else { - applyChanges() - } - }) - viewer.waitForChunksToRender().then(async () => { - await new Promise(resolve => { - setTimeout(resolve, 0) - }) - for (const update of Object.values(onUpdate)) { - update() - } - applyChanges(true) - gui.openAnimated() - }) - - const animate = () => { - // if (controls) controls.update() - // worldView.updatePosition(controls.target) - viewer.update() - viewer.render() - // window.requestAnimationFrame(animate) - } - viewer.world.renderUpdateEmitter.addListener('update', () => { - animate() - }) - animate() - - // #region camera rotation param - if (params.camera) { - const [x, y] = params.camera.split(',') - viewer.camera.rotation.set(parseFloat(x), parseFloat(y), 0, 'ZYX') - controls.update() - console.log(viewer.camera.rotation.x, parseFloat(x)) - } - const throttledCamQsUpdate = _.throttle(() => { - const { camera } = viewer - // params.camera = `${camera.rotation.x.toFixed(2)},${camera.rotation.y.toFixed(2)}` - setQs() - }, 200) - controls.addEventListener('change', () => { - throttledCamQsUpdate() - animate() - }) - // #endregion - - const continuousUpdate = () => { - if (continuousRender) { - animate() - } - requestAnimationFrame(continuousUpdate) - } - continuousUpdate() - - window.onresize = () => { - if (ignoreResize) return - // const vec3 = new THREE.Vector3() - // vec3.set(-1, -1, -1).unproject(viewer.camera) - // console.log(vec3) - // box.position.set(vec3.x, vec3.y, vec3.z-1) - - const { camera } = viewer - viewer.camera.aspect = window.innerWidth / window.innerHeight - viewer.camera.updateProjectionMatrix() - // renderer.setSize(window.innerWidth, window.innerHeight) - - animate() - } - window.dispatchEvent(new Event('resize')) - - params.playSound = () => { - viewer.playSound(targetPos, 'button_click.mp3') - } - addEventListener('keydown', (e) => { - if (e.code === 'KeyE') { - params.playSound() - } - }, { capture: true }) } main() diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index 977fdfad1..4653a6249 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -101,7 +101,7 @@ export class WorldRenderer { // } return - + // const geometry = new THREE.BufferGeometry() // geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) // geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) @@ -274,24 +274,24 @@ export class WorldRenderer { this.material.map.onUpdate = () => { this.downloadedTextureImage = this.material.map!.image } - }) - - const loadBlockStates = async () => { - return new Promise(resolve => { - if (this.customBlockStatesData) return resolve(this.customBlockStatesData) - return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { - this.downloadedBlockStatesData = data - // todo - this.renderUpdateEmitter.emit('blockStatesDownloaded') - resolve(data) + const loadBlockStates = async () => { + return new Promise(resolve => { + if (this.customBlockStatesData) return resolve(this.customBlockStatesData) + return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { + this.downloadedBlockStatesData = data + // todo + this.renderUpdateEmitter.emit('blockStatesDownloaded') + resolve(data) + }) }) - }) - } - loadBlockStates().then((blockStates) => { - for (const worker of this.workers) { - worker.postMessage({ type: 'blockStates', json: blockStates }) } + loadBlockStates().then((blockStates) => { + for (const worker of this.workers) { + worker.postMessage({ type: 'blockStates', json: blockStates }) + } + }) }) + } getLoadedChunksRelative (pos: Vec3) { From 253fb8a2b5bb33314cce99a01926dce437b76a26 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 21 Mar 2024 14:16:18 +0300 Subject: [PATCH 006/303] move code around, +export --- prismarine-viewer/examples/playground.ts | 319 +---------------------- prismarine-viewer/viewer/lib/viewer.ts | 40 +-- src/playerWindows.ts | 2 +- 3 files changed, 30 insertions(+), 331 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 693c4eefc..a834b28d9 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -13,18 +13,8 @@ import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' -import { m4 } from 'twgl.js' -import Stats from 'stats.js' - -//@ts-ignore -import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' -//@ts-ignore -import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.png' - -//@ts-ignore -import VertShader from './_VertexShader.vert' -//@ts-ignore -import FragShader from './_FragmentShader.frag' +import { findTextureInBlockStates } from '../../src/playerWindows' +import { initWeblRenderer } from './webglRenderer' globalThis.THREE = THREE //@ts-ignore @@ -95,8 +85,7 @@ async function main() { const mcData = require('minecraft-data')(version) window['loadedData'] = mcData -const stats = new Stats() -gui.add(params, 'version', globalThis.includedVersions) + gui.add(params, 'version', globalThis.includedVersions) gui.add(params, 'block', mcData.blocksArray.map(b => b.name).sort((a, b) => a.localeCompare(b))) const metadataGui = gui.add(params, 'metadata') gui.add(params, 'supportBlock') @@ -139,279 +128,10 @@ gui.add(params, 'version', globalThis.includedVersions) // await schem.paste(world, new Vec3(0, 60, 0)) const worldView = new WorldDataEmitter(world, viewDistance, targetPos) - - const canvas = document.createElement('canvas') - const gl = canvas.getContext('webgl2')! - - const program = createProgram(gl, VertShader, FragShader) - const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) - - let vertices = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, - 0.5, -0.5, -0.5, 1.0, 0.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - -0.5, 0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 0.0, - - -0.5, -0.5, 0.5, 0.0, 0.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 1.0, - 0.5, 0.5, 0.5, 1.0, 1.0, - -0.5, 0.5, 0.5, 0.0, 1.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - - -0.5, 0.5, 0.5, 1.0, 0.0, - -0.5, 0.5, -0.5, 1.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - -0.5, 0.5, 0.5, 1.0, 0.0, - - 0.5, 0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, 0.5, 0.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - - -0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, -0.5, 1.0, 1.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - - -0.5, 0.5, -0.5, 0.0, 1.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - -0.5, 0.5, 0.5, 0.0, 0.0, - -0.5, 0.5, -0.5, 0.0, 1.0 - ]) - - let CubePositions = [] as any - - //write random coordinates to cube positions xyz ten cubes; - for (let i = 0; i < 100_000; i++) { - let x = Math.random() * 100 - 50; - let y = Math.random() * 100 - 50; - let z = Math.random() * 100 - 100; - CubePositions.push([x, y, z]); - } - - let VBO, VAO = gl.createVertexArray(); - VBO = gl.createBuffer(); - //EBO = gl.createBuffer(); - - gl.bindVertexArray(VAO); - gl.bindBuffer(gl.ARRAY_BUFFER, VBO) - gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) - - //gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) - //gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - - gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) - gl.enableVertexAttribArray(0) - - gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) - gl.enableVertexAttribArray(1) - - //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) - //gl.enableVertexAttribArray(2) - - - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null) - - let image = new Image(); - // simple black white chess image 10x10 - image.src = Dirt - let image2 = new Image(); - // simple black white chess image 10x10 - image2.src = '/textures/1.18.1.png' - - console.log(image.src) - await new Promise((resolve) => { - image.onload = resolve - }) - await new Promise((resolve) => { - image2.onload = resolve - }) - - let pitch = 0, yaw = 0; - let x = 0, y = 0, z = 0; - - const keys = (e) => { - const code = e.code - const pressed = e.type === 'keydown' - if (pressed) { - if (code === 'KeyW') { - z--; - } - if (code === 'KeyS') { - z++; - } - if (code === 'KeyA') { - x--; - } - if (code === 'KeyD') { - x++; - } - } - } - window.addEventListener('keydown', keys) - window.addEventListener('keyup', keys) - - // mouse - const mouse = { x: 0, y: 0 } - const mouseMove = (e) => { - if (e.buttons === 1) { - yaw += e.movementY/20; - pitch += e.movementX/20; - } - } - window.addEventListener('mousemove', mouseMove) - const viewer = new Viewer(null as any | null, 1) globalThis.viewer = viewer - viewer.world.texturesVersion = ('1.18.1') - viewer.world.updateTexturesData() - await new Promise(resolve => { - // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) - // viewer.world.material.map!.image.onload = () => { - // console.log(this.material.map!.image) - // resolve() - // } - viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) - }) - console.log(viewer.world.downloadedBlockStatesData) - const names = Object.keys(viewer.world.downloadedBlockStatesData) - let texture1 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture1); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - //.tset texture fgl.ering paramegl.s - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image.width, image.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image); - //gl.generateMipmap(gl.TEXTURE_2D); - - let texture2 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture2); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - //.tset texture fgl.ering paramegl.s - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image2.width, image2.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image2); - //gl.generateMipmap(gl.TEXTURE_2D); - - gl.useProgram(program) - - gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); - gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); - - //gl.attachShader(program, program) - gl.enable(gl.DEPTH_TEST) - //gl.generateMipmap() - //gl.enable(gl) - //gl.clearColor(0, 0, 0, 1) - //gl.clear(gl.COLOR_BUFFER_BIT) - document.body.appendChild(canvas) - - let view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) - const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 512) - // view = m4.identity(); - // m4.rotateX(view, yaw * Math.PI / 180) - // m4.rotateY(view, pitch * Math.PI / 180) - // m4.translate(view, [x,y,z], view) - let ModelUniform = gl.getUniformLocation(program, "model") - let uvUniform = gl.getUniformLocation(program, "uv"); - let ViewUniform = gl.getUniformLocation(program, "view") - let ProjectionUniform = gl.getUniformLocation(program, "projection") - - // stats.addPanel(new Stats.Panel('FPS', '#0ff', '#002')) - document.body.appendChild(stats.dom) - const loop = (performance) => { - stats.begin() - gl.canvas.width = window.innerWidth * window.devicePixelRatio - gl.canvas.height = window.innerHeight * window.devicePixelRatio - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - - view = m4.identity(); - m4.rotateX(view, yaw * Math.PI / 180, view) - m4.rotateY(view, pitch * Math.PI / 180, view) - m4.translate(view, [x,y,z], view) - - gl.clearColor(0.1, 0, 0, 0); - gl.clear(gl.COLOR_BUFFER_BIT) - gl.clear(gl.DEPTH_BUFFER_BIT) - - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, texture1); - gl.activeTexture(gl.TEXTURE1); - gl.bindTexture(gl.TEXTURE_2D, texture2); - - gl.useProgram(program) - - gl.uniformMatrix4fv(ViewUniform, false, view); - gl.uniformMatrix4fv(ProjectionUniform, false, projection); - - - - gl.bindVertexArray(VAO) - - - let i = 0 - CubePositions.forEach((cubePosition) => { - const model = m4.identity() - - m4.translate(model, [cubePosition[0], cubePosition[1], cubePosition[2]], model); - //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); - //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) - //m4.rotateZ(model, Math.random() / 1010, model) - gl.uniformMatrix4fv(ModelUniform, false, model); - gl.uniform2fv(uvUniform, [i%64 * 1/64,parseInt(i/64) * 1/64]); - - // let result - // i %= names.length / 2 - // for (const name of ['stone']) { - // result = viewer.world.downloadedBlockStatesData[name]?.variants?.['']?.[0]?.model?.elements?.[0]?.faces?.north?.texture - // i++ - // if (result) break - // } - // const - // const tileSize = image.width - // const blocks = - // result = { - // v: 3*1/64, - // u: 4*1/64 - // } - - i++ - i %= 800; - - - gl.drawArrays(gl.TRIANGLES, 0, 36); - }) - ///model.translate([0, 0, 0], model) - - requestAnimationFrame(loop) - //gl.Swa - stats.end() - } - loop(performance.now) - - // gl.deleteVertexArray(VAO); - // gl.deleteBuffer(VBO) - // gl.deleteBuffer(EBO) - // gl.deleteProgram(program) + initWeblRenderer() return @@ -461,34 +181,3 @@ gui.add(params, 'version', globalThis.includedVersions) // }) } main() - -export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { - const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { - const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' - const shader = gl.createShader(type)! - gl.shaderSource(shader, source) - gl.compileShader(shader) - - const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) - if (!success) { - const info = gl.getShaderInfoLog(shader) - gl.deleteShader(shader) - throw new Error(`Shader ${shaderName} compile error: ` + info) - } - return shader - } - - - - const program = gl.createProgram()! - gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) - gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) - gl.linkProgram(program) - const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) - if (!linkSuccess) { - const info = gl.getProgramInfoLog(program) - gl.deleteProgram(program) - throw new Error('Program link error: ' + info) - } - return program -} diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index d4c4f066f..f58a7ba3c 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -7,9 +7,7 @@ import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' -import { WorldHolder } from './worldrenderer' -THREE.ShaderChunk export class Viewer { scene: THREE.Scene ambientLight: THREE.AmbientLight @@ -30,10 +28,22 @@ export class Viewer { fxaaPass: ShaderPass renderPass: RenderPass - constructor(public holder: WorldHolder, numWorkers?: number, public enableFXAA = false) { - this.world = new WorldRenderer(holder, numWorkers) - // this.entities = new Entities(this.scene) - // this.primitives = new Primitives(this.scene, this.camera) + constructor(public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { + // https://discourse.threejs.org/t/updates-to-color-management-in-three-js-r152/50791 + THREE.ColorManagement.enabled = false + renderer.outputColorSpace = THREE.LinearSRGBColorSpace + + this.scene = new THREE.Scene() + this.scene.matrixAutoUpdate = false // for perf + this.resetScene() + if (this.enableFXAA) { + this.enableFxaaScene() + } + this.world = new WorldRenderer(this.scene, numWorkers) + this.entities = new Entities(this.scene) + this.primitives = new Primitives(this.scene, this.camera) + + this.domElement = renderer.domElement } resetScene () { @@ -182,15 +192,15 @@ export class Viewer { tweenJs.update() } - // render () { - // if (this.composer) { - // this.renderPass.camera = this.camera - // this.composer.render() - // } else { - // this.renderer.render(this.scene, this.camera) - // } - // this.entities.render() - // } + render () { + if (this.composer) { + this.renderPass.camera = this.camera + this.composer.render() + } else { + this.renderer.render(this.scene, this.camera) + } + this.entities.render() + } async waitForChunksToRender () { await this.world.waitForChunksToRender() diff --git a/src/playerWindows.ts b/src/playerWindows.ts index bdbe34a17..a0e08e996 100644 --- a/src/playerWindows.ts +++ b/src/playerWindows.ts @@ -127,7 +127,7 @@ export const onGameLoad = (onLoad) => { }) } -const findTextureInBlockStates = (name) => { +export const findTextureInBlockStates = (name) => { assertDefined(viewer) const blockStates: BlockStates = viewer.world.customBlockStatesData || viewer.world.downloadedBlockStatesData const vars = blockStates[name]?.variants From 024891c6d572a6f5e9fcf2f62955fa0e771c1c79 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 21 Mar 2024 15:47:27 +0300 Subject: [PATCH 007/303] add --- prismarine-viewer/examples/webglRenderer.ts | 315 ++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 prismarine-viewer/examples/webglRenderer.ts diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts new file mode 100644 index 000000000..ef57a8762 --- /dev/null +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -0,0 +1,315 @@ +import * as THREE from 'three' +import { m4 } from 'twgl.js' +import Stats from 'stats.js' + +//@ts-ignore +import VertShader from './_VertexShader.vert' +//@ts-ignore +import FragShader from './_FragmentShader.frag' + +//@ts-ignore +import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' +//@ts-ignore +import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.png' +import { Viewer } from '../viewer/lib/viewer' +import { findTextureInBlockStates } from '../../src/playerWindows' + +declare const viewer: Viewer + +let renderLoop +export const makeRender = () => { + renderLoop() +} + +export const initWeblRenderer = async () => { + const stats = new Stats() + const canvas = document.createElement('canvas') + const gl = canvas.getContext('webgl2')! + + const program = createProgram(gl, VertShader, FragShader) + const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) + + let vertices = new Float32Array([ + -0.5, -0.5, -0.5, 0.0, 0.0, + 0.5, -0.5, -0.5, 1.0, 0.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + -0.5, 0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 0.0, + + -0.5, -0.5, 0.5, 0.0, 0.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 1.0, + 0.5, 0.5, 0.5, 1.0, 1.0, + -0.5, 0.5, 0.5, 0.0, 1.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + + -0.5, 0.5, 0.5, 1.0, 0.0, + -0.5, 0.5, -0.5, 1.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + -0.5, 0.5, 0.5, 1.0, 0.0, + + 0.5, 0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, 0.5, 0.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + + -0.5, -0.5, -0.5, 0.0, 1.0, + 0.5, -0.5, -0.5, 1.0, 1.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + 0.5, -0.5, 0.5, 1.0, 0.0, + -0.5, -0.5, 0.5, 0.0, 0.0, + -0.5, -0.5, -0.5, 0.0, 1.0, + + -0.5, 0.5, -0.5, 0.0, 1.0, + 0.5, 0.5, -0.5, 1.0, 1.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + 0.5, 0.5, 0.5, 1.0, 0.0, + -0.5, 0.5, 0.5, 0.0, 0.0, + -0.5, 0.5, -0.5, 0.0, 1.0 + ]) + + let CubePositions = [] as any + + //write random coordinates to cube positions xyz ten cubes; + for (let i = 0; i < 100_000; i++) { + let x = Math.random() * 100 - 50; + let y = Math.random() * 100 - 50; + let z = Math.random() * 100 - 100; + CubePositions.push([x, y, z]); + } + + let VBO, VAO = gl.createVertexArray(); + VBO = gl.createBuffer(); + //EBO = gl.createBuffer(); + + gl.bindVertexArray(VAO); + gl.bindBuffer(gl.ARRAY_BUFFER, VBO) + gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) + + //gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) + //gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) + + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) + gl.enableVertexAttribArray(0) + + gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) + gl.enableVertexAttribArray(1) + + //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) + //gl.enableVertexAttribArray(2) + + + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.bindVertexArray(null) + + let image = new Image(); + // simple black white chess image 10x10 + image.src = Dirt + let image2 = new Image(); + // simple black white chess image 10x10 + image2.src = '/textures/1.18.1.png' + + console.log(image.src) + await new Promise((resolve) => { + image.onload = resolve + }) + await new Promise((resolve) => { + image2.onload = resolve + }) + + let pitch = 0, yaw = 0; + let x = 0, y = 0, z = 0; + + const keys = (e) => { + const code = e.code + const pressed = e.type === 'keydown' + if (pressed) { + if (code === 'KeyW') { + z--; + } + if (code === 'KeyS') { + z++; + } + if (code === 'KeyA') { + x--; + } + if (code === 'KeyD') { + x++; + } + } + } + window.addEventListener('keydown', keys) + window.addEventListener('keyup', keys) + + // mouse + const mouse = { x: 0, y: 0 } + const mouseMove = (e) => { + if (e.buttons === 1) { + yaw += e.movementY / 20; + pitch += e.movementX / 20; + } + } + window.addEventListener('mousemove', mouseMove) + + viewer.world.texturesVersion = ('1.18.1') + viewer.world.updateTexturesData() + await new Promise(resolve => { + // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) + // viewer.world.material.map!.image.onload = () => { + // console.log(this.material.map!.image) + // resolve() + // } + viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + }) + console.log(viewer.world.downloadedBlockStatesData) + const names = Object.keys(viewer.world.downloadedBlockStatesData) + + let texture1 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture1); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + //.tset texture fgl.ering paramegl.s + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image.width, image.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image); + //gl.generateMipmap(gl.TEXTURE_2D); + + let texture2 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + //.tset texture fgl.ering paramegl.s + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image2.width, image2.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image2); + //gl.generateMipmap(gl.TEXTURE_2D); + + gl.useProgram(program) + + gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); + gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); + + //gl.attachShader(program, program) + gl.enable(gl.DEPTH_TEST) + //gl.generateMipmap() + //gl.enable(gl) + //gl.clearColor(0, 0, 0, 1) + //gl.clear(gl.COLOR_BUFFER_BIT) + document.body.appendChild(canvas) + + let view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) + const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 512) + // view = m4.identity(); + // m4.rotateX(view, yaw * Math.PI / 180) + // m4.rotateY(view, pitch * Math.PI / 180) + // m4.translate(view, [x,y,z], view) + let ModelUniform = gl.getUniformLocation(program, "model") + let uvUniform = gl.getUniformLocation(program, "uv"); + let ViewUniform = gl.getUniformLocation(program, "view") + let ProjectionUniform = gl.getUniformLocation(program, "projection") + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture1); + gl.activeTexture(gl.TEXTURE1); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + // stats.addPanel(new Stats.Panel('FPS', '#0ff', '#002')) + document.body.appendChild(stats.dom) + renderLoop = (performance) => { + stats.begin() + gl.canvas.width = window.innerWidth * window.devicePixelRatio + gl.canvas.height = window.innerHeight * window.devicePixelRatio + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) + + view = m4.identity(); + m4.rotateX(view, yaw * Math.PI / 180, view) + m4.rotateY(view, pitch * Math.PI / 180, view) + m4.translate(view, [x, y, z], view) + + gl.clearColor(0.1, 0, 0, 0); + gl.clear(gl.COLOR_BUFFER_BIT) + gl.clear(gl.DEPTH_BUFFER_BIT) + + gl.useProgram(program) + + gl.uniformMatrix4fv(ViewUniform, false, view); + gl.uniformMatrix4fv(ProjectionUniform, false, projection); + + + + gl.bindVertexArray(VAO) + + + let i = 0 + CubePositions.forEach((cubePosition) => { + const model = m4.identity() + + m4.translate(model, [cubePosition[0], cubePosition[1], cubePosition[2]], model); + //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); + //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) + //m4.rotateZ(model, Math.random() / 1010, model) + const result = findTextureInBlockStates(i % 2 ? 'dirt' : 'cobblestone')?.north.texture! + gl.uniformMatrix4fv(ModelUniform, false, model); + // const u = 4 * 1 / 64; + // const v = 0 * 1 / 64; + const u = result.u + result.su + const v = result.v + gl.uniform2fv(uvUniform, [u, v]) + + // i++ + // i %= 800; + + gl.drawArrays(gl.TRIANGLES, 0, 36); + }) + ///model.translate([0, 0, 0], model) + + //gl.Swa + stats.end() + } + + // gl.deleteVertexArray(VAO); + // gl.deleteBuffer(VBO) + // gl.deleteBuffer(EBO) + // gl.deleteProgram(program) + +} + +export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { + const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { + const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' + const shader = gl.createShader(type)! + gl.shaderSource(shader, source) + gl.compileShader(shader) + + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) + if (!success) { + const info = gl.getShaderInfoLog(shader) + gl.deleteShader(shader) + throw new Error(`Shader ${shaderName} compile error: ` + info) + } + return shader + } + + + + const program = gl.createProgram()! + gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) + gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) + gl.linkProgram(program) + const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) + if (!linkSuccess) { + const info = gl.getProgramInfoLog(program) + gl.deleteProgram(program) + throw new Error('Program link error: ' + info) + } + return program +} From 73a5e9d8ba82d11178c53caa76df09e05cf92375 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 21 Mar 2024 22:50:44 +0300 Subject: [PATCH 008/303] up render --- prismarine-viewer/buildWorker.mjs | 4 +- prismarine-viewer/examples/playground.ts | 50 +++++++++-------- prismarine-viewer/examples/webglRenderer.ts | 43 ++++++++------- prismarine-viewer/viewer/lib/models.ts | 54 ++++++++++++++++--- prismarine-viewer/viewer/lib/viewer.ts | 16 +++--- prismarine-viewer/viewer/lib/worldrenderer.ts | 49 +++++++++-------- 6 files changed, 134 insertions(+), 82 deletions(-) diff --git a/prismarine-viewer/buildWorker.mjs b/prismarine-viewer/buildWorker.mjs index a8a5c1381..9be06cf23 100644 --- a/prismarine-viewer/buildWorker.mjs +++ b/prismarine-viewer/buildWorker.mjs @@ -21,7 +21,7 @@ const buildOptions = { }, platform: 'browser', entryPoints: [path.join(__dirname, './viewer/lib/worker.js')], - minify: true, + // minify: true, logLevel: 'info', drop: !watch ? [ 'debugger' @@ -101,7 +101,7 @@ const buildOptions = { resolveDir: process.cwd(), } }) - build.onEnd(({metafile, outputFiles}) => { + build.onEnd(({ metafile, outputFiles }) => { if (!metafile) return fs.writeFileSync(path.join(__dirname, './public/metafile.json'), JSON.stringify(metafile)) for (const outDir of ['../dist/', './public/']) { diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 60e87bc07..8839affbe 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -65,7 +65,8 @@ let ignoreResize = false async function main () { let continuousRender = false - const { version } = params + // const { version } = params + const version = '1.18.1' // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { @@ -128,12 +129,12 @@ async function main () { // await schem.paste(world, new Vec3(0, 60, 0)) const worldView = new WorldDataEmitter(world, viewDistance, targetPos) - const viewer = new Viewer(null as any | null, 1) + const nullRenderer = new THREE.WebGLRenderer({ antialias: true }) + const viewer = new Viewer(nullRenderer, 1) + viewer.setVersion(version) globalThis.viewer = viewer - initWeblRenderer() - - return + await initWeblRenderer(version) // Create viewer @@ -143,11 +144,6 @@ async function main () { window['worldView'] = worldView window['viewer'] = viewer - function degrees_to_radians (degrees) { - var pi = Math.PI; - return degrees * (pi / 180); - } - // const jsonData = await fetch('https://bluecolored.de/bluemap/maps/overworld/tiles/0/x-2/2/z1/6.json?584662').then(r => r.json()) // const uniforms = { @@ -182,16 +178,16 @@ async function main () { //@ts-ignore - const controls = new OrbitControls(viewer.camera, renderer.domElement) - controls.target.set(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) + // const controls = new OrbitControls(viewer.camera, nullRenderer.domElement) + // controls.target.set(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) const cameraPos = targetPos.offset(2, 2, 2) const pitch = THREE.MathUtils.degToRad(-45) const yaw = THREE.MathUtils.degToRad(45) - viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') - viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) - viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) - controls.update() + // viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') + // viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) + // viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) + // controls.update() let blockProps = {} let entityOverrides = {} @@ -223,6 +219,8 @@ async function main () { }, TWEEN_DURATION) } + params.block ||= 'stone' + const onUpdate = { block () { metadataFolder.destroy() @@ -347,18 +345,18 @@ async function main () { // worldView.updatePosition(controls.target) viewer.update() viewer.render() - // window.requestAnimationFrame(animate) + window.requestAnimationFrame(animate) } - viewer.world.renderUpdateEmitter.addListener('update', () => { - animate() - }) + // viewer.world.renderUpdateEmitter.addListener('update', () => { + // animate() + // }) animate() // #region camera rotation param if (params.camera) { const [x, y] = params.camera.split(',') viewer.camera.rotation.set(parseFloat(x), parseFloat(y), 0, 'ZYX') - controls.update() + // controls.update() console.log(viewer.camera.rotation.x, parseFloat(x)) } const throttledCamQsUpdate = _.throttle(() => { @@ -366,10 +364,10 @@ async function main () { // params.camera = `${camera.rotation.x.toFixed(2)},${camera.rotation.y.toFixed(2)}` setQs() }, 200) - controls.addEventListener('change', () => { - throttledCamQsUpdate() - animate() - }) + // controls.addEventListener('change', () => { + // throttledCamQsUpdate() + // animate() + // }) // #endregion const continuousUpdate = () => { @@ -390,7 +388,7 @@ async function main () { const { camera } = viewer viewer.camera.aspect = window.innerWidth / window.innerHeight viewer.camera.updateProjectionMatrix() - renderer.setSize(window.innerWidth, window.innerHeight) + nullRenderer.setSize(window.innerWidth, window.innerHeight) animate() } diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index ef57a8762..0b0e2c472 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -21,13 +21,19 @@ export const makeRender = () => { renderLoop() } -export const initWeblRenderer = async () => { +let CubePositions = [] as [number, number, number][] + +export const addCubes = (positions: [number, number, number][]) => { + CubePositions.push(...positions) +} + +export const initWeblRenderer = async (version) => { const stats = new Stats() const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2')! const program = createProgram(gl, VertShader, FragShader) - const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) + // const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) let vertices = new Float32Array([ -0.5, -0.5, -0.5, 0.0, 0.0, @@ -73,9 +79,7 @@ export const initWeblRenderer = async () => { -0.5, 0.5, -0.5, 0.0, 1.0 ]) - let CubePositions = [] as any - - //write random coordinates to cube positions xyz ten cubes; + // write random coordinates to cube positions xyz ten cubes; for (let i = 0; i < 100_000; i++) { let x = Math.random() * 100 - 50; let y = Math.random() * 100 - 50; @@ -112,7 +116,7 @@ export const initWeblRenderer = async () => { image.src = Dirt let image2 = new Image(); // simple black white chess image 10x10 - image2.src = '/textures/1.18.1.png' + image2.src = `/textures/${version}.png` console.log(image.src) await new Promise((resolve) => { @@ -122,24 +126,21 @@ export const initWeblRenderer = async () => { image2.onload = resolve }) - let pitch = 0, yaw = 0; - let x = 0, y = 0, z = 0; - const keys = (e) => { const code = e.code const pressed = e.type === 'keydown' if (pressed) { if (code === 'KeyW') { - z--; + viewer.camera.position.z -= 1 } if (code === 'KeyS') { - z++; + viewer.camera.position.z += 1 } if (code === 'KeyA') { - x--; + viewer.camera.position.x -= 1 } if (code === 'KeyD') { - x++; + viewer.camera.position.x += 1 } } } @@ -150,13 +151,16 @@ export const initWeblRenderer = async () => { const mouse = { x: 0, y: 0 } const mouseMove = (e) => { if (e.buttons === 1) { - yaw += e.movementY / 20; - pitch += e.movementX / 20; + viewer.camera.rotation.y += e.movementX / 100 + viewer.camera.rotation.x += e.movementY / 100 + console.log('viewer.camera.position', viewer.camera.position) + // yaw += e.movementY / 20; + // pitch += e.movementX / 20; } } window.addEventListener('mousemove', mouseMove) - viewer.world.texturesVersion = ('1.18.1') + viewer.world.texturesVersion = version viewer.world.updateTexturesData() await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) @@ -186,7 +190,6 @@ export const initWeblRenderer = async () => { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - //.tset texture fgl.ering paramegl.s gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); @@ -231,9 +234,11 @@ export const initWeblRenderer = async () => { gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) view = m4.identity(); + const yaw = viewer.camera.rotation.y + const pitch = viewer.camera.rotation.x m4.rotateX(view, yaw * Math.PI / 180, view) m4.rotateY(view, pitch * Math.PI / 180, view) - m4.translate(view, [x, y, z], view) + m4.translate(view, [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z], view) gl.clearColor(0.1, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT) @@ -265,7 +270,7 @@ export const initWeblRenderer = async () => { const v = result.v gl.uniform2fv(uvUniform, [u, v]) - // i++ + i++ // i %= 800; gl.drawArrays(gl.TRIANGLES, 0, 36); diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 6e43597a0..16ed12041 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -388,7 +388,8 @@ export function getSectionGeometry (sx, sy, sz, world: World) { t_uvs: [], indices: [], // todo this can be removed here - signs: {} + signs: {}, + blocks: {} } as Record const cursor = new Vec3(0, 0, 0) @@ -417,13 +418,10 @@ export function getSectionGeometry (sx, sy, sz, world: World) { } for (const variant of block.variant) { + console.log(variant) if (!variant || !variant.model) continue - if (block.name === 'water') { - renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) - } else if (block.name === 'lava') { - renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) - } else { + if (block.name !== 'water' && block.name !== 'lava'/* && block.isCube */) { let globalMatrix = null as any let globalShift = null as any @@ -440,9 +438,51 @@ export function getSectionGeometry (sx, sy, sz, world: World) { } for (const element of variant.model.elements) { - renderElement(world, cursor, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) + for (const face in element.faces) { + const cullIfIdentical = block.name.indexOf('glass') >= 0 + + const eFace = element.faces[face] + const { corners, mask1, mask2 } = elemFaces[face] + const dir = matmul3(globalMatrix, elemFaces[face].dir) + + if (eFace.cullface) { + const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) + if (neighbor) { + if (cullIfIdentical && neighbor.type === block.type) continue + if (!neighbor.transparent && neighbor.isCube) continue + } else { + continue + } + } + + attr.blocks[`${cursor.x},${cursor.y},${cursor.z}`] = block.name + } } } + // if (block.name === 'water') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) + // } else if (block.name === 'lava') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) + // } else { + // let globalMatrix = null as any + // let globalShift = null as any + + // for (const axis of ['x', 'y', 'z']) { + // if (axis in variant) { + // if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) + // else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) + // } + // } + + // if (globalMatrix) { + // globalShift = [8, 8, 8] + // globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + // } + + // for (const element of variant.model.elements) { + // renderElement(world, cursor, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) + // } + // } } } } diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index f58a7ba3c..e7fbd4b9b 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -7,6 +7,7 @@ import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' +import { makeRender } from '../../examples/webglRenderer' export class Viewer { scene: THREE.Scene @@ -193,13 +194,14 @@ export class Viewer { } render () { - if (this.composer) { - this.renderPass.camera = this.camera - this.composer.render() - } else { - this.renderer.render(this.scene, this.camera) - } - this.entities.render() + makeRender() + // if (this.composer) { + // this.renderPass.camera = this.camera + // this.composer.render() + // } else { + // this.renderer.render(this.scene, this.camera) + // } + // this.entities.render() } async waitForChunksToRender () { diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index 67e264e0b..9c811205e 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -10,13 +10,14 @@ import { toMajor } from './version.js' import PrismarineChatLoader from 'prismarine-chat' import { renderSign } from '../sign-renderer/' import { chunkPos, sectionPos } from './simpleUtils' +import { addCubes } from '../../examples/webglRenderer' function mod (x, n) { return ((x % n) + n) % n } export type WorldHolder = { - add(opt: { + add (opt: { geometry: { positions: Float32Array, normals: Float32Array, @@ -29,7 +30,7 @@ export type WorldHolder = { signs: Record } }) - remove(opt: { key: string }) + remove (opt: { key: string }) } export class WorldRenderer { @@ -61,7 +62,7 @@ export class WorldRenderer { promisesQueue = [] as Promise[] - constructor(public holder: WorldHolder, numWorkers = 4) { + constructor(public holder: unknown, numWorkers = 4) { // init workers for (let i = 0; i < numWorkers; i++) { // Node environment needs an absolute path, but browser needs the url of the file @@ -85,7 +86,12 @@ export class WorldRenderer { // if const chunkCoords = data.key.split(',') - if (!this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || !data.geometry.positions.length || !this.active) return + if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return + + addCubes(Object.entries(data.geometry.blocks).map(([pos, block]) => { + return pos.split(',').map(Number) as [number, number, number] + })) + // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { // const newPromise = new Promise(resolve => { @@ -238,12 +244,12 @@ export class WorldRenderer { } resetWorld () { - this.active = false - for (const mesh of Object.values(this.sectionObjects)) { - this.scene.remove(mesh) - } - this.sectionObjects = {} - this.loadedChunks = {} + // this.active = false + // for (const mesh of Object.values(this.sectionObjects)) { + // this.scene.remove(mesh) + // } + // this.sectionObjects = {} + // this.loadedChunks = {} this.sectionsOutstanding = new Set() for (const worker of this.workers) { worker.postMessage({ type: 'reset' }) @@ -251,19 +257,19 @@ export class WorldRenderer { } setVersion (version, texturesVersion = version) { - // this.version = version - // this.texturesVersion = texturesVersion - // this.resetWorld() - // this.active = true + this.version = version + this.texturesVersion = texturesVersion + this.resetWorld() + this.active = true - // const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] - // for (const worker of this.workers) { - // const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) - // mcData.version = JSON.parse(JSON.stringify(mcData.version)) - // worker.postMessage({ type: 'mcData', mcData, version: this.version }) - // } + const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] + for (const worker of this.workers) { + const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) + mcData.version = JSON.parse(JSON.stringify(mcData.version)) + worker.postMessage({ type: 'mcData', mcData, version: this.version }) + } - // this.updateTexturesData() + this.updateTexturesData() } updateTexturesData () { @@ -306,6 +312,7 @@ export class WorldRenderer { } addColumn (x, z, chunk) { + console.log('addColumn') this.initialChunksLoad = false this.loadedChunks[`${x},${z}`] = true for (const worker of this.workers) { From 2ee0ef348342ddc8367d97befb6b138e398b81a2 Mon Sep 17 00:00:00 2001 From: Vitaly Date: Thu, 21 Mar 2024 23:42:33 +0300 Subject: [PATCH 009/303] pus render --- prismarine-viewer/examples/playground.ts | 6 +- prismarine-viewer/examples/webglRenderer.ts | 73 ++++++++++++------- prismarine-viewer/viewer/lib/worldrenderer.ts | 10 ++- 3 files changed, 54 insertions(+), 35 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 8839affbe..f5a32d041 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -184,9 +184,9 @@ async function main () { const cameraPos = targetPos.offset(2, 2, 2) const pitch = THREE.MathUtils.degToRad(-45) const yaw = THREE.MathUtils.degToRad(45) - // viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') - // viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) - // viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) + viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') + viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) + viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) // controls.update() let blockProps = {} diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 0b0e2c472..b55bed417 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -21,10 +21,10 @@ export const makeRender = () => { renderLoop() } -let CubePositions = [] as [number, number, number][] +export const cubePositions = [] as [number, number, number, string][] export const addCubes = (positions: [number, number, number][]) => { - CubePositions.push(...positions) + // CubePositions.push(...positions) } export const initWeblRenderer = async (version) => { @@ -80,12 +80,12 @@ export const initWeblRenderer = async (version) => { ]) // write random coordinates to cube positions xyz ten cubes; - for (let i = 0; i < 100_000; i++) { - let x = Math.random() * 100 - 50; - let y = Math.random() * 100 - 50; - let z = Math.random() * 100 - 100; - CubePositions.push([x, y, z]); - } + // for (let i = 0; i < 100_000; i++) { + // let x = Math.random() * 100 - 50; + // let y = Math.random() * 100 - 50; + // let z = Math.random() * 100 - 100; + // CubePositions.push([x, y, z]); + // } let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); @@ -142,6 +142,12 @@ export const initWeblRenderer = async (version) => { if (code === 'KeyD') { viewer.camera.position.x += 1 } + if (code === 'ShiftLeft') { + viewer.camera.position.y += 0.5 + } + if (code === 'Space') { + viewer.camera.position.y -= 0.5 + } } } window.addEventListener('keydown', keys) @@ -234,11 +240,12 @@ export const initWeblRenderer = async (version) => { gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) view = m4.identity(); + // view = viewer.camera.matrix.elements const yaw = viewer.camera.rotation.y const pitch = viewer.camera.rotation.x m4.rotateX(view, yaw * Math.PI / 180, view) m4.rotateY(view, pitch * Math.PI / 180, view) - m4.translate(view, [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z], view) + m4.translate(view, [-viewer.camera.position.x, -viewer.camera.position.y, -viewer.camera.position.z], view) gl.clearColor(0.1, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT) @@ -255,25 +262,35 @@ export const initWeblRenderer = async (version) => { let i = 0 - CubePositions.forEach((cubePosition) => { - const model = m4.identity() - - m4.translate(model, [cubePosition[0], cubePosition[1], cubePosition[2]], model); - //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); - //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) - //m4.rotateZ(model, Math.random() / 1010, model) - const result = findTextureInBlockStates(i % 2 ? 'dirt' : 'cobblestone')?.north.texture! - gl.uniformMatrix4fv(ModelUniform, false, model); - // const u = 4 * 1 / 64; - // const v = 0 * 1 / 64; - const u = result.u + result.su - const v = result.v - gl.uniform2fv(uvUniform, [u, v]) - - i++ - // i %= 800; - - gl.drawArrays(gl.TRIANGLES, 0, 36); + // CubePositions = [[ + // 2, 90, 2 + // ]] + const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { + return Object.entries(chunk.blocks).map(([pos, block]) => { + return [...pos.split(',').map(Number), block] as [number, number, number, string] + }) + }).flat() + cubePositions.forEach(([x, y, z, name]) => { + const result = findTextureInBlockStates(name)?.north.texture! + if (result) { + const model = m4.identity() + + //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); + //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) + //m4.rotateZ(model, Math.random() / 1010, model) + m4.translate(model, [x, y, z], model); + gl.uniformMatrix4fv(ModelUniform, false, model); + // const u = 4 * 1 / 64; + // const v = 0 * 1 / 64; + const u = result.u + result.su + const v = result.v + gl.uniform2fv(uvUniform, [u, v]) + + i++ + // i %= 800; + + gl.drawArrays(gl.TRIANGLES, 0, 36); + } }) ///model.translate([0, 0, 0], model) diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index 9c811205e..1847a0326 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -10,7 +10,7 @@ import { toMajor } from './version.js' import PrismarineChatLoader from 'prismarine-chat' import { renderSign } from '../sign-renderer/' import { chunkPos, sectionPos } from './simpleUtils' -import { addCubes } from '../../examples/webglRenderer' +import { addCubes, cubePositions } from '../../examples/webglRenderer' function mod (x, n) { return ((x % n) + n) % n @@ -57,6 +57,7 @@ export class WorldRenderer { droppedFpsPercentage = 0 initialChunksLoad = true enableChunksLoadDelay = false + newChunks = {} texturesVersion?: string @@ -88,9 +89,10 @@ export class WorldRenderer { const chunkCoords = data.key.split(',') if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return - addCubes(Object.entries(data.geometry.blocks).map(([pos, block]) => { - return pos.split(',').map(Number) as [number, number, number] - })) + this.newChunks[data.key] = data.geometry + // cubePositions.push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { + // return [...pos.split(',').map(Number), block] as [number, number, number, string] + // })) // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { From 027f5c691748641df5adb877dcfc38d14271651d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Fri, 22 Mar 2024 00:02:11 +0300 Subject: [PATCH 010/303] up package json --- package.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 73934df08..a4cb10380 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.0.0-dev", "description": "A minecraft client running in a browser", "scripts": { - "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node 4 --watch", + "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node esbuild.mjs --watch", "start-watch-script": "nodemon -w esbuild.mjs --watch", "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod", "check-build": "tsc && pnpm test-unit && pnpm build", @@ -31,6 +31,8 @@ "@floating-ui/react": "^0.26.1", "@mui/base": "5.0.0-beta.34", "@nxg-org/mineflayer-tracker": "^1.2.1", + "@react-oauth/google": "^0.12.1", + "@types/gapi": "^0.0.47", "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@types/wicg-file-system-access": "^2023.10.2", @@ -47,8 +49,9 @@ "esbuild": "^0.19.3", "esbuild-plugin-polyfill-node": "^0.3.0", "express": "^4.18.2", - "flying-squid": "npm:@zardoy/flying-squid@^0.0.9", + "flying-squid": "npm:@zardoy/flying-squid@^0.0.15", "fs-extra": "^11.1.1", + "google-drive-browserfs": "github:zardoy/browserfs#google-drive", "iconify-icon": "^1.0.8", "jszip": "^3.10.1", "lit": "^2.8.0", @@ -60,6 +63,7 @@ "node-gzip": "^1.1.2", "peerjs": "^1.5.0", "pretty-bytes": "^6.1.1", + "prismarine-provider-anvil": "github:zardoy/prismarine-provider-anvil#everything", "qrcode.react": "^3.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -71,7 +75,6 @@ "stats.js": "^0.17.0", "tabbable": "^6.2.0", "title-case": "3.x", - "twgl.js": "^5.5.4", "ua-parser-js": "^1.0.37", "valtio": "^1.11.1", "workbox-build": "^7.0.0" From ad5a906a95e7670d0ebea32554c998e12169b05e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Fri, 22 Mar 2024 00:31:24 +0300 Subject: [PATCH 011/303] fix things --- esbuild.mjs | 4 ++- package.json | 1 + prismarine-viewer/esbuild.mjs | 1 + prismarine-viewer/examples/playground.ts | 9 +++--- prismarine-viewer/examples/webglRenderer.ts | 34 +++++++++++---------- prismarine-viewer/sharedBuildOptions.mjs | 3 ++ src/globals.d.ts | 8 +++++ 7 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 prismarine-viewer/sharedBuildOptions.mjs diff --git a/esbuild.mjs b/esbuild.mjs index 2d18ae3a0..e54623f73 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -76,7 +76,9 @@ const buildOptions = { loader: { // todo use external or resolve issues with duplicating '.png': 'dataurl', - '.map': 'empty' + '.map': 'empty', + '.vert': 'text', + '.frag': 'text' }, write: false, // todo would be better to enable? diff --git a/package.json b/package.json index a4cb10380..c9f632f2d 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,7 @@ "stats.js": "^0.17.0", "tabbable": "^6.2.0", "title-case": "3.x", + "twgl.js": "^5.5.4", "ua-parser-js": "^1.0.37", "valtio": "^1.11.1", "workbox-build": "^7.0.0" diff --git a/prismarine-viewer/esbuild.mjs b/prismarine-viewer/esbuild.mjs index 1be3ca498..4a87d9ff8 100644 --- a/prismarine-viewer/esbuild.mjs +++ b/prismarine-viewer/esbuild.mjs @@ -47,6 +47,7 @@ const buildOptions = { http: 'http-browserify', stream: 'stream-browserify', net: 'net-browserify', + 'stats.js': 'node_modules/stats.js/src/Stats.js', }, inject: [], metafile: true, diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index f5a32d041..cb9c7bd3c 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -340,17 +340,18 @@ async function main () { gui.openAnimated() }) - const animate = () => { + const animate = () => {} + const animate2 = () => { // if (controls) controls.update() // worldView.updatePosition(controls.target) viewer.update() viewer.render() - window.requestAnimationFrame(animate) + window.requestAnimationFrame(animate2) } // viewer.world.renderUpdateEmitter.addListener('update', () => { // animate() // }) - animate() + animate2() // #region camera rotation param if (params.camera) { @@ -374,7 +375,7 @@ async function main () { if (continuousRender) { animate() } - requestAnimationFrame(continuousUpdate) + // requestAnimationFrame(continuousUpdate) } continuousUpdate() diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index b55bed417..407d2e757 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -33,7 +33,6 @@ export const initWeblRenderer = async (version) => { const gl = canvas.getContext('webgl2')! const program = createProgram(gl, VertShader, FragShader) - // const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 100000) let vertices = new Float32Array([ -0.5, -0.5, -0.5, 0.0, 0.0, @@ -80,12 +79,12 @@ export const initWeblRenderer = async (version) => { ]) // write random coordinates to cube positions xyz ten cubes; - // for (let i = 0; i < 100_000; i++) { - // let x = Math.random() * 100 - 50; - // let y = Math.random() * 100 - 50; - // let z = Math.random() * 100 - 100; - // CubePositions.push([x, y, z]); - // } + for (let i = 0; i < 100_000; i++) { + let x = Math.random() * 100 - 50; + let y = Math.random() * 100 - 50; + let z = Math.random() * 100 - 100; + cubePositions.push([x, y, z, 'stone']); + } let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); @@ -157,12 +156,15 @@ export const initWeblRenderer = async (version) => { const mouse = { x: 0, y: 0 } const mouseMove = (e) => { if (e.buttons === 1) { - viewer.camera.rotation.y += e.movementX / 100 - viewer.camera.rotation.x += e.movementY / 100 + viewer.camera.rotation.y += e.movementX / 50 + viewer.camera.rotation.x += e.movementY / 50 console.log('viewer.camera.position', viewer.camera.position) // yaw += e.movementY / 20; // pitch += e.movementX / 20; } + if (e.buttons === 2) { + viewer.camera.position.set(0, 0, 0) + } } window.addEventListener('mousemove', mouseMove) @@ -241,8 +243,8 @@ export const initWeblRenderer = async (version) => { view = m4.identity(); // view = viewer.camera.matrix.elements - const yaw = viewer.camera.rotation.y - const pitch = viewer.camera.rotation.x + const yaw = viewer.camera.rotation.x + const pitch = viewer.camera.rotation.y m4.rotateX(view, yaw * Math.PI / 180, view) m4.rotateY(view, pitch * Math.PI / 180, view) m4.translate(view, [-viewer.camera.position.x, -viewer.camera.position.y, -viewer.camera.position.z], view) @@ -265,11 +267,11 @@ export const initWeblRenderer = async (version) => { // CubePositions = [[ // 2, 90, 2 // ]] - const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { - return Object.entries(chunk.blocks).map(([pos, block]) => { - return [...pos.split(',').map(Number), block] as [number, number, number, string] - }) - }).flat() + // const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { + // return Object.entries(chunk.blocks).map(([pos, block]) => { + // return [...pos.split(',').map(Number), block] as [number, number, number, string] + // }) + // }).flat() cubePositions.forEach(([x, y, z, name]) => { const result = findTextureInBlockStates(name)?.north.texture! if (result) { diff --git a/prismarine-viewer/sharedBuildOptions.mjs b/prismarine-viewer/sharedBuildOptions.mjs new file mode 100644 index 000000000..52b2fb8fc --- /dev/null +++ b/prismarine-viewer/sharedBuildOptions.mjs @@ -0,0 +1,3 @@ +export const sharedPlaygroundMainOptions = { + alias: {} +} \ No newline at end of file diff --git a/src/globals.d.ts b/src/globals.d.ts index 75c9d0a0f..c2c5ac6b3 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -72,6 +72,14 @@ declare module '*.png' { const png: string export default png } +declare module '*.frag' { + const png: string + export default png +} +declare module '*.vert' { + const png: string + export default png +} interface PromiseConstructor { withResolvers (): { From 70c9686f89932d925804aaa909f810ec0a476964 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 22 Mar 2024 01:31:22 +0300 Subject: [PATCH 012/303] insane instace shading --- prismarine-viewer/examples/_VertexShader.vert | 7 +- prismarine-viewer/examples/playground.ts | 4 +- prismarine-viewer/examples/webglRenderer.ts | 201 ++++++++++-------- 3 files changed, 119 insertions(+), 93 deletions(-) diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index ce5fee718..8bec46229 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -1,16 +1,19 @@ #version 300 es layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; +layout (location = 2) in vec3 aOffset; +layout (location = 3) in int TextureIndex; out vec2 TexCoord; -uniform mat4 model; +//uniform mat4 model; uniform mat4 view; uniform mat4 projection; //uniform vec4 uv; void main() { - gl_Position = projection * view * model * vec4(aPos, 1.0f); + gl_Position = projection * view * vec4(aPos + aOffset, 1.0f); TexCoord = vec2(aTexCoord.x, (1.0 - aTexCoord.y)); + } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index cb9c7bd3c..51246180a 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -186,7 +186,7 @@ async function main () { const yaw = THREE.MathUtils.degToRad(45) viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) - viewer.camera.position.set(cameraPos.x + 0.5, cameraPos.y + 0.5, cameraPos.z + 0.5) + viewer.camera.position.set(0, 0, 0) // controls.update() let blockProps = {} @@ -340,7 +340,7 @@ async function main () { gui.openAnimated() }) - const animate = () => {} + const animate = () => { } const animate2 = () => { // if (controls) controls.update() // worldView.updatePosition(controls.target) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 407d2e757..02a2ab9da 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -21,11 +21,7 @@ export const makeRender = () => { renderLoop() } -export const cubePositions = [] as [number, number, number, string][] - -export const addCubes = (positions: [number, number, number][]) => { - // CubePositions.push(...positions) -} +export const cubePositions = [] as [number, number, number, string | null][] export const initWeblRenderer = async (version) => { const stats = new Stats() @@ -35,57 +31,67 @@ export const initWeblRenderer = async (version) => { const program = createProgram(gl, VertShader, FragShader) let vertices = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, - 0.5, -0.5, -0.5, 1.0, 0.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - -0.5, 0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 0.0, - - -0.5, -0.5, 0.5, 0.0, 0.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 1.0, - 0.5, 0.5, 0.5, 1.0, 1.0, - -0.5, 0.5, 0.5, 0.0, 1.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - - -0.5, 0.5, 0.5, 1.0, 0.0, - -0.5, 0.5, -0.5, 1.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - -0.5, 0.5, 0.5, 1.0, 0.0, - - 0.5, 0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, 0.5, 0.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - - -0.5, -0.5, -0.5, 0.0, 1.0, - 0.5, -0.5, -0.5, 1.0, 1.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - 0.5, -0.5, 0.5, 1.0, 0.0, - -0.5, -0.5, 0.5, 0.0, 0.0, - -0.5, -0.5, -0.5, 0.0, 1.0, - - -0.5, 0.5, -0.5, 0.0, 1.0, - 0.5, 0.5, -0.5, 1.0, 1.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - 0.5, 0.5, 0.5, 1.0, 0.0, - -0.5, 0.5, 0.5, 0.0, 0.0, - -0.5, 0.5, -0.5, 0.0, 1.0 + -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + // ront ace + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, 0.5, 0.0, 1.0, // top-let + // Let ace + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, -0.5, 1.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Right ace + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + // Bottom ace + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + 0.5, -0.5, -0.5, 1.0, 1.0, // top-let + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Top ace + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + -0.5, 0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, -0.5, 0.0, 1.0 // top-let ]) + let NumberOfCube = 25_000 + + let cubePositions = new Float32Array(NumberOfCube * 3) + + // write random coordinates to cube positions xyz ten cubes; - for (let i = 0; i < 100_000; i++) { - let x = Math.random() * 100 - 50; - let y = Math.random() * 100 - 50; - let z = Math.random() * 100 - 100; - cubePositions.push([x, y, z, 'stone']); + for (let i = 0; i < NumberOfCube * 3; i += 3) { + cubePositions[i] = Math.random() * 100 - 50; + cubePositions[i + 1] = Math.random() * 100 - 50; + cubePositions[i + 2] = Math.random() * 100 - 100; + //cubePositions.push([x, y, z, null]); } + let instanceVBO = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); //EBO = gl.createBuffer(); @@ -94,21 +100,21 @@ export const initWeblRenderer = async (version) => { gl.bindBuffer(gl.ARRAY_BUFFER, VBO) gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) - //gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, EBO) - //gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) gl.enableVertexAttribArray(0) gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) gl.enableVertexAttribArray(1) + //instance data - //gl.vertexAttribPointer(2,2,gl.FLOAT, false, 8*4 , 6*4) - //gl.enableVertexAttribArray(2) - - + gl.enableVertexAttribArray(2); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.vertexAttribPointer(2, 3, gl.FLOAT, false, 3 * 4, 0); gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.bindVertexArray(null) + gl.vertexAttribDivisor(2, 1); + + //gl.bindBuffer(gl.ARRAY_BUFFER, null); + //gl.bindVertexArray(null) let image = new Image(); // simple black white chess image 10x10 @@ -156,8 +162,8 @@ export const initWeblRenderer = async (version) => { const mouse = { x: 0, y: 0 } const mouseMove = (e) => { if (e.buttons === 1) { - viewer.camera.rotation.y += e.movementX / 50 - viewer.camera.rotation.x += e.movementY / 50 + viewer.camera.rotation.y += e.movementX / 20 + viewer.camera.rotation.x += e.movementY / 20 console.log('viewer.camera.position', viewer.camera.position) // yaw += e.movementY / 20; // pitch += e.movementX / 20; @@ -186,7 +192,7 @@ export const initWeblRenderer = async (version) => { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - //.tset texture fgl.ering paramegl.s + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); @@ -206,11 +212,17 @@ export const initWeblRenderer = async (version) => { gl.useProgram(program) + + gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); - //gl.attachShader(program, program) + gl.enable(gl.DEPTH_TEST) + gl.frontFace(gl.CCW) + gl.enable(gl.CULL_FACE) + + //gl.generateMipmap() //gl.enable(gl) //gl.clearColor(0, 0, 0, 1) @@ -228,11 +240,15 @@ export const initWeblRenderer = async (version) => { let ViewUniform = gl.getUniformLocation(program, "view") let ProjectionUniform = gl.getUniformLocation(program, "projection") + gl.cullFace(gl.FRONT) + gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, texture1); gl.activeTexture(gl.TEXTURE1); gl.bindTexture(gl.TEXTURE_2D, texture2); + + // stats.addPanel(new Stats.Panel('FPS', '#0ff', '#002')) document.body.appendChild(stats.dom) renderLoop = (performance) => { @@ -242,28 +258,31 @@ export const initWeblRenderer = async (version) => { gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) view = m4.identity(); - // view = viewer.camera.matrix.elements const yaw = viewer.camera.rotation.x const pitch = viewer.camera.rotation.y m4.rotateX(view, yaw * Math.PI / 180, view) m4.rotateY(view, pitch * Math.PI / 180, view) m4.translate(view, [-viewer.camera.position.x, -viewer.camera.position.y, -viewer.camera.position.z], view) - gl.clearColor(0.1, 0, 0, 0); + gl.clearColor(0.5, 0.5, 0.5, 1.0); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) gl.useProgram(program) + + gl.uniformMatrix4fv(ViewUniform, false, view); gl.uniformMatrix4fv(ProjectionUniform, false, projection); gl.bindVertexArray(VAO) + //gl.bindVertexArray(instanceVBO) + gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, NumberOfCube); + //gl.bindVertexArray(null) - - let i = 0 + //let i = 0 // CubePositions = [[ // 2, 90, 2 // ]] @@ -272,28 +291,32 @@ export const initWeblRenderer = async (version) => { // return [...pos.split(',').map(Number), block] as [number, number, number, string] // }) // }).flat() - cubePositions.forEach(([x, y, z, name]) => { - const result = findTextureInBlockStates(name)?.north.texture! - if (result) { - const model = m4.identity() - - //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); - //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) - //m4.rotateZ(model, Math.random() / 1010, model) - m4.translate(model, [x, y, z], model); - gl.uniformMatrix4fv(ModelUniform, false, model); - // const u = 4 * 1 / 64; - // const v = 0 * 1 / 64; - const u = result.u + result.su - const v = result.v - gl.uniform2fv(uvUniform, [u, v]) - - i++ - // i %= 800; - - gl.drawArrays(gl.TRIANGLES, 0, 36); - } - }) + + + // cubePositions.forEach(([x, y, z, name]) => { + // const result = findTextureInBlockStates(name)?.north.texture! + // if (result || true) { + // const model = m4.identity() + + // //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); + // //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) + // //m4.rotateZ(model, Math.random() / 1010, model) + // m4.translate(model, [x, y, z], model); + // gl.uniformMatrix4fv(ModelUniform, false, model); + // const u = i / 64; + // const v = i % 64; + // // const u = result.u + result.su + // // const v = result.v + // gl.uniform2fv(uvUniform, [u, v]) + + // i++ + // i %= 800; + + // gl.drawArrays(gl.TRIANGLES, 0, 36); + // } + // }) + + ///model.translate([0, 0, 0], model) //gl.Swa From a682d4b3da70c64c832d68c14d2858f0536f8310 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 22 Mar 2024 02:33:20 +0300 Subject: [PATCH 013/303] Instanced mashing with indexed texturing --- .../examples/_FragmentShader.frag | 9 ++++--- prismarine-viewer/examples/_VertexShader.vert | 5 ++-- prismarine-viewer/examples/webglRenderer.ts | 27 ++++++++++++++----- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index 0a0bfa7fe..fd2b14d08 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -3,18 +3,19 @@ precision highp float; out vec4 FragColor; in vec2 TexCoord; +in float TextureIndex; uniform sampler2D texture1; uniform sampler2D texture2; -uniform vec2 uv; -uniform vec2 suv; +//uniform vec2 uv; +//uniform vec2 suv; void main() { vec2 position = vec2(1, 1); // I assume gets tile at (1, 1) since the size of the tiles are 1/16 - vec2 size = vec2(1/64, 1/64); - vec2 coord = uv + TexCoord * (1.0f/64.0f); + vec2 size = vec2(1.0/64.0f, 1.0/64.0f); + vec2 coord = size * vec2(int(TextureIndex)%64,int(TextureIndex)/64) + TexCoord * (1.0f/64.0f); FragColor = mix(texture(texture1, coord), texture(texture2, coord), 1.0); } diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 8bec46229..61ba44cf7 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -2,9 +2,10 @@ layout (location = 0) in vec3 aPos; layout (location = 1) in vec2 aTexCoord; layout (location = 2) in vec3 aOffset; -layout (location = 3) in int TextureIndex; +layout (location = 3) in float aTextureIndex; out vec2 TexCoord; +out float TextureIndex; //uniform mat4 model; uniform mat4 view; @@ -15,5 +16,5 @@ void main() { gl_Position = projection * view * vec4(aPos + aOffset, 1.0f); TexCoord = vec2(aTexCoord.x, (1.0 - aTexCoord.y)); - + TextureIndex = aTextureIndex; } diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 02a2ab9da..b0c9fb0f4 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -74,17 +74,18 @@ export const initWeblRenderer = async (version) => { -0.5, 0.5, -0.5, 0.0, 1.0 // top-let ]) - let NumberOfCube = 25_000 + let NumberOfCube = 1_000_000 let cubePositions = new Float32Array(NumberOfCube * 3) + let cubeTextureIndices = new Float32Array(NumberOfCube); // write random coordinates to cube positions xyz ten cubes; for (let i = 0; i < NumberOfCube * 3; i += 3) { - cubePositions[i] = Math.random() * 100 - 50; - cubePositions[i + 1] = Math.random() * 100 - 50; + cubePositions[i] = Math.random() * 1000 - 500; + cubePositions[i + 1] = Math.random() * 1000 - 500; cubePositions[i + 2] = Math.random() * 100 - 100; - //cubePositions.push([x, y, z, null]); + cubeTextureIndices[i / 3] = Math.floor(Math.random() * 400 + 400); } let instanceVBO = gl.createBuffer(); @@ -92,6 +93,11 @@ export const initWeblRenderer = async (version) => { gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); gl.bindBuffer(gl.ARRAY_BUFFER, null); + let instanceTextureID = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); //EBO = gl.createBuffer(); @@ -113,6 +119,12 @@ export const initWeblRenderer = async (version) => { gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(2, 1); + gl.enableVertexAttribArray(3); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.vertexAttribPointer(3, 1, gl.FLOAT, false, 1 * 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(3, 1); + //gl.bindBuffer(gl.ARRAY_BUFFER, null); //gl.bindVertexArray(null) @@ -148,10 +160,10 @@ export const initWeblRenderer = async (version) => { viewer.camera.position.x += 1 } if (code === 'ShiftLeft') { - viewer.camera.position.y += 0.5 + viewer.camera.position.y -= 0.5 } if (code === 'Space') { - viewer.camera.position.y -= 0.5 + viewer.camera.position.y += 0.5 } } } @@ -264,7 +276,7 @@ export const initWeblRenderer = async (version) => { m4.rotateY(view, pitch * Math.PI / 180, view) m4.translate(view, [-viewer.camera.position.x, -viewer.camera.position.y, -viewer.camera.position.z], view) - gl.clearColor(0.5, 0.5, 0.5, 1.0); + gl.clearColor(0.5, 0.5, 0.5, 0.0); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) @@ -278,6 +290,7 @@ export const initWeblRenderer = async (version) => { gl.bindVertexArray(VAO) + //gl.bindVertexArray(instanceVBO) gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, NumberOfCube); //gl.bindVertexArray(null) From b403ed4606d75a554a1b63d682d0c943f67f9b73 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 22 Mar 2024 03:49:23 +0300 Subject: [PATCH 014/303] fix build --- prismarine-viewer/esbuild.mjs | 2 +- prismarine-viewer/examples/_FragmentShader.frag | 2 +- prismarine-viewer/examples/_VertexShader.vert | 2 +- prismarine-viewer/examples/playground.ts | 2 +- prismarine-viewer/examples/webglRenderer.ts | 5 ++++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/prismarine-viewer/esbuild.mjs b/prismarine-viewer/esbuild.mjs index 4a87d9ff8..de1a3b25f 100644 --- a/prismarine-viewer/esbuild.mjs +++ b/prismarine-viewer/esbuild.mjs @@ -47,7 +47,7 @@ const buildOptions = { http: 'http-browserify', stream: 'stream-browserify', net: 'net-browserify', - 'stats.js': 'node_modules/stats.js/src/Stats.js', + 'stats.js': 'stats.js/src/Stats.js', }, inject: [], metafile: true, diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index fd2b14d08..af598d111 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -3,7 +3,7 @@ precision highp float; out vec4 FragColor; in vec2 TexCoord; -in float TextureIndex; +flat in float TextureIndex; uniform sampler2D texture1; uniform sampler2D texture2; diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 61ba44cf7..d7e681d2e 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -5,7 +5,7 @@ layout (location = 2) in vec3 aOffset; layout (location = 3) in float aTextureIndex; out vec2 TexCoord; -out float TextureIndex; +flat out float TextureIndex; //uniform mat4 model; uniform mat4 view; diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 51246180a..d8c146176 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -337,7 +337,7 @@ async function main () { update() } applyChanges(true) - gui.openAnimated() + // gui.openAnimated() }) const animate = () => { } diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index b0c9fb0f4..fbc4461ad 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -87,6 +87,9 @@ export const initWeblRenderer = async (version) => { cubePositions[i + 2] = Math.random() * 100 - 100; cubeTextureIndices[i / 3] = Math.floor(Math.random() * 400 + 400); } + cubePositions[0] = 0; + cubePositions[1] = 0; + cubePositions[2] = 0; let instanceVBO = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); @@ -242,7 +245,7 @@ export const initWeblRenderer = async (version) => { document.body.appendChild(canvas) let view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) - const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 512) + const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 2048) // view = m4.identity(); // m4.rotateX(view, yaw * Math.PI / 180) // m4.rotateY(view, pitch * Math.PI / 180) From c6c4ca841b795f49f27a803605ab70903b467fc7 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 22 Mar 2024 04:49:33 +0300 Subject: [PATCH 015/303] almost ok for the app --- .../examples/_FragmentShader.frag | 4 +- prismarine-viewer/examples/webglRenderer.ts | 52 +++++++++++++------ prismarine-viewer/viewer/lib/models.ts | 4 +- prismarine-viewer/viewer/lib/worldrenderer.ts | 10 ++-- src/index.ts | 12 ++++- 5 files changed, 57 insertions(+), 25 deletions(-) diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index af598d111..18ed49f95 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -14,8 +14,8 @@ uniform sampler2D texture2; void main() { vec2 position = vec2(1, 1); // I assume gets tile at (1, 1) since the size of the tiles are 1/16 - vec2 size = vec2(1.0/64.0f, 1.0/64.0f); - vec2 coord = size * vec2(int(TextureIndex)%64,int(TextureIndex)/64) + TexCoord * (1.0f/64.0f); + vec2 size = vec2(1.0/32.0f, 1.0/32.0f); + vec2 coord = size * vec2(int(TextureIndex)%64,int(TextureIndex)/64) + TexCoord * (1.0f/32.0f); FragColor = mix(texture(texture1, coord), texture(texture2, coord), 1.0); } diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index fbc4461ad..ff486320d 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -18,12 +18,18 @@ declare const viewer: Viewer let renderLoop export const makeRender = () => { - renderLoop() + renderLoop?.() } -export const cubePositions = [] as [number, number, number, string | null][] +let cubePositions +let updateCubes +export const updateCubePositions = () => { + updateCubes() +} + +export const cubePositionsRaw = [] as [number, number, number, string | null][] -export const initWeblRenderer = async (version) => { +export const initWebglRenderer = async (version) => { const stats = new Stats() const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2')! @@ -76,7 +82,7 @@ export const initWeblRenderer = async (version) => { let NumberOfCube = 1_000_000 - let cubePositions = new Float32Array(NumberOfCube * 3) + cubePositions = new Float32Array(NumberOfCube * 3) let cubeTextureIndices = new Float32Array(NumberOfCube); @@ -85,21 +91,40 @@ export const initWeblRenderer = async (version) => { cubePositions[i] = Math.random() * 1000 - 500; cubePositions[i + 1] = Math.random() * 1000 - 500; cubePositions[i + 2] = Math.random() * 100 - 100; - cubeTextureIndices[i / 3] = Math.floor(Math.random() * 400 + 400); + // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 400 + 400); + cubeTextureIndices[i / 3] = 0; } cubePositions[0] = 0; cubePositions[1] = 0; cubePositions[2] = 0; let instanceVBO = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - let instanceTextureID = gl.createBuffer(); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); + updateCubes = () => { + cubePositions = new Float32Array(cubePositionsRaw.length * 3) + cubeTextureIndices = new Float32Array(cubePositionsRaw.length); + + cubePositionsRaw.forEach(([x, y, z, name], i) => { + cubePositions[i * 3] = x + cubePositions[i * 3 + 1] = y + cubePositions[i * 3 + 2] = z + // just set index to 0 for now + cubeTextureIndices[i] = 0 + }) + + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + } + + updateCubes() + globalThis.updateCubes = updateCubes + let VBO, VAO = gl.createVertexArray(); VBO = gl.createBuffer(); @@ -299,9 +324,6 @@ export const initWeblRenderer = async (version) => { //gl.bindVertexArray(null) //let i = 0 - // CubePositions = [[ - // 2, 90, 2 - // ]] // const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { // return Object.entries(chunk.blocks).map(([pos, block]) => { // return [...pos.split(',').map(Number), block] as [number, number, number, string] diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 16ed12041..cbdefdb91 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -418,7 +418,6 @@ export function getSectionGeometry (sx, sy, sz, world: World) { } for (const variant of block.variant) { - console.log(variant) if (!variant || !variant.model) continue if (block.name !== 'water' && block.name !== 'lava'/* && block.isCube */) { @@ -455,7 +454,8 @@ export function getSectionGeometry (sx, sy, sz, world: World) { } } - attr.blocks[`${cursor.x},${cursor.y},${cursor.z}`] = block.name + const pos = block.position + attr.blocks[`${pos.x},${pos.y},${pos.z}`] = block.name } } } diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index 1847a0326..553c33dc8 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -10,7 +10,7 @@ import { toMajor } from './version.js' import PrismarineChatLoader from 'prismarine-chat' import { renderSign } from '../sign-renderer/' import { chunkPos, sectionPos } from './simpleUtils' -import { addCubes, cubePositions } from '../../examples/webglRenderer' +import { cubePositionsRaw, updateCubePositions } from '../../examples/webglRenderer' function mod (x, n) { return ((x % n) + n) % n @@ -90,10 +90,10 @@ export class WorldRenderer { if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return this.newChunks[data.key] = data.geometry - // cubePositions.push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { - // return [...pos.split(',').map(Number), block] as [number, number, number, string] - // })) - + cubePositionsRaw.push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { + return [...pos.split(',').map(Number), block] as [number, number, number, string] + })) + updateCubePositions() // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { // const newPromise = new Promise(resolve => { diff --git a/src/index.ts b/src/index.ts index e10f60a93..3cd6bb758 100644 --- a/src/index.ts +++ b/src/index.ts @@ -96,6 +96,7 @@ import { handleMovementStickDelta, joystickPointer } from './react/TouchAreasCon import { possiblyHandleStateVariable } from './googledrive' import flyingSquidEvents from './flyingSquidEvents' import { hideNotification, notificationProxy } from './react/NotificationProvider' +import { initWebglRenderer } from 'prismarine-viewer/examples/webglRenderer' window.debug = debug window.THREE = THREE @@ -178,11 +179,18 @@ let previousWindowWidth = window.innerWidth let previousWindowHeight = window.innerHeight let max = 0 let rendered = 0 +let windowFocused = true +window.addEventListener('focus', () => { + windowFocused = true +}) +window.addEventListener('blur', () => { + windowFocused = false +}) const renderFrame = (time: DOMHighResTimeStamp) => { if (window.stopLoop) return for (const fn of beforeRenderFrame) fn() window.requestAnimationFrame(renderFrame) - if (window.stopRender || renderer.xr.isPresenting) return + if (window.stopRender || renderer.xr.isPresenting || !windowFocused) return if (renderInterval) { delta += time - lastTime lastTime = time @@ -228,6 +236,7 @@ const resizeHandler = () => { } } +initWebglRenderer('1.14.4') const hud = document.getElementById('hud') const pauseMenu = document.getElementById('pause-screen') @@ -440,6 +449,7 @@ async function connect (connectOptions: { viewer.setVersion(version) } + serverOptions.version = '1.14.4' const downloadVersion = connectOptions.botVersion || (singleplayer ? serverOptions.version : undefined) if (downloadVersion) { await downloadMcData(downloadVersion) From 9e26f70011b28116f2d6af90f6d65e7de489ceed Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 24 Mar 2024 09:29:11 +0300 Subject: [PATCH 016/303] add touch --- prismarine-viewer/examples/TouchControls2.tsx | 63 +++++++++++++++++++ prismarine-viewer/examples/playground.ts | 7 ++- prismarine-viewer/examples/webglRenderer.ts | 28 +++++++-- prismarine-viewer/playground.html | 1 + 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 prismarine-viewer/examples/TouchControls2.tsx diff --git a/prismarine-viewer/examples/TouchControls2.tsx b/prismarine-viewer/examples/TouchControls2.tsx new file mode 100644 index 000000000..5d1b4459f --- /dev/null +++ b/prismarine-viewer/examples/TouchControls2.tsx @@ -0,0 +1,63 @@ +import React, { useEffect } from 'react' +import { LeftTouchArea, RightTouchArea, useInterfaceState } from '@dimaka/interface' +import { css } from '@emotion/css' +import { Viewer } from '../viewer/lib/viewer' +import { renderToDom } from '@zardoy/react-util' +import { Vec3 } from 'vec3' +import * as THREE from 'three' + +declare const viewer: Viewer +const Controls = () => { + // todo setting + const usingTouch = navigator.maxTouchPoints > 0 + + useEffect(() => { + let vec3 = new Vec3(0, 0, 0) + + setInterval(() => { + viewer.camera.position.add(new THREE.Vector3(vec3.x, vec3.y, vec3.z)) + }, 1000 / 30) + + useInterfaceState.setState({ + isFlying: false, + uiCustomization: { + touchButtonSize: 40, + }, + updateCoord ([coord, state]) { + vec3 = new Vec3(0, 0, 0) + vec3[coord] = state + } + }) + }, []) + + if (!usingTouch) return null + return ( +
div { + pointer-events: auto; + } + `} + > + +
+ +
+ ) +} + +export const renderPlayground = () => { + renderToDom(, { + // selector: 'body', + }) +} diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index d8c146176..cc6bbfff8 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -14,11 +14,13 @@ import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' import { findTextureInBlockStates } from '../../src/playerWindows' -import { initWeblRenderer } from './webglRenderer' +import { initWebglRenderer } from './webglRenderer' +import { renderToDom } from '@zardoy/react-util' globalThis.THREE = THREE //@ts-ignore import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; +import { renderPlayground } from './TouchControls2' const gui = new GUI() @@ -134,7 +136,8 @@ async function main () { viewer.setVersion(version) globalThis.viewer = viewer - await initWeblRenderer(version) + await initWebglRenderer(version) + renderPlayground() // Create viewer diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index ff486320d..afd47ed6e 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -27,7 +27,7 @@ export const updateCubePositions = () => { updateCubes() } -export const cubePositionsRaw = [] as [number, number, number, string | null][] +export let cubePositionsRaw = [] as [number, number, number, string | null][] export const initWebglRenderer = async (version) => { const stats = new Stats() @@ -101,6 +101,16 @@ export const initWebglRenderer = async (version) => { let instanceVBO = gl.createBuffer(); let instanceTextureID = gl.createBuffer(); updateCubes = () => { + return + // cubePositionsRaw = [ + // // for now one cube in front of the camera + // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], + // [viewer.camera.position.x + 2, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], + // [viewer.camera.position.x - 2, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], + // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z + 2, 'dirt'], + // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z - 2, 'dirt'], + // ] + cubePositions = new Float32Array(cubePositionsRaw.length * 3) cubeTextureIndices = new Float32Array(cubePositionsRaw.length); @@ -122,7 +132,15 @@ export const initWebglRenderer = async (version) => { gl.bindBuffer(gl.ARRAY_BUFFER, null); } - updateCubes() + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + // updateCubes() globalThis.updateCubes = updateCubes @@ -200,8 +218,8 @@ export const initWebglRenderer = async (version) => { // mouse const mouse = { x: 0, y: 0 } - const mouseMove = (e) => { - if (e.buttons === 1) { + const mouseMove = (e: PointerEvent) => { + if (e.buttons === 1 || e.pointerType === 'touch') { viewer.camera.rotation.y += e.movementX / 20 viewer.camera.rotation.x += e.movementY / 20 console.log('viewer.camera.position', viewer.camera.position) @@ -212,7 +230,7 @@ export const initWebglRenderer = async (version) => { viewer.camera.position.set(0, 0, 0) } } - window.addEventListener('mousemove', mouseMove) + window.addEventListener('pointermove', mouseMove) viewer.world.texturesVersion = version viewer.world.updateTexturesData() diff --git a/prismarine-viewer/playground.html b/prismarine-viewer/playground.html index fd92009a4..c3902f40d 100644 --- a/prismarine-viewer/playground.html +++ b/prismarine-viewer/playground.html @@ -31,6 +31,7 @@ +
From c8e6475954ed02c8bdd81aa1a8b6d7dda0c84057 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 24 Mar 2024 09:38:46 +0300 Subject: [PATCH 017/303] fix textures --- prismarine-viewer/examples/playground.ts | 2 +- prismarine-viewer/examples/webglRenderer.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index cc6bbfff8..614734b4d 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -68,7 +68,7 @@ async function main () { let continuousRender = false // const { version } = params - const version = '1.18.1' + const version = '1.14.4' // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index afd47ed6e..3fd306211 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -91,8 +91,8 @@ export const initWebglRenderer = async (version) => { cubePositions[i] = Math.random() * 1000 - 500; cubePositions[i + 1] = Math.random() * 1000 - 500; cubePositions[i + 2] = Math.random() * 100 - 100; - // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 400 + 400); - cubeTextureIndices[i / 3] = 0; + cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); + // cubeTextureIndices[i / 3] = 0; } cubePositions[0] = 0; cubePositions[1] = 0; From 4133eca3a79aee6efe96d63e2d10ec617ac71e3b Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 24 Mar 2024 10:44:00 +0300 Subject: [PATCH 018/303] dynamic entrypoint --- esbuild.mjs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/esbuild.mjs b/esbuild.mjs index e54623f73..6f7f903ee 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -11,7 +11,9 @@ import { build } from 'esbuild' //@ts-ignore try { await import('./localSettings.mjs') } catch { } -fs.writeFileSync('dist/index.html', fs.readFileSync('index.html', 'utf8').replace('', ''), 'utf8') +const entrypoint = 'index.ts' + +fs.writeFileSync('dist/index.html', fs.readFileSync('index.html', 'utf8').replace('', ``), 'utf8') const watch = process.argv.includes('--watch') || process.argv.includes('-w') const prod = process.argv.includes('--prod') @@ -30,7 +32,7 @@ const buildingVersion = new Date().toISOString().split(':')[0] /** @type {import('esbuild').BuildOptions} */ const buildOptions = { bundle: true, - entryPoints: ['src/index.ts'], + entryPoints: [`src/${entrypoint}`], target: ['es2020'], jsx: 'automatic', jsxDev: dev, From 51ba0eaec573677392e1b8638a9ec246640fd77d Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 07:28:03 +0300 Subject: [PATCH 019/303] put renderer into worker! viewerWrapper & perf cypress test --- buildWorkers.mjs | 27 ++ cypress/e2e/index.spec.ts | 18 +- cypress/e2e/performance.spec.ts | 25 + cypress/e2e/shared.ts | 15 + package.json | 1 + .../examples/_FragmentShader.frag | 2 +- prismarine-viewer/examples/playground.ts | 54 +++ prismarine-viewer/examples/webglRenderer.ts | 456 +++--------------- .../examples/webglRendererWorker.ts | 404 ++++++++++++++++ prismarine-viewer/viewer/lib/viewerWrapper.ts | 117 +++++ src/index.ts | 71 +-- 11 files changed, 707 insertions(+), 483 deletions(-) create mode 100644 buildWorkers.mjs create mode 100644 cypress/e2e/performance.spec.ts create mode 100644 cypress/e2e/shared.ts create mode 100644 prismarine-viewer/examples/webglRendererWorker.ts create mode 100644 prismarine-viewer/viewer/lib/viewerWrapper.ts diff --git a/buildWorkers.mjs b/buildWorkers.mjs new file mode 100644 index 000000000..9807c4593 --- /dev/null +++ b/buildWorkers.mjs @@ -0,0 +1,27 @@ +// main worker file intended for computing world geometry is built using prismarine-viewer/buildWorker.mjs +import { build, context } from 'esbuild' + +const watch = process.argv.includes('-w') + +const result = await (watch ? context : build)({ + bundle: true, + platform: 'browser', + entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts'], + outfile: 'prismarine-viewer/public/webglRendererWorker.js', + sourcemap: 'inline', + // minify: true, + logLevel: 'info', + plugins: [], + loader: { + '.vert': 'text', + '.frag': 'text' + }, + mainFields: [ + 'browser', 'module', 'main' + ], + keepNames: true, +}) + +if (watch) { + await result.watch() +} diff --git a/cypress/e2e/index.spec.ts b/cypress/e2e/index.spec.ts index 8b168bf12..e9d97ab06 100644 --- a/cypress/e2e/index.spec.ts +++ b/cypress/e2e/index.spec.ts @@ -1,15 +1,5 @@ /// -import type { AppOptions } from '../../src/optionsStorage' - -const cleanVisit = (url?) => { - cy.clearLocalStorage() - visit(url) -} - -const visit = (url = '/') => { - window.localStorage.cypress = 'true' - cy.visit(url) -} +import { setOptions, cleanVisit, visit } from './shared' // todo use ssl @@ -31,12 +21,6 @@ const testWorldLoad = () => { }) } -const setOptions = (options: Partial) => { - cy.window().then(win => { - Object.assign(win['options'], options) - }) -} - it('Loads & renders singleplayer', () => { cleanVisit('/?singleplayer=1') setOptions({ diff --git a/cypress/e2e/performance.spec.ts b/cypress/e2e/performance.spec.ts new file mode 100644 index 000000000..f2fc4d46e --- /dev/null +++ b/cypress/e2e/performance.spec.ts @@ -0,0 +1,25 @@ +import { cleanVisit, setOptions } from './shared' + +it('Loads & renders singleplayer', () => { + cleanVisit('/?singleplayer=1') + setOptions({ + renderDistance: 2 + }) + // wait for .initial-loader to disappear + cy.get('.initial-loader', { timeout: 20_000 }).should('not.exist') + cy.window() + .its('performance') + .invoke('mark', 'worldLoad') + + cy.document().then({ timeout: 20_000 }, doc => { + return new Cypress.Promise(resolve => { + doc.addEventListener('cypress-world-ready', resolve) + }) + }).then(() => { + const duration = cy.window() + .its('performance') + .invoke('measure', 'modalOpen') + .its('duration') + cy.log('Duration', duration) + }) +}) diff --git a/cypress/e2e/shared.ts b/cypress/e2e/shared.ts new file mode 100644 index 000000000..c445b7df6 --- /dev/null +++ b/cypress/e2e/shared.ts @@ -0,0 +1,15 @@ +import { AppOptions } from '../../src/optionsStorage' + +export const cleanVisit = (url?) => { + cy.clearLocalStorage() + visit(url) +} +export const visit = (url = '/') => { + window.localStorage.cypress = 'true' + cy.visit(url) +} +export const setOptions = (options: Partial) => { + cy.window().then(win => { + Object.assign(win['options'], options) + }) +} diff --git a/package.json b/package.json index 27e0d4d91..98f6727b5 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod", "check-build": "tsc && pnpm test-unit && pnpm build", "test:cypress": "cypress run", + "test:cypress:perf": "cypress run --spec cypress/e2e/perf.spec.ts --browser edge", "test-unit": "vitest", "test:e2e": "start-test http-get://localhost:8080 test:cypress", "prod-start": "node server.js", diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index 18ed49f95..f5a07f55a 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -15,7 +15,7 @@ void main() { vec2 position = vec2(1, 1); // I assume gets tile at (1, 1) since the size of the tiles are 1/16 vec2 size = vec2(1.0/32.0f, 1.0/32.0f); - vec2 coord = size * vec2(int(TextureIndex)%64,int(TextureIndex)/64) + TexCoord * (1.0f/32.0f); + vec2 coord = size * vec2(int(TextureIndex)%32,int(TextureIndex)/32) + TexCoord * (1.0f/32.0f); FragColor = mix(texture(texture1, coord), texture(texture2, coord), 1.0); } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 614734b4d..760802f01 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -135,9 +135,63 @@ async function main () { const viewer = new Viewer(nullRenderer, 1) viewer.setVersion(version) globalThis.viewer = viewer + await new Promise(resolve => { + // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) + // viewer.world.material.map!.image.onload = () => { + // console.log(this.material.map!.image) + // resolve() + // } + viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + }) await initWebglRenderer(version) + const simpleControls = () => { + const keys = (e) => { + const code = e.code + const pressed = e.type === 'keydown' + if (pressed) { + if (code === 'KeyW') { + viewer.camera.position.z -= 1 + } + if (code === 'KeyS') { + viewer.camera.position.z += 1 + } + if (code === 'KeyA') { + viewer.camera.position.x -= 1 + } + if (code === 'KeyD') { + viewer.camera.position.x += 1 + } + if (code === 'ShiftLeft') { + viewer.camera.position.y -= 0.5 + } + if (code === 'Space') { + viewer.camera.position.y += 0.5 + } + } + } + window.addEventListener('keydown', keys) + window.addEventListener('keyup', keys) + + // mouse + const mouse = { x: 0, y: 0 } + const mouseMove = (e: PointerEvent) => { + if (e.buttons === 1 || e.pointerType === 'touch') { + viewer.camera.rotation.y += e.movementX / 20 + viewer.camera.rotation.x += e.movementY / 20 + console.log('viewer.camera.position', viewer.camera.position) + // yaw += e.movementY / 20; + // pitch += e.movementX / 20; + } + if (e.buttons === 2) { + viewer.camera.position.set(0, 0, 0) + } + } + window.addEventListener('pointermove', mouseMove) + } + simpleControls() renderPlayground() + return // Create viewer diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 3fd306211..217e852a8 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -1,25 +1,10 @@ -import * as THREE from 'three' -import { m4 } from 'twgl.js' -import Stats from 'stats.js' - -//@ts-ignore -import VertShader from './_VertexShader.vert' -//@ts-ignore -import FragShader from './_FragmentShader.frag' - -//@ts-ignore -import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' -//@ts-ignore -import Stone from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/stone.png' import { Viewer } from '../viewer/lib/viewer' -import { findTextureInBlockStates } from '../../src/playerWindows' + +let worker declare const viewer: Viewer -let renderLoop -export const makeRender = () => { - renderLoop?.() -} +export const makeRender = () => { } let cubePositions let updateCubes @@ -29,390 +14,69 @@ export const updateCubePositions = () => { export let cubePositionsRaw = [] as [number, number, number, string | null][] -export const initWebglRenderer = async (version) => { - const stats = new Stats() - const canvas = document.createElement('canvas') - const gl = canvas.getContext('webgl2')! - - const program = createProgram(gl, VertShader, FragShader) - - let vertices = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let - 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - -0.5, 0.5, -0.5, 0.0, 1.0, // top-let - -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let - // ront ace - -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let - 0.5, 0.5, 0.5, 1.0, 1.0, // top-right - 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-right - 0.5, 0.5, 0.5, 1.0, 1.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let - -0.5, 0.5, 0.5, 0.0, 1.0, // top-let - // Let ace - -0.5, 0.5, 0.5, 1.0, 0.0, // top-right - -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let - -0.5, 0.5, -0.5, 1.0, 1.0, // top-let - -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let - -0.5, 0.5, 0.5, 1.0, 0.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right - // Right ace - 0.5, 0.5, 0.5, 1.0, 0.0, // top-let - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right - 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right - 0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let - 0.5, 0.5, 0.5, 1.0, 0.0, // top-let - // Bottom ace - -0.5, -0.5, -0.5, 0.0, 1.0, // top-right - 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let - 0.5, -0.5, -0.5, 1.0, 1.0, // top-let - 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let - -0.5, -0.5, -0.5, 0.0, 1.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right - // Top ace - -0.5, 0.5, -0.5, 0.0, 1.0, // top-let - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right - 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right - -0.5, 0.5, 0.5, 0.0, 0.0, // bottom-let - -0.5, 0.5, -0.5, 0.0, 1.0 // top-let - ]) - - let NumberOfCube = 1_000_000 - - cubePositions = new Float32Array(NumberOfCube * 3) - let cubeTextureIndices = new Float32Array(NumberOfCube); - - - // write random coordinates to cube positions xyz ten cubes; - for (let i = 0; i < NumberOfCube * 3; i += 3) { - cubePositions[i] = Math.random() * 1000 - 500; - cubePositions[i + 1] = Math.random() * 1000 - 500; - cubePositions[i + 2] = Math.random() * 100 - 100; - cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); - // cubeTextureIndices[i / 3] = 0; - } - cubePositions[0] = 0; - cubePositions[1] = 0; - cubePositions[2] = 0; - - let instanceVBO = gl.createBuffer(); - let instanceTextureID = gl.createBuffer(); - updateCubes = () => { - return - // cubePositionsRaw = [ - // // for now one cube in front of the camera - // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], - // [viewer.camera.position.x + 2, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], - // [viewer.camera.position.x - 2, viewer.camera.position.y, viewer.camera.position.z, 'dirt'], - // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z + 2, 'dirt'], - // [viewer.camera.position.x, viewer.camera.position.y, viewer.camera.position.z - 2, 'dirt'], - // ] - - cubePositions = new Float32Array(cubePositionsRaw.length * 3) - cubeTextureIndices = new Float32Array(cubePositionsRaw.length); - - cubePositionsRaw.forEach(([x, y, z, name], i) => { - cubePositions[i * 3] = x - cubePositions[i * 3 + 1] = y - cubePositions[i * 3 + 2] = z - // just set index to 0 for now - cubeTextureIndices[i] = 0 - }) - - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); +const sendWorkerMessage = (message: any, transfer?: Transferable[]) => { + worker.postMessage(message, transfer) + // replacable by onmessage +} - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); +export const initWebglRenderer = async (version: string | undefined) => { + const imageBlob = await fetch(`./textures/${version}.png`).then((res) => res.blob()) + const canvas = document.createElement('canvas') + canvas.width = window.innerWidth * window.devicePixelRatio + canvas.height = window.innerHeight * window.devicePixelRatio + document.body.appendChild(canvas) + canvas.id = 'viewer-canvas' + const offscreen = canvas.transferControlToOffscreen() + + // replacable by initWebglRenderer + worker = new Worker('./webglRendererWorker.js') + sendWorkerMessage({ + canvas: offscreen, + imageBlob, + blockStatesJson: viewer.world.downloadedBlockStatesData + }, [offscreen]) + + let oldWidth = window.innerWidth + let oldHeight = window.innerHeight + let oldCamera = { + position: { x: 0, y: 0, z: 0 }, + rotation: { x: 0, y: 0, z: 0 } } - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - // updateCubes() - globalThis.updateCubes = updateCubes - - - let VBO, VAO = gl.createVertexArray(); - VBO = gl.createBuffer(); - //EBO = gl.createBuffer(); - - gl.bindVertexArray(VAO); - gl.bindBuffer(gl.ARRAY_BUFFER, VBO) - gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) - - gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) - gl.enableVertexAttribArray(0) - - gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) - gl.enableVertexAttribArray(1) - //instance data - - gl.enableVertexAttribArray(2); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.vertexAttribPointer(2, 3, gl.FLOAT, false, 3 * 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(2, 1); - - gl.enableVertexAttribArray(3); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.vertexAttribPointer(3, 1, gl.FLOAT, false, 1 * 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(3, 1); - - //gl.bindBuffer(gl.ARRAY_BUFFER, null); - //gl.bindVertexArray(null) - - let image = new Image(); - // simple black white chess image 10x10 - image.src = Dirt - let image2 = new Image(); - // simple black white chess image 10x10 - image2.src = `/textures/${version}.png` - - console.log(image.src) - await new Promise((resolve) => { - image.onload = resolve + let focused = true + window.addEventListener('focus', () => { + focused = true + sendWorkerMessage({ type: 'startRender' }) }) - await new Promise((resolve) => { - image2.onload = resolve + window.addEventListener('blur', () => { + focused = false + sendWorkerMessage({ type: 'stopRender' }) }) - - const keys = (e) => { - const code = e.code - const pressed = e.type === 'keydown' - if (pressed) { - if (code === 'KeyW') { - viewer.camera.position.z -= 1 - } - if (code === 'KeyS') { - viewer.camera.position.z += 1 - } - if (code === 'KeyA') { - viewer.camera.position.x -= 1 - } - if (code === 'KeyD') { - viewer.camera.position.x += 1 - } - if (code === 'ShiftLeft') { - viewer.camera.position.y -= 0.5 - } - if (code === 'Space') { - viewer.camera.position.y += 0.5 - } - } - } - window.addEventListener('keydown', keys) - window.addEventListener('keyup', keys) - - // mouse - const mouse = { x: 0, y: 0 } - const mouseMove = (e: PointerEvent) => { - if (e.buttons === 1 || e.pointerType === 'touch') { - viewer.camera.rotation.y += e.movementX / 20 - viewer.camera.rotation.x += e.movementY / 20 - console.log('viewer.camera.position', viewer.camera.position) - // yaw += e.movementY / 20; - // pitch += e.movementX / 20; + const mainLoop = () => { + requestAnimationFrame(mainLoop) + if (!focused) return + + if (oldWidth !== window.innerWidth || oldHeight !== window.innerHeight) { + oldWidth = window.innerWidth + oldHeight = window.innerHeight + sendWorkerMessage({ + type: 'resize', + newWidth: window.innerWidth * window.devicePixelRatio, + height: window.innerHeight * window.devicePixelRatio + }) } - if (e.buttons === 2) { - viewer.camera.position.set(0, 0, 0) - } - } - window.addEventListener('pointermove', mouseMove) - - viewer.world.texturesVersion = version - viewer.world.updateTexturesData() - await new Promise(resolve => { - // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) - // viewer.world.material.map!.image.onload = () => { - // console.log(this.material.map!.image) - // resolve() - // } - viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) - }) - console.log(viewer.world.downloadedBlockStatesData) - const names = Object.keys(viewer.world.downloadedBlockStatesData) - - let texture1 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture1); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image.width, image.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image); - //gl.generateMipmap(gl.TEXTURE_2D); - - let texture2 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture2); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, image2.width, image2.height, 0, gl.RGB, gl.UNSIGNED_BYTE, image2); - //gl.generateMipmap(gl.TEXTURE_2D); - - gl.useProgram(program) - - - - gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); - gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); - - - gl.enable(gl.DEPTH_TEST) - gl.frontFace(gl.CCW) - gl.enable(gl.CULL_FACE) - - - //gl.generateMipmap() - //gl.enable(gl) - //gl.clearColor(0, 0, 0, 1) - //gl.clear(gl.COLOR_BUFFER_BIT) - document.body.appendChild(canvas) - - let view = m4.lookAt([0, 0, 2], [0, 0, 0], [0, 1, 0]) - const projection = m4.perspective(75 * Math.PI / 180, gl.canvas.width / gl.canvas.height, 0.1, 2048) - // view = m4.identity(); - // m4.rotateX(view, yaw * Math.PI / 180) - // m4.rotateY(view, pitch * Math.PI / 180) - // m4.translate(view, [x,y,z], view) - let ModelUniform = gl.getUniformLocation(program, "model") - let uvUniform = gl.getUniformLocation(program, "uv"); - let ViewUniform = gl.getUniformLocation(program, "view") - let ProjectionUniform = gl.getUniformLocation(program, "projection") - - gl.cullFace(gl.FRONT) - - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, texture1); - gl.activeTexture(gl.TEXTURE1); - gl.bindTexture(gl.TEXTURE_2D, texture2); - - - - // stats.addPanel(new Stats.Panel('FPS', '#0ff', '#002')) - document.body.appendChild(stats.dom) - renderLoop = (performance) => { - stats.begin() - gl.canvas.width = window.innerWidth * window.devicePixelRatio - gl.canvas.height = window.innerHeight * window.devicePixelRatio - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - - view = m4.identity(); - const yaw = viewer.camera.rotation.x - const pitch = viewer.camera.rotation.y - m4.rotateX(view, yaw * Math.PI / 180, view) - m4.rotateY(view, pitch * Math.PI / 180, view) - m4.translate(view, [-viewer.camera.position.x, -viewer.camera.position.y, -viewer.camera.position.z], view) - - gl.clearColor(0.5, 0.5, 0.5, 0.0); - gl.clear(gl.COLOR_BUFFER_BIT) - gl.clear(gl.DEPTH_BUFFER_BIT) - - gl.useProgram(program) - - - - gl.uniformMatrix4fv(ViewUniform, false, view); - gl.uniformMatrix4fv(ProjectionUniform, false, projection); - - - - gl.bindVertexArray(VAO) - - //gl.bindVertexArray(instanceVBO) - gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, NumberOfCube); - //gl.bindVertexArray(null) - - //let i = 0 - // const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { - // return Object.entries(chunk.blocks).map(([pos, block]) => { - // return [...pos.split(',').map(Number), block] as [number, number, number, string] - // }) - // }).flat() - - - // cubePositions.forEach(([x, y, z, name]) => { - // const result = findTextureInBlockStates(name)?.north.texture! - // if (result || true) { - // const model = m4.identity() - - // //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); - // //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) - // //m4.rotateZ(model, Math.random() / 1010, model) - // m4.translate(model, [x, y, z], model); - // gl.uniformMatrix4fv(ModelUniform, false, model); - // const u = i / 64; - // const v = i % 64; - // // const u = result.u + result.su - // // const v = result.v - // gl.uniform2fv(uvUniform, [u, v]) - - // i++ - // i %= 800; - - // gl.drawArrays(gl.TRIANGLES, 0, 36); - // } - // }) - - - ///model.translate([0, 0, 0], model) - - //gl.Swa - stats.end() - } - - // gl.deleteVertexArray(VAO); - // gl.deleteBuffer(VBO) - // gl.deleteBuffer(EBO) - // gl.deleteProgram(program) - -} - -export const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { - const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { - const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' - const shader = gl.createShader(type)! - gl.shaderSource(shader, source) - gl.compileShader(shader) - - const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) - if (!success) { - const info = gl.getShaderInfoLog(shader) - gl.deleteShader(shader) - throw new Error(`Shader ${shaderName} compile error: ` + info) + if (['rotation', 'position'].some((key) => oldCamera[key] !== viewer.camera[key])) { + // TODO fix + for (const [key, val] of Object.entries(oldCamera)) { + for (const key2 of Object.keys(val)) { + oldCamera[key][key2] = viewer.camera[key][key2] + } + } + sendWorkerMessage({ + type: 'camera', + camera: oldCamera + }) } - return shader } - - - const program = gl.createProgram()! - gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) - gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) - gl.linkProgram(program) - const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) - if (!linkSuccess) { - const info = gl.getProgramInfoLog(program) - gl.deleteProgram(program) - throw new Error('Program link error: ' + info) - } - return program + requestAnimationFrame(mainLoop) } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts new file mode 100644 index 000000000..e634d6fa7 --- /dev/null +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -0,0 +1,404 @@ +import * as THREE from 'three' + +//@ts-ignore +import VertShader from './_VertexShader.vert' +//@ts-ignore +import FragShader from './_FragmentShader.frag' + +let blockStates + +const findTextureInBlockStates = (name): any => { + // assertDefined(viewer) + // const blockStates: BlockStates = viewer.world.customBlockStatesData || viewer.world.downloadedBlockStatesData + // const vars = blockStates[name]?.variants + // if (!vars) return + // let firstVar = Object.values(vars)[0] + // if (Array.isArray(firstVar)) firstVar = firstVar[0] + // if (!firstVar) return + // const elements = firstVar.model?.elements + // if (elements?.length !== 1) return + // return elements[0].faces +} + +let cubePositionsRaw = [] as [number, number, number, string | null][] + +const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) + +const updateSize = (width, height) => { + camera.aspect = width / height + camera.updateProjectionMatrix() +} + +let renderedFrames = 0 +setInterval(() => { + console.log('FPS:', renderedFrames) + renderedFrames = 0 +}, 1000) + +let rendering = true +let cubePositions +let updateCubes +const updateCubePositions = () => { + updateCubes() +} + +export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, blockStatesJson: any) => { + const textureBitmap = await createImageBitmap(imageBlob) + const textureWidth = textureBitmap.width + const textureHeight = textureBitmap.height + + const gl = canvas.getContext('webgl2')! + + const program = createProgram(gl, VertShader, FragShader) + + let vertices = new Float32Array([ + -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + // ront ace + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, 0.5, 0.0, 1.0, // top-let + // Let ace + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, -0.5, 1.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Right ace + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + // Bottom ace + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + 0.5, -0.5, -0.5, 1.0, 1.0, // top-let + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Top ace + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + -0.5, 0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, -0.5, 0.0, 1.0 // top-let + ]) + + let NumberOfCube = 1_000_000 + + cubePositions = new Float32Array(NumberOfCube * 3) + let cubeTextureIndices = new Float32Array(NumberOfCube); + + + // write random coordinates to cube positions xyz ten cubes; + for (let i = 0; i < NumberOfCube * 3; i += 3) { + cubePositions[i] = Math.random() * 1000 - 500; + cubePositions[i + 1] = Math.random() * 1000 - 500; + cubePositions[i + 2] = Math.random() * 100 - 100; + cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); + // cubeTextureIndices[i / 3] = 0; + } + cubePositions[0] = 0; + cubePositions[1] = 0; + cubePositions[2] = 0; + + let VAO = gl.createVertexArray(); + updateCubes = () => { + // cubePositionsRaw = [ + // // for now one cube in front of the camera + // [camera.position.x, camera.position.y, camera.position.z, 'dirt'], + // [camera.position.x + 2, camera.position.y, camera.position.z, 'dirt'], + // [camera.position.x - 2, camera.position.y, camera.position.z, 'dirt'], + // [camera.position.x, camera.position.y, camera.position.z + 2, 'dirt'], + // [camera.position.x, camera.position.y, camera.position.z - 2, 'dirt'], + // ] + // NumberOfCube = cubePositionsRaw.length + // cubePositions = new Float32Array(NumberOfCube * 3) + // cubeTextureIndices = new Float32Array(NumberOfCube); + // for (let i = 0; i < NumberOfCube * 3; i += 3) { + // cubePositions[i] = cubePositionsRaw[i / 3][0] + // cubePositions[i + 1] = cubePositionsRaw[i / 3][1] + // cubePositions[i + 2] = cubePositionsRaw[i / 3][2] + // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); + // const name = cubePositionsRaw[i / 3][3] + // const result = findTextureInBlockStates(name)?.north.texture! ?? findTextureInBlockStates('sponge')?.north.texture! + // const tileSize = 16; + // function uvToTextureIndex (u, v) { + // // Convert pixel coordinates to tile index + // const tileX = Math.floor(u * textureWidth / tileSize); + // const tileY = Math.floor(v * textureHeight / tileSize); + + // // Calculate texture index + // const textureIndex = tileY * (textureWidth / tileSize) + tileX; + + // return textureIndex; + // } + // cubeTextureIndices[i / 3] = uvToTextureIndex(result.u, result.v) + // } + + let instanceVBO = gl.createBuffer(); + let instanceTextureID = gl.createBuffer(); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + VAO = gl.createVertexArray(); + let VBO = gl.createBuffer(); + //EBO = gl.createBuffer(); + + gl.bindVertexArray(VAO); + gl.bindBuffer(gl.ARRAY_BUFFER, VBO) + gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) + + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) + gl.enableVertexAttribArray(0) + + gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) + gl.enableVertexAttribArray(1) + //instance data + + gl.enableVertexAttribArray(2); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + gl.vertexAttribPointer(2, 3, gl.FLOAT, false, 3 * 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(2, 1); + + gl.enableVertexAttribArray(3); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); + gl.vertexAttribPointer(3, 1, gl.FLOAT, false, 1 * 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(3, 1); + } + + updateCubes() + globalThis.updateCubes = updateCubes + + + + //gl.bindBuffer(gl.ARRAY_BUFFER, null); + //gl.bindVertexArray(null) + + // viewer.world.updateTexturesData() + // await new Promise(resolve => { + // // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) + // // viewer.world.material.map!.image.onload = () => { + // // console.log(this.material.map!.image) + // // resolve() + // // } + // viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + // }) + // const names = Object.keys(viewer.world.downloadedBlockStatesData) + + let texture1 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture1); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, textureWidth, textureHeight, 0, gl.RGB, gl.UNSIGNED_BYTE, textureBitmap); + //gl.generateMipmap(gl.TEXTURE_2D); + + const texture2 = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, textureWidth, textureHeight, 0, gl.RGB, gl.UNSIGNED_BYTE, textureBitmap); + //gl.generateMipmap(gl.TEXTURE_2D); + + gl.useProgram(program) + + + + gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); + gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); + + + gl.enable(gl.DEPTH_TEST) + gl.frontFace(gl.CCW) + gl.enable(gl.CULL_FACE) + + + //gl.generateMipmap() + //gl.enable(gl) + //gl.clearColor(0, 0, 0, 1) + //gl.clear(gl.COLOR_BUFFER_BIT) + + let ViewUniform = gl.getUniformLocation(program, "view") + let ProjectionUniform = gl.getUniformLocation(program, "projection") + + gl.cullFace(gl.FRONT) + + gl.activeTexture(gl.TEXTURE0); + gl.bindTexture(gl.TEXTURE_2D, texture1); + gl.activeTexture(gl.TEXTURE1); + gl.bindTexture(gl.TEXTURE_2D, texture2); + + updateSize(gl.canvas.width, gl.canvas.height) + const renderLoop = (performance) => { + // gl.canvas.width = window.innerWidth * window.devicePixelRatio + // gl.canvas.height = window.innerHeight * window.devicePixelRatio + if (newWidth || newHeight) { + gl.canvas.width = newWidth ?? gl.canvas.width + gl.canvas.height = newHeight ?? gl.canvas.height + newWidth = undefined + newHeight = undefined + updateSize(gl.canvas.width, gl.canvas.height) + } + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) + + let view = new THREE.Matrix4(); + // Rotate the view matrix around the X axis by yaw (in radians) + const yaw = camera.rotation.x + const pitch = camera.rotation.y + view.makeRotationX(yaw * Math.PI / 4); + // Rotate the view matrix around the Y axis by pitch (in radians) + view.multiply(new THREE.Matrix4().makeRotationY(pitch * Math.PI / 180)); + // Translate the view matrix by the vector [x, y, z] + view.multiply(new THREE.Matrix4().makeTranslation(camera.position.x, camera.position.y, camera.position.z)); + + gl.clearColor(0.5, 0.5, 0.5, 0.0); + gl.clear(gl.COLOR_BUFFER_BIT) + gl.clear(gl.DEPTH_BUFFER_BIT) + + gl.useProgram(program) + + + camera.updateMatrix() + camera.updateProjectionMatrix() + gl.uniformMatrix4fv(ViewUniform, false, view.elements); + gl.uniformMatrix4fv(ProjectionUniform, false, camera.projectionMatrix.elements); + + + + gl.bindVertexArray(VAO) + + //gl.bindVertexArray(instanceVBO) + gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, NumberOfCube); + //gl.bindVertexArray(null) + + //let i = 0 + // const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { + // return Object.entries(chunk.blocks).map(([pos, block]) => { + // return [...pos.split(',').map(Number), block] as [number, number, number, string] + // }) + // }).flat() + + + // cubePositions.forEach(([x, y, z, name]) => { + // if (result || true) { + // const model = m4.identity() + + // //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); + // //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) + // //m4.rotateZ(model, Math.random() / 1010, model) + // m4.translate(model, [x, y, z], model); + // gl.uniformMatrix4fv(ModelUniform, false, model); + // const u = i / 64; + // const v = i % 64; + // // const u = result.u + result.su + // // const v = result.v + // gl.uniform2fv(uvUniform, [u, v]) + + // i++ + // i %= 800; + + // gl.drawArrays(gl.TRIANGLES, 0, 36); + // } + // }) + + + ///model.translate([0, 0, 0], model) + + renderedFrames++ + requestAnimationFrame(renderLoop) + } + requestAnimationFrame(renderLoop) + + // gl.deleteVertexArray(VAO); + // gl.deleteBuffer(VBO) + // gl.deleteBuffer(EBO) + // gl.deleteProgram(program) + + return canvas +} + +const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { + const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { + const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' + const shader = gl.createShader(type)! + gl.shaderSource(shader, source) + gl.compileShader(shader) + + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) + if (!success) { + const info = gl.getShaderInfoLog(shader) + gl.deleteShader(shader) + throw new Error(`Shader ${shaderName} compile error: ` + info) + } + return shader + } + + + + const program = gl.createProgram()! + gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) + gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) + gl.linkProgram(program) + const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) + if (!linkSuccess) { + const info = gl.getProgramInfoLog(program) + gl.deleteProgram(program) + throw new Error('Program link error: ' + info) + } + return program +} + +let started = false +let newWidth: number | undefined +let newHeight: number | undefined +onmessage = function (e) { + if (!started) { + started = true + initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.blockStatesJson) + return + } + if (e.data.type === 'startRender') { + rendering = true + } + if (e.data.type === 'stopRender') { + rendering = false + } + if (e.data.type === 'resize') { + newWidth = e.data.newWidth + newHeight = e.data.newHeight + } + if (e.data.cubePositionsRaw) { + cubePositionsRaw = e.data.cubePositionsRaw + } + if (e.data.type === 'camera') { + camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') + } +} diff --git a/prismarine-viewer/viewer/lib/viewerWrapper.ts b/prismarine-viewer/viewer/lib/viewerWrapper.ts new file mode 100644 index 000000000..7e489a6c5 --- /dev/null +++ b/prismarine-viewer/viewer/lib/viewerWrapper.ts @@ -0,0 +1,117 @@ +// wrapper for now +export class ViewerWrapper { + previousWindowWidth: number + previousWindowHeight: number + globalObject = globalThis as any + stopRenderOnBlur = true + addedToPage = false + renderInterval = 0 + fpsInterval + + constructor(public canvas: HTMLCanvasElement, public renderer?: THREE.WebGLRenderer) { + } + addToPage (startRendering = true) { + if (this.addedToPage) throw new Error('Already added to page') + let pixelRatio = window.devicePixelRatio || 1 // todo this value is too high on ios, need to check, probably we should use avg, also need to make it configurable + if (this.renderer) { + if (!this.renderer.capabilities.isWebGL2) pixelRatio = 1 // webgl1 has issues with high pixel ratio (sometimes screen is clipped) + this.renderer.setPixelRatio(pixelRatio) + this.renderer.setSize(window.innerWidth, window.innerHeight) + } else { + this.canvas.width = window.innerWidth * pixelRatio + this.canvas.height = window.innerHeight * pixelRatio + } + this.previousWindowWidth = window.innerWidth + this.previousWindowHeight = window.innerHeight + + this.canvas.id = 'viewer-canvas' + document.body.appendChild(this.canvas) + + if (this.renderer) this.globalObject.renderer = this.renderer + this.addedToPage = true + + let max = 0 + this.fpsInterval = setInterval(() => { + if (max > 0) { + viewer.world.droppedFpsPercentage = this.renderedFps / max + } + max = Math.max(this.renderedFps, max) + this.renderedFps = 0 + }, 1000) + if (startRendering) { + this.globalObject.requestAnimationFrame(this.render.bind(this)) + } + if (typeof window !== 'undefined') { + this.trackWindowFocus() + } + } + + windowFocused = true + trackWindowFocus () { + window.addEventListener('focus', () => { + this.windowFocused = true + }) + window.addEventListener('blur', () => { + this.windowFocused = false + }) + } + + dispose () { + if (!this.addedToPage) throw new Error('Not added to page') + document.body.removeChild(this.canvas) + this.renderer?.dispose() + // this.addedToPage = false + clearInterval(this.fpsInterval) + } + + + renderedFps = 0 + lastTime = performance.now() + delta = 0 + startRender = () => { } + endRender = () => { } + render (time: DOMHighResTimeStamp) { + if (this.globalObject.stopLoop) return + for (const fn of beforeRenderFrame) fn() + this.globalObject.requestAnimationFrame(this.render.bind(this)) + if (this.globalObject.stopRender || this.renderer?.xr.isPresenting || (this.stopRenderOnBlur && !this.windowFocused)) return + if (this.renderInterval) { + this.delta += time - this.lastTime + this.lastTime = time + if (this.delta > this.renderInterval) { + this.delta %= this.renderInterval + // continue rendering + } else { + return + } + } + // ios bug: viewport dimensions are updated after the resize event + if (this.previousWindowWidth !== window.innerWidth || this.previousWindowHeight !== window.innerHeight) { + this.resizeHandler() + this.previousWindowWidth = window.innerWidth + this.previousWindowHeight = window.innerHeight + } + this.startRender() + viewer.update() + viewer.render() + this.renderedFps++ + this.endRender() + } + + resizeHandler () { + const width = window.innerWidth + const height = window.innerHeight + + viewer.camera.aspect = width / height + viewer.camera.updateProjectionMatrix() + + if (this.renderer) { + this.renderer.setSize(width, height) + } + // canvas updated by renderer + + if (viewer.composer) { + viewer.updateComposerSize() + } + } +} diff --git a/src/index.ts b/src/index.ts index 3cd6bb758..e31923941 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,6 +97,7 @@ import { possiblyHandleStateVariable } from './googledrive' import flyingSquidEvents from './flyingSquidEvents' import { hideNotification, notificationProxy } from './react/NotificationProvider' import { initWebglRenderer } from 'prismarine-viewer/examples/webglRenderer' +import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' window.debug = debug window.THREE = THREE @@ -123,12 +124,6 @@ try { // renderer.localClippingEnabled = true initWithRenderer(renderer.domElement) window.renderer = renderer -let pixelRatio = window.devicePixelRatio || 1 // todo this value is too high on ios, need to check, probably we should use avg, also need to make it configurable -if (!renderer.capabilities.isWebGL2) pixelRatio = 1 // webgl1 has issues with high pixel ratio (sometimes screen is clipped) -renderer.setPixelRatio(pixelRatio) -renderer.setSize(window.innerWidth, window.innerHeight) -renderer.domElement.id = 'viewer-canvas' -document.body.appendChild(renderer.domElement) const isFirefox = ua.getBrowser().name === 'Firefox' if (isFirefox) { @@ -173,70 +168,8 @@ watchValue(options, (o) => { }) let postRenderFrameFn = () => { } -let delta = 0 -let lastTime = performance.now() -let previousWindowWidth = window.innerWidth -let previousWindowHeight = window.innerHeight -let max = 0 -let rendered = 0 -let windowFocused = true -window.addEventListener('focus', () => { - windowFocused = true +void initWebglRenderer('1.14.4').then((canvas) => { }) -window.addEventListener('blur', () => { - windowFocused = false -}) -const renderFrame = (time: DOMHighResTimeStamp) => { - if (window.stopLoop) return - for (const fn of beforeRenderFrame) fn() - window.requestAnimationFrame(renderFrame) - if (window.stopRender || renderer.xr.isPresenting || !windowFocused) return - if (renderInterval) { - delta += time - lastTime - lastTime = time - if (delta > renderInterval) { - delta %= renderInterval - // continue rendering - } else { - return - } - } - // ios bug: viewport dimensions are updated after the resize event - if (previousWindowWidth !== window.innerWidth || previousWindowHeight !== window.innerHeight) { - resizeHandler() - previousWindowWidth = window.innerWidth - previousWindowHeight = window.innerHeight - } - statsStart() - viewer.update() - viewer.render() - rendered++ - postRenderFrameFn() - statsEnd() -} -renderFrame(performance.now()) -setInterval(() => { - if (max > 0) { - viewer.world.droppedFpsPercentage = rendered / max - } - max = Math.max(rendered, max) - rendered = 0 -}, 1000) - -const resizeHandler = () => { - const width = window.innerWidth - const height = window.innerHeight - - viewer.camera.aspect = width / height - viewer.camera.updateProjectionMatrix() - renderer.setSize(width, height) - - if (viewer.composer) { - viewer.updateComposerSize() - } -} - -initWebglRenderer('1.14.4') const hud = document.getElementById('hud') const pauseMenu = document.getElementById('pause-screen') From a3290063e86a201a444bcf10b4f5a08f52a4f391 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 12:26:58 +0300 Subject: [PATCH 020/303] restore singleplayer --- prismarine-viewer/examples/playground.ts | 8 - prismarine-viewer/examples/webglRenderer.ts | 26 ++-- .../examples/webglRendererWorker.ts | 144 ++++++++---------- prismarine-viewer/viewer/lib/viewer.ts | 2 - prismarine-viewer/viewer/lib/worldrenderer.ts | 11 +- src/index.ts | 8 +- 6 files changed, 88 insertions(+), 111 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 760802f01..c16f2fa54 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -135,14 +135,6 @@ async function main () { const viewer = new Viewer(nullRenderer, 1) viewer.setVersion(version) globalThis.viewer = viewer - await new Promise(resolve => { - // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) - // viewer.world.material.map!.image.onload = () => { - // console.log(this.material.map!.image) - // resolve() - // } - viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) - }) await initWebglRenderer(version) const simpleControls = () => { diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 217e852a8..322f55696 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -4,22 +4,25 @@ let worker declare const viewer: Viewer -export const makeRender = () => { } - -let cubePositions -let updateCubes -export const updateCubePositions = () => { - updateCubes() -} - -export let cubePositionsRaw = [] as [number, number, number, string | null][] - const sendWorkerMessage = (message: any, transfer?: Transferable[]) => { worker.postMessage(message, transfer) // replacable by onmessage } -export const initWebglRenderer = async (version: string | undefined) => { +export const addBlocksSection = (key, data) => { + sendWorkerMessage({ type: 'addBlocksSection', data, key }) +} + +export const initWebglRenderer = async (version: string, postRender = () => { }) => { + viewer.setVersion(version) + await new Promise(resolve => { + // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) + // viewer.world.material.map!.image.onload = () => { + // console.log(this.material.map!.image) + // resolve() + // } + viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + }) const imageBlob = await fetch(`./textures/${version}.png`).then((res) => res.blob()) const canvas = document.createElement('canvas') canvas.width = window.innerWidth * window.devicePixelRatio @@ -64,6 +67,7 @@ export const initWebglRenderer = async (version: string | undefined) => { height: window.innerHeight * window.devicePixelRatio }) } + postRender() if (['rotation', 'position'].some((key) => oldCamera[key] !== viewer.camera[key])) { // TODO fix for (const [key, val] of Object.entries(oldCamera)) { diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index e634d6fa7..753685049 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -6,43 +6,41 @@ import VertShader from './_VertexShader.vert' import FragShader from './_FragmentShader.frag' let blockStates +let newSectionsData = {} +let rendering = true +let cubePositions +let updateCubes -const findTextureInBlockStates = (name): any => { - // assertDefined(viewer) - // const blockStates: BlockStates = viewer.world.customBlockStatesData || viewer.world.downloadedBlockStatesData - // const vars = blockStates[name]?.variants - // if (!vars) return - // let firstVar = Object.values(vars)[0] - // if (Array.isArray(firstVar)) firstVar = firstVar[0] - // if (!firstVar) return - // const elements = firstVar.model?.elements - // if (elements?.length !== 1) return - // return elements[0].faces -} +const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) -let cubePositionsRaw = [] as [number, number, number, string | null][] +let renderedFrames = 0 +setInterval(() => { + // console.log('FPS:', renderedFrames) + renderedFrames = 0 +}, 1000) -const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) +const findTextureInBlockStates = (name): any => { + const vars = blockStates[name]?.variants + if (!vars) return + let firstVar = Object.values(vars)[0] as any + if (Array.isArray(firstVar)) firstVar = firstVar[0] + if (!firstVar) return + const elements = firstVar.model?.elements + if (elements?.length !== 1) return + return elements[0].faces +} const updateSize = (width, height) => { camera.aspect = width / height camera.updateProjectionMatrix() } -let renderedFrames = 0 -setInterval(() => { - console.log('FPS:', renderedFrames) - renderedFrames = 0 -}, 1000) - -let rendering = true -let cubePositions -let updateCubes const updateCubePositions = () => { updateCubes() } export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, blockStatesJson: any) => { + blockStates = blockStatesJson const textureBitmap = await createImageBitmap(imageBlob) const textureWidth = textureBitmap.width const textureHeight = textureBitmap.height @@ -123,29 +121,42 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // [camera.position.x, camera.position.y, camera.position.z + 2, 'dirt'], // [camera.position.x, camera.position.y, camera.position.z - 2, 'dirt'], // ] - // NumberOfCube = cubePositionsRaw.length - // cubePositions = new Float32Array(NumberOfCube * 3) - // cubeTextureIndices = new Float32Array(NumberOfCube); - // for (let i = 0; i < NumberOfCube * 3; i += 3) { - // cubePositions[i] = cubePositionsRaw[i / 3][0] - // cubePositions[i + 1] = cubePositionsRaw[i / 3][1] - // cubePositions[i + 2] = cubePositionsRaw[i / 3][2] - // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); - // const name = cubePositionsRaw[i / 3][3] - // const result = findTextureInBlockStates(name)?.north.texture! ?? findTextureInBlockStates('sponge')?.north.texture! - // const tileSize = 16; - // function uvToTextureIndex (u, v) { - // // Convert pixel coordinates to tile index - // const tileX = Math.floor(u * textureWidth / tileSize); - // const tileY = Math.floor(v * textureHeight / tileSize); - - // // Calculate texture index - // const textureIndex = tileY * (textureWidth / tileSize) + tileX; - - // return textureIndex; - // } - // cubeTextureIndices[i / 3] = uvToTextureIndex(result.u, result.v) - // } + const keys = Object.keys(newSectionsData); + if (keys.length) { + const cubePositionsRaw = keys.flatMap((key: any) => { + const chunk = newSectionsData[key] + return Object.entries(chunk.blocks).map(([pos, blockName]) => { + return [...pos.split(',').map(Number), blockName] as [number, number, number, string] + }) + }) + NumberOfCube = cubePositionsRaw.length + cubePositions = new Float32Array(NumberOfCube * 3) + cubeTextureIndices = new Float32Array(NumberOfCube); + for (let i = 0; i < NumberOfCube * 3; i += 3) { + cubePositions[i] = cubePositionsRaw[i / 3][0] + cubePositions[i + 1] = cubePositionsRaw[i / 3][1] + cubePositions[i + 2] = cubePositionsRaw[i / 3][2] + cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); + const name = cubePositionsRaw[i / 3][3] + const result = findTextureInBlockStates(name)?.north?.texture! ?? findTextureInBlockStates('sponge')?.north.texture! + const tileSize = 16; + function uvToTextureIndex (u, v) { + // Convert UV coordinates to pixel coordinates + let x = u * textureWidth; + let y = v * textureHeight; + + // Convert pixel coordinates to tile index + const tileX = Math.floor(x / tileSize); + const tileY = Math.floor(y / tileSize); + + // Calculate texture index + const textureIndex = tileY * (textureWidth / tileSize) + tileX; + + return textureIndex; + } + cubeTextureIndices[i / 3] = uvToTextureIndex(result.u, result.v) - 1 + } + } let instanceVBO = gl.createBuffer(); let instanceTextureID = gl.createBuffer(); @@ -257,6 +268,8 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im updateSize(gl.canvas.width, gl.canvas.height) const renderLoop = (performance) => { + requestAnimationFrame(renderLoop) + if (!rendering) return // gl.canvas.width = window.innerWidth * window.devicePixelRatio // gl.canvas.height = window.innerHeight * window.devicePixelRatio if (newWidth || newHeight) { @@ -298,41 +311,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, NumberOfCube); //gl.bindVertexArray(null) - //let i = 0 - // const cubePositions = Object.values(viewer.world.newChunks).map((chunk: any) => { - // return Object.entries(chunk.blocks).map(([pos, block]) => { - // return [...pos.split(',').map(Number), block] as [number, number, number, string] - // }) - // }).flat() - - - // cubePositions.forEach(([x, y, z, name]) => { - // if (result || true) { - // const model = m4.identity() - - // //m4.rotateX(model, performance / 1000*i/800 + Math.random() / 100, model); - // //m4.rotateY(model, performance / 2500*i/800 + Math.random() / 100, model) - // //m4.rotateZ(model, Math.random() / 1010, model) - // m4.translate(model, [x, y, z], model); - // gl.uniformMatrix4fv(ModelUniform, false, model); - // const u = i / 64; - // const v = i % 64; - // // const u = result.u + result.su - // // const v = result.v - // gl.uniform2fv(uvUniform, [u, v]) - - // i++ - // i %= 800; - - // gl.drawArrays(gl.TRIANGLES, 0, 36); - // } - // }) - - - ///model.translate([0, 0, 0], model) - renderedFrames++ - requestAnimationFrame(renderLoop) } requestAnimationFrame(renderLoop) @@ -394,8 +373,9 @@ onmessage = function (e) { newWidth = e.data.newWidth newHeight = e.data.newHeight } - if (e.data.cubePositionsRaw) { - cubePositionsRaw = e.data.cubePositionsRaw + if (e.data.type === 'addBlocksSection') { + newSectionsData[e.data.key] = e.data.data + updateCubes?.() } if (e.data.type === 'camera') { camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index e7fbd4b9b..82cbc64d6 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -7,7 +7,6 @@ import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' -import { makeRender } from '../../examples/webglRenderer' export class Viewer { scene: THREE.Scene @@ -194,7 +193,6 @@ export class Viewer { } render () { - makeRender() // if (this.composer) { // this.renderPass.camera = this.camera // this.composer.render() diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts index 553c33dc8..10da0eef3 100644 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ b/prismarine-viewer/viewer/lib/worldrenderer.ts @@ -10,7 +10,7 @@ import { toMajor } from './version.js' import PrismarineChatLoader from 'prismarine-chat' import { renderSign } from '../sign-renderer/' import { chunkPos, sectionPos } from './simpleUtils' -import { cubePositionsRaw, updateCubePositions } from '../../examples/webglRenderer' +import { addBlocksSection } from '../../examples/webglRenderer' function mod (x, n) { return ((x % n) + n) % n @@ -89,11 +89,12 @@ export class WorldRenderer { const chunkCoords = data.key.split(',') if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return + addBlocksSection(data.key, data.geometry) this.newChunks[data.key] = data.geometry - cubePositionsRaw.push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { - return [...pos.split(',').map(Number), block] as [number, number, number, string] - })) - updateCubePositions() + // cubePositionsBySections[data.key].push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { + // return [...pos.split(',').map(Number), block] as [number, number, number, string] + // })) + // updateCubePositions() // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { // const newPromise = new Promise(resolve => { diff --git a/src/index.ts b/src/index.ts index e31923941..a4cad8886 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,7 +97,7 @@ import { possiblyHandleStateVariable } from './googledrive' import flyingSquidEvents from './flyingSquidEvents' import { hideNotification, notificationProxy } from './react/NotificationProvider' import { initWebglRenderer } from 'prismarine-viewer/examples/webglRenderer' -import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' +// import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' window.debug = debug window.THREE = THREE @@ -168,8 +168,6 @@ watchValue(options, (o) => { }) let postRenderFrameFn = () => { } -void initWebglRenderer('1.14.4').then((canvas) => { -}) const hud = document.getElementById('hud') const pauseMenu = document.getElementById('pause-screen') @@ -387,6 +385,10 @@ async function connect (connectOptions: { if (downloadVersion) { await downloadMcData(downloadVersion) } + await initWebglRenderer(downloadVersion, () => { + postRenderFrameFn() + // viewer.update() + }) if (singleplayer) { // SINGLEPLAYER EXPLAINER: From ce194599d74f749d0a76acdfd68f978e96998a64 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 12:27:03 +0300 Subject: [PATCH 021/303] up world --- pnpm-lock.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc673ee31..fb79e917f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5734,7 +5734,7 @@ packages: prismarine-nbt: 2.5.0 prismarine-provider-anvil: github.com/zardoy/prismarine-provider-anvil/0ddcd9d48574113308e1fbebef60816aced0846f(minecraft-data@3.62.0) prismarine-windows: 2.9.0 - prismarine-world: github.com/zardoy/prismarine-world/c358222204d21fe7d45379fbfcefb047f926c786 + prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 random-seed: 0.3.0 range: 0.0.3 readline: 1.3.0 @@ -12505,7 +12505,7 @@ packages: minecraft-data: 3.62.0 prismarine-block: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 prismarine-nbt: 2.2.1 - prismarine-world: github.com/zardoy/prismarine-world/c358222204d21fe7d45379fbfcefb047f926c786 + prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 vec3: 0.1.8 dev: false @@ -15955,7 +15955,7 @@ packages: prismarine-recipe: 1.3.1(prismarine-registry@1.7.0) prismarine-registry: 1.7.0 prismarine-windows: 2.9.0 - prismarine-world: github.com/zardoy/prismarine-world/c358222204d21fe7d45379fbfcefb047f926c786 + prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 protodef: 1.15.0 typed-emitter: 1.4.0 vec3: 0.1.8 @@ -16063,8 +16063,8 @@ packages: - minecraft-data dev: false - github.com/zardoy/prismarine-world/c358222204d21fe7d45379fbfcefb047f926c786: - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-world/tar.gz/c358222204d21fe7d45379fbfcefb047f926c786} + github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465: + resolution: {tarball: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465} name: prismarine-world version: 3.6.2 engines: {node: '>=8.0.0'} From 00b9683e782608ee49b7d6bc1090af31365bb0f5 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 12:35:33 +0300 Subject: [PATCH 022/303] fix worker output! --- buildWorkers.mjs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/buildWorkers.mjs b/buildWorkers.mjs index 9807c4593..b8d16d115 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -1,5 +1,6 @@ // main worker file intended for computing world geometry is built using prismarine-viewer/buildWorker.mjs import { build, context } from 'esbuild' +import fs from 'fs' const watch = process.argv.includes('-w') @@ -8,10 +9,21 @@ const result = await (watch ? context : build)({ platform: 'browser', entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts'], outfile: 'prismarine-viewer/public/webglRendererWorker.js', - sourcemap: 'inline', - // minify: true, + sourcemap: watch ? 'inline' : 'external', + minify: !watch, logLevel: 'info', - plugins: [], + plugins: [ + { + name: 'writeOutput', + setup (build) { + build.onEnd(({ outputFiles }) => { + for (const file of ['prismarine-viewer/public/webglRendererWorker.js', 'dist/webglRendererWorker.js']) { + fs.writeFileSync(file, outputFiles[0].text, 'utf8') + } + }) + } + } + ], loader: { '.vert': 'text', '.frag': 'text' @@ -20,6 +32,7 @@ const result = await (watch ? context : build)({ 'browser', 'module', 'main' ], keepNames: true, + write: false, }) if (watch) { From d0a6941031887aee837a1d35c2312844180e684e Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 12:40:39 +0300 Subject: [PATCH 023/303] build workers --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 98f6727b5..3fe21a9d4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node esbuild.mjs --watch", "start-watch-script": "nodemon -w esbuild.mjs --watch", - "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod", + "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod && node buildWorkers.mjs", "check-build": "tsc && pnpm test-unit && pnpm build", "test:cypress": "cypress run", "test:cypress:perf": "cypress run --spec cypress/e2e/perf.spec.ts --browser edge", From f3295593bf1b024bcc184f6ca39786d25f301829 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 13:00:24 +0300 Subject: [PATCH 024/303] build worker correctly --- buildWorkers.mjs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/buildWorkers.mjs b/buildWorkers.mjs index b8d16d115..b4dec8f51 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -11,14 +11,21 @@ const result = await (watch ? context : build)({ outfile: 'prismarine-viewer/public/webglRendererWorker.js', sourcemap: watch ? 'inline' : 'external', minify: !watch, + treeShaking: true, logLevel: 'info', + alias: { + 'three': './node_modules/three/src/Three.js' + }, plugins: [ { name: 'writeOutput', setup (build) { build.onEnd(({ outputFiles }) => { - for (const file of ['prismarine-viewer/public/webglRendererWorker.js', 'dist/webglRendererWorker.js']) { - fs.writeFileSync(file, outputFiles[0].text, 'utf8') + for (const file of outputFiles) { + for (const dir of ['prismarine-viewer/public', 'dist']) { + const baseName = file.path.split('/').pop() + fs.writeFileSync(`${dir}/${baseName}`, file.contents) + } } }) } From a19c9ad784588e4132474d2512f803301ebbab1b Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 14:37:37 +0300 Subject: [PATCH 025/303] fix cam --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index a4cad8886..1ee933915 100644 --- a/src/index.ts +++ b/src/index.ts @@ -387,7 +387,7 @@ async function connect (connectOptions: { } await initWebglRenderer(downloadVersion, () => { postRenderFrameFn() - // viewer.update() + viewer.update() }) if (singleplayer) { From 7d5f1c504f420631df79b15d084b4d2bcdfa9392 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 27 Mar 2024 11:16:07 +0300 Subject: [PATCH 026/303] worker part 2 --- buildWorkers.mjs | 19 ++++++++++++++++--- src/workerWorkaround.ts | 2 ++ src/worldSaveWorker.ts | 2 ++ 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/workerWorkaround.ts create mode 100644 src/worldSaveWorker.ts diff --git a/buildWorkers.mjs b/buildWorkers.mjs index b4dec8f51..c6bdcb220 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -7,15 +7,28 @@ const watch = process.argv.includes('-w') const result = await (watch ? context : build)({ bundle: true, platform: 'browser', - entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts'], - outfile: 'prismarine-viewer/public/webglRendererWorker.js', + entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts', 'src/worldSaveWorker.ts'], + outdir: 'prismarine-viewer/public/', sourcemap: watch ? 'inline' : 'external', minify: !watch, treeShaking: true, logLevel: 'info', alias: { - 'three': './node_modules/three/src/Three.js' + 'three': './node_modules/three/src/Three.js', + events: 'events', // make explicit + buffer: 'buffer', + 'fs': 'browserfs/dist/shims/fs.js', + http: 'http-browserify', + perf_hooks: './src/perf_hooks_replacement.js', + crypto: './src/crypto.js', + stream: 'stream-browserify', + net: 'net-browserify', + assert: 'assert', + dns: './src/dns.js' }, + inject: [ + './src/shims.js' + ], plugins: [ { name: 'writeOutput', diff --git a/src/workerWorkaround.ts b/src/workerWorkaround.ts new file mode 100644 index 000000000..00419b8c3 --- /dev/null +++ b/src/workerWorkaround.ts @@ -0,0 +1,2 @@ +global = globalThis +globalThis.window = globalThis diff --git a/src/worldSaveWorker.ts b/src/worldSaveWorker.ts new file mode 100644 index 000000000..b49c02003 --- /dev/null +++ b/src/worldSaveWorker.ts @@ -0,0 +1,2 @@ +import './workerWorkaround' +import './browserfs' From 506706e88b74d9dc509edd95121b8f21d51b5f55 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 28 Mar 2024 03:43:42 +0300 Subject: [PATCH 027/303] fixed camera, coords, cam, textures, controls --- buildWorkers.mjs | 2 +- experiments/texture-render.html | 21 +++--- .../examples/_FragmentShader.frag | 12 ++-- prismarine-viewer/examples/_VertexShader.vert | 3 +- prismarine-viewer/examples/playground.ts | 65 ++++++++++++------- prismarine-viewer/examples/webglRenderer.ts | 63 +++++++++++++++++- .../examples/webglRendererWorker.ts | 59 ++++++++--------- src/topRightStats.ts | 2 +- 8 files changed, 156 insertions(+), 71 deletions(-) diff --git a/buildWorkers.mjs b/buildWorkers.mjs index c6bdcb220..a7008de58 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -7,7 +7,7 @@ const watch = process.argv.includes('-w') const result = await (watch ? context : build)({ bundle: true, platform: 'browser', - entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts', 'src/worldSaveWorker.ts'], + entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts'], outdir: 'prismarine-viewer/public/', sourcemap: watch ? 'inline' : 'external', minify: !watch, diff --git a/experiments/texture-render.html b/experiments/texture-render.html index be406102a..585f10e5a 100644 --- a/experiments/texture-render.html +++ b/experiments/texture-render.html @@ -10,8 +10,8 @@ diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index bcc02a06d..8f9d53ce4 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -419,127 +419,126 @@ export function getSectionGeometry (sx, sy, sz, world: World) { block.variant = getModelVariants(block) } - for (const variant of block.variant) { - if (!variant || !variant.model) continue - - if (true/* block.name !== 'water' && block.name !== 'lava' *//* && block.isCube */) { - let globalMatrix = null as any - let globalShift = null as any + if (/* block.name !== 'water' && block.name !== 'lava' *//* && block.isCube */block.name !== 'air') { + let globalMatrix = null as any + let globalShift = null as any + if (block.variant?.model) { for (const axis of ['x', 'y', 'z']) { - if (axis in variant) { - if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) - else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) + if (axis in block.variant) { + if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -block.variant[axis]) + else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -block.variant[axis])) + } + } + } + + if (globalMatrix) { + globalShift = [8, 8, 8] + globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + } + + // full cube rendering + for (const face in elemFaces) { + const cullIfIdentical = block.name.indexOf('glass') >= 0 + + // const eFace = element.faces[face] + const { corners, mask1, mask2 } = elemFaces[face] + const dir = matmul3(globalMatrix, elemFaces[face].dir) + + if (/* eFace.cullface */true) { + const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) + if (neighbor) { + if (cullIfIdentical && neighbor.type === block.type) continue + if (!neighbor.transparent && neighbor.isCube) continue + } else { + continue } } - if (globalMatrix) { - globalShift = [8, 8, 8] - globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + const pos = block.position + + const findTextureInBlockStates = (name): any => { + const vars = blockStates[name]?.variants + if (!vars) return blockStates[name]?.multipart?.[0]?.apply?.[0]?.model?.elements?.[0]?.faces?.south?.texture + let firstVar = Object.values(vars)[0] as any + if (Array.isArray(firstVar)) firstVar = firstVar[0] + if (!firstVar) return + const [element] = firstVar.model?.elements + if (!element) return firstVar.model?.textures?.particle + if (!element/* || !(element?.from.every(a => a === 0) && element?.to.every(a => a === 16)) */) return + return element.faces } - for (const element of variant.model.elements) { - for (const face in element.faces) { - const cullIfIdentical = block.name.indexOf('glass') >= 0 - - const eFace = element.faces[face] - const { corners, mask1, mask2 } = elemFaces[face] - const dir = matmul3(globalMatrix, elemFaces[face].dir) - - if (eFace.cullface) { - const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) - if (neighbor) { - if (cullIfIdentical && neighbor.type === block.type) continue - if (!neighbor.transparent && neighbor.isCube) continue - } else { - continue - } - } - - const pos = block.position - - const findTextureInBlockStates = (name): any => { - const vars = blockStates[name]?.variants - if (!vars) return blockStates[name]?.multipart?.[0]?.apply?.[0]?.model?.elements?.[0]?.faces?.south?.texture - let firstVar = Object.values(vars)[0] as any - if (Array.isArray(firstVar)) firstVar = firstVar[0] - if (!firstVar) return - const [element] = firstVar.model?.elements - if (!element) return firstVar.model?.textures?.particle - if (!element/* || !(element?.from.every(a => a === 0) && element?.to.every(a => a === 16)) */) return - return element.faces - } - - let animatedFrames = undefined - const getResult = (side: string): number => { - const facesOrTexture = findTextureInBlockStates(block.name); - if (!facesOrTexture) return - const result = 'u' in facesOrTexture ? facesOrTexture : facesOrTexture?.[side]?.texture - if (!result) return 0 // todo - if (result.animatedFrames) { - animatedFrames = result.animatedFrames - } - return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) - } - function uvToTextureIndex (u, v) { - const textureWidth = textureSize - const textureHeight = textureSize - const tileSize = 16; - // Convert UV coordinates to pixel coordinates - let x = u * textureWidth; - let y = v * textureHeight; - - // Convert pixel coordinates to tile index - const tileX = Math.floor(x / tileSize); - const tileY = Math.floor(y / tileSize); - - // Calculate texture index - const textureIndex = tileY * (textureWidth / tileSize) + tileX; - - return textureIndex; - } - // back, front, left, right, top, bottom - const textures = [ - getResult('north'), - getResult('south'), - getResult('west'), - getResult('east'), - getResult('up'), - getResult('down') - ] - if (textures.every(t => t === 0)) continue - attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { - textureIndex: textures, - animatedFrames - } satisfies BlockType + let animatedFrames = undefined + const getResult = (side: string): number => { + const facesOrTexture = findTextureInBlockStates(block.name); + if (!facesOrTexture) return + const result = 'u' in facesOrTexture ? facesOrTexture : facesOrTexture?.[side]?.texture + if (!result) return 0 // todo + if (result.animatedFrames) { + animatedFrames = result.animatedFrames } + return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) + } + function uvToTextureIndex (u, v) { + const textureWidth = textureSize + const textureHeight = textureSize + const tileSize = 16; + // Convert UV coordinates to pixel coordinates + let x = u * textureWidth; + let y = v * textureHeight; + + // Convert pixel coordinates to tile index + const tileX = Math.floor(x / tileSize); + const tileY = Math.floor(y / tileSize); + + // Calculate texture index + const textureIndex = tileY * (textureWidth / tileSize) + tileX; + + return textureIndex; } + // back, front, left, right, top, bottom + const textures = [ + getResult('north'), + getResult('south'), + getResult('west'), + getResult('east'), + getResult('up'), + getResult('down') + ] + if (textures.every(t => t === 0)) continue + attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { + textureIndex: textures, + animatedFrames + } satisfies BlockType } - // if (block.name === 'water') { - // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) - // } else if (block.name === 'lava') { - // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) - // } else { - // let globalMatrix = null as any - // let globalShift = null as any - - // for (const axis of ['x', 'y', 'z']) { - // if (axis in variant) { - // if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) - // else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) - // } - // } - - // if (globalMatrix) { - // globalShift = [8, 8, 8] - // globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) - // } - - // for (const element of variant.model.elements) { - // renderElement(world, cursor, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) - // } - // } + } + // if (block.name === 'water') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) + // } else if (block.name === 'lava') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) + // } else { + // let globalMatrix = null as any + // let globalShift = null as any + + // for (const axis of ['x', 'y', 'z']) { + // if (axis in variant) { + // if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) + // else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) + // } + // } + + // if (globalMatrix) { + // globalShift = [8, 8, 8] + // globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + // } + + // for (const element of variant.model.elements) { + // renderElement(world, cursor, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) + // } + // } + } } } diff --git a/prismarine-viewer/viewer/prepare/atlas.ts b/prismarine-viewer/viewer/prepare/atlas.ts index 694cefa85..546f83bd7 100644 --- a/prismarine-viewer/viewer/prepare/atlas.ts +++ b/prismarine-viewer/viewer/prepare/atlas.ts @@ -62,6 +62,12 @@ export const makeTextureAtlas = (input: string[], getInputData: (name) => { cont img.src = inputData.contents const renderWidth = tileSize * (inputData.tileWidthMult ?? 1) let animatedFrames = 0 + const addDebugText = (x, y) => { + // return // disable debug text + g.fillStyle = 'black' + g.font = '8px Arial' + g.fillText(i, x, y) + } if (img.height > tileSize) { const frames = img.height / tileSize; animatedFrames = frames @@ -71,9 +77,11 @@ export const makeTextureAtlas = (input: string[], getInputData: (name) => { cont const x = ((pos + i) % texSize) * tileSize const y = Math.floor((pos + i) / texSize) * tileSize g.drawImage(img, 0, i * tileSize, renderWidth, tileSize, x, y, renderWidth, tileSize) + addDebugText(x, y) } } else { g.drawImage(img, 0, 0, renderWidth, tileSize, x, y, renderWidth, tileSize) + addDebugText(x, y) } const cleanName = keyValue.split('.').slice(0, -1).join('.') || keyValue diff --git a/prismarine-viewer/viewer/prepare/generateTextures.ts b/prismarine-viewer/viewer/prepare/generateTextures.ts index b9a5e3e5f..93f7a52ca 100644 --- a/prismarine-viewer/viewer/prepare/generateTextures.ts +++ b/prismarine-viewer/viewer/prepare/generateTextures.ts @@ -22,9 +22,10 @@ const warnings = new Set() Promise.resolve().then(async () => { generateItemsAtlases() console.time('generateTextures') - for (const version of mcAssets.versions as typeof mcAssets['versions']) { + const versions = process.argv.includes('-l') ? mcAssets.versions.at(-1) : mcAssets.versions + for (const version of versions as typeof mcAssets['versions']) { // for debugging (e.g. when above is overridden) - if (!mcAssets.versions.includes(version)) { + if (!versions.includes(version)) { throw new Error(`Version ${version} is not supported by minecraft-assets`) } const assets = mcAssets(version) @@ -44,7 +45,7 @@ Promise.resolve().then(async () => { fs.copySync(assets.directory, path.resolve(texturesPath, version), { overwrite: true }) } - fs.writeFileSync(path.join(publicPath, 'supportedVersions.json'), '[' + mcAssets.versions.map(v => `"${v}"`).toString() + ']') + fs.writeFileSync(path.join(publicPath, 'supportedVersions.json'), '[' + versions.map(v => `"${v}"`).toString() + ']') warnings.forEach(x => console.warn(x)) console.timeEnd('generateTextures') }) From 97a9e92119237bd05822daea71fb9d9d3a0c0340 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 6 Apr 2024 02:55:44 +0300 Subject: [PATCH 044/303] impl basic debug animation --- prismarine-viewer/examples/playground.ts | 10 ++++++---- prismarine-viewer/examples/webglRenderer.ts | 5 +++-- .../examples/webglRendererWorker.ts | 20 +++++++++++++++++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 2ffa62255..5ceef5190 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -71,7 +71,7 @@ async function main () { let continuousRender = false // const { version } = params - const version = '1.16.4' + const version = '1.20.2' // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { @@ -101,7 +101,7 @@ async function main () { gui.add(params, 'skip') gui.add(params, 'playSound') gui.add(params, 'blockIsomorphicRenderBundle') - const animationController = gui.add(params, 'animationTick', 0, 20, 1).listen() + const animationController = gui.add(params, 'animationTick', -1, 20, 1).listen() gui.open(false) let metadataFolder = gui.addFolder('metadata') // let entityRotationFolder = gui.addFolder('entity metadata') @@ -365,7 +365,7 @@ async function main () { viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) }, animationTick () { - setAnimationTick(params.animationTick) + setAnimationTick(params.animationTick, viewer.world.hasWithFrames - 1) } } @@ -430,7 +430,9 @@ async function main () { window.requestAnimationFrame(animate2) } viewer.world.renderUpdateEmitter.addListener('update', () => { - // animationController.max(viewer.world.hasWithFrames ?? 0) + const frames = viewer.world.hasWithFrames ? viewer.world.hasWithFrames - 1 : 0; + animationController.max(frames) + onUpdate.animationTick() }) animate2() diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 3f4f93cae..adb5b9759 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -143,10 +143,11 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, requestAnimationFrame(mainLoop) } -export const setAnimationTick = (tick: number) => { +export const setAnimationTick = (tick: number, frames?: number) => { sendWorkerMessage({ type: 'animationTick', - tick + tick, + frames }) } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index dd7f1a660..165e94c64 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -290,7 +290,6 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindVertexArray(VAO) updateSize(gl.canvas.width, gl.canvas.height) - // setInterval(() => tick = (tick + 1) % 20, 1) const renderLoop = (performance) => { requestAnimationFrame(renderLoop) if (!rendering) return @@ -367,6 +366,7 @@ const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmen let started = false let newWidth: number | undefined let newHeight: number | undefined +let autoTickUpdate = undefined as number | undefined onmessage = function (e) { if (!started) { started = true @@ -431,6 +431,22 @@ onmessage = function (e) { camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) } if (e.data.type === 'animationTick') { - animationTick = e.data.tick % 20 // todo update automatically in worker + if (e.data.frames <= 0) { + autoTickUpdate = undefined + animationTick = 0 + return + } + if (e.data.tick === -1) { + autoTickUpdate = e.data.frames + } else { + autoTickUpdate = undefined + animationTick = e.data.tick % 20 // todo update automatically in worker + } } } + +setInterval(() => { + if (autoTickUpdate) { + animationTick = (animationTick + 1) % autoTickUpdate; + } +}, 1000 / 20) From 8b6e1d210bd6b6975e2920d827c6a8b2b7ed0f84 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 6 Apr 2024 19:00:13 +0300 Subject: [PATCH 045/303] make worldrenderer extendable and customizable with your own render implementations! --- prismarine-viewer/viewer/lib/viewer.ts | 9 +- prismarine-viewer/viewer/lib/worldrenderer.ts | 413 ------------------ .../viewer/lib/worldrendererCommon.ts | 203 +++++++++ .../viewer/lib/worldrendererThree.ts | 214 +++++++++ .../viewer/lib/worldrendererWebgl.ts | 59 +++ 5 files changed, 481 insertions(+), 417 deletions(-) delete mode 100644 prismarine-viewer/viewer/lib/worldrenderer.ts create mode 100644 prismarine-viewer/viewer/lib/worldrendererCommon.ts create mode 100644 prismarine-viewer/viewer/lib/worldrendererThree.ts create mode 100644 prismarine-viewer/viewer/lib/worldrendererWebgl.ts diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 854f86580..5a457c297 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -1,20 +1,21 @@ import * as THREE from 'three' import * as tweenJs from '@tweenjs/tween.js' import { Vec3 } from 'vec3' -import { WorldRenderer } from './worldrenderer' +import { WorldRendererWebgl } from './worldrendererWebgl' import { Entities } from './entities' import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' import { sendCameraToWorker } from '../../examples/webglRenderer' +import { WorldRendererThree } from './worldrendererThree' export class Viewer { scene: THREE.Scene ambientLight: THREE.AmbientLight directionalLight: THREE.DirectionalLight camera: THREE.PerspectiveCamera - world: WorldRenderer + world: WorldRendererWebgl | WorldRendererThree entities: Entities primitives: Primitives domElement: HTMLCanvasElement @@ -40,7 +41,7 @@ export class Viewer { if (this.enableFXAA) { this.enableFxaaScene() } - this.world = new WorldRenderer(this.scene, numWorkers) + this.world = new WorldRendererWebgl(numWorkers) this.entities = new Entities(this.scene) this.primitives = new Primitives(this.scene, this.camera) @@ -162,7 +163,7 @@ export class Viewer { }) // todo remove and use other architecture instead so data flow is clear emitter.on('blockEntities', (blockEntities) => { - this.world.blockEntities = blockEntities + (this.world as WorldRendererThree).blockEntities = blockEntities }) emitter.on('unloadChunk', ({ x, z }) => { diff --git a/prismarine-viewer/viewer/lib/worldrenderer.ts b/prismarine-viewer/viewer/lib/worldrenderer.ts deleted file mode 100644 index 0bad8fed4..000000000 --- a/prismarine-viewer/viewer/lib/worldrenderer.ts +++ /dev/null @@ -1,413 +0,0 @@ -import * as THREE from 'three' -import { Vec3 } from 'vec3' -import { loadTexture, loadJSON } from './utils' -import { EventEmitter } from 'events' -import mcDataRaw from 'minecraft-data/data.js' // handled correctly in esbuild plugin -import nbt from 'prismarine-nbt' -import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' -import { dispose3 } from './dispose' -import { toMajor } from './version.js' -import PrismarineChatLoader from 'prismarine-chat' -import { renderSign } from '../sign-renderer/' -import { chunkPos, sectionPos } from './simpleUtils' -import { addBlocksSection, removeBlocksSection } from '../../examples/webglRenderer' - -function mod (x, n) { - return ((x % n) + n) % n -} - -export type WorldHolder = { - add (opt: { - geometry: { - positions: Float32Array, - normals: Float32Array, - colors: Float32Array, - uvs: Float32Array, - indices: Uint32Array, - sx: number, - sy: number, - sz: number, - signs: Record - } - }) - remove (opt: { key: string }) -} - -export class WorldRenderer { - worldConfig = { minY: 0, worldHeight: 256 } - // todo @sa2urami set alphaTest back to 0.1 and instead properly sort transparent and solid objects (needs to be done in worker too) - material = new THREE.MeshLambertMaterial({ vertexColors: true, transparent: true, alphaTest: 0.5 }) - - blockEntities = {} - hasWithFrames = undefined as number | undefined - sectionObjects: Record = {} - showChunkBorders = false - active = false - version = undefined as string | undefined - chunkTextures = new Map() - loadedChunks = {} - sectionsOutstanding = new Set() - renderUpdateEmitter = new EventEmitter() - customBlockStatesData = undefined as any - customTexturesDataUrl = undefined as string | undefined - downloadedBlockStatesData = undefined as any - downloadedTextureImage = undefined as any - workers: any[] = [] - viewerPosition?: Vec3 - lastCamUpdate = 0 - droppedFpsPercentage = 0 - initialChunksLoad = true - enableChunksLoadDelay = false - newChunks = {} - - texturesVersion?: string - - promisesQueue = [] as Promise[] - - constructor (public holder: unknown, numWorkers = 4) { - // init workers - for (let i = 0; i < numWorkers; i++) { - // Node environment needs an absolute path, but browser needs the url of the file - let src = __dirname - if (typeof window === 'undefined') src += '/worker.js' - else src = 'worker.js' - - const worker: any = new Worker(src) - worker.onmessage = async ({ data }) => { - if (!this.active) return - await new Promise(resolve => { - setTimeout(resolve, 0) - }) - if (data.type === 'geometry') { - // let object: THREE.Object3D = this.sectionObjects[data.key] - // if (object) { - // this.scene.remove(object) - // dispose3(object) - // delete this.sectionObjects[data.key] - // } - // if - - const chunkCoords = data.key.split(',') - if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return - - addBlocksSection(data.key, data.geometry) - const blocks = Object.values(data.geometry.blocks) as any[] - const animatedFrames = blocks.find((x: any) => { - return x.animatedFrames - }); - this.hasWithFrames = animatedFrames?.animatedFrames - this.newChunks[data.key] = data.geometry - // cubePositionsBySections[data.key].push(...Object.entries(data.geometry.blocks).map(([pos, block]) => { - // return [...pos.split(',').map(Number), block] as [number, number, number, string] - // })) - // updateCubePositions() - - // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { - // const newPromise = new Promise(resolve => { - // if (this.droppedFpsPercentage > 0.5) { - // setTimeout(resolve, 1000 / 50 * this.droppedFpsPercentage) - // } else { - // setTimeout(resolve) - // } - // }) - // this.promisesQueue.push(newPromise) - // for (const promise of this.promisesQueue) { - // await promise - // } - // } - - return - - // const geometry = new THREE.BufferGeometry() - // geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) - // geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) - // geometry.setAttribute('color', new THREE.BufferAttribute(data.geometry.colors, 3)) - // geometry.setAttribute('uv', new THREE.BufferAttribute(data.geometry.uvs, 2)) - // geometry.setIndex(data.geometry.indices) - - // const mesh = new THREE.Mesh(geometry, this.material) - // mesh.position.set(data.geometry.sx, data.geometry.sy, data.geometry.sz) - // mesh.name = 'mesh' - // object = new THREE.Group() - // object.add(mesh) - // const boxHelper = new THREE.BoxHelper(mesh, 0xffff00) - // boxHelper.name = 'helper' - // object.add(boxHelper) - // object.name = 'chunk' - // if (!this.showChunkBorders) { - // boxHelper.visible = false - // } - // // should not compute it once - // if (Object.keys(data.geometry.signs).length) { - // for (const [posKey, { isWall, rotation }] of Object.entries(data.geometry.signs)) { - // const [x, y, z] = posKey.split(',') - // const signBlockEntity = this.blockEntities[posKey] - // if (!signBlockEntity) continue - // const sign = this.renderSign(new Vec3(+x, +y, +z), rotation, isWall, nbt.simplify(signBlockEntity)); - // if (!sign) continue - // object.add(sign) - // } - // } - // this.sectionObjects[data.key] = object - // this.updatePosDataChunk(data.key) - // this.scene.add(object) - } else if (data.type === 'sectionFinished') { - this.sectionsOutstanding.delete(data.key) - this.renderUpdateEmitter.emit('update') - } - } - if (worker.on) worker.on('message', (data) => { worker.onmessage({ data }) }) - this.workers.push(worker) - } - } - - /** - * Optionally update data that are depedendent on the viewer position - */ - updatePosDataChunk (key: string) { - if (!this.viewerPosition) return - const [x, y, z] = key.split(',').map(x => Math.floor(+x / 16)) - const [xPlayer, yPlayer, zPlayer] = this.viewerPosition.toArray().map(x => Math.floor(x / 16)) - // sum of distances: x + y + z - const chunkDistance = Math.abs(x - xPlayer) + Math.abs(y - yPlayer) + Math.abs(z - zPlayer) - const section = this.sectionObjects[key].children.find(child => child.name === 'mesh')! - section.renderOrder = 500 - chunkDistance - } - - updateViewerPosition (pos: Vec3) { - this.viewerPosition = pos - for (const key of Object.keys(this.sectionObjects)) { - this.updatePosDataChunk(key) - } - } - - signsCache = new Map() - - getSignTexture (position: Vec3, blockEntity, backSide = false) { - const chunk = chunkPos(position) - let textures = this.chunkTextures.get(`${chunk[0]},${chunk[1]}`) - if (!textures) { - textures = {} - this.chunkTextures.set(`${chunk[0]},${chunk[1]}`, textures) - } - const texturekey = `${position.x},${position.y},${position.z}`; - // todo investigate bug and remove this so don't need to clean in section dirty - if (textures[texturekey]) return textures[texturekey] - - const PrismarineChat = PrismarineChatLoader(this.version!) - const canvas = renderSign(blockEntity, PrismarineChat) - if (!canvas) return - const tex = new THREE.Texture(canvas) - tex.magFilter = THREE.NearestFilter - tex.minFilter = THREE.NearestFilter - tex.needsUpdate = true - textures[texturekey] = tex - return tex - } - - renderSign (position: Vec3, rotation: number, isWall: boolean, blockEntity) { - const tex = this.getSignTexture(position, blockEntity) - - if (!tex) return - - // todo implement - // const key = JSON.stringify({ position, rotation, isWall }) - // if (this.signsCache.has(key)) { - // console.log('cached', key) - // } else { - // this.signsCache.set(key, tex) - // } - - const mesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1), new THREE.MeshBasicMaterial({ map: tex, transparent: true, })) - mesh.renderOrder = 999 - - // todo @sa2urami shouldnt all this be done in worker? - mesh.scale.set(1, 7 / 16, 1) - if (isWall) { - mesh.position.set(0, 0, -(8 - 1.5) / 16 + 0.001) - } else { - // standing - const faceEnd = 8.75 - mesh.position.set(0, 0, (faceEnd - 16 / 2) / 16 + 0.001) - } - - const group = new THREE.Group() - group.rotation.set(0, -THREE.MathUtils.degToRad( - rotation * (isWall ? 90 : 45 / 2) - ), 0) - group.add(mesh) - const y = isWall ? 4.5 / 16 + mesh.scale.y / 2 : (1 - (mesh.scale.y / 2)) - group.position.set(position.x + 0.5, position.y + y, position.z + 0.5) - return group - } - - updateShowChunksBorder (value: boolean) { - this.showChunkBorders = value - for (const object of Object.values(this.sectionObjects)) { - for (const child of object.children) { - if (child.name === 'helper') { - child.visible = value - } - } - } - } - - resetWorld () { - // this.active = false - // for (const mesh of Object.values(this.sectionObjects)) { - // this.scene.remove(mesh) - // } - // this.sectionObjects = {} - // this.loadedChunks = {} - this.sectionsOutstanding = new Set() - for (const worker of this.workers) { - worker.postMessage({ type: 'reset' }) - } - } - - setVersion (version, texturesVersion = version) { - this.version = version - this.texturesVersion = texturesVersion - this.resetWorld() - this.active = true - - const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] - for (const worker of this.workers) { - const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) - mcData.version = JSON.parse(JSON.stringify(mcData.version)) - worker.postMessage({ type: 'mcData', mcData, version: this.version }) - } - - this.updateTexturesData() - } - - updateTexturesData () { - loadTexture(this.customTexturesDataUrl || `textures/${this.texturesVersion}.png`, (texture: import('three').Texture) => { - texture.magFilter = THREE.NearestFilter - texture.minFilter = THREE.NearestFilter - texture.flipY = false - this.material.map = texture - this.material.map.onUpdate = () => { - this.downloadedTextureImage = this.material.map!.image - } - const loadBlockStates = async () => { - return new Promise(resolve => { - if (this.customBlockStatesData) return resolve(this.customBlockStatesData) - return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { - this.downloadedBlockStatesData = data - // todo - this.renderUpdateEmitter.emit('blockStatesDownloaded') - resolve(data) - }) - }) - } - loadBlockStates().then((blockStates) => { - for (const worker of this.workers) { - worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: texture.image.width }) - } - }) - }) - - } - - getLoadedChunksRelative (pos: Vec3, includeY = false) { - const [currentX, currentY, currentZ] = sectionPos(pos) - return Object.fromEntries(Object.entries(this.sectionObjects).map(([key, o]) => { - const [xRaw, yRaw, zRaw] = key.split(',').map(Number) - const [x, y, z] = sectionPos({ x: xRaw, y: yRaw, z: zRaw }) - const setKey = includeY ? `${x - currentX},${y - currentY},${z - currentZ}` : `${x - currentX},${z - currentZ}` - return [setKey, o] - })) - } - - addColumn (x, z, chunk) { - this.initialChunksLoad = false - this.loadedChunks[`${x},${z}`] = true - for (const worker of this.workers) { - worker.postMessage({ type: 'chunk', x, z, chunk }) - } - for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { - const loc = new Vec3(x, y, z) - this.setSectionDirty(loc) - this.setSectionDirty(loc.offset(-16, 0, 0)) - this.setSectionDirty(loc.offset(16, 0, 0)) - this.setSectionDirty(loc.offset(0, 0, -16)) - this.setSectionDirty(loc.offset(0, 0, 16)) - } - } - - cleanChunkTextures (x, z) { - const textures = this.chunkTextures.get(`${Math.floor(x / 16)},${Math.floor(z / 16)}`) ?? {} - for (const key of Object.keys(textures)) { - textures[key].dispose() - delete textures[key] - } - } - - removeColumn (x, z) { - for (const key of Object.keys(this.newChunks)) { - const [xSec, _ySec, zSec] = key.split(',').map(Number) - // if (Math.floor(x / 16) === x && Math.floor(z / 16) === z) { - if (x === xSec && z === zSec) { - // foundSections.push(key) - removeBlocksSection(key) - } - } - delete this.loadedChunks[`${x},${z}`] - for (const worker of this.workers) { - worker.postMessage({ type: 'unloadChunk', x, z }) - } - // for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { - // this.setSectionDirty(new Vec3(x, y, z), false) - // const key = `${x},${y},${z}` - // const mesh = this.sectionObjects[key] - // if (mesh) { - // this.scene.remove(mesh) - // dispose3(mesh) - // } - // delete this.sectionObjects[key] - // } - } - - setBlockStateId (pos, stateId) { - for (const worker of this.workers) { - worker.postMessage({ type: 'blockUpdate', pos, stateId }) - } - this.setSectionDirty(pos) - if ((pos.x & 15) === 0) this.setSectionDirty(pos.offset(-16, 0, 0)) - if ((pos.x & 15) === 15) this.setSectionDirty(pos.offset(16, 0, 0)) - if ((pos.y & 15) === 0) this.setSectionDirty(pos.offset(0, -16, 0)) - if ((pos.y & 15) === 15) this.setSectionDirty(pos.offset(0, 16, 0)) - if ((pos.z & 15) === 0) this.setSectionDirty(pos.offset(0, 0, -16)) - if ((pos.z & 15) === 15) this.setSectionDirty(pos.offset(0, 0, 16)) - } - - setSectionDirty (pos, value = true) { - this.cleanChunkTextures(pos.x, pos.z) // todo don't do this! - // Dispatch sections to workers based on position - // This guarantees uniformity accross workers and that a given section - // is always dispatched to the same worker - const hash = mod(Math.floor(pos.x / 16) + Math.floor(pos.y / 16) + Math.floor(pos.z / 16), this.workers.length) - this.workers[hash].postMessage({ type: 'dirty', x: pos.x, y: pos.y, z: pos.z, value }) - this.sectionsOutstanding.add(`${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}`) - } - - // Listen for chunk rendering updates emitted if a worker finished a render and resolve if the number - // of sections not rendered are 0 - async waitForChunksToRender () { - return new Promise((resolve, reject) => { - if ([...this.sectionsOutstanding].length === 0) { - resolve() - return - } - - const updateHandler = () => { - if (this.sectionsOutstanding.size === 0) { - this.renderUpdateEmitter.removeListener('update', updateHandler) - resolve() - } - } - this.renderUpdateEmitter.on('update', updateHandler) - }) - } -} diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts new file mode 100644 index 000000000..f43d3886e --- /dev/null +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -0,0 +1,203 @@ +import * as THREE from 'three' +import { Vec3 } from 'vec3' +import { loadTexture, loadJSON } from './utils' +import { EventEmitter } from 'events' +import mcDataRaw from 'minecraft-data/data.js'; // handled correctly in esbuild plugin +import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' +import { toMajor } from './version.js' + +function mod (x, n) { + return ((x % n) + n) % n +} + +export abstract class WorldRendererCommon { + worldConfig = { minY: 0, worldHeight: 256 } + // todo @sa2urami set alphaTest back to 0.1 and instead properly sort transparent and solid objects (needs to be done in worker too) + material = new THREE.MeshLambertMaterial({ vertexColors: true, transparent: true, alphaTest: 0.5 }) + + showChunkBorders = false + active = false + version = undefined as string | undefined + loadedChunks = {} as Record + sectionsOutstanding = new Set() + renderUpdateEmitter = new EventEmitter() + customBlockStatesData = undefined as any + customTexturesDataUrl = undefined as string | undefined + downloadedBlockStatesData = undefined as any + downloadedTextureImage = undefined as any + workers: any[] = [] + viewerPosition?: Vec3 + lastCamUpdate = 0 + droppedFpsPercentage = 0 + initialChunksLoad = true + enableChunksLoadDelay = false + texturesVersion?: string + // promisesQueue = [] as Promise[] + + constructor(numWorkers: number) { + // init workers + for (let i = 0; i < numWorkers; i++) { + // Node environment needs an absolute path, but browser needs the url of the file + let src = __dirname + if (typeof window === 'undefined') src += '/worker.js' + else src = 'worker.js' + + const worker: any = new Worker(src) + worker.onmessage = async ({ data }) => { + if (!this.active) return + this.handleWorkerMessage(data) + await new Promise(resolve => { + setTimeout(resolve, 0) + }) + if (data.type === 'sectionFinished') { + this.sectionsOutstanding.delete(data.key) + this.renderUpdateEmitter.emit('update') + } + } + if (worker.on) worker.on('message', (data) => { worker.onmessage({ data }) }) + this.workers.push(worker) + } + } + + abstract handleWorkerMessage (data: WorkerReceive): void + + /** + * Optionally update data that are depedendent on the viewer position + */ + abstract updatePosDataChunk (key: string): void + + updateViewerPosition (pos: Vec3) { + this.viewerPosition = pos + for (const [key, value] of Object.entries(this.loadedChunks)) { + if (!value) continue + this.updatePosDataChunk(key) + } + } + + sendWorkers (message: WorkerSend) { + for (const worker of this.workers) { + worker.postMessage(message) + } + } + + abstract updateShowChunksBorder (value: boolean): void + + resetWorld () { + this.active = false + this.loadedChunks = {} + this.sectionsOutstanding = new Set() + for (const worker of this.workers) { + worker.postMessage({ type: 'reset' }) + } + } + + setVersion (version, texturesVersion = version) { + this.version = version + this.texturesVersion = texturesVersion + this.resetWorld() + this.active = true + + const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] + for (const worker of this.workers) { + const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) + mcData.version = JSON.parse(JSON.stringify(mcData.version)) + worker.postMessage({ type: 'mcData', mcData, version: this.version }) + } + + this.updateTexturesData() + } + + updateTexturesData () { + loadTexture(this.customTexturesDataUrl || `textures/${this.texturesVersion}.png`, (texture: import('three').Texture) => { + texture.magFilter = THREE.NearestFilter + texture.minFilter = THREE.NearestFilter + texture.flipY = false + this.material.map = texture + this.material.map.onUpdate = () => { + this.downloadedTextureImage = this.material.map!.image + } + const loadBlockStates = async () => { + return new Promise(resolve => { + if (this.customBlockStatesData) return resolve(this.customBlockStatesData) + return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { + this.downloadedBlockStatesData = data + // todo + this.renderUpdateEmitter.emit('blockStatesDownloaded') + resolve(data) + }) + }) + } + loadBlockStates().then((blockStates) => { + for (const worker of this.workers) { + worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: texture.image.width }) + } + }) + }) + + } + + addColumn (x, z, chunk) { + this.initialChunksLoad = false + this.loadedChunks[`${x},${z}`] = true + for (const worker of this.workers) { + worker.postMessage({ type: 'chunk', x, z, chunk }) + } + for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { + const loc = new Vec3(x, y, z) + this.setSectionDirty(loc) + this.setSectionDirty(loc.offset(-16, 0, 0)) + this.setSectionDirty(loc.offset(16, 0, 0)) + this.setSectionDirty(loc.offset(0, 0, -16)) + this.setSectionDirty(loc.offset(0, 0, 16)) + } + } + + removeColumn (x, z) { + delete this.loadedChunks[`${x},${z}`] + for (const worker of this.workers) { + worker.postMessage({ type: 'unloadChunk', x, z }) + } + } + + setBlockStateId (pos, stateId) { + for (const worker of this.workers) { + worker.postMessage({ type: 'blockUpdate', pos, stateId }) + } + this.setSectionDirty(pos) + if ((pos.x & 15) === 0) this.setSectionDirty(pos.offset(-16, 0, 0)) + if ((pos.x & 15) === 15) this.setSectionDirty(pos.offset(16, 0, 0)) + if ((pos.y & 15) === 0) this.setSectionDirty(pos.offset(0, -16, 0)) + if ((pos.y & 15) === 15) this.setSectionDirty(pos.offset(0, 16, 0)) + if ((pos.z & 15) === 0) this.setSectionDirty(pos.offset(0, 0, -16)) + if ((pos.z & 15) === 15) this.setSectionDirty(pos.offset(0, 0, 16)) + } + + setSectionDirty (pos, value = true) { + this.renderUpdateEmitter.emit('dirty', pos, value) + // Dispatch sections to workers based on position + // This guarantees uniformity accross workers and that a given section + // is always dispatched to the same worker + const hash = mod(Math.floor(pos.x / 16) + Math.floor(pos.y / 16) + Math.floor(pos.z / 16), this.workers.length) + this.workers[hash].postMessage({ type: 'dirty', x: pos.x, y: pos.y, z: pos.z, value }) + this.sectionsOutstanding.add(`${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}`) + } + + // Listen for chunk rendering updates emitted if a worker finished a render and resolve if the number + // of sections not rendered are 0 + async waitForChunksToRender () { + return new Promise((resolve, reject) => { + if ([...this.sectionsOutstanding].length === 0) { + resolve() + return + } + + const updateHandler = () => { + if (this.sectionsOutstanding.size === 0) { + this.renderUpdateEmitter.removeListener('update', updateHandler) + resolve() + } + } + this.renderUpdateEmitter.on('update', updateHandler) + }) + } +} diff --git a/prismarine-viewer/viewer/lib/worldrendererThree.ts b/prismarine-viewer/viewer/lib/worldrendererThree.ts new file mode 100644 index 000000000..553c2360a --- /dev/null +++ b/prismarine-viewer/viewer/lib/worldrendererThree.ts @@ -0,0 +1,214 @@ +import * as THREE from 'three' +import { Vec3 } from 'vec3' +import nbt from 'prismarine-nbt' +import { dispose3 } from './dispose' +import PrismarineChatLoader from 'prismarine-chat' +import { renderSign } from '../sign-renderer/' +import { chunkPos, sectionPos } from './simpleUtils' +import { WorldRendererCommon } from './worldrendererCommon' + +function mod (x, n) { + return ((x % n) + n) % n +} + +export class WorldRendererThree extends WorldRendererCommon { + blockEntities = {} + sectionObjects: Record = {} + showChunkBorders = false + chunkTextures = new Map() + signsCache = new Map() + + constructor(public scene: THREE.Scene, numWorkers = 4) { + super(numWorkers) + } + + /** + * Optionally update data that are depedendent on the viewer position + */ + updatePosDataChunk (key: string) { + if (!this.viewerPosition) return + const [x, y, z] = key.split(',').map(x => Math.floor(+x / 16)) + const [xPlayer, yPlayer, zPlayer] = this.viewerPosition.toArray().map(x => Math.floor(x / 16)) + // sum of distances: x + y + z + const chunkDistance = Math.abs(x - xPlayer) + Math.abs(y - yPlayer) + Math.abs(z - zPlayer) + const section = this.sectionObjects[key].children.find(child => child.name === 'mesh')! + section.renderOrder = 500 - chunkDistance + } + + handleWorkerMessage (data: any): void { + if (data.type !== 'geometry') return + let object: THREE.Object3D = this.sectionObjects[data.key] + if (object) { + this.scene.remove(object) + dispose3(object) + delete this.sectionObjects[data.key] + } + + const chunkCoords = data.key.split(',') + if (!this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || !data.geometry.positions.length || !this.active) return + + // if (!this.initialChunksLoad && this.enableChunksLoadDelay) { + // const newPromise = new Promise(resolve => { + // if (this.droppedFpsPercentage > 0.5) { + // setTimeout(resolve, 1000 / 50 * this.droppedFpsPercentage) + // } else { + // setTimeout(resolve) + // } + // }) + // this.promisesQueue.push(newPromise) + // for (const promise of this.promisesQueue) { + // await promise + // } + // } + + const geometry = new THREE.BufferGeometry() + geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) + geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) + geometry.setAttribute('color', new THREE.BufferAttribute(data.geometry.colors, 3)) + geometry.setAttribute('uv', new THREE.BufferAttribute(data.geometry.uvs, 2)) + geometry.setIndex(data.geometry.indices) + + const mesh = new THREE.Mesh(geometry, this.material) + mesh.position.set(data.geometry.sx, data.geometry.sy, data.geometry.sz) + mesh.name = 'mesh' + object = new THREE.Group() + object.add(mesh) + const boxHelper = new THREE.BoxHelper(mesh, 0xffff00) + boxHelper.name = 'helper' + object.add(boxHelper) + object.name = 'chunk' + if (!this.showChunkBorders) { + boxHelper.visible = false + } + // should not compute it once + if (Object.keys(data.geometry.signs).length) { + for (const [posKey, { isWall, rotation }] of Object.entries(data.geometry.signs)) { + const [x, y, z] = posKey.split(',') + const signBlockEntity = this.blockEntities[posKey] + if (!signBlockEntity) continue + const sign = this.renderSign(new Vec3(+x, +y, +z), rotation, isWall, nbt.simplify(signBlockEntity)); + if (!sign) continue + object.add(sign) + } + } + this.sectionObjects[data.key] = object + this.updatePosDataChunk(data.key) + this.scene.add(object) + } + + getSignTexture (position: Vec3, blockEntity, backSide = false) { + const chunk = chunkPos(position) + let textures = this.chunkTextures.get(`${chunk[0]},${chunk[1]}`) + if (!textures) { + textures = {} + this.chunkTextures.set(`${chunk[0]},${chunk[1]}`, textures) + } + const texturekey = `${position.x},${position.y},${position.z}`; + // todo investigate bug and remove this so don't need to clean in section dirty + if (textures[texturekey]) return textures[texturekey] + + const PrismarineChat = PrismarineChatLoader(this.version!) + const canvas = renderSign(blockEntity, PrismarineChat) + if (!canvas) return + const tex = new THREE.Texture(canvas) + tex.magFilter = THREE.NearestFilter + tex.minFilter = THREE.NearestFilter + tex.needsUpdate = true + textures[texturekey] = tex + return tex + } + + renderSign (position: Vec3, rotation: number, isWall: boolean, blockEntity) { + const tex = this.getSignTexture(position, blockEntity) + + if (!tex) return + + // todo implement + // const key = JSON.stringify({ position, rotation, isWall }) + // if (this.signsCache.has(key)) { + // console.log('cached', key) + // } else { + // this.signsCache.set(key, tex) + // } + + const mesh = new THREE.Mesh(new THREE.PlaneGeometry(1, 1), new THREE.MeshBasicMaterial({ map: tex, transparent: true, })) + mesh.renderOrder = 999 + + // todo @sa2urami shouldnt all this be done in worker? + mesh.scale.set(1, 7 / 16, 1) + if (isWall) { + mesh.position.set(0, 0, -(8 - 1.5) / 16 + 0.001) + } else { + // standing + const faceEnd = 8.75 + mesh.position.set(0, 0, (faceEnd - 16 / 2) / 16 + 0.001) + } + + const group = new THREE.Group() + group.rotation.set(0, -THREE.MathUtils.degToRad( + rotation * (isWall ? 90 : 45 / 2) + ), 0) + group.add(mesh) + const y = isWall ? 4.5 / 16 + mesh.scale.y / 2 : (1 - (mesh.scale.y / 2)) + group.position.set(position.x + 0.5, position.y + y, position.z + 0.5) + return group + } + + updateShowChunksBorder (value: boolean) { + this.showChunkBorders = value + for (const object of Object.values(this.sectionObjects)) { + for (const child of object.children) { + if (child.name === 'helper') { + child.visible = value + } + } + } + } + + resetWorld () { + super.resetWorld() + + for (const mesh of Object.values(this.sectionObjects)) { + this.scene.remove(mesh) + } + } + + getLoadedChunksRelative (pos: Vec3, includeY = false) { + const [currentX, currentY, currentZ] = sectionPos(pos) + return Object.fromEntries(Object.entries(this.sectionObjects).map(([key, o]) => { + const [xRaw, yRaw, zRaw] = key.split(',').map(Number) + const [x, y, z] = sectionPos({ x: xRaw, y: yRaw, z: zRaw }) + const setKey = includeY ? `${x - currentX},${y - currentY},${z - currentZ}` : `${x - currentX},${z - currentZ}` + return [setKey, o] + })) + } + + cleanChunkTextures (x, z) { + const textures = this.chunkTextures.get(`${Math.floor(x / 16)},${Math.floor(z / 16)}`) ?? {} + for (const key of Object.keys(textures)) { + textures[key].dispose() + delete textures[key] + } + } + + removeColumn (x, z) { + super.removeColumn(x, z) + + this.cleanChunkTextures(x, z) + for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { + this.setSectionDirty(new Vec3(x, y, z), false) + const key = `${x},${y},${z}` + const mesh = this.sectionObjects[key] + if (mesh) { + this.scene.remove(mesh) + dispose3(mesh) + } + delete this.sectionObjects[key] + } + } + + setSectionDirty (pos, value = true) { + this.cleanChunkTextures(pos.x, pos.z) // todo don't do this! + super.setSectionDirty(pos, value) + } +} diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts new file mode 100644 index 000000000..d999433b0 --- /dev/null +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -0,0 +1,59 @@ +import { addBlocksSection, removeBlocksSection } from '../../examples/webglRenderer' +import { WorldRendererCommon } from './worldrendererCommon' + +export class WorldRendererWebgl extends WorldRendererCommon { + hasWithFrames = undefined as number | undefined + newChunks = {} as Record + + constructor(numWorkers = 4) { + super(numWorkers) + } + + handleWorkerMessage (data: any): void { + if (data.type === 'geometry') { + + const chunkCoords = data.key.split(',') + if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return + + addBlocksSection(data.key, data.geometry) + const blocks = Object.values(data.geometry.blocks) as any[] + const animatedFrames = blocks.find((x: any) => { + return x.animatedFrames + }); + this.hasWithFrames = animatedFrames?.animatedFrames + this.newChunks[data.key] = data.geometry + } + } + + updatePosDataChunk (key: string) { + } + + + updateShowChunksBorder (value: boolean) { + // todo + } + + + removeColumn (x, z) { + super.removeColumn(x, z) + for (const key of Object.keys(this.newChunks)) { + const [xSec, _ySec, zSec] = key.split(',').map(Number) + // if (Math.floor(x / 16) === x && Math.floor(z / 16) === z) { + if (x === xSec && z === zSec) { + // foundSections.push(key) + removeBlocksSection(key) + } + } + // for (let y = this.worldConfig.minY; y < this.worldConfig.worldHeight; y += 16) { + // this.setSectionDirty(new Vec3(x, y, z), false) + // const key = `${x},${y},${z}` + // const mesh = this.sectionObjects[key] + // if (mesh) { + // this.scene.remove(mesh) + // dispose3(mesh) + // } + // delete this.sectionObjects[key] + // } + } + +} From 12dfa9f9a84311bef7fdc01ba5fe36f7691f6fa2 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 6 Apr 2024 19:48:39 +0300 Subject: [PATCH 046/303] implement fully working animation in playground --- .../examples/TextureAnimation.ts | 69 +++++++++++++++++++ prismarine-viewer/examples/playground.ts | 43 +++++++++--- prismarine-viewer/examples/shared.ts | 4 ++ prismarine-viewer/globals.d.ts | 9 +++ prismarine-viewer/tsconfig.json | 15 ++-- prismarine-viewer/viewer/lib/models.ts | 10 +-- .../viewer/lib/worldrendererWebgl.ts | 26 +++++-- prismarine-viewer/viewer/prepare/atlas.ts | 18 +++-- .../viewer/prepare/generateTextures.ts | 8 ++- prismarine-viewer/viewer/prepare/webglData.ts | 28 ++++++++ 10 files changed, 198 insertions(+), 32 deletions(-) create mode 100644 prismarine-viewer/examples/TextureAnimation.ts create mode 100644 prismarine-viewer/examples/shared.ts create mode 100644 prismarine-viewer/globals.d.ts create mode 100644 prismarine-viewer/viewer/prepare/webglData.ts diff --git a/prismarine-viewer/examples/TextureAnimation.ts b/prismarine-viewer/examples/TextureAnimation.ts new file mode 100644 index 000000000..dfa004624 --- /dev/null +++ b/prismarine-viewer/examples/TextureAnimation.ts @@ -0,0 +1,69 @@ +export type AnimationControlSwitches = { + tick: number + interpolationTick: number // next one +} + +type Data = { + interpolate: boolean; + frametime: number; + frames: ({ + index: number; + time: number; + } | number)[] | undefined; +}; + +export class TextureAnimation { + data: Data; + frameImages: number; + frameDelta: number; + frameTime: number; + framesToSwitch: number; + frameIndex: number; + + constructor(public animationControl: AnimationControlSwitches, data: Data, public framesImages: number) { + this.data = { + interpolate: false, + frametime: 1, + ...data + }; + this.frameImages = 1; + this.frameDelta = 0; + this.frameTime = this.data.frametime * 50; + this.frameIndex = 0; + + this.framesToSwitch = this.frameImages; + if (this.data.frames) { + this.framesToSwitch = this.data.frames.length; + } + } + + step (deltaMs: number) { + this.frameDelta += deltaMs; + + if (this.frameDelta > this.frameTime) { + this.frameDelta -= this.frameTime; + this.frameDelta %= this.frameTime; + + this.frameIndex++; + this.frameIndex %= this.framesToSwitch; + + const frames = this.data.frames.map(frame => typeof frame === 'number' ? { index: frame, time: this.data.frametime } : frame); + if (frames) { + let frame = frames[this.frameIndex] + let nextFrame = frames[(this.frameIndex + 1) % this.framesToSwitch]; + + this.animationControl.tick = frame.index; + this.animationControl.interpolationTick = nextFrame.index; + this.frameTime = frame.time * 50; + } else { + this.animationControl.tick = this.frameIndex; + this.animationControl.interpolationTick = (this.frameIndex + 1) % this.framesToSwitch; + } + } + + if (this.data.interpolate) { + this.animationControl.interpolationTick = this.frameDelta / this.frameTime; + } + } + +} diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 5ceef5190..a5985bf45 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -21,6 +21,8 @@ globalThis.THREE = THREE //@ts-ignore import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { renderPlayground } from './TouchControls2' +import { WorldRendererWebgl } from '../viewer/lib/worldrendererWebgl' +import { TextureAnimation } from './TextureAnimation' const gui = new GUI() @@ -260,7 +262,7 @@ async function main () { const cameraPos = targetPos.offset(2, 2, 2) const pitch = THREE.MathUtils.degToRad(-45) const yaw = THREE.MathUtils.degToRad(45) - // viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') + viewer.camera.rotation.set(pitch, yaw, 0, 'ZYX') // viewer.camera.lookAt(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) viewer.camera.position.set(cameraPos.x, cameraPos.y, cameraPos.z) // controls.update() @@ -297,6 +299,7 @@ async function main () { params.block ||= 'stone' + let textureAnimation: TextureAnimation | undefined const onUpdate = { block () { metadataFolder.destroy() @@ -365,7 +368,24 @@ async function main () { viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) }, animationTick () { - setAnimationTick(params.animationTick, viewer.world.hasWithFrames - 1) + const webgl = (viewer.world as WorldRendererWebgl).playgroundGetWebglData() + if (!webgl?.animation) { + setAnimationTick(0) + return + } + if (params.animationTick === -1) { + textureAnimation = new TextureAnimation(new Proxy({} as any, { + set (t, p, v) { + if (p === 'tick') { + setAnimationTick(v) + } + return true + } + }), webgl.animation, webgl.animation.framesCount) + } else { + setAnimationTick(params.animationTick) + textureAnimation = undefined + } } } @@ -430,8 +450,15 @@ async function main () { window.requestAnimationFrame(animate2) } viewer.world.renderUpdateEmitter.addListener('update', () => { - const frames = viewer.world.hasWithFrames ? viewer.world.hasWithFrames - 1 : 0; - animationController.max(frames) + // const frames = viewer.world.hasWithFrames ? viewer.world.hasWithFrames - 1 : 0; + const webgl = (viewer.world as WorldRendererWebgl).playgroundGetWebglData() + if (webgl?.animation) { + params.animationTick = -1 + animationController.show() + animationController.max(webgl.animation.framesCount) + } else { + animationController.hide() + } onUpdate.animationTick() }) animate2() @@ -454,11 +481,11 @@ async function main () { // }) // #endregion + let time = performance.now() const continuousUpdate = () => { - if (continuousRender) { - animate() - } - // requestAnimationFrame(continuousUpdate) + textureAnimation?.step(performance.now() - time) + time = performance.now() + requestAnimationFrame(continuousUpdate) } continuousUpdate() diff --git a/prismarine-viewer/examples/shared.ts b/prismarine-viewer/examples/shared.ts new file mode 100644 index 000000000..77ec6bda5 --- /dev/null +++ b/prismarine-viewer/examples/shared.ts @@ -0,0 +1,4 @@ +export type BlockType = { + textureIndex: number[] + textureName?: string +} diff --git a/prismarine-viewer/globals.d.ts b/prismarine-viewer/globals.d.ts new file mode 100644 index 000000000..c2cb5532a --- /dev/null +++ b/prismarine-viewer/globals.d.ts @@ -0,0 +1,9 @@ +type StringKeys = Extract + +interface ObjectConstructor { + keys (obj: T): Array> + entries (obj: T): Array<[StringKeys, T[keyof T]]> + // todo review https://stackoverflow.com/questions/57390305/trying-to-get-fromentries-type-right + fromEntries> (obj: T): Record + assign, K extends Record> (target: T, source: K): asserts target is T & K +} diff --git a/prismarine-viewer/tsconfig.json b/prismarine-viewer/tsconfig.json index 1cf48c6e3..421d76e33 100644 --- a/prismarine-viewer/tsconfig.json +++ b/prismarine-viewer/tsconfig.json @@ -1,9 +1,10 @@ { - "compilerOptions": { - "module": "commonjs", - "strictNullChecks": true - }, - "files": [ - "index.d.ts" - ] + "compilerOptions": { + "module": "commonjs", + "strictNullChecks": true + }, + "files": [ + "index.d.ts", + "globals.d.ts", + ] } diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 8f9d53ce4..f2a0ec9b3 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -469,14 +469,14 @@ export function getSectionGeometry (sx, sy, sz, world: World) { return element.faces } - let animatedFrames = undefined + let textureName = undefined const getResult = (side: string): number => { const facesOrTexture = findTextureInBlockStates(block.name); - if (!facesOrTexture) return + if (!facesOrTexture) return 0 // todo const result = 'u' in facesOrTexture ? facesOrTexture : facesOrTexture?.[side]?.texture if (!result) return 0 // todo - if (result.animatedFrames) { - animatedFrames = result.animatedFrames + if (result.textureName) { + textureName = result.textureName } return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) } @@ -509,7 +509,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { if (textures.every(t => t === 0)) continue attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { textureIndex: textures, - animatedFrames + textureName } satisfies BlockType } diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index d999433b0..9bd7ef20f 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -1,14 +1,26 @@ import { addBlocksSection, removeBlocksSection } from '../../examples/webglRenderer' +import type { WebglData } from '../prepare/webglData' +import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' export class WorldRendererWebgl extends WorldRendererCommon { - hasWithFrames = undefined as number | undefined newChunks = {} as Record + webglData: WebglData constructor(numWorkers = 4) { super(numWorkers) } + playgroundGetWebglData () { + const playgroundChunk = Object.values(this.newChunks).filter((x: any) => Object.keys(x?.blocks ?? {}).length > 0)?.[0] as any + if (!playgroundChunk) return + const block = Object.values(playgroundChunk.blocks)?.[0] as any + if (!block) return + const { textureName } = block + if (!textureName) return + return this.webglData[textureName] + } + handleWorkerMessage (data: any): void { if (data.type === 'geometry') { @@ -16,11 +28,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return addBlocksSection(data.key, data.geometry) - const blocks = Object.values(data.geometry.blocks) as any[] - const animatedFrames = blocks.find((x: any) => { - return x.animatedFrames - }); - this.hasWithFrames = animatedFrames?.animatedFrames + // const blocks = Object.values(data.geometry.blocks) as any[] this.newChunks[data.key] = data.geometry } } @@ -28,6 +36,12 @@ export class WorldRendererWebgl extends WorldRendererCommon { updatePosDataChunk (key: string) { } + updateTexturesData (): void { + super.updateTexturesData() + loadJSON(`/webgl/${this.texturesVersion}.json`, (json) => { + this.webglData = json + }) + } updateShowChunksBorder (value: boolean) { // todo diff --git a/prismarine-viewer/viewer/prepare/atlas.ts b/prismarine-viewer/viewer/prepare/atlas.ts index 546f83bd7..8da53e0c3 100644 --- a/prismarine-viewer/viewer/prepare/atlas.ts +++ b/prismarine-viewer/viewer/prepare/atlas.ts @@ -31,11 +31,20 @@ export type JsonAtlas = { [file: string]: { u: number, v: number, + su?: number, + sv?: number, + animatedFrames?: number } } } -export const makeTextureAtlas = (input: string[], getInputData: (name) => { contents: string, tileWidthMult?: number }, tilesCount = input.length, suSvOptimize: 'remove' | null = null): { +export const makeTextureAtlas = ( + input: string[], + getInputData: (name) => { contents: string, tileWidthMult?: number }, + tilesCount = input.length, + suSvOptimize: 'remove' | null = null, + renderAnimated = true +): { image: Buffer, canvas: Canvas, json: JsonAtlas @@ -47,7 +56,7 @@ export const makeTextureAtlas = (input: string[], getInputData: (name) => { cont const canvas = new Canvas(imgSize, imgSize, 'png' as any) const g = canvas.getContext('2d') - const texturesIndex = {} + const texturesIndex = {} as JsonAtlas['textures'] let offset = 0 const suSv = tileSize / imgSize @@ -63,12 +72,12 @@ export const makeTextureAtlas = (input: string[], getInputData: (name) => { cont const renderWidth = tileSize * (inputData.tileWidthMult ?? 1) let animatedFrames = 0 const addDebugText = (x, y) => { - // return // disable debug text + return // disable debug text g.fillStyle = 'black' g.font = '8px Arial' g.fillText(i, x, y) } - if (img.height > tileSize) { + if (img.height > tileSize && renderAnimated) { const frames = img.height / tileSize; animatedFrames = frames console.log("Animated texture", keyValue, frames) @@ -92,6 +101,7 @@ export const makeTextureAtlas = (input: string[], getInputData: (name) => { cont su: suSv, sv: suSv }, + textureName: cleanName, animatedFrames: animatedFrames || undefined } } diff --git a/prismarine-viewer/viewer/prepare/generateTextures.ts b/prismarine-viewer/viewer/prepare/generateTextures.ts index 93f7a52ca..2c0e3902d 100644 --- a/prismarine-viewer/viewer/prepare/generateTextures.ts +++ b/prismarine-viewer/viewer/prepare/generateTextures.ts @@ -5,11 +5,12 @@ import mcAssets from 'minecraft-assets' import fs from 'fs-extra' import { prepareMoreGeneratedBlocks } from './moreGeneratedBlocks' import { generateItemsAtlases } from './genItemsAtlas' +import { prepareWebglData } from './webglData' const publicPath = path.resolve(__dirname, '../../public') const texturesPath = path.join(publicPath, 'textures') -if (fs.existsSync(texturesPath) && !process.argv.includes('-f')) { +if (fs.existsSync(texturesPath) && !process.argv.includes('-f') && !process.argv.includes('-l')) { console.log('textures folder already exists, skipping...') process.exit(0) } @@ -17,12 +18,13 @@ fs.mkdirSync(texturesPath, { recursive: true }) const blockStatesPath = path.join(publicPath, 'blocksStates') fs.mkdirSync(blockStatesPath, { recursive: true }) +fs.mkdirSync(path.join(publicPath, 'webgl'), { recursive: true }) const warnings = new Set() Promise.resolve().then(async () => { generateItemsAtlases() console.time('generateTextures') - const versions = process.argv.includes('-l') ? mcAssets.versions.at(-1) : mcAssets.versions + const versions = process.argv.includes('-l') ? [mcAssets.versions.at(-1)!] : mcAssets.versions for (const version of versions as typeof mcAssets['versions']) { // for debugging (e.g. when above is overridden) if (!versions.includes(version)) { @@ -41,6 +43,8 @@ Promise.resolve().then(async () => { const blocksStates = JSON.stringify(prepareBlocksStates(assets, atlas)) fs.writeFileSync(path.resolve(blockStatesPath, version + '.json'), blocksStates) + const webglData = prepareWebglData(path.join(assets.directory, 'blocks'), atlas.json) + fs.writeFileSync(path.resolve(publicPath, 'webgl', version + '.json'), JSON.stringify(webglData)) fs.copySync(assets.directory, path.resolve(texturesPath, version), { overwrite: true }) } diff --git a/prismarine-viewer/viewer/prepare/webglData.ts b/prismarine-viewer/viewer/prepare/webglData.ts new file mode 100644 index 000000000..937637e36 --- /dev/null +++ b/prismarine-viewer/viewer/prepare/webglData.ts @@ -0,0 +1,28 @@ +import { JsonAtlas } from './atlas'; +import { join } from 'path' +import fs from 'fs' + +export type WebglData = ReturnType + +export const prepareWebglData = (blockTexturesDir: string, atlas: JsonAtlas) => { + // todo + return Object.fromEntries(Object.entries(atlas.textures).map(([texture, { animatedFrames }]) => { + if (!animatedFrames) return null! + const mcMeta = JSON.parse(fs.readFileSync(join(blockTexturesDir, texture + '.png.mcmeta'), 'utf8')) as { + animation: { + interpolate: boolean, + frametime: number, + frames: ({ + index: number, + time: number + } | number)[] + } + } + return [texture, { + animation: { + ...mcMeta.animation, + framesCount: animatedFrames + } + }] as const + }).filter(Boolean)) +} From 4c58f4538e0ed535404d628df51d99e2f7dc1f5e Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 6 Apr 2024 19:57:06 +0300 Subject: [PATCH 047/303] copy webgl data! --- scripts/build.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build.js b/scripts/build.js index 9840e5d3e..61c09b20c 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -13,6 +13,7 @@ const entityMcAssets = McAssets('1.16.4') // these files could be copied at build time eg with copy plugin, but copy plugin slows down the config so we copy them there, alternative we could inline it in esbuild config const filesToCopy = [ { from: `${prismarineViewerBase}/public/blocksStates/`, to: 'dist/blocksStates/' }, + { from: `${prismarineViewerBase}/public/webgl/`, to: 'dist/webgl/' }, { from: `${prismarineViewerBase}/public/worker.js`, to: 'dist/worker.js' }, { from: './assets/', to: './dist/' }, { from: './config.json', to: 'dist/config.json' }, @@ -92,7 +93,7 @@ exports.getSwAdditionalEntries = () => { } exports.moveStorybookFiles = () => { - fsExtra.moveSync('storybook-static', 'dist/storybook', {overwrite: true,}) + fsExtra.moveSync('storybook-static', 'dist/storybook', { overwrite: true, }) fsExtra.copySync('dist/storybook', '.vercel/output/static/storybook') } From 9fe0e340f802bf5d63533ecd7c7880e5f00883f6 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 6 Apr 2024 23:55:45 +0300 Subject: [PATCH 048/303] minor render tweaks --- prismarine-viewer/examples/webglRendererWorker.ts | 4 ++-- prismarine-viewer/viewer/lib/models.ts | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 165e94c64..dd9289ae5 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -84,7 +84,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let ]) - let NumberOfCube = isPlayground ? 1_500_000 : 5_000_000 + let NumberOfCube = isPlayground ? 1_000_000 : 5_000_000 cubePositions = new Float32Array(NumberOfCube * 3) let cubeTextureIndices = new Float32Array(NumberOfCube * 6); @@ -172,7 +172,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // [camera.position.x, camera.position.y, camera.position.z - 2, 'dirt'], // ] const blocks = allBlocks.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) - globalThis.allBlocksSize = allBlocks.length / 3 + globalThis.allBlocksSize = allBlocks.length cubePositions = new Float32Array(blocks.length * 3) cubeTextureIndices = new Float32Array(blocks.length * 6); for (let i = 0; i < blocks.length * 3; i += 3) { diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index f2a0ec9b3..4302bcd98 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -419,7 +419,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { block.variant = getModelVariants(block) } - if (/* block.name !== 'water' && block.name !== 'lava' *//* && block.isCube */block.name !== 'air') { + if (block.name !== 'water' && /* && block.name !== 'lava' *//* && block.isCube */block.name !== 'air') { let globalMatrix = null as any let globalShift = null as any @@ -503,10 +503,11 @@ export function getSectionGeometry (sx, sy, sz, world: World) { getResult('south'), getResult('west'), getResult('east'), - getResult('up'), - getResult('down') + getResult('down'), + getResult('up') ] if (textures.every(t => t === 0)) continue + if (pos.y <= 1) continue // TODO!! attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { textureIndex: textures, textureName From 17cd4bff773a99e8f93c6b1da686820d414a536d Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 7 Apr 2024 01:13:03 +0300 Subject: [PATCH 049/303] fix critical texture index bug --- prismarine-viewer/examples/webglRendererWorker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index dd9289ae5..55a4d72d5 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -157,7 +157,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.enableVertexAttribArray(5); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); gl.vertexAttribPointer(4, 4, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(5, 2, gl.FLOAT, false, 2 * 6, 4 * 4); + gl.vertexAttribPointer(5, 2, gl.FLOAT, false, 4 * 6, 4 * 4); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(4, 1); gl.vertexAttribDivisor(5, 1); From 183f8e461e4379e641939f344c82c811f732254e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Sun, 7 Apr 2024 01:34:21 +0300 Subject: [PATCH 050/303] Fix texture buffer data type and usage in webglRendererWorker.ts --- prismarine-viewer/examples/_FragmentShader.frag | 2 -- prismarine-viewer/examples/webglRendererWorker.ts | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index 14d6fde78..6560088ce 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -17,7 +17,5 @@ void main() coord = coord + ivec2(TexCoord * 16.0f); vec4 t = texelFetch(texture1, coord, 0); - if (t.z < 0.01) - discard; FragColor = t; } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 55a4d72d5..5a490091b 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -121,11 +121,11 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im let instanceTextureID = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.STATIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.STATIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); VAO = gl.createVertexArray(); let VBO = gl.createBuffer(); @@ -254,7 +254,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, textureWidth, textureHeight, 0, gl.RGB, gl.UNSIGNED_BYTE, textureBitmap); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, textureWidth, textureHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, textureBitmap); //gl.generateMipmap(gl.TEXTURE_2D); //gl.generateMipmap(gl.TEXTURE_2D); From 7777307c4f10c5fab964dc65939f900d3d8dc007 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 7 Apr 2024 01:48:43 +0300 Subject: [PATCH 051/303] fix critical performance scene render --- prismarine-viewer/examples/playground.ts | 4 ++++ prismarine-viewer/examples/webglRenderer.ts | 8 +++----- prismarine-viewer/viewer/lib/viewer.ts | 4 ++-- prismarine-viewer/viewer/lib/worldrendererWebgl.ts | 7 +++++++ 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index a5985bf45..bbd038a8f 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -138,11 +138,15 @@ async function main () { return chunk }) + let stopUpdate = false + // let stopUpdate = true + // await schem.paste(world, new Vec3(0, 60, 0)) const worldView = new WorldDataEmitter(world, viewDistance, targetPos) const nullRenderer = new THREE.WebGLRenderer({ antialias: true }) const viewer = new Viewer(nullRenderer, 1) + viewer.world.stopBlockUpdate = stopUpdate viewer.setVersion(version) globalThis.viewer = viewer diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index adb5b9759..c6b5b2afc 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -31,15 +31,13 @@ if (typeof customEvents !== 'undefined') { let isWaitingToUpload = false export const addBlocksSection = (key, data) => { + sendWorkerMessage({ + type: 'addBlocksSection', data, key + }) if (isWaitingToUpload) return isWaitingToUpload = true viewer.waitForChunksToRender().then(() => { isWaitingToUpload = false - for (const [key, data] of Object.entries(viewer.world.newChunks)) { - sendWorkerMessage({ - type: 'addBlocksSection', data, key - }) - } if (allReceived || (true && Object.values(viewer.world.newChunks).length)) { sendWorkerMessage({ type: 'addBlocksSectionDone' diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 5a457c297..57f5ee5e5 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -15,7 +15,7 @@ export class Viewer { ambientLight: THREE.AmbientLight directionalLight: THREE.DirectionalLight camera: THREE.PerspectiveCamera - world: WorldRendererWebgl | WorldRendererThree + world: WorldRendererWebgl/* | WorldRendererThree */ entities: Entities primitives: Primitives domElement: HTMLCanvasElement @@ -163,7 +163,7 @@ export class Viewer { }) // todo remove and use other architecture instead so data flow is clear emitter.on('blockEntities', (blockEntities) => { - (this.world as WorldRendererThree).blockEntities = blockEntities + (this.world as unknown as WorldRendererThree).blockEntities = blockEntities }) emitter.on('unloadChunk', ({ x, z }) => { diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index 9bd7ef20f..4556d953c 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -6,6 +6,7 @@ import { WorldRendererCommon } from './worldrendererCommon' export class WorldRendererWebgl extends WorldRendererCommon { newChunks = {} as Record webglData: WebglData + stopBlockUpdate = false constructor(numWorkers = 4) { super(numWorkers) @@ -21,6 +22,11 @@ export class WorldRendererWebgl extends WorldRendererCommon { return this.webglData[textureName] } + setBlockStateId (pos: any, stateId: any): void { + if (this.stopBlockUpdate) return + super.setBlockStateId(pos, stateId) + } + handleWorkerMessage (data: any): void { if (data.type === 'geometry') { @@ -49,6 +55,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { removeColumn (x, z) { + return super.removeColumn(x, z) for (const key of Object.keys(this.newChunks)) { const [xSec, _ySec, zSec] = key.split(',').map(Number) From 31b419c6ee055475931af47e50a2a3a1601815b2 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 7 Apr 2024 02:03:46 +0300 Subject: [PATCH 052/303] add tint --- prismarine-viewer/examples/shared.ts | 1 + .../examples/webglRendererWorker.ts | 2 +- prismarine-viewer/viewer/lib/models.ts | 25 +++++++++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/prismarine-viewer/examples/shared.ts b/prismarine-viewer/examples/shared.ts index 77ec6bda5..21fe635d9 100644 --- a/prismarine-viewer/examples/shared.ts +++ b/prismarine-viewer/examples/shared.ts @@ -1,4 +1,5 @@ export type BlockType = { textureIndex: number[] textureName?: string + tint?: [number, number, number] } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 5a490091b..98dbf87ef 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -316,7 +316,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, allBlocks.length || NumberOfCube); + gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, isPlayground ? NumberOfCube : allBlocks.length); } //gl.bindVertexArray(null) diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 4302bcd98..1638cd234 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -470,10 +470,30 @@ export function getSectionGeometry (sx, sy, sz, world: World) { } let textureName = undefined + let tint const getResult = (side: string): number => { const facesOrTexture = findTextureInBlockStates(block.name); if (!facesOrTexture) return 0 // todo - const result = 'u' in facesOrTexture ? facesOrTexture : facesOrTexture?.[side]?.texture + let result + if ('u' in facesOrTexture) { + result = facesOrTexture + } else { + result = facesOrTexture?.[side]?.texture + const tintindex = facesOrTexture?.[side]?.tintindex + if (tintindex === 0) { + if (block.name === 'redstone_wire') { + tint = tints.redstone[`${block.getProperties().power}`] + } else if (block.name === 'birch_leaves' || + block.name === 'spruce_leaves' || + block.name === 'lily_pad') { + tint = tints.constant[block.name] + } else if (block.name.includes('leaves') || block.name === 'vine') { + tint = tints.foliage[biome] + } else { + tint = tints.grass[biome] + } + } + } if (!result) return 0 // todo if (result.textureName) { textureName = result.textureName @@ -510,7 +530,8 @@ export function getSectionGeometry (sx, sy, sz, world: World) { if (pos.y <= 1) continue // TODO!! attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { textureIndex: textures, - textureName + textureName, + tint } satisfies BlockType } From 9f89af613fbda9dce52aff774b57b21b101b0e66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Sun, 7 Apr 2024 02:37:21 +0300 Subject: [PATCH 053/303] Add biome color support to fragment shader --- .../examples/_FragmentShader.frag | 12 ++++++- prismarine-viewer/examples/_VertexShader.vert | 4 +++ .../examples/webglRendererWorker.ts | 33 ++++++++++++++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index 6560088ce..ca0c9f4dc 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -5,6 +5,7 @@ out vec4 FragColor; in vec2 TexCoord; flat in float TextureIndex; +flat in vec3 BiomeColor; uniform sampler2D texture1; @@ -17,5 +18,14 @@ void main() coord = coord + ivec2(TexCoord * 16.0f); vec4 t = texelFetch(texture1, coord, 0); - FragColor = t; + if (abs(t.x-t.y) <=0.010 || abs(t.x-t.z)<=0.010 ||abs(t.y-t.z) <=0.010) + { + FragColor = vec4(BiomeColor,1.0f)*t; + } + else + { + FragColor = t; + //FragColor = mix(t, vec4(BiomeColor, 1.0f), 0.5f); + } + } diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 4d120e51b..f1f6b0748 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -6,11 +6,13 @@ layout (location = 2) in float CubeSide; layout (location = 3) in vec3 aOffset; layout (location = 4) in vec4 aTextureIndex; layout (location = 5) in vec2 aTextureIndexPlus; +layout (location = 6) in vec3 aBiomeColor; out vec2 TexCoord; flat out float TextureIndex; +flat out vec3 BiomeColor; uniform mat4 view; uniform mat4 projection; @@ -46,6 +48,8 @@ void main() } TextureIndex += float(tick); + BiomeColor = aBiomeColor; + //CubeSideIndex = CubeSide; //Passing cube side index to fragment shader } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 98dbf87ef..1319a41c7 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -88,6 +88,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im cubePositions = new Float32Array(NumberOfCube * 3) let cubeTextureIndices = new Float32Array(NumberOfCube * 6); + let cubeBiomeColor = new Float32Array(NumberOfCube * 3); // write random coordinates to cube positions xyz ten cubes; @@ -96,6 +97,9 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im cubePositions[i] = Math.floor(Math.random() * 1000) - 500; cubePositions[i + 1] = Math.floor(Math.random() * 1000) - 500; cubePositions[i + 2] = Math.floor(Math.random() * 100) - 100; + cubeBiomeColor[i] = (Math.random() ) ; + cubeBiomeColor[i + 1] = (Math.random() ) ; + cubeBiomeColor[i + 2] = (Math.random() ) ; // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); // cubeTextureIndices[i / 3] = 0; } @@ -119,6 +123,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im let VAO = gl.createVertexArray(); let instanceVBO = gl.createBuffer(); let instanceTextureID = gl.createBuffer(); + let instanceBiomeColor = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.DYNAMIC_DRAW); // todo @@ -127,6 +132,10 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); + gl.bufferData(gl.ARRAY_BUFFER, cubeBiomeColor, gl.DYNAMIC_DRAW); // todo + gl.bindBuffer(gl.ARRAY_BUFFER, null); VAO = gl.createVertexArray(); let VBO = gl.createBuffer(); // let VBO_sides = gl.createBuffer(); @@ -162,6 +171,12 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.vertexAttribDivisor(4, 1); gl.vertexAttribDivisor(5, 1); + gl.enableVertexAttribArray(6); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); + gl.vertexAttribPointer(6, 3, gl.FLOAT, false, 3 * 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(6, 1); + updateCubes = (startIndex) => { // cubePositionsRaw = [ // // for now one cube in front of the camera @@ -175,10 +190,22 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im globalThis.allBlocksSize = allBlocks.length cubePositions = new Float32Array(blocks.length * 3) cubeTextureIndices = new Float32Array(blocks.length * 6); + cubeBiomeColor = new Float32Array(blocks.length * 3); for (let i = 0; i < blocks.length * 3; i += 3) { cubePositions[i] = blocks[i / 3][0] cubePositions[i + 1] = blocks[i / 3][1] cubePositions[i + 2] = blocks[i / 3][2] + const block = blocks[i / 3][3] as BlockType + if (block.tint) { + const [r, g, b] = block.tint + cubeBiomeColor[i] = r + cubeBiomeColor[i + 1] = g + cubeBiomeColor[i + 2] = b + } else { + cubeBiomeColor[i] = 1 + cubeBiomeColor[i + 1] = 1 + cubeBiomeColor[i + 2] = 1 + } } for (let i = 0; i < blocks.length * 6; i += 6) { @@ -213,6 +240,10 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im const TEXTURES_SIZE = 6 gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * TEXTURES_SIZE, cubeTextureIndices); // update buffer content gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * POS_SIZE, cubeBiomeColor); // update buffer content + gl.bindBuffer(gl.ARRAY_BUFFER, null); } globalThis.updateCubes = updateCubes @@ -304,7 +335,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - gl.clearColor(0.5, 0.5, 0.5, 0.0); + gl.clearColor( 0.6784313725490196, 0.8470588235294118, 0.9019607843137255 , 0.0); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) From db722dba34cb5b78236348c1f8742b98047e0ebc Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Mon, 25 Mar 2024 08:19:56 +0300 Subject: [PATCH 054/303] fix vercel preview deploy --- .github/workflows/preview.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index ef1d77737..2a5f56659 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -21,6 +21,7 @@ jobs: uses: actions/checkout@v2 with: ref: refs/pull/${{ github.event.issue.number }}/head + - run: npm i -g pnpm - uses: actions/setup-node@v4 with: node-version: 18 From c4d65ee9fdcb8fd1e26df92691a4736a9e13d627 Mon Sep 17 00:00:00 2001 From: Vitaly Date: Mon, 25 Mar 2024 09:57:26 +0300 Subject: [PATCH 055/303] fix warps display for greenfield & click action --- src/loadSave.ts | 6 ++++-- src/react/Notification.tsx | 4 ++-- src/react/NotificationProvider.tsx | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/loadSave.ts b/src/loadSave.ts index 965b1a7c6..a707da4d4 100644 --- a/src/loadSave.ts +++ b/src/loadSave.ts @@ -6,7 +6,7 @@ import { proxy } from 'valtio' import { gzip } from 'node-gzip' import { options } from './optionsStorage' import { nameToMcOfflineUUID, disconnect } from './flyingSquidUtils' -import { forceCachedDataPaths, forceRedirectPaths, mkdirRecursive } from './browserfs' +import { existsViaStats, forceCachedDataPaths, forceRedirectPaths, mkdirRecursive } from './browserfs' import { isMajorVersionGreater } from './utils' import { activeModalStacks, insertActiveModalStack, miscUiState } from './globalState' @@ -154,7 +154,9 @@ export const loadSave = async (root = '/world') => { // improve compatibility with community saves const rootRemapFiles = ['Warp files'] for (const rootRemapFile of rootRemapFiles) { - forceRedirectPaths[path.join(root, rootRemapFile)] = path.join(root, '..', rootRemapFile) + if (await existsViaStats(path.join(root, '..', rootRemapFile))) { + forceRedirectPaths[path.join(root, rootRemapFile)] = path.join(root, '..', rootRemapFile) + } } // todo reimplement diff --git a/src/react/Notification.tsx b/src/react/Notification.tsx index 6ebd49e26..0f3a63259 100644 --- a/src/react/Notification.tsx +++ b/src/react/Notification.tsx @@ -36,7 +36,7 @@ export default ({ type = 'message', message, subMessage = '', open, icon = '', a position: 'fixed', top: 0, right: 0, - width: '160px', + width: '155px', whiteSpace: 'nowrap', fontSize: '9px', display: 'flex', @@ -45,7 +45,7 @@ export default ({ type = 'message', message, subMessage = '', open, icon = '', a padding: '3px 8px', background: isError ? 'rgba(255, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.7)', borderRadius: '0 0 0 5px', - pointerEvents: action ? 'auto' : 'none', + pointerEvents: action ? '' : 'none', zIndex: 1200, // even above stats ...addStyles }}> diff --git a/src/react/NotificationProvider.tsx b/src/react/NotificationProvider.tsx index 2f27a595f..e5ceb0b36 100644 --- a/src/react/NotificationProvider.tsx +++ b/src/react/NotificationProvider.tsx @@ -40,7 +40,7 @@ export const hideNotification = () => { } export default () => { - const { autoHide, message, open, icon, type, subMessage } = useSnapshot(notificationProxy) + const { autoHide, message, open, icon, type, subMessage, action } = useSnapshot(notificationProxy) useEffect(() => { if (autoHide && open) { @@ -58,6 +58,7 @@ export default () => { // }, []) return Date: Mon, 25 Mar 2024 13:47:01 +0300 Subject: [PATCH 056/303] three shake three.js (#94) --- scripts/esbuildPlugins.mjs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/esbuildPlugins.mjs b/scripts/esbuildPlugins.mjs index 07938c6ec..95d88b8ed 100644 --- a/scripts/esbuildPlugins.mjs +++ b/scripts/esbuildPlugins.mjs @@ -27,7 +27,8 @@ const plugins = [ build.onLoad({ filter: /minecraft-data[\/\\]data.js$/, }, (args) => { - const version = supportedVersions.at(-1); + const version = supportedVersions.at(-1) + if (!version) throw new Error('unreachable') const data = MCData(version) const defaultVersionsObj = { // default protocol data, needed for auto-version @@ -47,6 +48,14 @@ const plugins = [ }, () => { throw new Error('hit banned package') }) + + build.onResolve({ + filter: /^three$/, + }, async ({ kind, resolveDir }) => { + return { + path: (await build.resolve('three/src/Three.js', { kind, resolveDir })).path, + } + }) } }, { From 48d3bbeef5be50be394af44f31052069cf3f9e06 Mon Sep 17 00:00:00 2001 From: gguio <109200692+gguio@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:00:11 +0400 Subject: [PATCH 057/303] feat: effects + system indicators in hud! (#95) Co-authored-by: gguio --- src/browserfs.ts | 24 ++++- src/globalState.ts | 1 + src/index.ts | 2 + src/loadSave.ts | 4 +- src/react/IndicatorEffects.css | 35 ++++++++ src/react/IndicatorEffects.stories.tsx | 35 ++++++++ src/react/IndicatorEffects.tsx | 111 +++++++++++++++++++++++ src/react/IndicatorEffectsProvider.tsx | 118 +++++++++++++++++++++++++ src/react/effectsImages.ts | 76 ++++++++++++++++ src/reactUi.tsx | 2 + src/utils.ts | 6 ++ 11 files changed, 412 insertions(+), 2 deletions(-) create mode 100644 src/react/IndicatorEffects.css create mode 100644 src/react/IndicatorEffects.stories.tsx create mode 100644 src/react/IndicatorEffects.tsx create mode 100644 src/react/IndicatorEffectsProvider.tsx create mode 100644 src/react/effectsImages.ts diff --git a/src/browserfs.ts b/src/browserfs.ts index 42159b490..ebe8acfdd 100644 --- a/src/browserfs.ts +++ b/src/browserfs.ts @@ -60,7 +60,18 @@ fs.promises = new Proxy(Object.fromEntries(['readFile', 'writeFile', 'stat', 'mk if (p === 'open' && fsState.isReadonly) { args[1] = 'r' // read-only, zipfs throw otherwise } - return target[p](...args) + if (p === 'readFile') { + fsState.openReadOperations++ + } else if (p === 'writeFile') { + fsState.openWriteOperations++ + } + return target[p](...args).finally(() => { + if (p === 'readFile') { + fsState.openReadOperations-- + } else if (p === 'writeFile') { + fsState.openWriteOperations-- + } + }) } } }) @@ -77,7 +88,18 @@ fs.promises.open = async (...args) => { return } + if (x === 'read') { + fsState.openReadOperations++ + } else if (x === 'write' || x === 'close') { + fsState.openWriteOperations++ + } fs[x](fd, ...args, (err, bytesRead, buffer) => { + if (x === 'read') { + fsState.openReadOperations-- + } else if (x === 'write' || x === 'close') { + // todo that's not correct + fsState.openWriteOperations-- + } if (err) throw err // todo if readonly probably there is no need to open at all (return some mocked version - check reload)? if (x === 'write' && !fsState.isReadonly) { diff --git a/src/globalState.ts b/src/globalState.ts index 749b3a8fc..392d5fd9c 100644 --- a/src/globalState.ts +++ b/src/globalState.ts @@ -129,6 +129,7 @@ export type AppConfig = { export const miscUiState = proxy({ currentDisplayQr: null as string | null, currentTouch: null as boolean | null, + hasErrors: false, singleplayer: false, flyingSquid: false, wanOpened: false, diff --git a/src/index.ts b/src/index.ts index 1ee933915..aaa4989c1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -258,6 +258,7 @@ async function connect (connectOptions: { server?: string; singleplayer?: any; username: string; password?: any; proxy?: any; botVersion?: any; serverOverrides?; serverOverridesFlat?; peerId?: string }) { if (miscUiState.gameLoaded) return + miscUiState.hasErrors = false lastConnectOptions.value = connectOptions document.getElementById('play-screen').style = 'display: none;' removePanorama() @@ -318,6 +319,7 @@ async function connect (connectOptions: { console.error(err) errorAbortController.abort() if (isCypress()) throw err + miscUiState.hasErrors = true if (miscUiState.gameLoaded) return setLoadingScreenStatus(`Error encountered. ${err}`, true) diff --git a/src/loadSave.ts b/src/loadSave.ts index a707da4d4..655fbea88 100644 --- a/src/loadSave.ts +++ b/src/loadSave.ts @@ -17,7 +17,9 @@ export const fsState = proxy({ isReadonly: false, syncFs: false, inMemorySave: false, - saveLoaded: false + saveLoaded: false, + openReadOperations: 0, + openWriteOperations: 0, }) const PROPOSE_BACKUP = true diff --git a/src/react/IndicatorEffects.css b/src/react/IndicatorEffects.css new file mode 100644 index 000000000..2902bfeed --- /dev/null +++ b/src/react/IndicatorEffects.css @@ -0,0 +1,35 @@ +.effectsScreen-container { + position: fixed; + top: 6%; + left: 0px; + z-index: -1; + pointer-events: none; +} + +.indicators-container { + display: flex; + font-size: 0.7em; +} + +.effects-container { + display: flex; + flex-direction: column; +} + +.effect-box { + display: flex; + align-items: center; +} + +.effect-box__image { + width: 23px; + margin-right: 3px; +} + +.effect-box__time { + font-size: 0.65rem; +} + +.effect-box__level { + font-size: 0.45rem; +} diff --git a/src/react/IndicatorEffects.stories.tsx b/src/react/IndicatorEffects.stories.tsx new file mode 100644 index 000000000..455718fe0 --- /dev/null +++ b/src/react/IndicatorEffects.stories.tsx @@ -0,0 +1,35 @@ +import 'iconify-icon' + +import type { Meta, StoryObj } from '@storybook/react' + +import IndicatorEffects, { defaultIndicatorsState } from './IndicatorEffects' +import { images } from './effectsImages' + +const meta: Meta = { + component: IndicatorEffects +} + +export default meta +type Story = StoryObj; + +export const Primary: Story = { + args: { + indicators: defaultIndicatorsState, + effects: [ + { + image: images.glowing, + time: 200, + level: 255, + removeEffect (image: string) {}, + reduceTime (image: string) {} + }, + { + image: images.absorption, + time: 30, + level: 99, + removeEffect (image: string) {}, + reduceTime (image: string) {} + } + ], + } +} diff --git a/src/react/IndicatorEffects.tsx b/src/react/IndicatorEffects.tsx new file mode 100644 index 000000000..b767cc237 --- /dev/null +++ b/src/react/IndicatorEffects.tsx @@ -0,0 +1,111 @@ +import { useMemo, useEffect, useRef } from 'react' +import PixelartIcon from './PixelartIcon' +import './IndicatorEffects.css' + + + +function formatTime (seconds: number): string { + if (seconds < 0) return '' + const minutes = Math.floor(seconds / 60) + const remainingSeconds = seconds % 60 + const formattedMinutes = String(minutes).padStart(2, '0') + const formattedSeconds = String(remainingSeconds).padStart(2, '0') + return `${formattedMinutes}:${formattedSeconds}` +} + +export type EffectType = { + image: string, + time: number, + level: number, + removeEffect: (image: string) => void, + reduceTime: (image: string) => void +} + +const EffectBox = ({ image, time, level }: Pick) => { + + const formattedTime = useMemo(() => formatTime(time), [time]) + + return
+ +
+ {formattedTime ? ( + // if time is negative then effect is shown without time. + // Component should be removed manually with time = 0 +
{formattedTime}
+ ) : null } + {level > 0 && level < 256 ? ( +
{level + 1}
+ ) : null } +
+
+} + +export const defaultIndicatorsState = { + chunksLoading: false, + readingFiles: false, + readonlyFiles: false, + writingFiles: false, // saving + appHasErrors: false, +} + +const indicatorIcons: Record = { + chunksLoading: 'add-grid', + readingFiles: 'arrow-bar-down', + writingFiles: 'arrow-bar-up', + appHasErrors: 'alert', + readonlyFiles: 'file-off', +} + +export default ({ indicators, effects }: {indicators: typeof defaultIndicatorsState, effects: readonly EffectType[]}) => { + const effectsRef = useRef(effects) + useEffect(() => { + effectsRef.current = effects + }, [effects]) + + useEffect(() => { + // todo use more precise timer for each effect + const interval = setInterval(() => { + for (const [index, effect] of effectsRef.current.entries()) { + if (effect.time === 0) { + // effect.removeEffect(effect.image) + return + } + effect.reduceTime(effect.image) + } + }, 1000) + + return () => { + clearInterval(interval) + } + }, []) + + const indicatorsMapped = Object.entries(defaultIndicatorsState).map(([key, state]) => ({ + icon: indicatorIcons[key], + // preserve order + state: indicators[key], + })) + return
+
+ { + indicatorsMapped.map((indicator) =>
+ +
) + } +
+
+ { + effects.map( + (effect) => + ) + } +
+
+} diff --git a/src/react/IndicatorEffectsProvider.tsx b/src/react/IndicatorEffectsProvider.tsx new file mode 100644 index 000000000..00b78d8a1 --- /dev/null +++ b/src/react/IndicatorEffectsProvider.tsx @@ -0,0 +1,118 @@ +import { proxy, useSnapshot } from 'valtio' +import { useEffect, useMemo } from 'react' +import { inGameError } from '../utils' +import { fsState } from '../loadSave' +import { miscUiState } from '../globalState' +import IndicatorEffects, { EffectType, defaultIndicatorsState } from './IndicatorEffects' +import { images } from './effectsImages' + +export const state = proxy({ + indicators: { + chunksLoading: false + }, + effects: [] as EffectType[] +}) + +export const addEffect = (newEffect: Omit) => { + const effectIndex = getEffectIndex(newEffect as EffectType) + if (typeof effectIndex === 'number') { + state.effects[effectIndex].time = newEffect.time + state.effects[effectIndex].level = newEffect.level + } else { + const effect = { ...newEffect, reduceTime, removeEffect } + state.effects.push(effect) + } +} + +const removeEffect = (image: string) => { + for (const [index, effect] of (state.effects).entries()) { + if (effect.image === image) { + state.effects.splice(index, 1) + } + } +} + +const reduceTime = (image: string) => { + for (const [index, effect] of (state.effects).entries()) { + if (effect.image === image) { + effect.time -= 1 + } + } +} + +const getEffectIndex = (newEffect: EffectType) => { + for (const [index, effect] of (state.effects).entries()) { + if (effect.image === newEffect.image) { + return index + } + } + return null +} + +export default () => { + const stateIndicators = useSnapshot(state.indicators) + const { hasErrors } = useSnapshot(miscUiState) + const { isReadonly, openReadOperations, openWriteOperations } = useSnapshot(fsState) + const allIndicators: typeof defaultIndicatorsState = { + readonlyFiles: isReadonly, + writingFiles: openWriteOperations > 0, + readingFiles: openReadOperations > 0, + appHasErrors: hasErrors, + ...stateIndicators, + } + + useEffect(() => { + let alreadyWaiting = false + const listener = () => { + if (alreadyWaiting) return + state.indicators.chunksLoading = true + alreadyWaiting = true + void viewer.waitForChunksToRender().then(() => { + state.indicators.chunksLoading = false + alreadyWaiting = false + }) + } + viewer.world.renderUpdateEmitter.on('dirty', listener) + + return () => { + viewer.world.renderUpdateEmitter.off('dirty', listener) + } + }, []) + + const effects = useSnapshot(state.effects) + + useMemo(() => { + const effectsImages = Object.fromEntries(loadedData.effectsArray.map((effect) => { + const nameKebab = effect.name.replaceAll(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`).slice(1) + return [effect.id, images[nameKebab]] + })) + bot.on('entityEffect', (entity, effect) => { + if (entity.id !== bot.entity.id) return + const image = effectsImages[effect.id] ?? null + if (!image) { + inGameError(`received unknown effect id ${effect.id}}`) + return + } + const newEffect = { + image, + time: effect.duration / 20, // duration received in ticks + level: effect.amplifier, + } + addEffect(newEffect) + }) + bot.on('entityEffectEnd', (entity, effect) => { + if (entity.id !== bot.entity.id) return + const image = effectsImages[effect.id] ?? null + if (!image) { + inGameError(`received unknown effect id ${effect.id}}}`) + return + } + removeEffect(image) + }) + }, []) + + return +} diff --git a/src/react/effectsImages.ts b/src/react/effectsImages.ts new file mode 100644 index 000000000..21421e0f6 --- /dev/null +++ b/src/react/effectsImages.ts @@ -0,0 +1,76 @@ +import absorption from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/absorption.png' +import glowing from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/glowing.png' +import instant_health from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/instant_health.png' +import nausea from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/nausea.png' +import slow_falling from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/slow_falling.png' +import weakness from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/weakness.png' +import bad_omen from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/bad_omen.png' +import haste from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/haste.png' +import invisibility from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/invisibility.png' +import night_vision from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/night_vision.png' +import slowness from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/slowness.png' +import wither from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/wither.png' +import blindness from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/blindness.png' +import health_boost from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/health_boost.png' +import jump_boost from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/jump_boost.png' +import poison from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/poison.png' +import speed from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/speed.png' +import conduit_power from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/conduit_power.png' +import hero_of_the_village from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/hero_of_the_village.png' +import levitation from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/levitation.png' +import regeneration from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/regeneration.png' +import strength from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/strength.png' +import dolphins_grace from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/dolphins_grace.png' +import hunger from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/hunger.png' +import luck from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/luck.png' +import resistance from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/resistance.png' +import unluck from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/unluck.png' +import fire_resistance from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/fire_resistance.png' +import instant_damage from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/instant_damage.png' +import mining_fatigue from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/mining_fatigue.png' +import saturation from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/saturation.png' +import water_breathing from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/water_breathing.png' +import darkness from 'minecraft-assets/minecraft-assets/data/1.20.2/mob_effect/darkness.png' + +interface Images { + [key: string]: string; +} + +// Export an object containing image URLs +export const images: Images = { + absorption, + glowing, + instant_health, + nausea, + slow_falling, + weakness, + bad_omen, + haste, + invisibility, + night_vision, + slowness, + wither, + blindness, + health_boost, + jump_boost, + poison, + speed, + conduit_power, + hero_of_the_village, + levitation, + regeneration, + strength, + dolphins_grace, + hunger, + luck, + resistance, + unluck, + bad_luck: unluck, + good_luck: luck, + fire_resistance, + instant_damage, + mining_fatigue, + saturation, + water_breathing, + darkness +} diff --git a/src/reactUi.tsx b/src/reactUi.tsx index aa1d74dd9..d56cb8056 100644 --- a/src/reactUi.tsx +++ b/src/reactUi.tsx @@ -16,6 +16,7 @@ import ChatProvider from './react/ChatProvider' import TitleProvider from './react/TitleProvider' import ScoreboardProvider from './react/ScoreboardProvider' import SignEditorProvider from './react/SignEditorProvider' +import IndicatorEffectsProvider from './react/IndicatorEffectsProvider' import SoundMuffler from './react/SoundMuffler' import TouchControls from './react/TouchControls' import widgets from './react/widgets' @@ -65,6 +66,7 @@ const InGameUi = () => { + diff --git a/src/utils.ts b/src/utils.ts index 61ceeeb80..39bf940e1 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -20,6 +20,12 @@ export const toNumber = (val) => { return isNaN(num) ? undefined : num } +export const inGameError = (err) => { + console.error(err) + // todo report + miscUiState.hasErrors = true +} + export const pointerLock = { get hasPointerLock () { return document.pointerLockElement From 029a7175ab00a98ee36b26ee37d72e91210c9f5c Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 28 Mar 2024 01:41:48 +0300 Subject: [PATCH 058/303] fix page loadeding indicator showing sometimes --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index aaa4989c1..3e7d951da 100644 --- a/src/index.ts +++ b/src/index.ts @@ -864,7 +864,7 @@ downloadAndOpenFile().then((downloadAction) => { const initialLoader = document.querySelector('.initial-loader') as HTMLElement | null if (initialLoader) { initialLoader.style.opacity = '0' - window.pageLoaded = true } +window.pageLoaded = true void possiblyHandleStateVariable() From dc9f15e9038ae1c02e9cd6f78b946d2a7b3d7658 Mon Sep 17 00:00:00 2001 From: Vitaly Date: Tue, 9 Apr 2024 03:51:11 +0300 Subject: [PATCH 059/303] naive transparent --- prismarine-viewer/examples/shared.ts | 1 + prismarine-viewer/examples/webglRendererWorker.ts | 4 ++++ prismarine-viewer/viewer/lib/models.ts | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/prismarine-viewer/examples/shared.ts b/prismarine-viewer/examples/shared.ts index 21fe635d9..2a43c467a 100644 --- a/prismarine-viewer/examples/shared.ts +++ b/prismarine-viewer/examples/shared.ts @@ -2,4 +2,5 @@ export type BlockType = { textureIndex: number[] textureName?: string tint?: [number, number, number] + isTransparent?: boolean } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 1319a41c7..9716feb2a 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -187,6 +187,10 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // [camera.position.x, camera.position.y, camera.position.z - 2, 'dirt'], // ] const blocks = allBlocks.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) + blocks.sort((a, b) => { + const getScore = (b: BlockType) => b.isTransparent ? 1 : 0 + return getScore(b[3]) - getScore(a[3]) + }) globalThis.allBlocksSize = allBlocks.length cubePositions = new Float32Array(blocks.length * 3) cubeTextureIndices = new Float32Array(blocks.length * 6); diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 1638cd234..a21c67f0f 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -531,7 +531,8 @@ export function getSectionGeometry (sx, sy, sz, world: World) { attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { textureIndex: textures, textureName, - tint + tint, + isTransparent: block.name.includes('glass') // todo } satisfies BlockType } From 484844b35d7ea26a02b92aace566d4e08adb43e1 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 9 Apr 2024 14:41:21 +0300 Subject: [PATCH 060/303] add playground scripts! --- package.json | 7 +- pnpm-lock.yaml | 903 ++++++++++++++++++++++++++++++++- prismarine-viewer/package.json | 1 + 3 files changed, 903 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 3fe21a9d4..04cf44adb 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,12 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build && node scripts/build.js moveStorybookFiles", "start-experiments": "vite --config experiments/vite.config.ts", - "watch-worker": "node prismarine-viewer/buildWorker.mjs -w" + "watch-worker": "node prismarine-viewer/buildWorker.mjs -w", + "watch-other-workers": "node buildWorkers.mjs -w", + "run-playground": "run-p watch-worker watch-other-workers playground-server watch-playground", + "run-all": "run-p start run-playground", + "playground-server": "live-server --port=9090 prismarine-viewer/public", + "watch-playground": "node prismarine-viewer/esbuild.mjs -w" }, "keywords": [ "prismarine", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb79e917f..81363a742 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -356,6 +356,9 @@ importers: lil-gui: specifier: ^0.18.2 version: 0.18.2 + live-server: + specifier: ^1.2.2 + version: 1.2.2 looks-same: specifier: ^8.2.3 version: 8.2.3 @@ -5949,6 +5952,15 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: false + /anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -5957,6 +5969,18 @@ packages: picomatch: 2.3.1 dev: true + /apache-crypt@1.2.6: + resolution: {integrity: sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==} + engines: {node: '>=8'} + dependencies: + unix-crypt-td-js: 1.1.4 + dev: false + + /apache-md5@1.1.8: + resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} + engines: {node: '>=8'} + dev: false + /app-root-dir@1.0.2: resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} dev: true @@ -6002,6 +6026,21 @@ packages: tslib: 2.6.2 dev: true + /arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + dev: false + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -6035,6 +6074,11 @@ packages: engines: {node: '>=8'} dev: true + /array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + dev: false + /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} @@ -6137,6 +6181,11 @@ packages: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + /ast-types@0.14.2: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} @@ -6162,6 +6211,10 @@ packages: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + /async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + dev: false + /async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} @@ -6186,6 +6239,12 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} + /atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + dev: false + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} @@ -6295,18 +6354,38 @@ packages: engines: {node: ^4.5.0 || >= 5.9} dev: false + /base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.0 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + dev: false + /basic-auth@2.0.1: resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} engines: {node: '>= 0.8'} dependencies: safe-buffer: 5.1.2 - dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: false /bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 + /bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + dev: false + /better-opn@3.0.2: resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} engines: {node: '>=12.0.0'} @@ -6319,6 +6398,11 @@ packages: engines: {node: '>=0.6'} dev: true + /binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + dev: false + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -6428,6 +6512,24 @@ packages: dependencies: balanced-match: 1.0.2 + /braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -6618,6 +6720,21 @@ packages: dev: false optional: true + /cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.0 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + dev: false + /cachedir@2.4.0: resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} @@ -6781,6 +6898,27 @@ packages: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} + /chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + dependencies: + anymatch: 2.0.0 + async-each: 1.0.6 + braces: 2.3.2 + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + dev: false + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6814,6 +6952,16 @@ packages: safe-buffer: 5.2.1 dev: true + /class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + dev: false + /classnames@2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false @@ -6896,6 +7044,14 @@ packages: engines: {node: '>=6'} dev: false + /collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + dev: false + /color-convert@0.5.3: resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} dev: false @@ -7028,6 +7184,18 @@ packages: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: false + /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} dev: false @@ -7085,6 +7253,11 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + /copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + dev: false + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: @@ -7408,6 +7581,11 @@ packages: character-entities: 2.0.2 dev: false + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false + /decompress-response@4.2.1: resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} engines: {node: '>=8'} @@ -7487,6 +7665,28 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 + /define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 0.1.7 + dev: false + + /define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + dev: false + + /define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + dev: false + /defu@6.1.2: resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} dev: true @@ -7513,6 +7713,11 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -7701,6 +7906,10 @@ packages: resolution: {integrity: sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==} dev: false + /duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + /duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} dependencies: @@ -8632,6 +8841,18 @@ packages: promise: 5.0.0 dev: false + /event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + dev: false + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -8697,6 +8918,21 @@ packages: engines: {node: '>=6'} dev: false + /expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} @@ -8760,9 +8996,40 @@ packages: transitivePeerDependencies: - supports-color + /extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + /extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /extract-zip@1.7.0: resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} hasBin: true @@ -8831,6 +9098,13 @@ packages: reusify: 1.0.4 dev: true + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: false + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: @@ -8889,6 +9163,16 @@ packages: resolution: {integrity: sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==} engines: {node: '>= 10.4.0'} + /fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + dev: false + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -8896,6 +9180,21 @@ packages: to-regex-range: 5.0.1 dev: true + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + /finalhandler@1.2.0: resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} engines: {node: '>= 0.8'} @@ -9005,6 +9304,11 @@ packages: dependencies: is-callable: 1.2.7 + /for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + dev: false + /foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -9045,10 +9349,21 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + /fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + dependencies: + map-cache: 0.2.2 + dev: false + /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + /from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + dev: false + /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -9096,6 +9411,18 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + /fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + requiresBuild: true + dependencies: + bindings: 1.5.0 + nan: 2.18.0 + dev: false + optional: true + /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -9239,6 +9566,11 @@ packages: resolve-pkg-maps: 1.0.0 dev: false + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false + /getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} dependencies: @@ -9291,6 +9623,13 @@ packages: dev: false optional: true + /glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + dev: false + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -9502,6 +9841,37 @@ packages: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false + /has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + dev: false + + /has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + dev: false + + /has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + dev: false + + /has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + dev: false + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -9585,6 +9955,16 @@ packages: engines: {node: '>=8'} dev: true + /http-auth@3.1.3: + resolution: {integrity: sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==} + engines: {node: '>=4.6.1'} + dependencies: + apache-crypt: 1.2.6 + apache-md5: 1.1.8 + bcryptjs: 2.4.3 + uuid: 3.4.0 + dev: false + /http-browserify@1.7.0: resolution: {integrity: sha512-Irf/LJXmE3cBzU1eaR4+NEX6bmVLqt1wkmDiA7kBwH7zmb0D8kBAXsDmQ88hhj/qv9iEZKlyGx/hrMcFi8sOHw==} dependencies: @@ -9595,6 +9975,16 @@ packages: /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -9605,6 +9995,10 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: false + /http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -9795,6 +10189,10 @@ packages: once: 1.4.0 wrappy: 1.0.2 + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -9849,6 +10247,13 @@ packages: engines: {node: '>=8'} dev: true + /is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + dependencies: + hasown: 2.0.1 + dev: false + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -9890,6 +10295,13 @@ packages: dependencies: has-bigints: 1.0.2 + /is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + dependencies: + binary-extensions: 1.13.1 + dev: false + /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -9904,6 +10316,10 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + /is-builtin-module@3.2.1: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} @@ -9932,6 +10348,13 @@ packages: hasown: 2.0.1 dev: true + /is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.1 + dev: false + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -9942,16 +10365,43 @@ packages: resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} dev: true + /is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: false + + /is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + dev: false + /is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true dev: true + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: false + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} @@ -9973,12 +10423,18 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: false + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-gzip@1.0.0: resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} @@ -10028,6 +10484,13 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -10062,7 +10525,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: isobject: 3.0.1 - dev: true /is-plain-object@5.0.0: resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} @@ -10142,6 +10604,16 @@ packages: get-intrinsic: 1.2.4 dev: true + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: false + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: false + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -10168,10 +10640,16 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + dependencies: + isarray: 1.0.0 + dev: false + /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} - dev: true /isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -10516,10 +10994,23 @@ packages: json-buffer: 3.0.1 dev: true + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - dev: true /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} @@ -10612,6 +11103,28 @@ packages: lit-element: 3.3.3 lit-html: 2.8.0 + /live-server@1.2.2: + resolution: {integrity: sha512-t28HXLjITRGoMSrCOv4eZ88viHaBVIjKjdI5PO92Vxlu+twbk6aE0t7dVIaz6ZWkjPilYFV6OSdMYl9ybN2B4w==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + chokidar: 2.1.8 + colors: 1.4.0 + connect: 3.7.0 + cors: 2.8.5 + event-stream: 3.3.4 + faye-websocket: 0.11.4 + http-auth: 3.1.3 + morgan: 1.10.0 + object-assign: 4.1.1 + opn: 6.0.0 + proxy-middleware: 0.15.0 + send: 0.18.0 + serve-index: 1.9.1 + transitivePeerDependencies: + - supports-color + dev: false + /load-bmfont@1.4.1: resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} dependencies: @@ -10864,6 +11377,11 @@ packages: tmpl: 1.0.5 dev: true + /map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + dev: false + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -10878,6 +11396,17 @@ packages: resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} dev: true + /map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + dev: false + + /map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + dependencies: + object-visit: 1.0.1 + dev: false + /markdown-it@14.0.0: resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} hasBin: true @@ -11212,6 +11741,27 @@ packages: - supports-color dev: false + /micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -11433,6 +11983,14 @@ packages: minipass: 3.3.6 yallist: 4.0.0 + /mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + dev: false + /mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -11479,6 +12037,19 @@ packages: /moo@0.5.2: resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + /morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 2.0.0 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -11534,6 +12105,25 @@ packages: hasBin: true dev: true + /nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} requiresBuild: true @@ -11743,10 +12333,16 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: false + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /npm-run-all@4.1.5: resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} @@ -11801,6 +12397,15 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + /object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + dev: false + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} @@ -11818,6 +12423,13 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} + /object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -11862,6 +12474,13 @@ packages: es-abstract: 1.22.4 dev: true + /object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: false + /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -11875,6 +12494,13 @@ packages: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} dev: false + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + /on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -11910,6 +12536,14 @@ packages: hasBin: true dev: true + /opn@6.0.0: + resolution: {integrity: sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==} + engines: {node: '>=8'} + deprecated: The package has been renamed to `open` + dependencies: + is-wsl: 1.1.0 + dev: false + /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -12092,6 +12726,11 @@ packages: tslib: 2.6.2 dev: false + /pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + dev: false + /path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} dev: true @@ -12103,6 +12742,10 @@ packages: tslib: 2.6.2 dev: false + /path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + dev: false + /path-exists-cli@2.0.0: resolution: {integrity: sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -12173,6 +12816,12 @@ packages: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true + /pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + dependencies: + through: 2.3.8 + dev: false + /pbkdf2@3.1.2: resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} engines: {node: '>=0.12'} @@ -12318,6 +12967,11 @@ packages: - supports-color dev: true + /posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + dev: false + /postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -12717,6 +13371,11 @@ packages: /proxy-from-env@1.0.0: resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + /proxy-middleware@0.15.0: + resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} + engines: {node: '>=0.8.0'} + dev: false + /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -13225,6 +13884,17 @@ packages: process: 0.11.10 string_decoder: 1.3.0 + /readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -13299,6 +13969,14 @@ packages: dependencies: '@babel/runtime': 7.22.11 + /regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + dev: false + /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -13399,6 +14077,20 @@ packages: - supports-color dev: false + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: false + + /repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + dev: false + + /repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: false + /request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} dependencies: @@ -13433,6 +14125,11 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: false + /resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + dev: false + /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -13600,6 +14297,12 @@ packages: is-regex: 1.1.4 dev: true + /safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + dependencies: + ret: 0.1.15 + dev: false + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -13692,6 +14395,21 @@ packages: randombytes: 2.1.0 dev: false + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: false + /serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -13731,9 +14449,23 @@ packages: engines: {node: '>=6.9'} dev: false + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + /setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + /setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -13902,6 +14634,38 @@ packages: tslib: 2.6.2 dev: false + /snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + dev: false + + /snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: false + /socket.io-adapter@1.1.2: resolution: {integrity: sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==} dev: false @@ -14039,12 +14803,28 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + dev: false + /source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + /source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + dev: false + /source-map@0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} @@ -14097,6 +14877,19 @@ packages: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: false + + /split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + dependencies: + through: 2.3.8 + dev: false + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -14154,6 +14947,14 @@ packages: stacktrace-gps: 3.1.2 dev: false + /static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + dev: false + /stats-gl@1.0.5: resolution: {integrity: sha512-XimMxvwnf1Qf5KwebhcoA34kcX+fWEkIl0QjNkCbu4IpoyDMMsOajExn7FIq5w569k45+LhmsuRlGSrsvmGdNw==} dev: false @@ -14162,6 +14963,11 @@ packages: resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} dev: false + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + /statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -14193,6 +14999,12 @@ packages: readable-stream: 3.6.2 dev: true + /stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + dependencies: + duplexer: 0.1.2 + dev: false + /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} dev: true @@ -14593,6 +15405,21 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + /to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + dev: false + + /to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + dev: false + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -14600,6 +15427,16 @@ packages: is-number: 7.0.0 dev: true + /to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + dev: false + /tocbot@4.21.2: resolution: {integrity: sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==} dev: true @@ -14893,6 +15730,16 @@ packages: vfile: 6.0.1 dev: false + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + /union@0.5.0: resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} engines: {node: '>= 0.8.0'} @@ -14983,6 +15830,10 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} + /unix-crypt-td-js@1.1.4: + resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} + dev: false + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -14996,6 +15847,14 @@ packages: webpack-virtual-modules: 0.5.0 dev: true + /unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + dev: false + /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} @@ -15032,6 +15891,11 @@ packages: dependencies: punycode: 2.3.0 + /urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + dev: false + /url-join@4.0.1: resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} dev: true @@ -15116,6 +15980,11 @@ packages: use-deep-compare: 1.1.0(react@18.2.0) dev: true + /use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + dev: false + /utf8-byte-length@1.0.4: resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} dev: false @@ -15147,6 +16016,12 @@ packages: dependencies: macaddress: 0.5.3 + /uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: false + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -15429,6 +16304,20 @@ packages: sdp: 3.2.0 dev: false + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: false + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: false + /whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} diff --git a/prismarine-viewer/package.json b/prismarine-viewer/package.json index 529aa9ae4..6942bb876 100644 --- a/prismarine-viewer/package.json +++ b/prismarine-viewer/package.json @@ -19,6 +19,7 @@ }, "dependencies": { "@tweenjs/tween.js": "^20.0.3", + "live-server": "^1.2.2", "assert": "^2.0.0", "buffer": "^6.0.3", "canvas": "^2.11.2", From c5c8f27e1832e2d97337c5ff100cee3a5d1ca63e Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 9 Apr 2024 16:29:44 +0300 Subject: [PATCH 061/303] allow to override --- prismarine-viewer/examples/webglRenderer.ts | 3 +- .../examples/webglRendererWorker.ts | 38 ++++++++----------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index c6b5b2afc..8fc08a19d 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -93,7 +93,8 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, sendWorkerMessage({ canvas: offscreen, imageBlob, - isPlayground + isPlayground, + FragShaderOverride: localStorage.FragShader }, [offscreen]) let oldWidth = window.innerWidth diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 9716feb2a..25ba9cc45 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -38,7 +38,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im const gl = canvas.getContext('webgl2')! - const program = createProgram(gl, VertShader, FragShader) + const program = createProgram(gl, VertShader, FragShaderOverride || FragShader) let vertices = new Float32Array([ -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // Bottom-let @@ -264,6 +264,13 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, null); } + globalThis.fullReset = () => { + allBlocks = [] + globalThis.cleanupFirstChunks() + lastNotUpdatedIndex = undefined + lastNotUpdatedArrSize = undefined + } + //gl.bindBuffer(gl.ARRAY_BUFFER, null); @@ -339,7 +346,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - gl.clearColor( 0.6784313725490196, 0.8470588235294118, 0.9019607843137255 , 0.0); + gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 0.0); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) @@ -405,7 +412,7 @@ let autoTickUpdate = undefined as number | undefined onmessage = function (e) { if (!started) { started = true - initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.isPlayground) + initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) return } if (e.data.type === 'startRender') { @@ -420,7 +427,6 @@ onmessage = function (e) { } if (e.data.type === 'addBlocksSection') { const currentLength = allBlocks.length; - chunksArrIndexes[e.data.key] = [currentLength, currentLength + e.data.data.length] // in: object - name, out: [x, y, z, name] const newData = Object.entries(e.data.data.blocks).map(([key, value]) => { const [x, y, z] = key.split(',').map(Number) @@ -428,19 +434,7 @@ onmessage = function (e) { }) // find freeIndexes if possible const freeArea = freeArrayIndexes.find(([startIndex, endIndex]) => endIndex - startIndex >= newData.length) - // if (freeArea) { - // const [startIndex, endIndex] = freeArea - // allBlocks.splice(startIndex, newData.length, ...newData) - // lastNotUpdatedIndex ??= startIndex - // const freeAreaIndex = freeArrayIndexes.indexOf(freeArea) - // freeArrayIndexes[freeAreaIndex] = [startIndex + newData.length, endIndex] - // if (freeArrayIndexes[freeAreaIndex][0] >= freeArrayIndexes[freeAreaIndex][1]) { - // freeArrayIndexes.splice(freeAreaIndex, 1) - // // todo merge - // } - // lastNotUpdatedArrSize = newData.length - // console.log('using free area', freeArea) - // } + chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] allBlocks.push(...newData) lastNotUpdatedIndex ??= currentLength // updateCubes?.(currentLength) @@ -455,11 +449,11 @@ onmessage = function (e) { freeArrayIndexes.push([startIndex, endIndex]) // merge freeArrayIndexes TODO - // if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)[1]) { - // const [startIndex, endIndex] = freeArrayIndexes.pop()! - // const [startIndex2, endIndex2] = freeArrayIndexes.pop()! - // freeArrayIndexes.push([startIndex2, endIndex]) - // } + if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)?.[1]) { + const [startIndex, endIndex] = freeArrayIndexes.pop()! + const [startIndex2, endIndex2] = freeArrayIndexes.pop()! + freeArrayIndexes.push([startIndex2, endIndex]) + } } if (e.data.type === 'camera') { camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') From 28d55f9cfc06c9147e2ca0e7fae6625787cc57e5 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 9 Apr 2024 16:33:06 +0300 Subject: [PATCH 062/303] reload on worker change --- scripts/esbuildPlugins.mjs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/esbuildPlugins.mjs b/scripts/esbuildPlugins.mjs index 95d88b8ed..4f9b0ddd4 100644 --- a/scripts/esbuildPlugins.mjs +++ b/scripts/esbuildPlugins.mjs @@ -41,6 +41,11 @@ const plugins = [ return { contents: `window.mcData ??= ${JSON.stringify(defaultVersionsObj)};module.exports = { pc: window.mcData }`, loader: 'js', + watchFiles: [ + // todo + 'dist/worker.js', + 'dist/webglRendererWorker.js' + ], } }) build.onResolve({ @@ -148,8 +153,9 @@ const plugins = [ //@ts-ignore const outputFile = outputFiles.find(x => x.path.endsWith('.js')) if (outputFile.hash === prevHash) { - console.log('Ignoring reload as contents the same') - return + // todo also check workers and css + // console.log('Ignoring reload as contents the same') + // return } prevHash = outputFile.hash let outputText = outputFile.text From 0edf51aef397d43a6a0dfb8045ed666ddc3f8935 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 9 Apr 2024 16:43:34 +0300 Subject: [PATCH 063/303] better workarounds! --- prismarine-viewer/examples/webglRendererWorker.ts | 3 ++- prismarine-viewer/viewer/lib/models.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 25ba9cc45..25f5bbe25 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -30,7 +30,8 @@ const updateSize = (width, height) => { camera.updateProjectionMatrix() } -export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean) => { + +export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { // blockStates = blockStatesJson const textureBitmap = await createImageBitmap(imageBlob) const textureWidth = textureBitmap.width diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index a21c67f0f..853c0414d 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -532,7 +532,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { textureIndex: textures, textureName, tint, - isTransparent: block.name.includes('glass') // todo + isTransparent: block.name.includes('glass') || block.name.includes('grass') || block.name.includes('leaves') || block.name.includes('fire') // todo } satisfies BlockType } From 469ef4982e0e0cc0c3ddbd0177b7c6a26e517015 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 9 Apr 2024 22:41:28 +0300 Subject: [PATCH 064/303] [pick] allow to set 0 render distance for debug --- src/utils.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/utils.ts b/src/utils.ts index 39bf940e1..4b1239d5e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -161,10 +161,18 @@ let prevRenderDistance = options.renderDistance export const setRenderDistance = () => { assertDefined(worldView) const { renderDistance: singleplayerRenderDistance, multiplayerRenderDistance } = options - const renderDistance = miscUiState.singleplayer ? singleplayerRenderDistance : multiplayerRenderDistance + let renderDistance = miscUiState.singleplayer ? singleplayerRenderDistance : multiplayerRenderDistance + const zeroRenderDistance = miscUiState.singleplayer && renderDistance === 0 + if (zeroRenderDistance) { + renderDistance = 1 // mineflayer limitation workaround + } bot.setSettings({ viewDistance: renderDistance }) + if (zeroRenderDistance) { + localServer!.players[0].view = 0 + renderDistance = 0 + } worldView.viewDistance = renderDistance prevRenderDistance = renderDistance } From ed74485b01ce7af24706d97f6d05c380f10ed855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 10 Apr 2024 00:58:46 +0300 Subject: [PATCH 065/303] Quad instanced rendreing --- prismarine-viewer/examples/_VertexShader.vert | 56 ++- prismarine-viewer/examples/shared.ts | 9 +- .../examples/webglRendererWorker.ts | 254 ++++++----- prismarine-viewer/viewer/lib/models.ts | 400 ++++++++++++------ .../viewer/lib/worldrendererCommon.ts | 1 + src/index.ts | 1 + 6 files changed, 471 insertions(+), 250 deletions(-) diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index f1f6b0748..9410c1c67 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -4,11 +4,10 @@ layout (location = 1) in vec2 aTexCoord; layout (location = 2) in float CubeSide; layout (location = 3) in vec3 aOffset; -layout (location = 4) in vec4 aTextureIndex; -layout (location = 5) in vec2 aTextureIndexPlus; +layout (location = 4) in float aTextureIndex; layout (location = 6) in vec3 aBiomeColor; - +//#Define out vec2 TexCoord; flat out float TextureIndex; @@ -18,38 +17,67 @@ uniform mat4 view; uniform mat4 projection; uniform int tick; +mat4 rotationX( in float angle ) { + return mat4( 1.0, 0, 0, 0, + 0, cos(angle), -sin(angle), 0, + 0, sin(angle), cos(angle), 0, + 0, 0, 0, 1); +} + +mat4 rotationY( in float angle ) { + return mat4( cos(angle), 0, sin(angle), 0, + 0, 1.0, 0, 0, + -sin(angle), 0, cos(angle), 0, + 0, 0, 0, 1); +} + void main() { - gl_Position = projection * view * vec4(aPos + aOffset + vec3(0.5f,0.5f,0.5f), 1.0f); //Offseting by 0.5 to center the cube + //vec3 TransitionedPos = aPos; + vec3 TransitionedPos ;//= (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; + TexCoord = vec2(aTexCoord.x, (1.0 - aTexCoord.y)); // Flipping image for opengl coordinates - //TextureIndex = aTextureIndex; //Passing texture index to fragment shader + TextureIndex = aTextureIndex; //Passing texture index to fragment shader switch (int(CubeSide)) { case 0: TexCoord = vec2((1.0f-aTexCoord.x), (1.0 - aTexCoord.y)); - TextureIndex = aTextureIndex.x; + //TextureIndex = aTextureIndex.x; + //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; + + TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; break; case 1: - TextureIndex = aTextureIndex.y; + //TextureIndex = aTextureIndex.y; + TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(90.0f))).xyz; break; case 2: - TextureIndex = aTextureIndex.z; - TexCoord = vec2((1.0f-aTexCoord.y), (1.0f - aTexCoord.x)); + //TextureIndex = aTextureIndex.z; + //TexCoord = vec2((1.0f-aTexCoord.y), (1.0f - aTexCoord.x)); + TransitionedPos = vec4(aPos,0.0f).xyz; break; case 3: - TextureIndex = aTextureIndex.z; - TexCoord = vec2(aTexCoord.y, (1.0f - aTexCoord.x)); + //TextureIndex = aTextureIndex.z; + //TexCoord = vec2(aTexCoord.y, (1.0f - aTexCoord.x)); + + //TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; + TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; break; case 4: - TextureIndex = aTextureIndexPlus.x; + //TextureIndex = aTextureIndexPlus.x; + //TransitionedPos = vec4(aPos,0.0f).xyz; + TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; break; case 5: - TextureIndex = aTextureIndexPlus.y; + //TextureIndex = aTextureIndexPlus.y; + //TransitionedPos = vec4(aPos,0.0f).xyz; + TexCoord = vec2(aTexCoord); + TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; break; } TextureIndex += float(tick); BiomeColor = aBiomeColor; - + gl_Position = projection * view * vec4(TransitionedPos + aOffset + vec3(0.5f,0.5f,0.5f), 1.0f); //Offseting by 0.5 to center the cube //CubeSideIndex = CubeSide; //Passing cube side index to fragment shader } diff --git a/prismarine-viewer/examples/shared.ts b/prismarine-viewer/examples/shared.ts index 2a43c467a..318396fae 100644 --- a/prismarine-viewer/examples/shared.ts +++ b/prismarine-viewer/examples/shared.ts @@ -1,6 +1,11 @@ -export type BlockType = { - textureIndex: number[] +export type BlockFaceType = { + face: number + textureIndex: number textureName?: string tint?: [number, number, number] isTransparent?: boolean } + +export type BlockType = { + sides: BlockFaceType[] +} diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 25f5bbe25..b82c2329c 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -4,13 +4,13 @@ import * as THREE from 'three' import VertShader from './_VertexShader.vert' //@ts-ignore import FragShader from './_FragmentShader.frag' -import { BlockType } from './shared' +import { BlockFaceType, BlockType } from './shared' -let allBlocks = [] +let allSides = [] as [number, number, number, BlockFaceType][] let chunksArrIndexes = {} -let freeArrayIndexes = [] +let freeArrayIndexes = [] as [number, number][] let rendering = true -let cubePositions +let sidePositions let updateCubes: (startIndex: any) => void let lastNotUpdatedIndex let lastNotUpdatedArrSize @@ -41,7 +41,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im const program = createProgram(gl, VertShader, FragShaderOverride || FragShader) - let vertices = new Float32Array([ + let CubeMesh = new Float32Array([ -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // Bottom-let 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, // bottom-right 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right @@ -85,57 +85,106 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let ]) + let SideMesh = new Float32Array([ + -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + // ront ace + ]) + + + let NumberOfCube = isPlayground ? 1_000_000 : 5_000_000 - cubePositions = new Float32Array(NumberOfCube * 3) - let cubeTextureIndices = new Float32Array(NumberOfCube * 6); - let cubeBiomeColor = new Float32Array(NumberOfCube * 3); + sidePositions = new Float32Array(NumberOfCube * 3 * 6) + let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); + let sideIndexes = new Float32Array(NumberOfCube * 1 * 6); + let sideBiomeColor = new Float32Array(NumberOfCube * 3 * 6); // write random coordinates to cube positions xyz ten cubes; - if (isPlayground) { - for (let i = 0; i < NumberOfCube * 3; i += 3) { - cubePositions[i] = Math.floor(Math.random() * 1000) - 500; - cubePositions[i + 1] = Math.floor(Math.random() * 1000) - 500; - cubePositions[i + 2] = Math.floor(Math.random() * 100) - 100; - cubeBiomeColor[i] = (Math.random() ) ; - cubeBiomeColor[i + 1] = (Math.random() ) ; - cubeBiomeColor[i + 2] = (Math.random() ) ; + if (false) { + for (let i = 0; i < NumberOfCube * 18; i += 18) { + + sidePositions[i] = Math.floor(Math.random() * 1000) - 500; + sidePositions[i + 1] = Math.floor(Math.random() * 1000) - 500; + sidePositions[i + 2] = Math.floor(Math.random() * 100) - 100; + + sideBiomeColor[i] = (Math.random()); + sideBiomeColor[i + 1] = (Math.random()); + sideBiomeColor[i + 2] = (Math.random()); + for (let j = 1; j <= 6; j++) { + + if (j != 6) { + sidePositions[j * 3 + i] = sidePositions[i] + sidePositions[j * 3 + i + 1] = sidePositions[i + 1] + sidePositions[j * 3 + i + 2] = sidePositions[i + 2] + + sideBiomeColor[j * 3 + i] = sideBiomeColor[i] + sideBiomeColor[j * 3 + i + 1] = sideBiomeColor[i + 1] + sideBiomeColor[j * 3 + i + 2] = sideBiomeColor[i + 2] + } + + sideIndexes[i / 3 + j - 1] = j - 1; + //sideTextureIndices[i / 3 + j - 1] = Math.floor(Math.random() * 800); + sideTextureIndices[i / 3 + j - 1] = 1; + } + + // sidePositions[i +3] = sidePositions[i] + // sidePositions[i + 4] = sidePositions[i + 2] + // sidePositions[i + 5] = sidePositions[i + 1] + + // sideBiomeColor[i] = (Math.random() ) ; + // sideBiomeColor[i + 1] = (Math.random() ) ; + // sideBiomeColor[i + 2] = (Math.random() ) ; + + // sideIndexes[i/6] = Math.floor(Math.random() * 6); + // sideTextureIndices[i/6] = Math.floor(Math.random() * 800); // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); // cubeTextureIndices[i / 3] = 0; } - for (let i = 0; i < NumberOfCube * 6; i += 6) { - cubeTextureIndices[i + 0] = Math.floor(Math.random() * 800); - cubeTextureIndices[i + 1] = Math.floor(Math.random() * 800); - cubeTextureIndices[i + 2] = Math.floor(Math.random() * 800); - cubeTextureIndices[i + 3] = Math.floor(Math.random() * 800); - cubeTextureIndices[i + 4] = Math.floor(Math.random() * 800); - cubeTextureIndices[i + 5] = Math.floor(Math.random() * 800); - // cubeTextureIndices[i / 3] = 0; - } + // for (let i = 0; i < NumberOfCube * 6; i += 6) { + // sideTextureIndices[i + 0] = Math.floor(Math.random() * 800); + // sideTextureIndices[i + 1] = Math.floor(Math.random() * 800); + // sideTextureIndices[i + 2] = Math.floor(Math.random() * 800); + // sideTextureIndices[i + 3] = Math.floor(Math.random() * 800); + // sideTextureIndices[i + 4] = Math.floor(Math.random() * 800); + // sideTextureIndices[i + 5] = Math.floor(Math.random() * 800); + // // cubeTextureIndices[i / 3] = 0; + // } } - cubePositions[0] = 0; - cubePositions[1] = 0; - cubePositions[2] = 0; + // cubePositions[0] = 0; + // cubePositions[1] = 0; + // cubePositions[2] = 0; let VAO = gl.createVertexArray(); + + let instanceVBO = gl.createBuffer(); let instanceTextureID = gl.createBuffer(); let instanceBiomeColor = gl.createBuffer(); + let instanceCubeSide = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, cubePositions, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sidePositions, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, cubeTextureIndices, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sideTextureIndices, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.bufferData(gl.ARRAY_BUFFER, cubeBiomeColor, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sideBiomeColor, gl.DYNAMIC_DRAW); // todo + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); + gl.bufferData(gl.ARRAY_BUFFER, sideIndexes, gl.DYNAMIC_DRAW); // todo gl.bindBuffer(gl.ARRAY_BUFFER, null); VAO = gl.createVertexArray(); let VBO = gl.createBuffer(); @@ -145,16 +194,16 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindVertexArray(VAO); gl.bindBuffer(gl.ARRAY_BUFFER, VBO) // gl.bindBuffer(gl.ARRAY_BUFFER, VBO_sides) - gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) + gl.bufferData(gl.ARRAY_BUFFER, SideMesh, gl.STATIC_DRAW) - gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 6 * 4, 0) + gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) gl.enableVertexAttribArray(0) - gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 6 * 4, 3 * 4) + gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) gl.enableVertexAttribArray(1) - gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 6 * 4, 5 * 4) - gl.enableVertexAttribArray(2) + //gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 6 * 4, 5 * 4) + // gl.enableVertexAttribArray(2) //instance data gl.enableVertexAttribArray(3); @@ -164,13 +213,19 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.vertexAttribDivisor(3, 1); gl.enableVertexAttribArray(4); - gl.enableVertexAttribArray(5); + // gl.enableVertexAttribArray(5); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.vertexAttribPointer(4, 4, gl.FLOAT, false, 4 * 6, 0); - gl.vertexAttribPointer(5, 2, gl.FLOAT, false, 4 * 6, 4 * 4); + gl.vertexAttribPointer(4, 1, gl.FLOAT, false, 4 * 1, 0); + // gl.vertexAttribPointer(5, 2, gl.FLOAT, false, 4 * 6, 4 * 4); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(4, 1); - gl.vertexAttribDivisor(5, 1); + // gl.vertexAttribDivisor(5, 1); + + gl.enableVertexAttribArray(6); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); + gl.vertexAttribPointer(6, 3, gl.FLOAT, false, 3 * 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(6, 1); gl.enableVertexAttribArray(6); gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); @@ -178,55 +233,46 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(6, 1); + gl.enableVertexAttribArray(2); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); + gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(2, 1); + updateCubes = (startIndex) => { - // cubePositionsRaw = [ - // // for now one cube in front of the camera - // [camera.position.x, camera.position.y, camera.position.z, 'dirt'], - // [camera.position.x + 2, camera.position.y, camera.position.z, 'dirt'], - // [camera.position.x - 2, camera.position.y, camera.position.z, 'dirt'], - // [camera.position.x, camera.position.y, camera.position.z + 2, 'dirt'], - // [camera.position.x, camera.position.y, camera.position.z - 2, 'dirt'], - // ] - const blocks = allBlocks.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) - blocks.sort((a, b) => { - const getScore = (b: BlockType) => b.isTransparent ? 1 : 0 - return getScore(b[3]) - getScore(a[3]) + // up2 + const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) + newSides.sort((a, b) => { + const getScore = (b: BlockFaceType) => b.isTransparent ? 0 : 1 + return getScore(a[3]) - getScore(b[3]) }) - globalThis.allBlocksSize = allBlocks.length - cubePositions = new Float32Array(blocks.length * 3) - cubeTextureIndices = new Float32Array(blocks.length * 6); - cubeBiomeColor = new Float32Array(blocks.length * 3); - for (let i = 0; i < blocks.length * 3; i += 3) { - cubePositions[i] = blocks[i / 3][0] - cubePositions[i + 1] = blocks[i / 3][1] - cubePositions[i + 2] = blocks[i / 3][2] - const block = blocks[i / 3][3] as BlockType + globalThis.allSidesSize = allSides.length + sidePositions = new Float32Array(newSides.length * 3) + sideTextureIndices = new Float32Array(newSides.length * 1); + sideBiomeColor = new Float32Array(newSides.length * 3); + for (let i = 0; i < newSides.length * 3; i += 3) { + sidePositions[i] = newSides[i / 3][0] + sidePositions[i + 1] = newSides[i / 3][1] + sidePositions[i + 2] = newSides[i / 3][2] + const block = newSides[i / 3][3] as BlockFaceType if (block.tint) { const [r, g, b] = block.tint - cubeBiomeColor[i] = r - cubeBiomeColor[i + 1] = g - cubeBiomeColor[i + 2] = b + sideBiomeColor[i] = r + sideBiomeColor[i + 1] = g + sideBiomeColor[i + 2] = b } else { - cubeBiomeColor[i] = 1 - cubeBiomeColor[i + 1] = 1 - cubeBiomeColor[i + 2] = 1 + sideBiomeColor[i] = 1 + sideBiomeColor[i + 1] = 1 + sideBiomeColor[i + 2] = 1 } - } - - for (let i = 0; i < blocks.length * 6; i += 6) { - const block = blocks[i / 6][3] as BlockType - cubeTextureIndices[i + 0] = block.textureIndex[0] - cubeTextureIndices[i + 1] = block.textureIndex[1] - cubeTextureIndices[i + 2] = block.textureIndex[2] - cubeTextureIndices[i + 3] = block.textureIndex[3] - cubeTextureIndices[i + 4] = block.textureIndex[4] - cubeTextureIndices[i + 5] = block.textureIndex[5] + sideTextureIndices[i / 3] = block.textureIndex + sideIndexes[i / 3] = block.face } // startIndex = 0 // TODO! - console.log('startIndex', startIndex, cubePositions.length, allBlocks.length) - const updateBuffersSize = allBlocks.length > NumberOfCube + console.log('startIndex', startIndex, sidePositions.length, allSides.length) + const updateBuffersSize = allSides.length > NumberOfCube if (updateBuffersSize) { NumberOfCube += 1_000_000 } @@ -234,26 +280,29 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im if (updateBuffersSize) { //gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * 3), gl.STATIC_DRAW); } - const POS_SIZE = 3 - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * POS_SIZE, cubePositions); // update buffer content + const XYZ_SIZE = 3 + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * XYZ_SIZE, sidePositions); // update buffer content gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); if (updateBuffersSize) { //gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube), gl.STATIC_DRAW); } - const TEXTURES_SIZE = 6 - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * TEXTURES_SIZE, cubeTextureIndices); // update buffer content + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4, sideTextureIndices); // update buffer content gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * POS_SIZE, cubeBiomeColor); // update buffer content + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * XYZ_SIZE, sideBiomeColor); // update buffer content + gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4, sideIndexes); // update buffer content gl.bindBuffer(gl.ARRAY_BUFFER, null); } globalThis.updateCubes = updateCubes globalThis.cleanupFirstChunks = () => { - allBlocks = [] + allSides = [] gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); // empty the buffer gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * 3), gl.STATIC_DRAW); // todo @@ -266,7 +315,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } globalThis.fullReset = () => { - allBlocks = [] + allSides = [] globalThis.cleanupFirstChunks() lastNotUpdatedIndex = undefined lastNotUpdatedArrSize = undefined @@ -310,7 +359,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.enable(gl.DEPTH_TEST) gl.frontFace(gl.CCW) - gl.enable(gl.CULL_FACE) + gl.enable(gl.CULL_FACE) gl.enable(gl.BLEND) gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); @@ -359,7 +408,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLES, 0, 36, isPlayground ? NumberOfCube : allBlocks.length); + gl.drawArraysInstanced(gl.TRIANGLES, 0, 6, 6 * (isPlayground ? NumberOfCube : allSides.length)); } //gl.bindVertexArray(null) @@ -427,16 +476,19 @@ onmessage = function (e) { newHeight = e.data.newHeight } if (e.data.type === 'addBlocksSection') { - const currentLength = allBlocks.length; + const currentLength = allSides.length; // in: object - name, out: [x, y, z, name] - const newData = Object.entries(e.data.data.blocks).map(([key, value]) => { + const newData = Object.entries(e.data.data.blocks).flatMap(([key, value]) => { const [x, y, z] = key.split(',').map(Number) - return [x, y, z, value as BlockType] + const block = value as BlockType + return block.sides.map((side) => { + return [x, y, z, side] as [number, number, number, BlockFaceType] + }) }) // find freeIndexes if possible const freeArea = freeArrayIndexes.find(([startIndex, endIndex]) => endIndex - startIndex >= newData.length) chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] - allBlocks.push(...newData) + allSides.push(...newData) lastNotUpdatedIndex ??= currentLength // updateCubes?.(currentLength) } @@ -446,15 +498,15 @@ onmessage = function (e) { lastNotUpdatedArrSize = undefined } if (e.data.type === 'removeBlocksSection') { - const [startIndex, endIndex] = chunksArrIndexes[e.data.key] - freeArrayIndexes.push([startIndex, endIndex]) - - // merge freeArrayIndexes TODO - if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)?.[1]) { - const [startIndex, endIndex] = freeArrayIndexes.pop()! - const [startIndex2, endIndex2] = freeArrayIndexes.pop()! - freeArrayIndexes.push([startIndex2, endIndex]) - } + // const [startIndex, endIndex] = chunksArrIndexes[e.data.key] + // freeArrayIndexes.push([startIndex, endIndex]) + + // // merge freeArrayIndexes TODO + // if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)?.[1]) { + // const [startIndex, endIndex] = freeArrayIndexes.pop()! + // const [startIndex2, endIndex2] = freeArrayIndexes.pop()! + // freeArrayIndexes.push([startIndex2, endIndex]) + // } } if (e.data.type === 'camera') { camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 853c0414d..89a16befc 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -18,7 +18,7 @@ for (const key of Object.keys(tintsData)) { tints[key] = prepareTints(tintsData[key]) } -function prepareTints (tints) { +function prepareTints(tints) { const map = new Map() const defaultValue = tintToGl(tints.default) for (let { keys, color } of tints.data) { @@ -34,7 +34,7 @@ function prepareTints (tints) { }) } -function tintToGl (tint) { +function tintToGl(tint) { const r = (tint >> 16) & 0xff const g = (tint >> 8) & 0xff const b = tint & 0xff @@ -110,7 +110,7 @@ const elemFaces = { } } -function getLiquidRenderHeight (world, block, type) { +function getLiquidRenderHeight(world, block, type) { if (!block || block.type !== type) return 1 / 9 if (block.metadata === 0) { // source block const blockAbove = world.getBlock(block.position.offset(0, 1, 0)) @@ -120,7 +120,7 @@ function getLiquidRenderHeight (world, block, type) { return ((block.metadata >= 8 ? 8 : 7 - block.metadata) + 1) / 9 } -function renderLiquid (world, cursor, texture, type, biome, water, attr) { +function renderLiquid(world, cursor, texture, type, biome, water, attr) { const heights: number[] = [] for (let z = -1; z <= 1; z++) { for (let x = -1; x <= 1; x++) { @@ -170,17 +170,17 @@ function renderLiquid (world, cursor, texture, type, biome, water, attr) { } } -function vecadd3 (a, b) { +function vecadd3(a, b) { if (!b) return a return [a[0] + b[0], a[1] + b[1], a[2] + b[2]] } -function vecsub3 (a, b) { +function vecsub3(a, b) { if (!b) return a return [a[0] - b[0], a[1] - b[1], a[2] - b[2]] } -function matmul3 (matrix, vector): [number, number, number] { +function matmul3(matrix, vector): [number, number, number] { if (!matrix) return vector return [ matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2], @@ -189,7 +189,7 @@ function matmul3 (matrix, vector): [number, number, number] { ] } -function matmulmat3 (a, b) { +function matmulmat3(a, b) { const te = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] const a11 = a[0][0]; const a12 = a[1][0]; const a13 = a[2][0] @@ -215,7 +215,7 @@ function matmulmat3 (a, b) { return te } -function buildRotationMatrix (axis, degree) { +function buildRotationMatrix(axis, degree) { const radians = degree / 180 * Math.PI const cos = Math.cos(radians) const sin = Math.sin(radians) @@ -239,7 +239,7 @@ function buildRotationMatrix (axis, degree) { return matrix } -function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { +function renderElement(world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { const cullIfIdentical = block.name.indexOf('glass') >= 0 for (const face in element.faces) { @@ -375,7 +375,233 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr } } -export function getSectionGeometry (sx, sy, sz, world: World) { +const facesIndexes = { + down: 0, + up: 1, + north: 2, + south: 3, + west: 4, + east: 5 +} + +type AttrType = { + blocks: { + [pos: string]: BlockType + } +} + +let textureName = undefined +let tint +const getResult = (biome, block, side: string): number => { + const facesOrTexture = findTextureInBlockStates(block.name); + if (!facesOrTexture) return 0 // todo + let result + if ('u' in facesOrTexture) { + result = facesOrTexture + } else { + result = facesOrTexture?.[side]?.texture + const tintindex = facesOrTexture?.[side]?.tintindex + if (tintindex === 0) { + if (block.name === 'redstone_wire') { + tint = tints.redstone[`${block.getProperties().power}`] + } else if (block.name === 'birch_leaves' || + block.name === 'spruce_leaves' || + block.name === 'lily_pad') { + tint = tints.constant[block.name] + } else if (block.name.includes('leaves') || block.name === 'vine') { + tint = tints.foliage[biome] + } else { + tint = tints.grass[biome] + } + } + } + if (!result) return 0 // todo + if (result.textureName) { + textureName = result.textureName + } + return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) +} +function uvToTextureIndex(u, v) { + const textureWidth = textureSize + const textureHeight = textureSize + const tileSize = 16; + // Convert UV coordinates to pixel coordinates + let x = u * textureWidth; + let y = v * textureHeight; + + // Convert pixel coordinates to tile index + const tileX = Math.floor(x / tileSize); + const tileY = Math.floor(y / tileSize); + + // Calculate texture index + const textureIndex = tileY * (textureWidth / tileSize) + tileX; + + return textureIndex; +} + +const findTextureInBlockStates = (name): any => { + const vars = blockStates[name]?.variants + if (!vars) return blockStates[name]?.multipart?.[0]?.apply?.[0]?.model?.elements?.[0]?.faces?.south?.texture + let firstVar = Object.values(vars)[0] as any + if (Array.isArray(firstVar)) firstVar = firstVar[0] + if (!firstVar) return + const [element] = firstVar.model?.elements + if (!element) return firstVar.model?.textures?.particle + if (!element/* || !(element?.from.every(a => a === 0) && element?.to.every(a => a === 16)) */) return + return element.faces +} + +function renderElementNew(world: World, cursor: Vec3, element, doAO: boolean, attr: AttrType, globalMatrix, globalShift, block: Block, biome) { + const cullIfIdentical = block.name.indexOf('glass') >= 0 + + for (const face in element.faces) { + const faceIndex = facesIndexes[face] + + const eFace = element.faces[face] + const { corners, mask1, mask2 } = elemFaces[face] + const dir = matmul3(globalMatrix, elemFaces[face].dir) + + if (eFace.cullface) { + const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) + if (neighbor) { + if (cullIfIdentical && neighbor.type === block.type) continue + if (!neighbor.transparent && neighbor.isCube) continue + } else { + continue + } + } + + const minx = element.from[0] + const miny = element.from[1] + const minz = element.from[2] + const maxx = element.to[0] + const maxy = element.to[1] + const maxz = element.to[2] + + const u = eFace.texture.u + const v = eFace.texture.v + const su = eFace.texture.su + const sv = eFace.texture.sv + + // const ndx = Math.floor(attr.positions.length / 3) + + let tint = [1, 1, 1] as [number, number, number] + if (eFace.tintindex !== undefined) { + if (eFace.tintindex === 0) { + if (block.name === 'redstone_wire') { + tint = tints.redstone[`${block.getProperties().power}`] + } else if (block.name === 'birch_leaves' || + block.name === 'spruce_leaves' || + block.name === 'lily_pad') { + tint = tints.constant[block.name] + } else if (block.name.includes('leaves') || block.name === 'vine') { + tint = tints.foliage[biome] + } else { + tint = tints.grass[biome] + } + } + } + + // UV rotation + const r = eFace.rotation || 0 + const uvcs = Math.cos(r * Math.PI / 180) + const uvsn = -Math.sin(r * Math.PI / 180) + + let localMatrix = null as any + let localShift = null as any + + if (element.rotation) { + localMatrix = buildRotationMatrix( + element.rotation.axis, + element.rotation.angle + ) + + localShift = vecsub3( + element.rotation.origin, + matmul3( + localMatrix, + element.rotation.origin + ) + ) + } + + const cursorPos = `${cursor.x},${cursor.y},${cursor.z}` + attr.blocks[cursorPos] ??= { + sides: [] + } + attr.blocks[cursorPos].sides.push({ + face: faceIndex, + textureIndex: getResult(biome, block, face), + isTransparent: block.transparent, // todo + textureName, + tint + }) + + // const aos: number[] = [] + // for (const pos of corners) { + // let vertex = [ + // (pos[0] ? maxx : minx), + // (pos[1] ? maxy : miny), + // (pos[2] ? maxz : minz) + // ] + + // vertex = vecadd3(matmul3(localMatrix, vertex), localShift) + // vertex = vecadd3(matmul3(globalMatrix, vertex), globalShift) + // vertex = vertex.map(v => v / 16) + + // attr.positions.push( + // vertex[0] + (cursor.x & 15) - 8, + // vertex[1] + (cursor.y & 15) - 8, + // vertex[2] + (cursor.z & 15) - 8 + // ) + + // attr.normals.push(...dir) + + // const baseu = (pos[3] - 0.5) * uvcs - (pos[4] - 0.5) * uvsn + 0.5 + // const basev = (pos[3] - 0.5) * uvsn + (pos[4] - 0.5) * uvcs + 0.5 + // attr.uvs.push(baseu * su + u, basev * sv + v) + + // let light = 1 + // if (doAO) { + // const dx = pos[0] * 2 - 1 + // const dy = pos[1] * 2 - 1 + // const dz = pos[2] * 2 - 1 + // const cornerDir = matmul3(globalMatrix, [dx, dy, dz]) + // const side1Dir = matmul3(globalMatrix, [dx * mask1[0], dy * mask1[1], dz * mask1[2]]) + // const side2Dir = matmul3(globalMatrix, [dx * mask2[0], dy * mask2[1], dz * mask2[2]]) + // const side1 = world.getBlock(cursor.offset(...side1Dir)) + // const side2 = world.getBlock(cursor.offset(...side2Dir)) + // const corner = world.getBlock(cursor.offset(...cornerDir)) + + // const side1Block = world.shouldMakeAo(side1) ? 1 : 0 + // const side2Block = world.shouldMakeAo(side2) ? 1 : 0 + // const cornerBlock = world.shouldMakeAo(corner) ? 1 : 0 + + // // TODO: correctly interpolate ao light based on pos (evaluate once for each corner of the block) + + // const ao = (side1Block && side2Block) ? 0 : (3 - (side1Block + side2Block + cornerBlock)) + // light = (ao + 1) / 4 + // aos.push(ao) + // } + + // attr.colors.push(tint[0] * light, tint[1] * light, tint[2] * light) + // } + + // if (doAO && aos[0] + aos[3] >= aos[1] + aos[2]) { + // attr.indices.push( + // ndx, ndx + 3, ndx + 2, + // ndx, ndx + 1, ndx + 3 + // ) + // } else { + // attr.indices.push( + // ndx, ndx + 1, ndx + 2, + // ndx + 2, ndx + 1, ndx + 3 + // ) + // } + } +} + +export function getSectionGeometry(sx, sy, sz, world: World) { const attr = { sx: sx + 8, sy: sy + 8, @@ -418,125 +644,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { if (block.variant === undefined) { block.variant = getModelVariants(block) } - - if (block.name !== 'water' && /* && block.name !== 'lava' *//* && block.isCube */block.name !== 'air') { - let globalMatrix = null as any - let globalShift = null as any - - if (block.variant?.model) { - for (const axis of ['x', 'y', 'z']) { - if (axis in block.variant) { - if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -block.variant[axis]) - else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -block.variant[axis])) - } - } - } - - if (globalMatrix) { - globalShift = [8, 8, 8] - globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) - } - - // full cube rendering - for (const face in elemFaces) { - const cullIfIdentical = block.name.indexOf('glass') >= 0 - - // const eFace = element.faces[face] - const { corners, mask1, mask2 } = elemFaces[face] - const dir = matmul3(globalMatrix, elemFaces[face].dir) - - if (/* eFace.cullface */true) { - const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) - if (neighbor) { - if (cullIfIdentical && neighbor.type === block.type) continue - if (!neighbor.transparent && neighbor.isCube) continue - } else { - continue - } - } - - const pos = block.position - - const findTextureInBlockStates = (name): any => { - const vars = blockStates[name]?.variants - if (!vars) return blockStates[name]?.multipart?.[0]?.apply?.[0]?.model?.elements?.[0]?.faces?.south?.texture - let firstVar = Object.values(vars)[0] as any - if (Array.isArray(firstVar)) firstVar = firstVar[0] - if (!firstVar) return - const [element] = firstVar.model?.elements - if (!element) return firstVar.model?.textures?.particle - if (!element/* || !(element?.from.every(a => a === 0) && element?.to.every(a => a === 16)) */) return - return element.faces - } - - let textureName = undefined - let tint - const getResult = (side: string): number => { - const facesOrTexture = findTextureInBlockStates(block.name); - if (!facesOrTexture) return 0 // todo - let result - if ('u' in facesOrTexture) { - result = facesOrTexture - } else { - result = facesOrTexture?.[side]?.texture - const tintindex = facesOrTexture?.[side]?.tintindex - if (tintindex === 0) { - if (block.name === 'redstone_wire') { - tint = tints.redstone[`${block.getProperties().power}`] - } else if (block.name === 'birch_leaves' || - block.name === 'spruce_leaves' || - block.name === 'lily_pad') { - tint = tints.constant[block.name] - } else if (block.name.includes('leaves') || block.name === 'vine') { - tint = tints.foliage[biome] - } else { - tint = tints.grass[biome] - } - } - } - if (!result) return 0 // todo - if (result.textureName) { - textureName = result.textureName - } - return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) - } - function uvToTextureIndex (u, v) { - const textureWidth = textureSize - const textureHeight = textureSize - const tileSize = 16; - // Convert UV coordinates to pixel coordinates - let x = u * textureWidth; - let y = v * textureHeight; - - // Convert pixel coordinates to tile index - const tileX = Math.floor(x / tileSize); - const tileY = Math.floor(y / tileSize); - - // Calculate texture index - const textureIndex = tileY * (textureWidth / tileSize) + tileX; - - return textureIndex; - } - // back, front, left, right, top, bottom - const textures = [ - getResult('north'), - getResult('south'), - getResult('west'), - getResult('east'), - getResult('down'), - getResult('up') - ] - if (textures.every(t => t === 0)) continue - if (pos.y <= 1) continue // TODO!! - attr.blocks[`${pos.x},${pos.y},${pos.z}`] = { - textureIndex: textures, - textureName, - tint, - isTransparent: block.name.includes('glass') || block.name.includes('grass') || block.name.includes('leaves') || block.name.includes('fire') // todo - } satisfies BlockType - } - - } + // if (block.name === 'water') { // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) // } else if (block.name === 'lava') { @@ -562,6 +670,32 @@ export function getSectionGeometry (sx, sy, sz, world: World) { // } // } + for (const variant of block.variant) { + if (!variant || !variant.model) continue + + // if (block.name === 'water') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) + //} else if (block.name === 'lava') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) + let globalMatrix = null as any + let globalShift = null as any + + for (const axis of ['x', 'y', 'z']) { + if (axis in variant) { + if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) + else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) + } + } + + if (globalMatrix) { + globalShift = [8, 8, 8] + globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + } + + for (const element of variant.model.elements) { + renderElementNew(world, cursor, element, variant.model.ao, attr as any, globalMatrix, globalShift, block, biome) + } + } } } } @@ -596,7 +730,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { return attr } -function parseProperties (properties) { +function parseProperties(properties) { if (typeof properties === 'object') { return properties } const json = {} @@ -607,7 +741,7 @@ function parseProperties (properties) { return json } -function matchProperties (block: Block, /* to match against */properties: Record & { OR }) { +function matchProperties(block: Block, /* to match against */properties: Record & { OR }) { if (!properties) { return true } properties = parseProperties(properties) @@ -625,7 +759,7 @@ function matchProperties (block: Block, /* to match against */properties: Record return true } -function getModelVariants (block: import('prismarine-block').Block) { +function getModelVariants(block: import('prismarine-block').Block) { // air, cave_air, void_air and so on... // full list of invisible & special blocks https://minecraft.wiki/w/Model#Blocks_and_fluids if (block.name === '' || block.name === 'air' || block.name.endsWith('_air')) return [] diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index f43d3886e..b5652cc26 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -116,6 +116,7 @@ export abstract class WorldRendererCommon this.material.map.onUpdate = () => { this.downloadedTextureImage = this.material.map!.image } + // TODO const loadBlockStates = async () => { return new Promise(resolve => { if (this.customBlockStatesData) return resolve(this.customBlockStatesData) diff --git a/src/index.ts b/src/index.ts index 3e7d951da..67fb798da 100644 --- a/src/index.ts +++ b/src/index.ts @@ -864,6 +864,7 @@ downloadAndOpenFile().then((downloadAction) => { const initialLoader = document.querySelector('.initial-loader') as HTMLElement | null if (initialLoader) { initialLoader.style.opacity = '0' + initialLoader.style.pointerEvents = 'none' } window.pageLoaded = true From e3205ed9c61939d2552aaca40aa1f715375ef574 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 01:42:32 +0300 Subject: [PATCH 066/303] prev commit fixes, fix bg, add reset --- prismarine-viewer/examples/webglRenderer.ts | 2 +- .../examples/webglRendererWorker.ts | 40 +++++++---- prismarine-viewer/viewer/lib/models.ts | 71 ++++++++++--------- prismarine-viewer/viewer/lib/world.ts | 1 + .../viewer/lib/worldrendererWebgl.ts | 12 +++- src/controls.ts | 4 ++ 6 files changed, 79 insertions(+), 51 deletions(-) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 8fc08a19d..66280c70b 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -6,7 +6,7 @@ let worker declare const viewer: Viewer -const sendWorkerMessage = (message: any, transfer?: Transferable[]) => { +export const sendWorkerMessage = (message: any, transfer?: Transferable[]) => { worker.postMessage(message, transfer) // replacable by onmessage } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index b82c2329c..a9b2fb272 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -117,7 +117,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im sideBiomeColor[i + 1] = (Math.random()); sideBiomeColor[i + 2] = (Math.random()); for (let j = 1; j <= 6; j++) { - + if (j != 6) { sidePositions[j * 3 + i] = sidePositions[i] sidePositions[j * 3 + i + 1] = sidePositions[i + 1] @@ -133,7 +133,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im sideTextureIndices[i / 3 + j - 1] = 1; } - // sidePositions[i +3] = sidePositions[i] + // sidePositions[i +3] = sidePositions[i] // sidePositions[i + 4] = sidePositions[i + 2] // sidePositions[i + 5] = sidePositions[i + 1] @@ -249,6 +249,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im globalThis.allSidesSize = allSides.length sidePositions = new Float32Array(newSides.length * 3) sideTextureIndices = new Float32Array(newSides.length * 1); + sideIndexes = new Float32Array(newSides.length * 1); sideBiomeColor = new Float32Array(newSides.length * 3); for (let i = 0; i < newSides.length * 3; i += 3) { sidePositions[i] = newSides[i / 3][0] @@ -301,7 +302,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } globalThis.updateCubes = updateCubes - globalThis.cleanupFirstChunks = () => { + const cleanupFirstChunks = () => { allSides = [] gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); // empty the buffer @@ -314,9 +315,8 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, null); } - globalThis.fullReset = () => { - allSides = [] - globalThis.cleanupFirstChunks() + fullReset = () => { + cleanupFirstChunks() lastNotUpdatedIndex = undefined lastNotUpdatedArrSize = undefined } @@ -347,9 +347,6 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, textureWidth, textureHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, textureBitmap); - //gl.generateMipmap(gl.TEXTURE_2D); - - //gl.generateMipmap(gl.TEXTURE_2D); gl.useProgram(program) @@ -359,7 +356,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.enable(gl.DEPTH_TEST) gl.frontFace(gl.CCW) - gl.enable(gl.CULL_FACE) + gl.enable(gl.CULL_FACE) gl.enable(gl.BLEND) gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); @@ -396,7 +393,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 0.0); + gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) @@ -408,7 +405,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLES, 0, 6, 6 * (isPlayground ? NumberOfCube : allSides.length)); + gl.drawArraysInstanced(gl.TRIANGLES, 0, 6, (isPlayground ? NumberOfCube * 6 : allSides.length)); } //gl.bindVertexArray(null) @@ -424,6 +421,8 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im return canvas } +let fullReset + const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' @@ -487,6 +486,20 @@ onmessage = function (e) { }) // find freeIndexes if possible const freeArea = freeArrayIndexes.find(([startIndex, endIndex]) => endIndex - startIndex >= newData.length) + if (freeArea) { + const [startIndex, endIndex] = freeArea + allSides.splice(startIndex, newData.length, ...newData) + lastNotUpdatedIndex ??= startIndex + const freeAreaIndex = freeArrayIndexes.indexOf(freeArea) + freeArrayIndexes[freeAreaIndex] = [startIndex + newData.length, endIndex] + if (freeArrayIndexes[freeAreaIndex][0] >= freeArrayIndexes[freeAreaIndex][1]) { + freeArrayIndexes.splice(freeAreaIndex, 1) + // todo merge + } + lastNotUpdatedArrSize = newData.length + console.log('using free area', freeArea) + } + chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] allSides.push(...newData) lastNotUpdatedIndex ??= currentLength @@ -525,6 +538,9 @@ onmessage = function (e) { animationTick = e.data.tick % 20 // todo update automatically in worker } } + if (e.data.type === 'fullReset') { + fullReset() + } } setInterval(() => { diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 89a16befc..834eb70fc 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -18,7 +18,7 @@ for (const key of Object.keys(tintsData)) { tints[key] = prepareTints(tintsData[key]) } -function prepareTints(tints) { +function prepareTints (tints) { const map = new Map() const defaultValue = tintToGl(tints.default) for (let { keys, color } of tints.data) { @@ -34,7 +34,7 @@ function prepareTints(tints) { }) } -function tintToGl(tint) { +function tintToGl (tint) { const r = (tint >> 16) & 0xff const g = (tint >> 8) & 0xff const b = tint & 0xff @@ -110,7 +110,7 @@ const elemFaces = { } } -function getLiquidRenderHeight(world, block, type) { +function getLiquidRenderHeight (world, block, type) { if (!block || block.type !== type) return 1 / 9 if (block.metadata === 0) { // source block const blockAbove = world.getBlock(block.position.offset(0, 1, 0)) @@ -120,7 +120,7 @@ function getLiquidRenderHeight(world, block, type) { return ((block.metadata >= 8 ? 8 : 7 - block.metadata) + 1) / 9 } -function renderLiquid(world, cursor, texture, type, biome, water, attr) { +function renderLiquid (world, cursor, texture, type, biome, water, attr) { const heights: number[] = [] for (let z = -1; z <= 1; z++) { for (let x = -1; x <= 1; x++) { @@ -170,17 +170,17 @@ function renderLiquid(world, cursor, texture, type, biome, water, attr) { } } -function vecadd3(a, b) { +function vecadd3 (a, b) { if (!b) return a return [a[0] + b[0], a[1] + b[1], a[2] + b[2]] } -function vecsub3(a, b) { +function vecsub3 (a, b) { if (!b) return a return [a[0] - b[0], a[1] - b[1], a[2] - b[2]] } -function matmul3(matrix, vector): [number, number, number] { +function matmul3 (matrix, vector): [number, number, number] { if (!matrix) return vector return [ matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2], @@ -189,7 +189,7 @@ function matmul3(matrix, vector): [number, number, number] { ] } -function matmulmat3(a, b) { +function matmulmat3 (a, b) { const te = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] const a11 = a[0][0]; const a12 = a[1][0]; const a13 = a[2][0] @@ -215,7 +215,7 @@ function matmulmat3(a, b) { return te } -function buildRotationMatrix(axis, degree) { +function buildRotationMatrix (axis, degree) { const radians = degree / 180 * Math.PI const cos = Math.cos(radians) const sin = Math.sin(radians) @@ -239,7 +239,7 @@ function buildRotationMatrix(axis, degree) { return matrix } -function renderElement(world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { +function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { const cullIfIdentical = block.name.indexOf('glass') >= 0 for (const face in element.faces) { @@ -421,7 +421,7 @@ const getResult = (biome, block, side: string): number => { } return uvToTextureIndex(result.u, result.v) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) } -function uvToTextureIndex(u, v) { +function uvToTextureIndex (u, v) { const textureWidth = textureSize const textureHeight = textureSize const tileSize = 16; @@ -451,7 +451,7 @@ const findTextureInBlockStates = (name): any => { return element.faces } -function renderElementNew(world: World, cursor: Vec3, element, doAO: boolean, attr: AttrType, globalMatrix, globalShift, block: Block, biome) { +function renderElementNew (world: World, cursor: Vec3, element, doAO: boolean, attr: AttrType, globalMatrix, globalShift, block: Block, biome) { const cullIfIdentical = block.name.indexOf('glass') >= 0 for (const face in element.faces) { @@ -601,7 +601,7 @@ function renderElementNew(world: World, cursor: Vec3, element, doAO: boolean, at } } -export function getSectionGeometry(sx, sy, sz, world: World) { +export function getSectionGeometry (sx, sy, sz, world: World) { const attr = { sx: sx + 8, sy: sy + 8, @@ -644,7 +644,7 @@ export function getSectionGeometry(sx, sy, sz, world: World) { if (block.variant === undefined) { block.variant = getModelVariants(block) } - + // if (block.name === 'water') { // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) // } else if (block.name === 'lava') { @@ -673,28 +673,28 @@ export function getSectionGeometry(sx, sy, sz, world: World) { for (const variant of block.variant) { if (!variant || !variant.model) continue - // if (block.name === 'water') { - // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) + // if (block.name === 'water') { + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) //} else if (block.name === 'lava') { - // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) - let globalMatrix = null as any - let globalShift = null as any - - for (const axis of ['x', 'y', 'z']) { - if (axis in variant) { - if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) - else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) - } + // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) + let globalMatrix = null as any + let globalShift = null as any + + for (const axis of ['x', 'y', 'z']) { + if (axis in variant) { + if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) + else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) } + } - if (globalMatrix) { - globalShift = [8, 8, 8] - globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) - } + if (globalMatrix) { + globalShift = [8, 8, 8] + globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + } - for (const element of variant.model.elements) { - renderElementNew(world, cursor, element, variant.model.ao, attr as any, globalMatrix, globalShift, block, biome) - } + const elements = variant.model.elements; + const element = elements[0] + if (element) renderElementNew(world, cursor, element, variant.model.ao, attr as any, globalMatrix, globalShift, block, biome) } } } @@ -726,11 +726,12 @@ export function getSectionGeometry(sx, sy, sz, world: World) { attr.normals = new Float32Array(attr.normals) as any attr.colors = new Float32Array(attr.colors) as any attr.uvs = new Float32Array(attr.uvs) as any + if (Object.keys(attr.blocks).length === 0) return attr return attr } -function parseProperties(properties) { +function parseProperties (properties) { if (typeof properties === 'object') { return properties } const json = {} @@ -741,7 +742,7 @@ function parseProperties(properties) { return json } -function matchProperties(block: Block, /* to match against */properties: Record & { OR }) { +function matchProperties (block: Block, /* to match against */properties: Record & { OR }) { if (!properties) { return true } properties = parseProperties(properties) @@ -759,7 +760,7 @@ function matchProperties(block: Block, /* to match against */properties: Record< return true } -function getModelVariants(block: import('prismarine-block').Block) { +function getModelVariants (block: import('prismarine-block').Block) { // air, cave_air, void_air and so on... // full list of invisible & special blocks https://minecraft.wiki/w/Model#Blocks_and_fluids if (block.name === '' || block.name === 'air' || block.name.endsWith('_air')) return [] diff --git a/prismarine-viewer/viewer/lib/world.ts b/prismarine-viewer/viewer/lib/world.ts index a4ffd69c6..d0075dce0 100644 --- a/prismarine-viewer/viewer/lib/world.ts +++ b/prismarine-viewer/viewer/lib/world.ts @@ -18,6 +18,7 @@ function posInChunk (pos) { } function isCube (shapes) { + return true if (!shapes || shapes.length !== 1) return false const shape = shapes[0] return shape[0] === 0 && shape[1] === 0 && shape[2] === 0 && shape[3] === 1 && shape[4] === 1 && shape[5] === 1 diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index 4556d953c..8d5518ab4 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -1,4 +1,4 @@ -import { addBlocksSection, removeBlocksSection } from '../../examples/webglRenderer' +import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webglRenderer' import type { WebglData } from '../prepare/webglData' import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' @@ -28,7 +28,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { } handleWorkerMessage (data: any): void { - if (data.type === 'geometry') { + if (data.type === 'geometry' && Object.keys(data.geometry.blocks).length) { const chunkCoords = data.key.split(',') if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return @@ -39,6 +39,12 @@ export class WorldRendererWebgl extends WorldRendererCommon { } } + chunksReset () { + sendWorkerMessage({ + type: 'fullReset' + }) + } + updatePosDataChunk (key: string) { } @@ -55,7 +61,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { removeColumn (x, z) { - return + console.log('removeColumn', x, z) super.removeColumn(x, z) for (const key of Object.keys(this.newChunks)) { const [xSec, _ySec, zSec] = key.split(',').map(Number) diff --git a/src/controls.ts b/src/controls.ts index 48c051791..cd0afad6e 100644 --- a/src/controls.ts +++ b/src/controls.ts @@ -288,6 +288,10 @@ export const f3Keybinds = [ console.warn('forcefully removed chunk from scene') } } + + viewer.world.chunksReset() // todo + viewer.world.newChunks = {} + if (localServer) { //@ts-expect-error not sure why it is private... maybe revisit api? localServer.players[0].world.columns = {} From ff5ca18a2222f0adfba5cc4724e65836d1d9498f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 10 Apr 2024 01:48:14 +0300 Subject: [PATCH 067/303] KAVOfasdfasdf --- prismarine-viewer/examples/webglRendererWorker.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index b82c2329c..16adcbe2a 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -97,7 +97,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im - let NumberOfCube = isPlayground ? 1_000_000 : 5_000_000 + let NumberOfCube = isPlayground ? 10_000 : 5_000_000 sidePositions = new Float32Array(NumberOfCube * 3 * 6) let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); @@ -106,7 +106,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // write random coordinates to cube positions xyz ten cubes; - if (false) { + if (true) { for (let i = 0; i < NumberOfCube * 18; i += 18) { sidePositions[i] = Math.floor(Math.random() * 1000) - 500; @@ -129,8 +129,8 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im } sideIndexes[i / 3 + j - 1] = j - 1; - //sideTextureIndices[i / 3 + j - 1] = Math.floor(Math.random() * 800); - sideTextureIndices[i / 3 + j - 1] = 1; + sideTextureIndices[i / 3 + j - 1] = Math.floor(Math.random() * 800); + //sideTextureIndices[i / 3 + j - 1] = 1; } // sidePositions[i +3] = sidePositions[i] @@ -380,7 +380,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindTexture(gl.TEXTURE_2D, texture1); gl.bindVertexArray(VAO) - + gl.useProgram(program) updateSize(gl.canvas.width, gl.canvas.height) const renderLoop = (performance) => { requestAnimationFrame(renderLoop) @@ -393,14 +393,15 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im newWidth = undefined newHeight = undefined updateSize(gl.canvas.width, gl.canvas.height) + + gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) } - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) + gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 0.0); gl.clear(gl.COLOR_BUFFER_BIT) gl.clear(gl.DEPTH_BUFFER_BIT) - gl.useProgram(program) gl.uniformMatrix4fv(ViewUniform, false, camera.matrix.invert().elements); gl.uniformMatrix4fv(ProjectionUniform, false, camera.projectionMatrix.elements); From a5f0af8e6bfb75e9c0fecc7586e465b9282755f7 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 02:33:36 +0300 Subject: [PATCH 068/303] [deploy] fix singleplayer --- prismarine-viewer/examples/_VertexShader.vert | 18 +- .../examples/webglRendererWorker.ts | 7 +- prismarine-viewer/viewer/lib/models.ts | 298 ++++++++++-------- .../viewer/lib/worldrendererWebgl.ts | 1 + 4 files changed, 176 insertions(+), 148 deletions(-) diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 9410c1c67..0acdacf94 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -7,7 +7,7 @@ layout (location = 3) in vec3 aOffset; layout (location = 4) in float aTextureIndex; layout (location = 6) in vec3 aBiomeColor; -//#Define +//#Define out vec2 TexCoord; flat out float TextureIndex; @@ -43,7 +43,7 @@ void main() TexCoord = vec2((1.0f-aTexCoord.x), (1.0 - aTexCoord.y)); //TextureIndex = aTextureIndex.x; //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; - + TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; break; case 1: @@ -58,20 +58,24 @@ void main() case 3: //TextureIndex = aTextureIndex.z; //TexCoord = vec2(aTexCoord.y, (1.0f - aTexCoord.x)); - + TexCoord = vec2(aTexCoord); //TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; - TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; + //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; + TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; break; case 4: //TextureIndex = aTextureIndexPlus.x; //TransitionedPos = vec4(aPos,0.0f).xyz; - TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; + //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; + TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; break; case 5: //TextureIndex = aTextureIndexPlus.y; //TransitionedPos = vec4(aPos,0.0f).xyz; - TexCoord = vec2(aTexCoord); - TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; + + //TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; + //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; + TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; break; } TextureIndex += float(tick); diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index e062f8640..fa36a816c 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -32,6 +32,7 @@ const updateSize = (width, height) => { export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { + isPlayground = false // blockStates = blockStatesJson const textureBitmap = await createImageBitmap(imageBlob) const textureWidth = textureBitmap.width @@ -106,7 +107,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // write random coordinates to cube positions xyz ten cubes; - if (true) { + if (isPlayground) { for (let i = 0; i < NumberOfCube * 18; i += 18) { sidePositions[i] = Math.floor(Math.random() * 1000) - 500; @@ -243,7 +244,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // up2 const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) newSides.sort((a, b) => { - const getScore = (b: BlockFaceType) => b.isTransparent ? 0 : 1 + const getScore = (b: BlockFaceType) => b.isTransparent ? 1 : 0 return getScore(a[3]) - getScore(b[3]) }) globalThis.allSidesSize = allSides.length @@ -393,7 +394,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) } - + gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1); gl.clear(gl.COLOR_BUFFER_BIT) diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index 834eb70fc..b5ef1871c 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -3,6 +3,7 @@ import { BlockStatesOutput } from '../prepare/modelsBuilder' import { World } from './world' import { Block } from 'prismarine-block' import { BlockType } from '../../examples/shared' +import dataBlocks from '../lib/moreBlockDataGenerated.json' const tints: any = {} let blockStates: BlockStatesOutput @@ -239,141 +240,141 @@ function buildRotationMatrix (axis, degree) { return matrix } -function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { - const cullIfIdentical = block.name.indexOf('glass') >= 0 - - for (const face in element.faces) { - const eFace = element.faces[face] - const { corners, mask1, mask2 } = elemFaces[face] - const dir = matmul3(globalMatrix, elemFaces[face].dir) - - if (eFace.cullface) { - const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) - if (neighbor) { - if (cullIfIdentical && neighbor.type === block.type) continue - if (!neighbor.transparent && neighbor.isCube) continue - } else { - continue - } - } - - const minx = element.from[0] - const miny = element.from[1] - const minz = element.from[2] - const maxx = element.to[0] - const maxy = element.to[1] - const maxz = element.to[2] - - const u = eFace.texture.u - const v = eFace.texture.v - const su = eFace.texture.su - const sv = eFace.texture.sv - - const ndx = Math.floor(attr.positions.length / 3) - - let tint = [1, 1, 1] - if (eFace.tintindex !== undefined) { - if (eFace.tintindex === 0) { - if (block.name === 'redstone_wire') { - tint = tints.redstone[`${block.getProperties().power}`] - } else if (block.name === 'birch_leaves' || - block.name === 'spruce_leaves' || - block.name === 'lily_pad') { - tint = tints.constant[block.name] - } else if (block.name.includes('leaves') || block.name === 'vine') { - tint = tints.foliage[biome] - } else { - tint = tints.grass[biome] - } - } - } - - // UV rotation - const r = eFace.rotation || 0 - const uvcs = Math.cos(r * Math.PI / 180) - const uvsn = -Math.sin(r * Math.PI / 180) - - let localMatrix = null as any - let localShift = null as any - - if (element.rotation) { - localMatrix = buildRotationMatrix( - element.rotation.axis, - element.rotation.angle - ) - - localShift = vecsub3( - element.rotation.origin, - matmul3( - localMatrix, - element.rotation.origin - ) - ) - } - - const aos: number[] = [] - for (const pos of corners) { - let vertex = [ - (pos[0] ? maxx : minx), - (pos[1] ? maxy : miny), - (pos[2] ? maxz : minz) - ] - - vertex = vecadd3(matmul3(localMatrix, vertex), localShift) - vertex = vecadd3(matmul3(globalMatrix, vertex), globalShift) - vertex = vertex.map(v => v / 16) - - attr.positions.push( - vertex[0] + (cursor.x & 15) - 8, - vertex[1] + (cursor.y & 15) - 8, - vertex[2] + (cursor.z & 15) - 8 - ) - - attr.normals.push(...dir) - - const baseu = (pos[3] - 0.5) * uvcs - (pos[4] - 0.5) * uvsn + 0.5 - const basev = (pos[3] - 0.5) * uvsn + (pos[4] - 0.5) * uvcs + 0.5 - attr.uvs.push(baseu * su + u, basev * sv + v) - - let light = 1 - if (doAO) { - const dx = pos[0] * 2 - 1 - const dy = pos[1] * 2 - 1 - const dz = pos[2] * 2 - 1 - const cornerDir = matmul3(globalMatrix, [dx, dy, dz]) - const side1Dir = matmul3(globalMatrix, [dx * mask1[0], dy * mask1[1], dz * mask1[2]]) - const side2Dir = matmul3(globalMatrix, [dx * mask2[0], dy * mask2[1], dz * mask2[2]]) - const side1 = world.getBlock(cursor.offset(...side1Dir)) - const side2 = world.getBlock(cursor.offset(...side2Dir)) - const corner = world.getBlock(cursor.offset(...cornerDir)) - - const side1Block = world.shouldMakeAo(side1) ? 1 : 0 - const side2Block = world.shouldMakeAo(side2) ? 1 : 0 - const cornerBlock = world.shouldMakeAo(corner) ? 1 : 0 - - // TODO: correctly interpolate ao light based on pos (evaluate once for each corner of the block) - - const ao = (side1Block && side2Block) ? 0 : (3 - (side1Block + side2Block + cornerBlock)) - light = (ao + 1) / 4 - aos.push(ao) - } - - attr.colors.push(tint[0] * light, tint[1] * light, tint[2] * light) - } - - if (doAO && aos[0] + aos[3] >= aos[1] + aos[2]) { - attr.indices.push( - ndx, ndx + 3, ndx + 2, - ndx, ndx + 1, ndx + 3 - ) - } else { - attr.indices.push( - ndx, ndx + 1, ndx + 2, - ndx + 2, ndx + 1, ndx + 3 - ) - } - } -} +// function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { +// const cullIfIdentical = block.name.indexOf('glass') >= 0 + +// for (const face in element.faces) { +// const eFace = element.faces[face] +// const { corners, mask1, mask2 } = elemFaces[face] +// const dir = matmul3(globalMatrix, elemFaces[face].dir) + +// if (eFace.cullface) { +// const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) +// if (neighbor) { +// if (cullIfIdentical && neighbor.type === block.type) continue +// if (!neighbor.transparent && neighbor.isCube) continue +// } else { +// continue +// } +// } + +// const minx = element.from[0] +// const miny = element.from[1] +// const minz = element.from[2] +// const maxx = element.to[0] +// const maxy = element.to[1] +// const maxz = element.to[2] + +// const u = eFace.texture.u +// const v = eFace.texture.v +// const su = eFace.texture.su +// const sv = eFace.texture.sv + +// const ndx = Math.floor(attr.positions.length / 3) + +// let tint = [1, 1, 1] +// if (eFace.tintindex !== undefined) { +// if (eFace.tintindex === 0) { +// if (block.name === 'redstone_wire') { +// tint = tints.redstone[`${block.getProperties().power}`] +// } else if (block.name === 'birch_leaves' || +// block.name === 'spruce_leaves' || +// block.name === 'lily_pad') { +// tint = tints.constant[block.name] +// } else if (block.name.includes('leaves') || block.name === 'vine') { +// tint = tints.foliage[biome] +// } else { +// tint = tints.grass[biome] +// } +// } +// } + +// // UV rotation +// const r = eFace.rotation || 0 +// const uvcs = Math.cos(r * Math.PI / 180) +// const uvsn = -Math.sin(r * Math.PI / 180) + +// let localMatrix = null as any +// let localShift = null as any + +// if (element.rotation) { +// localMatrix = buildRotationMatrix( +// element.rotation.axis, +// element.rotation.angle +// ) + +// localShift = vecsub3( +// element.rotation.origin, +// matmul3( +// localMatrix, +// element.rotation.origin +// ) +// ) +// } + +// const aos: number[] = [] +// for (const pos of corners) { +// let vertex = [ +// (pos[0] ? maxx : minx), +// (pos[1] ? maxy : miny), +// (pos[2] ? maxz : minz) +// ] + +// vertex = vecadd3(matmul3(localMatrix, vertex), localShift) +// vertex = vecadd3(matmul3(globalMatrix, vertex), globalShift) +// vertex = vertex.map(v => v / 16) + +// attr.positions.push( +// vertex[0] + (cursor.x & 15) - 8, +// vertex[1] + (cursor.y & 15) - 8, +// vertex[2] + (cursor.z & 15) - 8 +// ) + +// attr.normals.push(...dir) + +// const baseu = (pos[3] - 0.5) * uvcs - (pos[4] - 0.5) * uvsn + 0.5 +// const basev = (pos[3] - 0.5) * uvsn + (pos[4] - 0.5) * uvcs + 0.5 +// attr.uvs.push(baseu * su + u, basev * sv + v) + +// let light = 1 +// if (doAO) { +// const dx = pos[0] * 2 - 1 +// const dy = pos[1] * 2 - 1 +// const dz = pos[2] * 2 - 1 +// const cornerDir = matmul3(globalMatrix, [dx, dy, dz]) +// const side1Dir = matmul3(globalMatrix, [dx * mask1[0], dy * mask1[1], dz * mask1[2]]) +// const side2Dir = matmul3(globalMatrix, [dx * mask2[0], dy * mask2[1], dz * mask2[2]]) +// const side1 = world.getBlock(cursor.offset(...side1Dir)) +// const side2 = world.getBlock(cursor.offset(...side2Dir)) +// const corner = world.getBlock(cursor.offset(...cornerDir)) + +// const side1Block = world.shouldMakeAo(side1) ? 1 : 0 +// const side2Block = world.shouldMakeAo(side2) ? 1 : 0 +// const cornerBlock = world.shouldMakeAo(corner) ? 1 : 0 + +// // TODO: correctly interpolate ao light based on pos (evaluate once for each corner of the block) + +// const ao = (side1Block && side2Block) ? 0 : (3 - (side1Block + side2Block + cornerBlock)) +// light = (ao + 1) / 4 +// aos.push(ao) +// } + +// attr.colors.push(tint[0] * light, tint[1] * light, tint[2] * light) +// } + +// if (doAO && aos[0] + aos[3] >= aos[1] + aos[2]) { +// attr.indices.push( +// ndx, ndx + 3, ndx + 2, +// ndx, ndx + 1, ndx + 3 +// ) +// } else { +// attr.indices.push( +// ndx, ndx + 1, ndx + 2, +// ndx + 2, ndx + 1, ndx + 3 +// ) +// } +// } +// } const facesIndexes = { down: 0, @@ -451,8 +452,13 @@ const findTextureInBlockStates = (name): any => { return element.faces } +const isTransparent = (block: Block) => { + return block.transparent || block.material === 'plant' || block.name === 'water' || block.name === 'lava' + // return !!dataBlocks.noOcclusions[block.name] +} + function renderElementNew (world: World, cursor: Vec3, element, doAO: boolean, attr: AttrType, globalMatrix, globalShift, block: Block, biome) { - const cullIfIdentical = block.name.indexOf('glass') >= 0 + const cullIfIdentical = block.name.indexOf('glass') >= 0 || block.name === 'water' || block.name === 'lava' for (const face in element.faces) { const faceIndex = facesIndexes[face] @@ -465,7 +471,7 @@ function renderElementNew (world: World, cursor: Vec3, element, doAO: boolean, a const neighbor = world.getBlock(cursor.plus(new Vec3(...dir))) if (neighbor) { if (cullIfIdentical && neighbor.type === block.type) continue - if (!neighbor.transparent && neighbor.isCube) continue + if (!isTransparent(neighbor) && neighbor.isCube) continue } else { continue } @@ -532,7 +538,7 @@ function renderElementNew (world: World, cursor: Vec3, element, doAO: boolean, a attr.blocks[cursorPos].sides.push({ face: faceIndex, textureIndex: getResult(biome, block, face), - isTransparent: block.transparent, // todo + isTransparent: isTransparent(block), // todo textureName, tint }) @@ -645,6 +651,22 @@ export function getSectionGeometry (sx, sy, sz, world: World) { block.variant = getModelVariants(block) } + if (block.name === 'water' || block.name === 'lava') { + const textureParticle = block.variant![0].model.textures.particle + const tex = { texture: textureParticle, cullface: true, tintindex: 0 }; + block.variant![0].model.elements.push({ + from: [0, 0, 0], + to: [16, 16, 16], + faces: { + down: tex, + up: tex, + north: tex, + south: tex, + west: tex, + east: tex + } + }) + } // if (block.name === 'water') { // renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, true, attr) // } else if (block.name === 'lava') { diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index 8d5518ab4..6141648c5 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -61,6 +61,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { removeColumn (x, z) { + return console.log('removeColumn', x, z) super.removeColumn(x, z) for (const key of Object.keys(this.newChunks)) { From 50efd7659560b8ee7af0bf5bab296d026e70b5f6 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 04:18:52 +0300 Subject: [PATCH 069/303] workaround and potential fix --- .../examples/webglRendererWorker.ts | 26 ++++------------ .../viewer/lib/worldrendererCommon.ts | 30 ++++++++++--------- 2 files changed, 22 insertions(+), 34 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index fa36a816c..348d0c4d9 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -98,7 +98,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im - let NumberOfCube = isPlayground ? 10_000 : 5_000_000 + let NumberOfCube = isPlayground ? 10_000 : 1_000_000 sidePositions = new Float32Array(NumberOfCube * 3 * 6) let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); @@ -163,7 +163,6 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // cubePositions[0] = 0; // cubePositions[1] = 0; // cubePositions[2] = 0; - let VAO = gl.createVertexArray(); @@ -203,9 +202,11 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) gl.enableVertexAttribArray(1) - //gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 6 * 4, 5 * 4) - // gl.enableVertexAttribArray(2) - //instance data + gl.enableVertexAttribArray(2); + gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); + gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 4, 0); + gl.bindBuffer(gl.ARRAY_BUFFER, null); + gl.vertexAttribDivisor(2, 1); gl.enableVertexAttribArray(3); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); @@ -214,19 +215,10 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.vertexAttribDivisor(3, 1); gl.enableVertexAttribArray(4); - // gl.enableVertexAttribArray(5); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); gl.vertexAttribPointer(4, 1, gl.FLOAT, false, 4 * 1, 0); - // gl.vertexAttribPointer(5, 2, gl.FLOAT, false, 4 * 6, 4 * 4); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(4, 1); - // gl.vertexAttribDivisor(5, 1); - - gl.enableVertexAttribArray(6); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.vertexAttribPointer(6, 3, gl.FLOAT, false, 3 * 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(6, 1); gl.enableVertexAttribArray(6); gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); @@ -234,12 +226,6 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(6, 1); - gl.enableVertexAttribArray(2); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(2, 1); - updateCubes = (startIndex) => { // up2 const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index b5652cc26..750e62a86 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -117,22 +117,24 @@ export abstract class WorldRendererCommon this.downloadedTextureImage = this.material.map!.image } // TODO - const loadBlockStates = async () => { - return new Promise(resolve => { - if (this.customBlockStatesData) return resolve(this.customBlockStatesData) - return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { - this.downloadedBlockStatesData = data - // todo - this.renderUpdateEmitter.emit('blockStatesDownloaded') - resolve(data) + setTimeout(() => { + const loadBlockStates = async () => { + return new Promise(resolve => { + if (this.customBlockStatesData) return resolve(this.customBlockStatesData) + return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { + this.downloadedBlockStatesData = data + // todo + this.renderUpdateEmitter.emit('blockStatesDownloaded') + resolve(data) + }) }) - }) - } - loadBlockStates().then((blockStates) => { - for (const worker of this.workers) { - worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: texture.image.width }) } - }) + loadBlockStates().then((blockStates) => { + for (const worker of this.workers) { + worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: texture.image.width }) + } + }) + }, 500) }) } From 33d563cf9488970fc4d4e485ec6a7441f8129d6b Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 04:19:22 +0300 Subject: [PATCH 070/303] fix action --- scripts/githubActions.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/githubActions.mjs b/scripts/githubActions.mjs index ba7b8566d..94a64506b 100644 --- a/scripts/githubActions.mjs +++ b/scripts/githubActions.mjs @@ -8,7 +8,7 @@ const fns = { if (!aliasesRaw) throw new Error('No aliases found') const aliases = aliasesRaw.split('\n').map((x) => x.split('=')) const githubActionsPull = process.env.PULL_URL?.split('/').at(-1) - if (!githubActionsPull) throw new Error(`Not a pull request, got ${process.env.GITHUB_REF}`) + if (!githubActionsPull) throw new Error(`Not a pull request, got ${process.env.PULL_URL}`) const prNumber = githubActionsPull[1] const alias = aliases.find((x) => x[0] === prNumber) if (alias) { @@ -18,7 +18,7 @@ const fns = { } } -function setOutput(key, value) { +function setOutput (key, value) { // Temporary hack until core actions library catches up with github new recommendations const output = process.env['GITHUB_OUTPUT'] fs.appendFileSync(output, `${key}=${value}${os.EOL}`) From 324f07014bad84faf5d30e79703fde74e467b49d Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 04:21:17 +0300 Subject: [PATCH 071/303] fix playground --- prismarine-viewer/examples/webglRendererWorker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 348d0c4d9..fd703bcbc 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -32,7 +32,7 @@ const updateSize = (width, height) => { export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { - isPlayground = false + // isPlayground = false // blockStates = blockStatesJson const textureBitmap = await createImageBitmap(imageBlob) const textureWidth = textureBitmap.width From 0cebd53e3da6d4de920f54b65bf04789beb83f08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 10 Apr 2024 04:27:09 +0300 Subject: [PATCH 072/303] Triangle Strip --- prismarine-viewer/examples/webglRendererWorker.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index fa36a816c..4c714d49b 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -89,10 +89,10 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im let SideMesh = new Float32Array([ -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right -0.5, 0.5, -0.5, 0.0, 1.0, // top-let - -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + // 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + // -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let // ront ace ]) @@ -407,7 +407,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLES, 0, 6, (isPlayground ? NumberOfCube * 6 : allSides.length)); + gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSides.length)); } //gl.bindVertexArray(null) From 890afee8e72632d00bb2c56122607845ee591abf Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 21:38:10 +0300 Subject: [PATCH 073/303] [pick] creative gamemode for ?singleplayer=1 --- src/optionsStorage.ts | 4 +++- src/react/CreateWorldProvider.tsx | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/optionsStorage.ts b/src/optionsStorage.ts index 8490053cb..de987378c 100644 --- a/src/optionsStorage.ts +++ b/src/optionsStorage.ts @@ -61,7 +61,9 @@ const defaultOptions = { excludeCommunicationDebugEvents: [], preventDevReloadWhilePlaying: false, numWorkers: 4, - localServerOptions: {} as any, + localServerOptions: { + gameMode: 1 + } as any, preferLoadReadonly: false, disableLoadPrompts: false, guestUsername: 'guest', diff --git a/src/react/CreateWorldProvider.tsx b/src/react/CreateWorldProvider.tsx index 58208f955..a25e8bcda 100644 --- a/src/react/CreateWorldProvider.tsx +++ b/src/react/CreateWorldProvider.tsx @@ -51,7 +51,8 @@ export default () => { levelName: title, version, generation, - 'worldFolder': savePath + 'worldFolder': savePath, + gameMode: 0, }, })) }} From bb8a8413aeec10a64e198589ad1077b36381b20b Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Apr 2024 22:13:44 +0300 Subject: [PATCH 074/303] implement buffer extend --- .../examples/webglRendererWorker.ts | 84 ++++++++++++------- 1 file changed, 55 insertions(+), 29 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index f7ab8a901..7112bbb3c 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -7,11 +7,14 @@ import FragShader from './_FragmentShader.frag' import { BlockFaceType, BlockType } from './shared' let allSides = [] as [number, number, number, BlockFaceType][] +let allSidesAdded = 0 +let allSidesUpdated = false + let chunksArrIndexes = {} let freeArrayIndexes = [] as [number, number][] let rendering = true let sidePositions -let updateCubes: (startIndex: any) => void +let updateCubes: (startIndex: any, forceUpdate?) => void let lastNotUpdatedIndex let lastNotUpdatedArrSize let animationTick = 0; @@ -91,14 +94,14 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right -0.5, 0.5, -0.5, 0.0, 1.0, // top-let 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - // 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - // -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + // 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + // -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let // ront ace ]) - let NumberOfCube = isPlayground ? 10_000 : 1_000_000 + let NumberOfCube = isPlayground ? 10_000 : 10_000 sidePositions = new Float32Array(NumberOfCube * 3 * 6) let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); @@ -172,19 +175,19 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im let instanceCubeSide = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, sidePositions, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sidePositions, gl.DYNAMIC_DRAW); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, sideTextureIndices, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sideTextureIndices, gl.DYNAMIC_DRAW); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.bufferData(gl.ARRAY_BUFFER, sideBiomeColor, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sideBiomeColor, gl.DYNAMIC_DRAW); gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - gl.bufferData(gl.ARRAY_BUFFER, sideIndexes, gl.DYNAMIC_DRAW); // todo + gl.bufferData(gl.ARRAY_BUFFER, sideIndexes, gl.DYNAMIC_DRAW); gl.bindBuffer(gl.ARRAY_BUFFER, null); VAO = gl.createVertexArray(); let VBO = gl.createBuffer(); @@ -226,7 +229,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.bindBuffer(gl.ARRAY_BUFFER, null); gl.vertexAttribDivisor(6, 1); - updateCubes = (startIndex) => { + updateCubes = (startIndex, forceUpdate) => { // up2 const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) newSides.sort((a, b) => { @@ -260,32 +263,40 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // startIndex = 0 // TODO! console.log('startIndex', startIndex, sidePositions.length, allSides.length) - const updateBuffersSize = allSides.length > NumberOfCube - if (updateBuffersSize) { + const prepareBuffersUpdate = allSides.length > NumberOfCube || globalThis.testUpdate + globalThis.testUpdate = false + if (prepareBuffersUpdate) { NumberOfCube += 1_000_000 + updateCubes(0, true) + return } - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - if (updateBuffersSize) { - //gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * 3), gl.STATIC_DRAW); + globalThis.NumberOfCube = NumberOfCube + + const supplyData = (data, step) => { + if (forceUpdate) { + globalThis.updatedBufferSize = NumberOfCube + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * step), gl.STATIC_DRAW); + } + gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * step, data); // update buffer content + const error = gl.getError() + if (error) throw new Error("SUBDATA ERROR") + gl.bindBuffer(gl.ARRAY_BUFFER, null); } - const XYZ_SIZE = 3 - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * XYZ_SIZE, sidePositions); // update buffer content - gl.bindBuffer(gl.ARRAY_BUFFER, null); + + gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); + supplyData(sidePositions, 3) gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - if (updateBuffersSize) { - //gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube), gl.STATIC_DRAW); - } - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4, sideTextureIndices); // update buffer content - gl.bindBuffer(gl.ARRAY_BUFFER, null); + supplyData(sideTextureIndices, 1) gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * XYZ_SIZE, sideBiomeColor); // update buffer content - gl.bindBuffer(gl.ARRAY_BUFFER, null); + supplyData(sideBiomeColor, 3) gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4, sideIndexes); // update buffer content - gl.bindBuffer(gl.ARRAY_BUFFER, null); + supplyData(sideIndexes, 1) + + allSidesAdded = allSides.length + allSidesUpdated = false } globalThis.updateCubes = updateCubes @@ -368,7 +379,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im updateSize(gl.canvas.width, gl.canvas.height) const renderLoop = (performance) => { requestAnimationFrame(renderLoop) - if (!rendering) return + if (!rendering && !allSidesUpdated) return // gl.canvas.width = window.innerWidth * window.devicePixelRatio // gl.canvas.height = window.innerHeight * window.devicePixelRatio if (newWidth || newHeight) { @@ -393,9 +404,9 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSides.length)); + allSidesUpdated = true + gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSidesAdded)); } - //gl.bindVertexArray(null) renderedFrames++ } @@ -531,6 +542,21 @@ onmessage = function (e) { } } +globalThis.testDuplicates = () => { + const duplicates = allSides.filter((value, index, self) => self.indexOf(value) !== index) + console.log('duplicates', duplicates) +} + +globalThis.exportData = () => { + const optimizedData = allSides.map(([x, y, z, side]) => { + return [x, y, z, side.face, side.textureIndex] + }) + const json = JSON.stringify(optimizedData) + const sizeMb = new Blob([json]).size / 1024 / 1024 + console.log('size', sizeMb) + // return json +} + setInterval(() => { if (autoTickUpdate) { animationTick = (animationTick + 1) % autoTickUpdate; From a313c5ffc155f07ff6a9bd560764b6de8caf6db6 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 00:52:50 +0300 Subject: [PATCH 075/303] new stats! --- cypress/e2e/shared.ts | 14 ++--- prismarine-viewer/examples/playground.ts | 33 ------------ prismarine-viewer/examples/webglRenderer.ts | 54 +++++++++++++------ .../examples/webglRendererWorker.ts | 21 ++++---- prismarine-viewer/viewer/lib/viewer.ts | 5 ++ .../viewer/lib/worldDataEmitter.ts | 6 +++ .../viewer/lib/worldrendererWebgl.ts | 4 ++ src/index.ts | 2 + src/utils.ts | 2 +- 9 files changed, 74 insertions(+), 67 deletions(-) diff --git a/cypress/e2e/shared.ts b/cypress/e2e/shared.ts index c445b7df6..9292a8d55 100644 --- a/cypress/e2e/shared.ts +++ b/cypress/e2e/shared.ts @@ -1,15 +1,15 @@ import { AppOptions } from '../../src/optionsStorage' export const cleanVisit = (url?) => { - cy.clearLocalStorage() - visit(url) + cy.clearLocalStorage() + visit(url) } export const visit = (url = '/') => { - window.localStorage.cypress = 'true' - cy.visit(url) + window.localStorage.cypress = 'true' + cy.visit(url) } export const setOptions = (options: Partial) => { - cy.window().then(win => { - Object.assign(win['options'], options) - }) + cy.window().then(win => { + Object.assign(win['options'], options) + }) } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index bbd038a8f..49314cd39 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -226,39 +226,6 @@ async function main () { window['worldView'] = worldView window['viewer'] = viewer - // const jsonData = await fetch('https://bluecolored.de/bluemap/maps/overworld/tiles/0/x-2/2/z1/6.json?584662').then(r => r.json()) - - // const uniforms = { - // distance: { value: 0 }, - // sunlightStrength: { value: 1 }, - // ambientLight: { value: 0 }, - // skyColor: { value: new THREE.Color(0.5, 0.5, 1) }, - // voidColor: { value: new THREE.Color(0, 0, 0) }, - // hiresTileMap: { - // value: { - // map: null, - // size: 100, - // scale: new THREE.Vector2(1, 1), - // translate: new THREE.Vector2(), - // pos: new THREE.Vector2(), - // } - // } - - // } - - // const shader1 = new THREE.ShaderMaterial({ - // uniforms: uniforms, - // vertexShader: [0, 0, 0, 0], - // fragmentShader: fragmentShader, - // transparent: false, - // depthWrite: true, - // depthTest: true, - // vertexColors: true, - // side: THREE.FrontSide, - // wireframe: false - // }) - - //@ts-ignore // const controls = new OrbitControls(viewer.camera, nullRenderer.domElement) // controls.target.set(targetPos.x + 0.5, targetPos.y + 0.5, targetPos.z + 0.5) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index 66280c70b..e586b73c2 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -1,6 +1,7 @@ import { generateSpiralMatrix } from 'flying-squid/dist/utils' import { Viewer } from '../viewer/lib/viewer' import { options } from '../../src/optionsStorage' +import { addNewStat } from './newStats' let worker @@ -89,7 +90,7 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, // replacable by initWebglRenderer worker = new Worker('./webglRendererWorker.js') - addFpsCounter() + addFpsCounters() sendWorkerMessage({ canvas: offscreen, imageBlob, @@ -150,29 +151,48 @@ export const setAnimationTick = (tick: number, frames?: number) => { }) } +globalThis.exportData = () => { + worker.postMessage({ type: 'exportData' }) + const controller = new AbortController() + worker.addEventListener('message', (e) => { + try { + const a = document.createElement('a') + const dataObj = e.data + const data = JSON.stringify(dataObj) + const objectURL = URL.createObjectURL(new Blob([data], { type: 'application/json' })) + a.href = objectURL + a.download = 'data.json' + a.click() + URL.revokeObjectURL(objectURL) + } finally { + controller.abort() + } + }, { signal: controller.signal }) +} + -const addFpsCounter = () => { - const fpsCounter = document.createElement('div') - fpsCounter.id = 'fps-counter' - fpsCounter.style.position = 'fixed' - fpsCounter.style.top = '0' - fpsCounter.style.right = '0' - // gray bg - fpsCounter.style.backgroundColor = 'rgba(0, 0, 0, 0.5)' - fpsCounter.style.color = 'white' - fpsCounter.style.padding = '2px' - fpsCounter.style.fontFamily = 'monospace' - fpsCounter.style.fontSize = '12px' - fpsCounter.style.zIndex = '10000' - document.body.appendChild(fpsCounter) +const addFpsCounters = () => { + const { updateText } = addNewStat('fps') let prevTimeout worker.addEventListener('message', (e) => { if (e.data.type === 'fps') { - fpsCounter.innerText = `FPS: ${e.data.fps}` + updateText(`FPS: ${e.data.fps}`) if (prevTimeout) clearTimeout(prevTimeout); prevTimeout = setTimeout(() => { - fpsCounter.innerText = '' + updateText('') }, 1002) } }) + + const { updateText: updateText2 } = addNewStat('fps-main', 90, 0, 20) + let updates = 0 + const mainLoop = () => { + requestAnimationFrame(mainLoop) + updates++ + } + mainLoop() + setInterval(() => { + updateText2(`Main Loop: ${updates}`) + updates = 0 + }, 1000) } diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 7112bbb3c..b784f65ac 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -8,7 +8,7 @@ import { BlockFaceType, BlockType } from './shared' let allSides = [] as [number, number, number, BlockFaceType][] let allSidesAdded = 0 -let allSidesUpdated = false +let needsSidesUpdate = false let chunksArrIndexes = {} let freeArrayIndexes = [] as [number, number][] @@ -296,7 +296,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im supplyData(sideIndexes, 1) allSidesAdded = allSides.length - allSidesUpdated = false + needsSidesUpdate = true } globalThis.updateCubes = updateCubes @@ -379,7 +379,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im updateSize(gl.canvas.width, gl.canvas.height) const renderLoop = (performance) => { requestAnimationFrame(renderLoop) - if (!rendering && !allSidesUpdated) return + if (!rendering && !needsSidesUpdate) return // gl.canvas.width = window.innerWidth * window.devicePixelRatio // gl.canvas.height = window.innerHeight * window.devicePixelRatio if (newWidth || newHeight) { @@ -404,8 +404,8 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im camera.updateMatrix() if (!globalThis.stopRendering) { - allSidesUpdated = true gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSidesAdded)); + needsSidesUpdate = false } renderedFrames++ @@ -540,6 +540,9 @@ onmessage = function (e) { if (e.data.type === 'fullReset') { fullReset() } + if (e.data.type === 'exportData') { + postMessage({ type: 'exportData', data: exportData() }) + } } globalThis.testDuplicates = () => { @@ -547,14 +550,14 @@ globalThis.testDuplicates = () => { console.log('duplicates', duplicates) } -globalThis.exportData = () => { +const exportData = () => { const optimizedData = allSides.map(([x, y, z, side]) => { return [x, y, z, side.face, side.textureIndex] }) - const json = JSON.stringify(optimizedData) - const sizeMb = new Blob([json]).size / 1024 / 1024 - console.log('size', sizeMb) - // return json + const json = optimizedData + // const sizeMb = new Blob([json]).size / 1024 / 1024 + // console.log('size', sizeMb) + return json } setInterval(() => { diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 57f5ee5e5..de678b14a 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -9,6 +9,7 @@ import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' import { sendCameraToWorker } from '../../examples/webglRenderer' import { WorldRendererThree } from './worldrendererThree' +import { generateSpiralMatrix } from 'flying-squid/dist/utils' export class Viewer { scene: THREE.Scene @@ -178,6 +179,10 @@ export class Viewer { this.world.updateViewerPosition(pos) }) + emitter.on('renderDistance', (d) => { + this.world.chunksLength = generateSpiralMatrix(d).length + }) + emitter.emit('listening') this.domElement.addEventListener?.('pointerdown', (evt) => { diff --git a/prismarine-viewer/viewer/lib/worldDataEmitter.ts b/prismarine-viewer/viewer/lib/worldDataEmitter.ts index fb17a9942..540b554ad 100644 --- a/prismarine-viewer/viewer/lib/worldDataEmitter.ts +++ b/prismarine-viewer/viewer/lib/worldDataEmitter.ts @@ -36,6 +36,11 @@ export class WorldDataEmitter extends EventEmitter { }) } + updateViewDistance (viewDistance: number) { + this.viewDistance = viewDistance + this.emitter.emit('renderDistance', viewDistance) + } + listenToBot (bot: typeof __type_bot) { const emitEntity = (e) => { if (!e || e === bot.entity) return @@ -73,6 +78,7 @@ export class WorldDataEmitter extends EventEmitter { return bot.world.getBlock(new Vec3(x, y, z)).entity }, })) + this.emitter.emit('renderDistance', this.viewDistance) }) // node.js stream data event pattern if (this.emitter.listenerCount('blockEntities')) { diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index 6141648c5..15fa587ce 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -1,3 +1,4 @@ +import { updateStatText } from '../../examples/newStats' import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webglRenderer' import type { WebglData } from '../prepare/webglData' import { loadJSON } from './utils.web' @@ -7,6 +8,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { newChunks = {} as Record webglData: WebglData stopBlockUpdate = false + chunksLength = 0 constructor(numWorkers = 4) { super(numWorkers) @@ -34,6 +36,8 @@ export class WorldRendererWebgl extends WorldRendererCommon { if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return addBlocksSection(data.key, data.geometry) + const chunkDistance = Math.round(Math.max(Math.abs((chunkCoords[0]) - this.viewerPosition!.x) / 16, Math.abs(chunkCoords[2] - this.viewerPosition!.y) / 16)) + updateStatText('loaded-chunks', Object.keys(this.loadedChunks).length + `/${this.chunksLength} chunks (${chunkDistance})`) // const blocks = Object.values(data.geometry.blocks) as any[] this.newChunks[data.key] = data.geometry } diff --git a/src/index.ts b/src/index.ts index 67fb798da..8310b810b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -97,6 +97,7 @@ import { possiblyHandleStateVariable } from './googledrive' import flyingSquidEvents from './flyingSquidEvents' import { hideNotification, notificationProxy } from './react/NotificationProvider' import { initWebglRenderer } from 'prismarine-viewer/examples/webglRenderer' +import { addNewStat } from 'prismarine-viewer/examples/newStats' // import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' window.debug = debug @@ -391,6 +392,7 @@ async function connect (connectOptions: { postRenderFrameFn() viewer.update() }) + addNewStat('loaded-chunks') if (singleplayer) { // SINGLEPLAYER EXPLAINER: diff --git a/src/utils.ts b/src/utils.ts index 4b1239d5e..fc73514c7 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -173,7 +173,7 @@ export const setRenderDistance = () => { localServer!.players[0].view = 0 renderDistance = 0 } - worldView.viewDistance = renderDistance + worldView.updateViewDistance(renderDistance) prevRenderDistance = renderDistance } export const reloadChunks = async () => { From a3c414e09ef4a3b949066f565f780261d71aeccf Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 00:55:25 +0300 Subject: [PATCH 076/303] commit stats --- prismarine-viewer/examples/newStats.ts | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 prismarine-viewer/examples/newStats.ts diff --git a/prismarine-viewer/examples/newStats.ts b/prismarine-viewer/examples/newStats.ts new file mode 100644 index 000000000..23b9b2af3 --- /dev/null +++ b/prismarine-viewer/examples/newStats.ts @@ -0,0 +1,34 @@ +let rightOffset = 0 + +const stats = {} + +export const addNewStat = (id: string, width = 80, x = rightOffset, y = 0) => { + const pane = document.createElement('div') + pane.id = 'fps-counter' + pane.style.position = 'fixed' + pane.style.top = `${y}px` + pane.style.right = `${x}px` + // gray bg + pane.style.backgroundColor = 'rgba(0, 0, 0, 0.5)' + pane.style.color = 'white' + pane.style.padding = '2px' + pane.style.fontFamily = 'monospace' + pane.style.fontSize = '12px' + pane.style.zIndex = '10000' + document.body.appendChild(pane) + stats[id] = pane + if (y === 0) { // otherwise it's a custom position + rightOffset += width + } + + return { + updateText: (text: string) => { + pane.innerText = text + } + } +} + +export const updateStatText = (id, text) => { + if (!stats[id]) return + stats[id].innerText = text +} From 4f9efb4c01f5b8010d4f8379b774a53e5e270cee Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 02:56:41 +0300 Subject: [PATCH 077/303] [wip] fixture export / loading! --- prismarine-viewer/examples/playground.ts | 34 ++++++++- prismarine-viewer/examples/webglRenderer.ts | 39 ++++++++--- .../examples/webglRendererWorker.ts | 69 +++++++++---------- 3 files changed, 94 insertions(+), 48 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 49314cd39..d1752a3fe 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -14,7 +14,7 @@ import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' import { findTextureInBlockStates } from '../../src/playerWindows' -import { initWebglRenderer, setAnimationTick } from './webglRenderer' +import { initWebglRenderer, loadFixtureSides, setAnimationTick } from './webglRenderer' import { renderToDom } from '@zardoy/react-util' globalThis.THREE = THREE @@ -73,7 +73,14 @@ async function main () { let continuousRender = false // const { version } = params - const version = '1.20.2' + let fixtureUrl = qs.get('fixture') + let fixture + if (fixtureUrl) { + console.log('Loading fixture') + fixture = await fetch(fixtureUrl).then(r => r.json()) + console.log('Loaded fixture') + } + const version = fixture.version ?? '1.20.2' // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { @@ -150,7 +157,7 @@ async function main () { viewer.setVersion(version) globalThis.viewer = viewer - await initWebglRenderer(version, () => { }, true) + await initWebglRenderer(version, () => { }, !enableControls && !fixture, true) const simpleControls = () => { let pressedKeys = new Set() const loop = () => { @@ -216,6 +223,27 @@ async function main () { } simpleControls() renderPlayground() + + const writeToIndexedDb = async (name, data) => { + const db = await window.indexedDB.open(name, 1) + db.onupgradeneeded = (e) => { + const db = (e.target as any).result + db.createObjectStore(name) + } + db.onsuccess = (e) => { + const db = (e.target as any).result + const tx = db.transaction(name, 'readwrite') + const store = tx.objectStore(name) + store.add(data, name) + } + } + + if (fixture) { + loadFixtureSides(fixture.sides) + const pos = fixture.camera[0] + viewer.camera.position.set(pos[0], pos[1], pos[2]) + } + if (!enableControls) return // Create viewer diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index e586b73c2..c50cbcef6 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -47,6 +47,12 @@ export const addBlocksSection = (key, data) => { }) } +export const loadFixtureSides = (json) => { + sendWorkerMessage({ + type: 'loadFixture', json + }) +} + export const sendCameraToWorker = () => { const cameraData = ['rotation', 'position'].reduce((acc, key) => { acc[key] = ['x', 'y', 'z'].reduce((acc2, key2) => { @@ -68,8 +74,8 @@ export const removeBlocksSection = (key) => { } let playground = false -export const initWebglRenderer = async (version: string, postRender = () => { }, isPlayground = false) => { - playground = isPlayground +export const initWebglRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { + playground = playgroundModeInWorker viewer.setVersion(version) await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) @@ -94,7 +100,7 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, sendWorkerMessage({ canvas: offscreen, imageBlob, - isPlayground, + isPlayground: playgroundModeInWorker, FragShaderOverride: localStorage.FragShader }, [offscreen]) @@ -129,7 +135,7 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, } postRender() // TODO! do it in viewer to avoid possible delays - if (playground && ['rotation', 'position'].some((key) => oldCamera[key] !== viewer.camera[key])) { + if (actuallyPlayground && ['rotation', 'position'].some((key) => oldCamera[key] !== viewer.camera[key])) { // TODO fix for (const [key, val] of Object.entries(oldCamera)) { for (const key2 of Object.keys(val)) { @@ -151,17 +157,30 @@ export const setAnimationTick = (tick: number, frames?: number) => { }) } -globalThis.exportData = () => { +globalThis.exportFixture = () => { worker.postMessage({ type: 'exportData' }) const controller = new AbortController() - worker.addEventListener('message', (e) => { + worker.addEventListener('message', async (e) => { + const receivedData = e.data.data; + console.log('received fixture') + // await new Promise(resolve => { + // setTimeout(resolve, 0) + // }) try { const a = document.createElement('a') - const dataObj = e.data - const data = JSON.stringify(dataObj) - const objectURL = URL.createObjectURL(new Blob([data], { type: 'application/json' })) + type Vec3 = [number, number, number] + type PlayTimeline = [pos: Vec3, rot: Vec3, time: number] + const vec3ToArr = (vec3: { x, y, z }) => [vec3.x, vec3.y, vec3.z] as Vec3 + // const dataObj = { + // ...receivedData, + // version: viewer.version, + // camera: [vec3ToArr(viewer.camera.position), vec3ToArr(viewer.camera.rotation)], + // playTimeline: [] as PlayTimeline[] + // } + // split into two chunks + const objectURL = URL.createObjectURL(new Blob([receivedData.sides.buffer], { type: 'application/octet-stream' })) a.href = objectURL - a.download = 'data.json' + a.download = 'fixture.bin' a.click() URL.revokeObjectURL(objectURL) } finally { diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index b784f65ac..daf19b23d 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -19,6 +19,14 @@ let lastNotUpdatedIndex let lastNotUpdatedArrSize let animationTick = 0; +const updateCubesWhenAvailable = (pos) => { + if (updateCubes) { + updateCubes(pos) + } else { + setTimeout(updateCubesWhenAvailable, 100) + } +} + const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) let renderedFrames = 0 @@ -101,7 +109,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im - let NumberOfCube = isPlayground ? 10_000 : 10_000 + let NumberOfCube = isPlayground ? 10_000 : 16_000_000 sidePositions = new Float32Array(NumberOfCube * 3 * 6) let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); @@ -137,35 +145,9 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im //sideTextureIndices[i / 3 + j - 1] = 1; } - // sidePositions[i +3] = sidePositions[i] - // sidePositions[i + 4] = sidePositions[i + 2] - // sidePositions[i + 5] = sidePositions[i + 1] - - // sideBiomeColor[i] = (Math.random() ) ; - // sideBiomeColor[i + 1] = (Math.random() ) ; - // sideBiomeColor[i + 2] = (Math.random() ) ; - - // sideIndexes[i/6] = Math.floor(Math.random() * 6); - // sideTextureIndices[i/6] = Math.floor(Math.random() * 800); - // cubeTextureIndices[i / 3] = Math.floor(Math.random() * 800); - // cubeTextureIndices[i / 3] = 0; } - // for (let i = 0; i < NumberOfCube * 6; i += 6) { - // sideTextureIndices[i + 0] = Math.floor(Math.random() * 800); - // sideTextureIndices[i + 1] = Math.floor(Math.random() * 800); - // sideTextureIndices[i + 2] = Math.floor(Math.random() * 800); - // sideTextureIndices[i + 3] = Math.floor(Math.random() * 800); - // sideTextureIndices[i + 4] = Math.floor(Math.random() * 800); - // sideTextureIndices[i + 5] = Math.floor(Math.random() * 800); - // // cubeTextureIndices[i / 3] = 0; - // } - - } - // cubePositions[0] = 0; - // cubePositions[1] = 0; - // cubePositions[2] = 0; let VAO = gl.createVertexArray(); @@ -541,7 +523,18 @@ onmessage = function (e) { fullReset() } if (e.data.type === 'exportData') { - postMessage({ type: 'exportData', data: exportData() }) + const exported = exportData(); + postMessage({ type: 'exportData', data: exported }, undefined, [exported.sides.buffer]) + } + if (e.data.type === 'loadFixture') { + // allSides = e.data.json.map(([x, y, z, face, textureIndex]) => { + // return [x, y, z, { face, textureIndex }] as [number, number, number, BlockFaceType] + // }) + const dataSize = e.data.json.length / 5 + for (let i = 0; i < e.data.json.length; i += 5) { + allSides.push([e.data.json[i], e.data.json[i + 1], e.data.json[i + 2], { face: e.data.json[i + 3], textureIndex: e.data.json[i + 4] }]) + } + updateCubesWhenAvailable(0) } } @@ -551,13 +544,19 @@ globalThis.testDuplicates = () => { } const exportData = () => { - const optimizedData = allSides.map(([x, y, z, side]) => { - return [x, y, z, side.face, side.textureIndex] - }) - const json = optimizedData - // const sizeMb = new Blob([json]).size / 1024 / 1024 - // console.log('size', sizeMb) - return json + // Calculate the total length of the final array + const totalLength = allSides.length * 5; + + // Create a new Int16Array with the total length + const flatData = new Int16Array(totalLength); + + // Fill the flatData array + for (let i = 0; i < allSides.length; i++) { + const [x, y, z, side] = allSides[i]; + flatData.set([x, y, z, side.face, side.textureIndex], i * 5); + } + + return { sides: flatData }; } setInterval(() => { From 830424eec28448eefea0157fdd1ca18e9aefc758 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 19:57:55 +0300 Subject: [PATCH 078/303] [to pick] customize gamemode from menu! --- prismarine-viewer/examples/newStats.ts | 1 + src/react/CreateWorld.tsx | 14 +++++++++++--- src/react/CreateWorldProvider.tsx | 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/prismarine-viewer/examples/newStats.ts b/prismarine-viewer/examples/newStats.ts index 23b9b2af3..fb363484f 100644 --- a/prismarine-viewer/examples/newStats.ts +++ b/prismarine-viewer/examples/newStats.ts @@ -15,6 +15,7 @@ export const addNewStat = (id: string, width = 80, x = rightOffset, y = 0) => { pane.style.fontFamily = 'monospace' pane.style.fontSize = '12px' pane.style.zIndex = '10000' + pane.style.pointerEvents = 'none' document.body.appendChild(pane) stats[id] = pane if (y === 0) { // otherwise it's a custom position diff --git a/src/react/CreateWorld.tsx b/src/react/CreateWorld.tsx index ceed77ec5..87b367774 100644 --- a/src/react/CreateWorld.tsx +++ b/src/react/CreateWorld.tsx @@ -8,17 +8,19 @@ import styles from './createWorld.module.css' // const worldTypes = ['default', 'flat', 'largeBiomes', 'amplified', 'customized', 'buffet', 'debug_all_block_states'] const worldTypes = ['default', 'flat'/* , 'void' */] +const gameModes = ['survival', 'creative'/* , 'adventure', 'spectator' */] export const creatingWorldState = proxy({ title: '', type: worldTypes[0], + gameMode: gameModes[0], version: '' }) export default ({ cancelClick, createClick, customizeClick, versions, defaultVersion }) => { const [quota, setQuota] = useState('') - const { title, type, version } = useSnapshot(creatingWorldState) + const { title, type, version, gameMode } = useSnapshot(creatingWorldState) useEffect(() => { creatingWorldState.version = defaultVersion void navigator.storage?.estimate?.().then(({ quota, usage }) => { @@ -54,9 +56,15 @@ export default ({ cancelClick, createClick, customizeClick, versions, defaultVer - + {/* */} +
Default and other world types are WIP
diff --git a/src/react/CreateWorldProvider.tsx b/src/react/CreateWorldProvider.tsx index a25e8bcda..332a1d31c 100644 --- a/src/react/CreateWorldProvider.tsx +++ b/src/react/CreateWorldProvider.tsx @@ -23,7 +23,7 @@ export default () => { }} createClick={async () => { // create new world - const { title, type, version } = creatingWorldState + const { title, type, version, gameMode } = creatingWorldState // todo display path in ui + disable if exist const savePath = await uniqueFileNameFromWorldName(title, getWorldsPath()) await mkdirRecursive(savePath) @@ -52,7 +52,7 @@ export default () => { version, generation, 'worldFolder': savePath, - gameMode: 0, + gameMode: gameMode === 'survival' ? 0 : 1, }, })) }} From a12ab1cd169901492f29bff82c0d63e65290bece Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 20:15:28 +0300 Subject: [PATCH 079/303] clean fix for image.width is undefined! --- prismarine-viewer/examples/webglRenderer.ts | 1 - prismarine-viewer/viewer/lib/utils.web.js | 6 ++- .../viewer/lib/worldrendererCommon.ts | 39 +++++++++---------- 3 files changed, 22 insertions(+), 24 deletions(-) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index c50cbcef6..b3811b36b 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -76,7 +76,6 @@ export const removeBlocksSection = (key) => { let playground = false export const initWebglRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { playground = playgroundModeInWorker - viewer.setVersion(version) await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) // viewer.world.material.map!.image.onload = () => { diff --git a/prismarine-viewer/viewer/lib/utils.web.js b/prismarine-viewer/viewer/lib/utils.web.js index 72d715b90..cbb942225 100644 --- a/prismarine-viewer/viewer/lib/utils.web.js +++ b/prismarine-viewer/viewer/lib/utils.web.js @@ -2,9 +2,11 @@ const THREE = require('three') const textureCache = {} -function loadTexture (texture, cb) { +function loadTexture (texture, cb, onLoad) { if (!textureCache[texture]) { - textureCache[texture] = new THREE.TextureLoader().load(texture) + textureCache[texture] = new THREE.TextureLoader().load(texture, onLoad) + } else { + onLoad?.() } cb(textureCache[texture]) } diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index 750e62a86..05a4c801b 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -1,6 +1,7 @@ import * as THREE from 'three' import { Vec3 } from 'vec3' -import { loadTexture, loadJSON } from './utils' +import { loadJSON } from './utils' +import { loadTexture } from './utils.web' import { EventEmitter } from 'events' import mcDataRaw from 'minecraft-data/data.js'; // handled correctly in esbuild plugin import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' @@ -113,28 +114,24 @@ export abstract class WorldRendererCommon texture.minFilter = THREE.NearestFilter texture.flipY = false this.material.map = texture - this.material.map.onUpdate = () => { - this.downloadedTextureImage = this.material.map!.image - } - // TODO - setTimeout(() => { - const loadBlockStates = async () => { - return new Promise(resolve => { - if (this.customBlockStatesData) return resolve(this.customBlockStatesData) - return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { - this.downloadedBlockStatesData = data - // todo - this.renderUpdateEmitter.emit('blockStatesDownloaded') - resolve(data) - }) + }, (tex) => { + this.downloadedTextureImage = this.material.map!.image + const loadBlockStates = async () => { + return new Promise(resolve => { + if (this.customBlockStatesData) return resolve(this.customBlockStatesData) + return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { + this.downloadedBlockStatesData = data + // todo + this.renderUpdateEmitter.emit('blockStatesDownloaded') + resolve(data) }) - } - loadBlockStates().then((blockStates) => { - for (const worker of this.workers) { - worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: texture.image.width }) - } }) - }, 500) + } + loadBlockStates().then((blockStates) => { + for (const worker of this.workers) { + worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: tex.image.width }) + } + }) }) } From 662c823c23bffbaeb1f91ca68f5fb3a692836d8e Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Thu, 11 Apr 2024 20:19:32 +0300 Subject: [PATCH 080/303] [pick] fix alias set --- scripts/githubActions.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/githubActions.mjs b/scripts/githubActions.mjs index 94a64506b..ab786ea94 100644 --- a/scripts/githubActions.mjs +++ b/scripts/githubActions.mjs @@ -6,10 +6,10 @@ const fns = { async getAlias () { const aliasesRaw = process.env.ALIASES if (!aliasesRaw) throw new Error('No aliases found') - const aliases = aliasesRaw.split('\n').map((x) => x.split('=')) + const aliases = aliasesRaw.split('\n').map((x) => x.trim().split('=')) const githubActionsPull = process.env.PULL_URL?.split('/').at(-1) if (!githubActionsPull) throw new Error(`Not a pull request, got ${process.env.PULL_URL}`) - const prNumber = githubActionsPull[1] + const prNumber = githubActionsPull const alias = aliases.find((x) => x[0] === prNumber) if (alias) { // set github output From e9ca5cf3d2205eb3807f1471366930890810ba8f Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 12 Apr 2024 19:28:36 +0300 Subject: [PATCH 081/303] fix playground and slow cam move in worker --- prismarine-viewer/examples/playground.ts | 4 ++-- prismarine-viewer/examples/webglRendererWorker.ts | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index d1752a3fe..a5c9f6720 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -74,13 +74,13 @@ async function main () { // const { version } = params let fixtureUrl = qs.get('fixture') - let fixture + let fixture: undefined | Record if (fixtureUrl) { console.log('Loading fixture') fixture = await fetch(fixtureUrl).then(r => r.json()) console.log('Loaded fixture') } - const version = fixture.version ?? '1.20.2' + const version = fixture?.version ?? '1.20.2' // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index daf19b23d..5f5c0161d 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -5,6 +5,7 @@ import VertShader from './_VertexShader.vert' //@ts-ignore import FragShader from './_FragmentShader.frag' import { BlockFaceType, BlockType } from './shared' +import * as tweenJs from '@tweenjs/tween.js' let allSides = [] as [number, number, number, BlockFaceType][] let allSidesAdded = 0 @@ -380,11 +381,12 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im gl.clear(gl.DEPTH_BUFFER_BIT) + tweenJs.update() + camera.updateMatrix() gl.uniformMatrix4fv(ViewUniform, false, camera.matrix.invert().elements); gl.uniformMatrix4fv(ProjectionUniform, false, camera.projectionMatrix.elements); gl.uniform1i(TickUniform, animationTick); - camera.updateMatrix() if (!globalThis.stopRendering) { gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSidesAdded)); needsSidesUpdate = false @@ -504,7 +506,8 @@ onmessage = function (e) { } if (e.data.type === 'camera') { camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') - camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + // camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 300).start() // 50 } if (e.data.type === 'animationTick') { if (e.data.frames <= 0) { From 4e1257cb7c2ee7d6aab1c3e68e4429ebc98583dc Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 12 Apr 2024 19:33:03 +0300 Subject: [PATCH 082/303] fix cam fixtup --- prismarine-viewer/viewer/lib/viewer.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index de678b14a..5d2f0921f 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -31,7 +31,7 @@ export class Viewer { fxaaPass: ShaderPass renderPass: RenderPass - constructor(public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { + constructor (public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { // https://discourse.threejs.org/t/updates-to-color-management-in-three-js-r152/50791 THREE.ColorManagement.enabled = false renderer.outputColorSpace = THREE.LinearSRGBColorSpace @@ -115,7 +115,7 @@ export class Viewer { if (pos) { let y = pos.y + this.playerHeight if (this.isSneaking) y -= 0.3 - new tweenJs.Tween(cam.position).to({ x: pos.x, y, z: pos.z }, 50).start() + // new tweenJs.Tween(cam.position).to({ x: pos.x, y, z: pos.z }, 50).start() } cam.rotation.set(pitch, yaw, roll, 'ZYX') sendCameraToWorker() @@ -197,7 +197,7 @@ export class Viewer { } update () { - tweenJs.update() + // tweenJs.update() } render () { From 6c5fdbdc5e5da054a4cb1a8f4baa4969e8ab2a56 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 12 Apr 2024 19:38:12 +0300 Subject: [PATCH 083/303] another fixup for cam pos --- prismarine-viewer/viewer/lib/viewer.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 5d2f0921f..a01bd1c32 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -116,6 +116,7 @@ export class Viewer { let y = pos.y + this.playerHeight if (this.isSneaking) y -= 0.3 // new tweenJs.Tween(cam.position).to({ x: pos.x, y, z: pos.z }, 50).start() + cam.position.set(pos.x, y, pos.z) } cam.rotation.set(pitch, yaw, roll, 'ZYX') sendCameraToWorker() From 3c4996f1ef762e8fbc98d2ffa28ce3e41ef89d61 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 14 Apr 2024 18:37:12 +0300 Subject: [PATCH 084/303] impl removal, fix cam --- .../examples/webglRendererWorker.ts | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts index 5f5c0161d..9f59ba59b 100644 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ b/prismarine-viewer/examples/webglRendererWorker.ts @@ -7,7 +7,7 @@ import FragShader from './_FragmentShader.frag' import { BlockFaceType, BlockType } from './shared' import * as tweenJs from '@tweenjs/tween.js' -let allSides = [] as [number, number, number, BlockFaceType][] +let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] let allSidesAdded = 0 let needsSidesUpdate = false @@ -216,6 +216,7 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im // up2 const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) newSides.sort((a, b) => { + if (!a || !b) return 0 const getScore = (b: BlockFaceType) => b.isTransparent ? 1 : 0 return getScore(a[3]) - getScore(b[3]) }) @@ -225,10 +226,12 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im sideIndexes = new Float32Array(newSides.length * 1); sideBiomeColor = new Float32Array(newSides.length * 3); for (let i = 0; i < newSides.length * 3; i += 3) { - sidePositions[i] = newSides[i / 3][0] - sidePositions[i + 1] = newSides[i / 3][1] - sidePositions[i + 2] = newSides[i / 3][2] - const block = newSides[i / 3][3] as BlockFaceType + const newSide = newSides[i / 3]; + if (!newSide) continue + sidePositions[i] = newSide[0] + sidePositions[i + 1] = newSide[1] + sidePositions[i + 2] = newSide[2] + const block = newSide[3] as BlockFaceType if (block.tint) { const [r, g, b] = block.tint sideBiomeColor[i] = r @@ -280,9 +283,18 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im allSidesAdded = allSides.length needsSidesUpdate = true + lastNotUpdatedArrSize = undefined } globalThis.updateCubes = updateCubes + globalThis.resetHalfScene = () => { + for (let i = 0; i < allSides.length / 2; i++) { + allSides[i] = undefined + } + lastNotUpdatedIndex = 0 + lastNotUpdatedArrSize = allSides.length / 2 + updateCubes(0) + } const cleanupFirstChunks = () => { allSides = [] gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); @@ -489,12 +501,19 @@ onmessage = function (e) { // updateCubes?.(currentLength) } if (e.data.type === 'addBlocksSectionDone') { - updateCubes?.(lastNotUpdatedIndex) + updateCubesWhenAvailable(lastNotUpdatedIndex) lastNotUpdatedIndex = undefined lastNotUpdatedArrSize = undefined } if (e.data.type === 'removeBlocksSection') { - // const [startIndex, endIndex] = chunksArrIndexes[e.data.key] + // fill data with 0 + const [startIndex, endIndex] = chunksArrIndexes[e.data.key] + for (let i = startIndex; i < endIndex; i++) { + allSides[i] = undefined + } + lastNotUpdatedArrSize = endIndex - startIndex + updateCubes(startIndex) + // freeArrayIndexes.push([startIndex, endIndex]) // // merge freeArrayIndexes TODO @@ -507,7 +526,12 @@ onmessage = function (e) { if (e.data.type === 'camera') { camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') // camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) - new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 300).start() // 50 + if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === 0) { + // initial camera position + camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + } else { + new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 50).start() + } } if (e.data.type === 'animationTick') { if (e.data.frames <= 0) { From 137666c65c6da9cb6db6eb6767fb7d76d9fe3d34 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sun, 14 Apr 2024 18:43:19 +0300 Subject: [PATCH 085/303] FIX waitForChunksToRender ! fix a lot of worker issues! implement allChunksLoaded method correctly!! --- prismarine-viewer/examples/webglRenderer.ts | 21 ++++--- prismarine-viewer/viewer/lib/models.ts | 2 +- prismarine-viewer/viewer/lib/viewer.ts | 3 +- prismarine-viewer/viewer/lib/worker.js | 54 ++++++++++------- prismarine-viewer/viewer/lib/world.ts | 1 + .../viewer/lib/worldrendererCommon.ts | 60 +++++++++++++++---- .../viewer/lib/worldrendererThree.ts | 1 + .../viewer/lib/worldrendererWebgl.ts | 27 +++++++-- 8 files changed, 119 insertions(+), 50 deletions(-) diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webglRenderer.ts index b3811b36b..1047a50f2 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webglRenderer.ts @@ -35,16 +35,15 @@ export const addBlocksSection = (key, data) => { sendWorkerMessage({ type: 'addBlocksSection', data, key }) - if (isWaitingToUpload) return - isWaitingToUpload = true - viewer.waitForChunksToRender().then(() => { - isWaitingToUpload = false - if (allReceived || (true && Object.values(viewer.world.newChunks).length)) { - sendWorkerMessage({ - type: 'addBlocksSectionDone' - }) - } - }) + if (playground && !isWaitingToUpload) { + isWaitingToUpload = true + // viewer.waitForChunksToRender().then(() => { + // isWaitingToUpload = false + // sendWorkerMessage({ + // type: 'addBlocksSectionDone' + // }) + // }) + } } export const loadFixtureSides = (json) => { @@ -75,7 +74,7 @@ export const removeBlocksSection = (key) => { let playground = false export const initWebglRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { - playground = playgroundModeInWorker + playground = actuallyPlayground await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) // viewer.world.material.map!.image.onload = () => { diff --git a/prismarine-viewer/viewer/lib/models.ts b/prismarine-viewer/viewer/lib/models.ts index b5ef1871c..4c82b030e 100644 --- a/prismarine-viewer/viewer/lib/models.ts +++ b/prismarine-viewer/viewer/lib/models.ts @@ -811,7 +811,7 @@ function getModelVariants (block: import('prismarine-block').Block) { return [] } -export const setBlockStatesAndData = (_blockStates: BlockStatesOutput | null, _textureSize: number) => { +export const setRendererData = (_blockStates: BlockStatesOutput | null, _textureSize: number) => { textureSize = _textureSize blockStates = _blockStates! } diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index a01bd1c32..01864cb3c 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -181,7 +181,8 @@ export class Viewer { }) emitter.on('renderDistance', (d) => { - this.world.chunksLength = generateSpiralMatrix(d).length + this.world.viewDistance = d + this.world.chunksLength = d === 0 ? 1 : generateSpiralMatrix(d).length }) emitter.emit('listening') diff --git a/prismarine-viewer/viewer/lib/worker.js b/prismarine-viewer/viewer/lib/worker.js index 5bf7dabc2..bcc2b06ca 100644 --- a/prismarine-viewer/viewer/lib/worker.js +++ b/prismarine-viewer/viewer/lib/worker.js @@ -1,3 +1,4 @@ +//@ts-check /* global postMessage self */ if (!global.self) { @@ -12,10 +13,11 @@ if (!global.self) { const { Vec3 } = require('vec3') const { World } = require('./world') -const { getSectionGeometry, setBlockStatesAndData } = require('./models') +const { getSectionGeometry, setRendererData } = require('./models') let world = null -let dirtySections = {} +/** @type {Map} */ +let dirtySections = new Map() let blockStatesReady = false function sectionKey (x, y, z) { @@ -26,24 +28,31 @@ function setSectionDirty (pos, value = true) { const x = Math.floor(pos.x / 16) * 16 const y = Math.floor(pos.y / 16) * 16 const z = Math.floor(pos.z / 16) * 16 - const chunk = world.getColumn(x, z) const key = sectionKey(x, y, z) if (!value) { - delete dirtySections[key] + dirtySections.delete(key) postMessage({ type: 'sectionFinished', key }) - } else if (chunk?.getSection(pos)) { - dirtySections[key] = value + return + } + + const chunk = world.getColumn(x, z); + if (chunk?.getSection(pos)) { + dirtySections.set(key, (dirtySections.get(key) || 0) + 1) } else { postMessage({ type: 'sectionFinished', key }) } } self.onmessage = ({ data }) => { + /** @type {any} */ + const globalVar = globalThis; + if (data.type === 'mcData') { - globalThis.mcData = data.mcData + globalVar.mcData = data.mcData world = new World(data.version) - } else if (data.type === 'blockStates') { - setBlockStatesAndData(data.json, data.textureSize) + } else if (data.type === 'rendererData') { + setRendererData(data.json, data.textureSize) + world.outputFormat = data.outputFormat ?? world.outputFormat blockStatesReady = true } else if (data.type === 'dirty') { const loc = new Vec3(data.x, data.y, data.z) @@ -57,35 +66,38 @@ self.onmessage = ({ data }) => { world.setBlockStateId(loc, data.stateId) } else if (data.type === 'reset') { world = null - blocksStates = null - dirtySections = {} + // blocksStates = null + dirtySections = new Map() // todo also remove cached - globalThis.mcData = null + globalVar.mcData = null blockStatesReady = false } } setInterval(() => { if (world === null || !blockStatesReady) return - const sections = Object.keys(dirtySections) - if (sections.length === 0) return + if (dirtySections.size === 0) return // console.log(sections.length + ' dirty sections') // const start = performance.now() - for (const key of sections) { - let [x, y, z] = key.split(',') - x = parseInt(x, 10) - y = parseInt(y, 10) - z = parseInt(z, 10) + for (const key of dirtySections.keys()) { + let [x, y, z] = key.split(',').map(v => parseInt(v, 10)) const chunk = world.getColumn(x, z) if (chunk?.getSection(new Vec3(x, y, z))) { - delete dirtySections[key] const geometry = getSectionGeometry(x, y, z, world) const transferable = [geometry.positions.buffer, geometry.normals.buffer, geometry.colors.buffer, geometry.uvs.buffer] + //@ts-ignore postMessage({ type: 'geometry', key, geometry }, transferable) + } else { + console.info('[mesher] Missing section', x, y, z) } - postMessage({ type: 'sectionFinished', key }) + const dirtyTimes = dirtySections.get(key); + if (!dirtyTimes) throw new Error('dirtySections.get(key) is falsy') + for (let i = 0; i < dirtyTimes; i++) { + postMessage({ type: 'sectionFinished', key }) + } + dirtySections.delete(key) } // const time = performance.now() - start // console.log(`Processed ${sections.length} sections in ${time} ms (${time / sections.length} ms/section)`) diff --git a/prismarine-viewer/viewer/lib/world.ts b/prismarine-viewer/viewer/lib/world.ts index d0075dce0..9aa5311a4 100644 --- a/prismarine-viewer/viewer/lib/world.ts +++ b/prismarine-viewer/viewer/lib/world.ts @@ -31,6 +31,7 @@ export type WorldBlock = Block & { } export class World { + outputFormat = 'threeJs' as 'threeJs' | 'webgl' Chunk: any/* import('prismarine-chunk/types/index').PCChunk */ columns = {} blockCache = {} diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index 05a4c801b..ffa764121 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -6,6 +6,7 @@ import { EventEmitter } from 'events' import mcDataRaw from 'minecraft-data/data.js'; // handled correctly in esbuild plugin import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' import { toMajor } from './version.js' +import { chunkPos } from './simpleUtils' function mod (x, n) { return ((x % n) + n) % n @@ -20,7 +21,8 @@ export abstract class WorldRendererCommon active = false version = undefined as string | undefined loadedChunks = {} as Record - sectionsOutstanding = new Set() + finishedChunks = {} as Record + sectionsOutstanding = new Map() renderUpdateEmitter = new EventEmitter() customBlockStatesData = undefined as any customTexturesDataUrl = undefined as string | undefined @@ -33,9 +35,13 @@ export abstract class WorldRendererCommon initialChunksLoad = true enableChunksLoadDelay = false texturesVersion?: string + viewDistance = -1 + chunksLength = 0 // promisesQueue = [] as Promise[] - constructor(numWorkers: number) { + abstract outputFormat: 'threeJs' | 'webgl' + + constructor (numWorkers: number) { // init workers for (let i = 0; i < numWorkers; i++) { // Node environment needs an absolute path, but browser needs the url of the file @@ -51,7 +57,27 @@ export abstract class WorldRendererCommon setTimeout(resolve, 0) }) if (data.type === 'sectionFinished') { - this.sectionsOutstanding.delete(data.key) + if (!this.sectionsOutstanding.get(data.key)) throw new Error(`sectionFinished event for non-outstanding section ${data.key}`) + this.sectionsOutstanding.set(data.key, this.sectionsOutstanding.get(data.key)! - 1) + if (this.sectionsOutstanding.get(data.key) === 0) this.sectionsOutstanding.delete(data.key) + + const chunkCoords = data.key.split(',').map(Number) + if (this.loadedChunks[`${chunkCoords[0]},${chunkCoords[2]}`]) { // ensure chunk data was added, not a neighbor chunk update + const loadingKeys = [...this.sectionsOutstanding.keys()] + if (!loadingKeys.some(key => { + const [x, y, z] = key.split(',').map(Number) + return x === chunkCoords[0] && z === chunkCoords[2] + })) { + this.finishedChunks[`${chunkCoords[0]},${chunkCoords[2]}`] = true + } + } + if (this.sectionsOutstanding.size === 0) { + const allFinished = Object.keys(this.finishedChunks).length === this.chunksLength + if (allFinished) { + this.allChunksLoaded?.() + } + } + this.renderUpdateEmitter.emit('update') } } @@ -65,13 +91,15 @@ export abstract class WorldRendererCommon /** * Optionally update data that are depedendent on the viewer position */ - abstract updatePosDataChunk (key: string): void + updatePosDataChunk?(key: string): void + + allChunksLoaded?(): void updateViewerPosition (pos: Vec3) { this.viewerPosition = pos for (const [key, value] of Object.entries(this.loadedChunks)) { if (!value) continue - this.updatePosDataChunk(key) + this.updatePosDataChunk?.(key) } } @@ -81,12 +109,19 @@ export abstract class WorldRendererCommon } } + getDistance (posAbsolute: Vec3) { + const [botX, botZ] = chunkPos(this.viewerPosition!) + const dx = Math.abs(botX - Math.floor(posAbsolute.x / 16)) + const dz = Math.abs(botZ - Math.floor(posAbsolute.z / 16)) + return [dx, dz] as [number, number] + } + abstract updateShowChunksBorder (value: boolean): void resetWorld () { this.active = false this.loadedChunks = {} - this.sectionsOutstanding = new Set() + this.sectionsOutstanding = new Map() for (const worker of this.workers) { worker.postMessage({ type: 'reset' }) } @@ -129,7 +164,7 @@ export abstract class WorldRendererCommon } loadBlockStates().then((blockStates) => { for (const worker of this.workers) { - worker.postMessage({ type: 'blockStates', json: blockStates, textureSize: tex.image.width }) + worker.postMessage({ type: 'rendererData', json: blockStates, textureSize: tex.image.width, outputFormat: this.outputFormat }) } }) }) @@ -159,7 +194,7 @@ export abstract class WorldRendererCommon } } - setBlockStateId (pos, stateId) { + setBlockStateId (pos: Vec3, stateId: number) { for (const worker of this.workers) { worker.postMessage({ type: 'blockUpdate', pos, stateId }) } @@ -172,14 +207,19 @@ export abstract class WorldRendererCommon if ((pos.z & 15) === 15) this.setSectionDirty(pos.offset(0, 0, 16)) } - setSectionDirty (pos, value = true) { + setSectionDirty (pos: Vec3, value = true) { + if (this.viewDistance === -1) throw new Error('viewDistance not set') + const distance = this.getDistance(pos) + if (distance[0] > this.viewDistance || distance[1] > this.viewDistance) return + const key = `${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}`; + // if (this.sectionsOutstanding.has(key)) return this.renderUpdateEmitter.emit('dirty', pos, value) // Dispatch sections to workers based on position // This guarantees uniformity accross workers and that a given section // is always dispatched to the same worker const hash = mod(Math.floor(pos.x / 16) + Math.floor(pos.y / 16) + Math.floor(pos.z / 16), this.workers.length) + this.sectionsOutstanding.set(key, (this.sectionsOutstanding.get(key) ?? 0) + 1) this.workers[hash].postMessage({ type: 'dirty', x: pos.x, y: pos.y, z: pos.z, value }) - this.sectionsOutstanding.add(`${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}`) } // Listen for chunk rendering updates emitted if a worker finished a render and resolve if the number diff --git a/prismarine-viewer/viewer/lib/worldrendererThree.ts b/prismarine-viewer/viewer/lib/worldrendererThree.ts index 553c2360a..5c17153f8 100644 --- a/prismarine-viewer/viewer/lib/worldrendererThree.ts +++ b/prismarine-viewer/viewer/lib/worldrendererThree.ts @@ -12,6 +12,7 @@ function mod (x, n) { } export class WorldRendererThree extends WorldRendererCommon { + outputFormat = 'threeJs' as const blockEntities = {} sectionObjects: Record = {} showChunkBorders = false diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index 15fa587ce..a8dcfff06 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -1,3 +1,4 @@ +import { Vec3 } from 'vec3' import { updateStatText } from '../../examples/newStats' import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webglRenderer' import type { WebglData } from '../prepare/webglData' @@ -5,13 +6,19 @@ import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' export class WorldRendererWebgl extends WorldRendererCommon { + outputFormat = 'webgl' as const newChunks = {} as Record webglData: WebglData stopBlockUpdate = false - chunksLength = 0 + lastChunkDistance = 0 constructor(numWorkers = 4) { super(numWorkers) + + this.renderUpdateEmitter.on('update', () => { + const loadedChunks = Object.keys(this.finishedChunks).length; + updateStatText('loaded-chunks', `${loadedChunks}/${this.chunksLength} chunks (${this.lastChunkDistance})`) + }) } playgroundGetWebglData () { @@ -29,16 +36,25 @@ export class WorldRendererWebgl extends WorldRendererCommon { super.setBlockStateId(pos, stateId) } + isWaitingForChunksToRender = false + + allChunksLoaded (): void { + console.log('allChunksLoaded') + sendWorkerMessage({ + type: 'addBlocksSectionDone' + }) + } + handleWorkerMessage (data: any): void { if (data.type === 'geometry' && Object.keys(data.geometry.blocks).length) { - const chunkCoords = data.key.split(',') + const chunkCoords = data.key.split(',').map(Number) as [number, number, number] if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return addBlocksSection(data.key, data.geometry) - const chunkDistance = Math.round(Math.max(Math.abs((chunkCoords[0]) - this.viewerPosition!.x) / 16, Math.abs(chunkCoords[2] - this.viewerPosition!.y) / 16)) - updateStatText('loaded-chunks', Object.keys(this.loadedChunks).length + `/${this.chunksLength} chunks (${chunkDistance})`) - // const blocks = Object.values(data.geometry.blocks) as any[] + this.lastChunkDistance = Math.max(...this.getDistance(new Vec3(chunkCoords[0], 0, chunkCoords[2]))) + + // todo this.newChunks[data.key] = data.geometry } } @@ -65,7 +81,6 @@ export class WorldRendererWebgl extends WorldRendererCommon { removeColumn (x, z) { - return console.log('removeColumn', x, z) super.removeColumn(x, z) for (const key of Object.keys(this.newChunks)) { From 130daac35e6c48c69b67c8812fb67dd8f226aa2c Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 21 May 2024 23:14:03 +0300 Subject: [PATCH 086/303] triangle --- package.json | 1 + pnpm-lock.yaml | 19664 +++++++++------- .../examples/_FragmentShader.frag | 33 +- prismarine-viewer/examples/_VertexShader.vert | 97 +- prismarine-viewer/examples/playground.ts | 19 +- ...webglRenderer.ts => webgpuRendererMain.ts} | 8 +- .../examples/webgpuRendererWorker.ts | 486 + src/index.ts | 4 +- 8 files changed, 11691 insertions(+), 8621 deletions(-) rename prismarine-viewer/examples/{webglRenderer.ts => webgpuRendererMain.ts} (95%) create mode 100644 prismarine-viewer/examples/webgpuRendererWorker.ts diff --git a/package.json b/package.json index 04cf44adb..09079230d 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "@types/react": "^18.2.20", "@types/react-dom": "^18.2.7", "@types/wicg-file-system-access": "^2023.10.2", + "@webgpu/types": "^0.1.40", "@xmcl/text-component": "^2.1.3", "@zardoy/react-util": "^0.2.0", "@zardoy/utils": "^0.0.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81363a742..bbeaefffa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -20,19 +20,19 @@ importers: dependencies: '@dimaka/interface': specifier: 0.0.3-alpha.0 - version: 0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + version: 0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@floating-ui/react': specifier: ^0.26.1 - version: 0.26.1(react-dom@18.2.0)(react@18.2.0) + version: 0.26.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@mui/base': specifier: 5.0.0-beta.34 - version: 5.0.0-beta.34(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + version: 5.0.0-beta.34(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@nxg-org/mineflayer-tracker': specifier: ^1.2.1 version: 1.2.1 '@react-oauth/google': specifier: ^0.12.1 - version: 0.12.1(react-dom@18.2.0)(react@18.2.0) + version: 0.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@types/gapi': specifier: ^0.0.47 version: 0.0.47 @@ -45,18 +45,21 @@ importers: '@types/wicg-file-system-access': specifier: ^2023.10.2 version: 2023.10.2 + '@webgpu/types': + specifier: ^0.1.40 + version: 0.1.40 '@xmcl/text-component': specifier: ^2.1.3 version: 2.1.3 '@zardoy/react-util': specifier: ^0.2.0 - version: 0.2.0(react-dom@18.2.0)(react@18.2.0) + version: 0.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@zardoy/utils': specifier: ^0.0.11 version: 0.0.11 browserfs: specifier: github:zardoy/browserfs#build - version: github.com/zardoy/browserfs/e60ca69e74888e057a96a468afe1d62347d3f56f + version: https://codeload.github.com/zardoy/browserfs/tar.gz/e60ca69e74888e057a96a468afe1d62347d3f56f change-case: specifier: ^5.1.2 version: 5.1.2 @@ -86,13 +89,13 @@ importers: version: 4.18.2 flying-squid: specifier: npm:@zardoy/flying-squid@^0.0.15 - version: /@zardoy/flying-squid@0.0.15 + version: '@zardoy/flying-squid@0.0.15(encoding@0.1.13)' fs-extra: specifier: ^11.1.1 version: 11.1.1 google-drive-browserfs: specifier: github:zardoy/browserfs#google-drive - version: github.com/zardoy/browserfs/ab58ae8ef00e3a31db01909e365e6cb5188436e0 + version: browserfs@https://codeload.github.com/zardoy/browserfs/tar.gz/ab58ae8ef00e3a31db01909e365e6cb5188436e0 iconify-icon: specifier: ^1.0.8 version: 1.0.8 @@ -116,7 +119,7 @@ importers: version: 3.62.0 net-browserify: specifier: github:zardoy/prismarinejs-net-browserify - version: github.com/zardoy/prismarinejs-net-browserify/7d827dba61bd2f9ac9a6086fe2079a0fccadd070 + version: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/7d827dba61bd2f9ac9a6086fe2079a0fccadd070 node-gzip: specifier: ^1.1.2 version: 1.1.2 @@ -128,7 +131,7 @@ importers: version: 6.1.1 prismarine-provider-anvil: specifier: github:zardoy/prismarine-provider-anvil#everything - version: github.com/zardoy/prismarine-provider-anvil/0ddcd9d48574113308e1fbebef60816aced0846f(minecraft-data@3.62.0) + version: https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/02d81b0eba6ab1c362862970954f9a3c150c9a29(minecraft-data@3.62.0) prosemirror-example-setup: specifier: ^1.2.2 version: 1.2.2 @@ -152,7 +155,7 @@ importers: version: 18.2.0(react@18.2.0) react-transition-group: specifier: ^4.4.5 - version: 4.4.5(react-dom@18.2.0)(react@18.2.0) + version: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) remark: specifier: ^15.0.1 version: 15.0.1 @@ -188,7 +191,7 @@ importers: version: 1.11.2(@types/react@18.2.20)(react@18.2.0) workbox-build: specifier: ^7.0.0 - version: 7.0.0 + version: 7.0.0(@types/babel__core@7.20.2) optionalDependencies: systeminformation: specifier: ^5.21.22 @@ -196,25 +199,25 @@ importers: devDependencies: '@storybook/addon-essentials': specifier: ^7.4.6 - version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-links': specifier: ^7.4.6 - version: 7.4.6(react-dom@18.2.0)(react@18.2.0) + version: 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/blocks': specifier: ^7.4.6 - version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/react': specifier: ^7.4.6 - version: 7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) + version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2) '@storybook/react-vite': specifier: ^7.4.6 - version: 7.4.6(react-dom@18.2.0)(react@18.2.0)(rollup@2.79.1)(typescript@5.2.2)(vite@4.5.2) + version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) '@storybook/web-components': specifier: ^7.4.6 - version: 7.4.6(lit@2.8.0)(react-dom@18.2.0)(react@18.2.0) + version: 7.4.6(encoding@0.1.13)(lit@2.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/web-components-vite': specifier: ^7.4.6 - version: 7.4.6(lit@2.8.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.2) + version: 7.4.6(encoding@0.1.13)(lit@2.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) '@types/lodash-es': specifier: ^4.17.9 version: 4.17.9 @@ -262,7 +265,7 @@ importers: version: 8.50.0 eslint-config-zardoy: specifier: ^0.2.17 - version: 0.2.17(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0)(typescript@5.2.2) + version: 0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.2.2) events: specifier: ^3.3.0 version: 3.3.0 @@ -280,10 +283,10 @@ importers: version: 1.0.0 minecraft-inventory-gui: specifier: github:zardoy/minecraft-inventory-gui#next - version: github.com/zardoy/minecraft-inventory-gui/6685fa4a10590a5decef90a454ba0b9e045e7737(@types/react@18.2.20)(react@18.2.0) + version: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/5554c7ab0a74bce52aa5f5f04a48eb8d3b9ac65c(@types/react@18.2.20)(react@18.2.0) mineflayer: specifier: github:PrismarineJS/mineflayer - version: github.com/PrismarineJS/mineflayer/195b3cbd70a110080af9b77a4659991c5d9e484a + version: https://codeload.github.com/PrismarineJS/mineflayer/tar.gz/ec76468c8ac4c6232bad3c2b66d4160f95f58396(encoding@0.1.13) mineflayer-pathfinder: specifier: ^2.4.4 version: 2.4.4 @@ -304,13 +307,13 @@ importers: version: link:prismarine-viewer process: specifier: github:PrismarineJS/node-process - version: github.com/PrismarineJS/node-process/380d0b4f4c86f1b65b216c311bf00431f314e88e + version: https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e rimraf: specifier: ^5.0.1 version: 5.0.1 storybook: specifier: ^7.4.6 - version: 7.4.6 + version: 7.4.6(encoding@0.1.13) stream-browserify: specifier: ^3.0.0 version: 3.0.0 @@ -328,7 +331,7 @@ importers: version: 4.0.2(react@18.2.0)(typescript@5.2.2) vitest: specifier: ^0.34.6 - version: 0.34.6 + version: 0.34.6(terser@5.19.2) yaml: specifier: ^2.3.2 version: 2.3.2 @@ -346,7 +349,7 @@ importers: version: 6.0.3 canvas: specifier: ^2.11.2 - version: 2.11.2 + version: 2.11.2(encoding@0.1.13) filesize: specifier: ^10.0.12 version: 10.0.12 @@ -364,13 +367,13 @@ importers: version: 8.2.3 minecraft-wrap: specifier: ^1.3.0 - version: 1.5.1 + version: 1.5.1(encoding@0.1.13) minecrafthawkeye: specifier: ^1.3.6 version: 1.3.6 prismarine-block: specifier: github:zardoy/prismarine-block#next-era - version: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 + version: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 prismarine-chunk: specifier: ^1.22.0 version: 1.35.0(minecraft-data@3.62.0) @@ -404,2750 +407,1499 @@ importers: optionalDependencies: node-canvas-webgl: specifier: ^0.3.0 - version: 0.3.0 + version: 0.3.0(encoding@0.1.13) prismarine-viewer/viewer/sign-renderer: dependencies: vite: specifier: ^4.4.9 - version: 4.4.10(@types/node@20.8.0) + version: 4.4.10(@types/node@20.11.19)(terser@5.19.2) packages: - /@aashutoshrathi/word-wrap@1.2.6: + '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true - /@ampproject/remapping@2.2.1: + '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - /@apideck/better-ajv-errors@0.3.6(ajv@8.12.0): + '@apideck/better-ajv-errors@0.3.6': resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} peerDependencies: ajv: '>=8' - dependencies: - ajv: 8.12.0 - json-schema: 0.4.0 - jsonpointer: 5.0.1 - leven: 3.1.0 - dev: false - /@aw-web-design/x-default-browser@1.4.126: + '@aw-web-design/x-default-browser@1.4.126': resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} hasBin: true - dependencies: - default-browser-id: 3.0.0 - dev: true - /@azure/msal-common@14.7.0: + '@azure/msal-common@14.7.0': resolution: {integrity: sha512-WexujW5jKWib7xtIxR7fEVyd5xcA3FNwenELy2HO4YC/ivTFdsEcDhtpKQuRUHqXRwxoqBblyZzTAhBm4v6fHA==} engines: {node: '>=0.8.0'} - /@azure/msal-node@2.6.3: + '@azure/msal-node@2.6.3': resolution: {integrity: sha512-ojjJqUwb297T5Tcln4PbJANFEqRXfbQXcyOrtdr1HQYIo+dSuCT/o0nG6bFVihf6fcNykDwJLCQPVXzTkx/oGg==} engines: {node: '>=16'} - dependencies: - '@azure/msal-common': 14.7.0 - jsonwebtoken: 9.0.2 - uuid: 8.3.2 - /@babel/code-frame@7.22.13: + '@babel/code-frame@7.22.13': resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.13 - chalk: 2.4.2 - /@babel/compat-data@7.22.9: + '@babel/compat-data@7.22.9': resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.11: + '@babel/core@7.22.11': resolution: {integrity: sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helpers': 7.22.11 - '@babel/parser': 7.22.13 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/generator@7.22.10: + '@babel/generator@7.22.10': resolution: {integrity: sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.22.5: + '@babel/helper-annotate-as-pure@7.22.5': resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.10: + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.10': resolution: {integrity: sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-compilation-targets@7.22.10: + '@babel/helper-compilation-targets@7.22.10': resolution: {integrity: sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.10 - lru-cache: 5.1.1 - semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.22.11): + '@babel/helper-create-class-features-plugin@7.22.11': resolution: {integrity: sha512-y1grdYL4WzmUDBRGK0pDbIoFd7UZKoDurDzWEoNMYoj1EL+foGRQNyPWDcC+YyegN5y1DUsFFmzjGijB3nSVAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.11): + '@babel/helper-create-class-features-plugin@7.22.15': resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - semver: 6.3.1 - dev: true - /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.11): + '@babel/helper-create-regexp-features-plugin@7.22.9': resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.11): + '@babel/helper-define-polyfill-provider@0.4.2': resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.4 - transitivePeerDependencies: - - supports-color - /@babel/helper-environment-visitor@7.22.20: + '@babel/helper-environment-visitor@7.22.20': resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-environment-visitor@7.22.5: + '@babel/helper-environment-visitor@7.22.5': resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - /@babel/helper-function-name@7.22.5: + '@babel/helper-function-name@7.22.5': resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.11 - /@babel/helper-hoist-variables@7.22.5: + '@babel/helper-hoist-variables@7.22.5': resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-member-expression-to-functions@7.22.5: + '@babel/helper-member-expression-to-functions@7.22.5': resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-member-expression-to-functions@7.23.0: + '@babel/helper-member-expression-to-functions@7.23.0': resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-module-imports@7.22.15: + '@babel/helper-module-imports@7.22.15': resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - /@babel/helper-module-imports@7.22.5: + '@babel/helper-module-imports@7.22.5': resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11): + '@babel/helper-module-transforms@7.22.9': resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 - /@babel/helper-module-transforms@7.23.0(@babel/core@7.22.11): + '@babel/helper-module-transforms@7.23.0': resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/helper-optimise-call-expression@7.22.5: + '@babel/helper-optimise-call-expression@7.22.5': resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-plugin-utils@7.22.5: + '@babel/helper-plugin-utils@7.22.5': resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.11): + '@babel/helper-remap-async-to-generator@7.22.9': resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-wrap-function': 7.22.10 - /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.11): + '@babel/helper-replace-supers@7.22.9': resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-member-expression-to-functions': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - /@babel/helper-simple-access@7.22.5: + '@babel/helper-simple-access@7.22.5': resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-split-export-declaration@7.22.6: + '@babel/helper-split-export-declaration@7.22.6': resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.22.11 - /@babel/helper-string-parser@7.22.5: + '@babel/helper-string-parser@7.22.5': resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.20: + '@babel/helper-validator-identifier@7.22.20': resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier@7.22.5: + '@babel/helper-validator-identifier@7.22.5': resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.15: + '@babel/helper-validator-option@7.22.15': resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-option@7.22.5: + '@babel/helper-validator-option@7.22.5': resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function@7.22.10: + '@babel/helper-wrap-function@7.22.10': resolution: {integrity: sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.22.5 - '@babel/template': 7.22.5 - '@babel/types': 7.22.11 - /@babel/helpers@7.22.11: + '@babel/helpers@7.22.11': resolution: {integrity: sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 - transitivePeerDependencies: - - supports-color - /@babel/highlight@7.22.13: + '@babel/highlight@7.22.13': resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - /@babel/parser@7.22.13: + '@babel/parser@7.22.13': resolution: {integrity: sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw==} engines: {node: '>=6.0.0'} hasBin: true - dependencies: - '@babel/types': 7.22.11 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.11): + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5': resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.11): + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5': resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.12(@babel/core@7.22.11) - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.11): + '@babel/plugin-proposal-class-properties@7.18.6': resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.11): + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) - dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.11): + '@babel/plugin-proposal-optional-chaining@7.21.0': resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) - dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.11): + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.11): + '@babel/plugin-syntax-async-generators@7.8.4': resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.11): + '@babel/plugin-syntax-class-properties@7.12.13': resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.11): + '@babel/plugin-syntax-class-static-block@7.14.5': resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-export-namespace-from@7.8.3': resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.11): + '@babel/plugin-syntax-flow@7.22.5': resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.11): + '@babel/plugin-syntax-import-assertions@7.22.5': resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.11): + '@babel/plugin-syntax-import-attributes@7.22.5': resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.11): + '@babel/plugin-syntax-import-meta@7.10.4': resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-json-strings@7.8.3': resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11): + '@babel/plugin-syntax-jsx@7.22.5': resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.11): + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.11): + '@babel/plugin-syntax-numeric-separator@7.10.4': resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-object-rest-spread@7.8.3': resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-optional-catch-binding@7.8.3': resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.11): + '@babel/plugin-syntax-optional-chaining@7.8.3': resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.11): + '@babel/plugin-syntax-private-property-in-object@7.14.5': resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.11): + '@babel/plugin-syntax-top-level-await@7.14.5': resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.11): + '@babel/plugin-syntax-typescript@7.22.5': resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.11): + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-arrow-functions@7.22.5': resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-async-generator-functions@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-async-generator-functions@7.22.11': resolution: {integrity: sha512-0pAlmeRJn6wU84zzZsEOx1JV1Jf8fqO9ok7wofIJwUnplYo247dcd24P+cMJht7ts9xkzdtB0EPHmOb7F+KzXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-async-to-generator@7.22.5': resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-imports': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-block-scoped-functions@7.22.5': resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.22.11): + '@babel/plugin-transform-block-scoping@7.22.10': resolution: {integrity: sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-class-properties@7.22.5': resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-class-static-block@7.22.11': resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.11) - /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.11): + '@babel/plugin-transform-classes@7.22.6': resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-computed-properties@7.22.5': resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/template': 7.22.5 - /@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.22.11): + '@babel/plugin-transform-destructuring@7.22.10': resolution: {integrity: sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-dotall-regex@7.22.5': resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-duplicate-keys@7.22.5': resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-dynamic-import@7.22.11': resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-exponentiation-operator@7.22.5': resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-export-namespace-from@7.22.11': resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-flow-strip-types@7.22.5': resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.11) - dev: true - /@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-for-of@7.22.5': resolution: {integrity: sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-function-name@7.22.5': resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-json-strings@7.22.11': resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-literals@7.22.5': resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-logical-assignment-operators@7.22.11': resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-member-expression-literals@7.22.5': resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-modules-amd@7.22.5': resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-commonjs@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-modules-commonjs@7.22.11': resolution: {integrity: sha512-o2+bg7GDS60cJMgz9jWqRUsWkMzLCxp+jFDeDUT5sjRlAxcJWZ2ylNdI7QQ2+CH5hWu7OnN+Cv3htt7AkSf96g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.22.11): + '@babel/plugin-transform-modules-commonjs@7.23.0': resolution: {integrity: sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-simple-access': 7.22.5 - dev: true - /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-modules-systemjs@7.22.11': resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-modules-umd@7.22.5': resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-new-target@7.22.5': resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-nullish-coalescing-operator@7.22.11': resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-numeric-separator@7.22.11': resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) - /@babel/plugin-transform-object-rest-spread@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-object-rest-spread@7.22.11': resolution: {integrity: sha512-nX8cPFa6+UmbepISvlf5jhQyaC7ASs/7UxHmMkuJ/k5xSHvDPPaibMo+v3TXwU/Pjqhep/nFNpd3zn4YR59pnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.11 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.11) - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-object-super@7.22.5': resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) - /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-optional-catch-binding@7.22.11': resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-optional-chaining@7.22.12(@babel/core@7.22.11): + '@babel/plugin-transform-optional-chaining@7.22.12': resolution: {integrity: sha512-7XXCVqZtyFWqjDsYDY4T45w4mlx1rf7aOgkc/Ww76xkgBiOlmjPkx36PBLHa1k1rwWvVgYMPsbuVnIamx2ZQJw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-parameters@7.22.5': resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-private-methods@7.22.5': resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.11): + '@babel/plugin-transform-private-property-in-object@7.22.11': resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.11) - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-property-literals@7.22.5': resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-react-jsx-self@7.22.5': resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-react-jsx-source@7.22.5': resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.11): + '@babel/plugin-transform-regenerator@7.22.10': resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.2 - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-reserved-words@7.22.5': resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-shorthand-properties@7.22.5': resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-spread@7.22.5': resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-sticky-regex@7.22.5': resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-template-literals@7.22.5': resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-typeof-symbol@7.22.5': resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.11): + '@babel/plugin-transform-typescript@7.22.15': resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.11) - dev: true - /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.11): + '@babel/plugin-transform-unicode-escapes@7.22.10': resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-unicode-property-regex@7.22.5': resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-unicode-regex@7.22.5': resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.11): + '@babel/plugin-transform-unicode-sets-regex@7.22.5': resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) - '@babel/helper-plugin-utils': 7.22.5 - /@babel/preset-env@7.22.10(@babel/core@7.22.11): + '@babel/preset-env@7.22.10': resolution: {integrity: sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.11 - '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.11) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.11) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.11) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.11) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.11) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.11) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-async-generator-functions': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.11) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.11) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.11) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-modules-commonjs': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-object-rest-spread': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-optional-chaining': 7.22.12(@babel/core@7.22.11) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.11) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.11) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.11) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.11) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.11) - '@babel/types': 7.22.11 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.11) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.11) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.11) - core-js-compat: 3.32.1 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - /@babel/preset-flow@7.22.15(@babel/core@7.22.11): + '@babel/preset-flow@7.22.15': resolution: {integrity: sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.11) - dev: true - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.11): + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/types': 7.22.11 - esutils: 2.0.3 - /@babel/preset-typescript@7.23.0(@babel/core@7.22.11): + '@babel/preset-typescript@7.23.0': resolution: {integrity: sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) - '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.22.11) - '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.11) - dev: true - /@babel/register@7.22.15(@babel/core@7.22.11): + '@babel/register@7.22.15': resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.22.11 - clone-deep: 4.0.1 - find-cache-dir: 2.1.0 - make-dir: 2.1.0 - pirates: 4.0.6 - source-map-support: 0.5.21 - dev: true - /@babel/regjsgen@0.8.0: + '@babel/regjsgen@0.8.0': resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} - /@babel/runtime@7.22.11: + '@babel/runtime@7.22.11': resolution: {integrity: sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - /@babel/runtime@7.23.9: + '@babel/runtime@7.23.9': resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: false - /@babel/template@7.22.5: + '@babel/template@7.22.5': resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.11 - /@babel/traverse@7.22.11: + '@babel/traverse@7.22.11': resolution: {integrity: sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-function-name': 7.22.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.13 - '@babel/types': 7.22.11 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/types@7.22.11: + '@babel/types@7.22.11': resolution: {integrity: sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - to-fast-properties: 2.0.0 - /@babel/types@7.23.0: + '@babel/types@7.23.0': resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - /@base2/pretty-print-object@1.0.1: + '@base2/pretty-print-object@1.0.1': resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} - dev: true - /@bcoe/v8-coverage@0.2.3: + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true - /@cbor-extract/cbor-extract-darwin-arm64@2.2.0: + '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@cbor-extract/cbor-extract-darwin-x64@2.2.0: + '@cbor-extract/cbor-extract-darwin-x64@2.2.0': resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@cbor-extract/cbor-extract-linux-arm64@2.2.0: + '@cbor-extract/cbor-extract-linux-arm64@2.2.0': resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@cbor-extract/cbor-extract-linux-arm@2.2.0: + '@cbor-extract/cbor-extract-linux-arm@2.2.0': resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} cpu: [arm] os: [linux] - requiresBuild: true - dev: false - optional: true - /@cbor-extract/cbor-extract-linux-x64@2.2.0: + '@cbor-extract/cbor-extract-linux-x64@2.2.0': resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@cbor-extract/cbor-extract-win32-x64@2.2.0: + '@cbor-extract/cbor-extract-win32-x64@2.2.0': resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@colors/colors@1.5.0: + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - requiresBuild: true - optional: true - /@cypress/request@2.88.12: + '@cypress/request@2.88.12': resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} engines: {node: '>= 6'} - dependencies: - aws-sign2: 0.7.0 - aws4: 1.12.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - http-signature: 1.3.6 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - performance-now: 2.1.0 - qs: 6.10.4 - safe-buffer: 5.2.1 - tough-cookie: 4.1.3 - tunnel-agent: 0.6.0 - uuid: 8.3.2 - /@cypress/xvfb@1.2.4(supports-color@8.1.1): + '@cypress/xvfb@1.2.4': resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} - dependencies: - debug: 3.2.7(supports-color@8.1.1) - lodash.once: 4.1.1 - transitivePeerDependencies: - - supports-color - /@dimaka/interface@0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@dimaka/interface@0.0.3-alpha.0': resolution: {integrity: sha512-BzRUaLk+jhC1uvcix4SXRGhw7k39pldlvwtRT0NGFsuQt1uMV9vOhGMzm3rLorVXQ7vAmqcZk3Hy8oYlXKQoDw==} peerDependencies: react: ^18.2.0 - dependencies: - '@emotion/css': 11.5.0(@babel/core@7.22.11) - '@juggle/resize-observer': 3.3.1 - animejs: 3.2.1 - clsx: 1.1.1 - react: 18.2.0 - react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0) - react-portal: 4.2.1(react-dom@18.2.0)(react@18.2.0) - react-use: 17.3.1(react-dom@18.2.0)(react@18.2.0) - react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) - valtio: 1.11.2(@types/react@18.2.20)(react@18.2.0) - zustand: 3.6.5(react@18.2.0) - transitivePeerDependencies: - - '@babel/core' - - '@popperjs/core' - - '@types/react' - - react-dom - dev: false - /@discoveryjs/json-ext@0.5.7: + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - dev: true - /@emotion/babel-plugin@11.11.0: + '@emotion/babel-plugin@11.11.0': resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} - dependencies: - '@babel/helper-module-imports': 7.22.5 - '@babel/runtime': 7.22.11 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.2 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - dev: false - /@emotion/cache@11.11.0: + '@emotion/cache@11.11.0': resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} - dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - dev: false - /@emotion/css@11.5.0(@babel/core@7.22.11): + '@emotion/css@11.5.0': resolution: {integrity: sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==} peerDependencies: '@babel/core': ^7.0.0 peerDependenciesMeta: '@babel/core': optional: true - dependencies: - '@babel/core': 7.22.11 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.2 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - dev: false - /@emotion/hash@0.9.1: + '@emotion/hash@0.9.1': resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - dev: false - /@emotion/memoize@0.8.1: + '@emotion/memoize@0.8.1': resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} - dev: false - /@emotion/serialize@1.1.2: + '@emotion/serialize@1.1.2': resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} - dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.2 - dev: false - /@emotion/sheet@1.2.2: + '@emotion/sheet@1.2.2': resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - dev: false - /@emotion/unitless@0.8.1: + '@emotion/unitless@0.8.1': resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} - dev: false - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: react: ^18.2.0 - dependencies: - react: 18.2.0 - dev: true - /@emotion/utils@1.2.1: + '@emotion/utils@1.2.1': resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} - dev: false - /@emotion/weak-memoize@0.3.1: + '@emotion/weak-memoize@0.3.1': resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false - /@esbuild/aix-ppc64@0.19.11: + '@esbuild/aix-ppc64@0.19.11': resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm64@0.18.20: + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm64@0.19.11: + '@esbuild/android-arm64@0.19.11': resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm64@0.19.3: + '@esbuild/android-arm64@0.19.3': resolution: {integrity: sha512-w+Akc0vv5leog550kjJV9Ru+MXMR2VuMrui3C61mnysim0gkFCPOUTAfzTP0qX+HpN9Syu3YA3p1hf3EPqObRw==} engines: {node: '>=12'} cpu: [arm64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm@0.18.20: + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-arm@0.19.11: + '@esbuild/android-arm@0.19.11': resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-arm@0.19.3: + '@esbuild/android-arm@0.19.3': resolution: {integrity: sha512-Lemgw4io4VZl9GHJmjiBGzQ7ONXRfRPHcUEerndjwiSkbxzrpq0Uggku5MxxrXdwJ+pTj1qyw4jwTu7hkPsgIA==} engines: {node: '>=12'} cpu: [arm] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-x64@0.18.20: + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - optional: true - /@esbuild/android-x64@0.19.11: + '@esbuild/android-x64@0.19.11': resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/android-x64@0.19.3: + '@esbuild/android-x64@0.19.3': resolution: {integrity: sha512-FKQJKkK5MXcBHoNZMDNUAg1+WcZlV/cuXrWCoGF/TvdRiYS4znA0m5Il5idUwfxrE20bG/vU1Cr5e1AD6IEIjQ==} engines: {node: '>=12'} cpu: [x64] os: [android] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-arm64@0.18.20: + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-arm64@0.19.11: + '@esbuild/darwin-arm64@0.19.11': resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-arm64@0.19.3: + '@esbuild/darwin-arm64@0.19.3': resolution: {integrity: sha512-kw7e3FXU+VsJSSSl2nMKvACYlwtvZB8RUIeVShIEY6PVnuZ3c9+L9lWB2nWeeKWNNYDdtL19foCQ0ZyUL7nqGw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-x64@0.18.20: + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - optional: true - /@esbuild/darwin-x64@0.19.11: + '@esbuild/darwin-x64@0.19.11': resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/darwin-x64@0.19.3: + '@esbuild/darwin-x64@0.19.3': resolution: {integrity: sha512-tPfZiwF9rO0jW6Jh9ipi58N5ZLoSjdxXeSrAYypy4psA2Yl1dAMhM71KxVfmjZhJmxRjSnb29YlRXXhh3GqzYw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-arm64@0.18.20: + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-arm64@0.19.11: + '@esbuild/freebsd-arm64@0.19.11': resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-arm64@0.19.3: + '@esbuild/freebsd-arm64@0.19.3': resolution: {integrity: sha512-ERDyjOgYeKe0Vrlr1iLrqTByB026YLPzTytDTz1DRCYM+JI92Dw2dbpRHYmdqn6VBnQ9Bor6J8ZlNwdZdxjlSg==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-x64@0.18.20: + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - optional: true - /@esbuild/freebsd-x64@0.19.11: + '@esbuild/freebsd-x64@0.19.11': resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/freebsd-x64@0.19.3: + '@esbuild/freebsd-x64@0.19.3': resolution: {integrity: sha512-nXesBZ2Ad1qL+Rm3crN7NmEVJ5uvfLFPLJev3x1j3feCQXfAhoYrojC681RhpdOph8NsvKBBwpYZHR7W0ifTTA==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm64@0.18.20: + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm64@0.19.11: + '@esbuild/linux-arm64@0.19.11': resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm64@0.19.3: + '@esbuild/linux-arm64@0.19.3': resolution: {integrity: sha512-qXvYKmXj8GcJgWq3aGvxL/JG1ZM3UR272SdPU4QSTzD0eymrM7leiZH77pvY3UetCy0k1xuXZ+VPvoJNdtrsWQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm@0.18.20: + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-arm@0.19.11: + '@esbuild/linux-arm@0.19.11': resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-arm@0.19.3: + '@esbuild/linux-arm@0.19.3': resolution: {integrity: sha512-zr48Cg/8zkzZCzDHNxXO/89bf9e+r4HtzNUPoz4GmgAkF1gFAFmfgOdCbR8zMbzFDGb1FqBBhdXUpcTQRYS1cQ==} engines: {node: '>=12'} cpu: [arm] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ia32@0.18.20: + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ia32@0.19.11: + '@esbuild/linux-ia32@0.19.11': resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ia32@0.19.3: + '@esbuild/linux-ia32@0.19.3': resolution: {integrity: sha512-7XlCKCA0nWcbvYpusARWkFjRQNWNGlt45S+Q18UeS///K6Aw8bB2FKYe9mhVWy/XLShvCweOLZPrnMswIaDXQA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-loong64@0.18.20: + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-loong64@0.19.11: + '@esbuild/linux-loong64@0.19.11': resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-loong64@0.19.3: + '@esbuild/linux-loong64@0.19.3': resolution: {integrity: sha512-qGTgjweER5xqweiWtUIDl9OKz338EQqCwbS9c2Bh5jgEH19xQ1yhgGPNesugmDFq+UUSDtWgZ264st26b3de8A==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-mips64el@0.18.20: + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-mips64el@0.19.11: + '@esbuild/linux-mips64el@0.19.11': resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-mips64el@0.19.3: + '@esbuild/linux-mips64el@0.19.3': resolution: {integrity: sha512-gy1bFskwEyxVMFRNYSvBauDIWNggD6pyxUksc0MV9UOBD138dKTzr8XnM2R4mBsHwVzeuIH8X5JhmNs2Pzrx+A==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ppc64@0.18.20: + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-ppc64@0.19.11: + '@esbuild/linux-ppc64@0.19.11': resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-ppc64@0.19.3: + '@esbuild/linux-ppc64@0.19.3': resolution: {integrity: sha512-UrYLFu62x1MmmIe85rpR3qou92wB9lEXluwMB/STDzPF9k8mi/9UvNsG07Tt9AqwPQXluMQ6bZbTzYt01+Ue5g==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-riscv64@0.18.20: + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-riscv64@0.19.11: + '@esbuild/linux-riscv64@0.19.11': resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-riscv64@0.19.3: + '@esbuild/linux-riscv64@0.19.3': resolution: {integrity: sha512-9E73TfyMCbE+1AwFOg3glnzZ5fBAFK4aawssvuMgCRqCYzE0ylVxxzjEfut8xjmKkR320BEoMui4o/t9KA96gA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-s390x@0.18.20: + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-s390x@0.19.11: + '@esbuild/linux-s390x@0.19.11': resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-s390x@0.19.3: + '@esbuild/linux-s390x@0.19.3': resolution: {integrity: sha512-LlmsbuBdm1/D66TJ3HW6URY8wO6IlYHf+ChOUz8SUAjVTuaisfuwCOAgcxo3Zsu3BZGxmI7yt//yGOxV+lHcEA==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-x64@0.18.20: + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - optional: true - /@esbuild/linux-x64@0.19.11: + '@esbuild/linux-x64@0.19.11': resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/linux-x64@0.19.3: + '@esbuild/linux-x64@0.19.3': resolution: {integrity: sha512-ogV0+GwEmvwg/8ZbsyfkYGaLACBQWDvO0Kkh8LKBGKj9Ru8VM39zssrnu9Sxn1wbapA2qNS6BiLdwJZGouyCwQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - requiresBuild: true - dev: false - optional: true - /@esbuild/netbsd-x64@0.18.20: + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - optional: true - /@esbuild/netbsd-x64@0.19.11: + '@esbuild/netbsd-x64@0.19.11': resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/netbsd-x64@0.19.3: + '@esbuild/netbsd-x64@0.19.3': resolution: {integrity: sha512-o1jLNe4uzQv2DKXMlmEzf66Wd8MoIhLNO2nlQBHLtWyh2MitDG7sMpfCO3NTcoTMuqHjfufgUQDFRI5C+xsXQw==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/openbsd-x64@0.18.20: + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - optional: true - /@esbuild/openbsd-x64@0.19.11: + '@esbuild/openbsd-x64@0.19.11': resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/openbsd-x64@0.19.3: + '@esbuild/openbsd-x64@0.19.3': resolution: {integrity: sha512-AZJCnr5CZgZOdhouLcfRdnk9Zv6HbaBxjcyhq0StNcvAdVZJSKIdOiPB9az2zc06ywl0ePYJz60CjdKsQacp5Q==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - requiresBuild: true - dev: false - optional: true - /@esbuild/sunos-x64@0.18.20: + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - optional: true - /@esbuild/sunos-x64@0.19.11: + '@esbuild/sunos-x64@0.19.11': resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: false - optional: true - /@esbuild/sunos-x64@0.19.3: + '@esbuild/sunos-x64@0.19.3': resolution: {integrity: sha512-Acsujgeqg9InR4glTRvLKGZ+1HMtDm94ehTIHKhJjFpgVzZG9/pIcWW/HA/DoMfEyXmANLDuDZ2sNrWcjq1lxw==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-arm64@0.18.20: + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-arm64@0.19.11: + '@esbuild/win32-arm64@0.19.11': resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-arm64@0.19.3: + '@esbuild/win32-arm64@0.19.3': resolution: {integrity: sha512-FSrAfjVVy7TifFgYgliiJOyYynhQmqgPj15pzLyJk8BUsnlWNwP/IAy6GAiB1LqtoivowRgidZsfpoYLZH586A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-ia32@0.18.20: + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-ia32@0.19.11: + '@esbuild/win32-ia32@0.19.11': resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-ia32@0.19.3: + '@esbuild/win32-ia32@0.19.3': resolution: {integrity: sha512-xTScXYi12xLOWZ/sc5RBmMN99BcXp/eEf7scUC0oeiRoiT5Vvo9AycuqCp+xdpDyAU+LkrCqEpUS9fCSZF8J3Q==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-x64@0.18.20: + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - optional: true - /@esbuild/win32-x64@0.19.11: + '@esbuild/win32-x64@0.19.11': resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@esbuild/win32-x64@0.19.3: + '@esbuild/win32-x64@0.19.3': resolution: {integrity: sha512-FbUN+0ZRXsypPyWE2IwIkVjDkDnJoMJARWOcFZn4KPPli+QnKqF0z1anvfaYe3ev5HFCpRDLLBDHyOALLppWHw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - requiresBuild: true - dev: false - optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.50.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.8.0: + '@eslint-community/regexpp@4.8.0': resolution: {integrity: sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true - /@eslint/eslintrc@2.1.2: + '@eslint/eslintrc@2.1.2': resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - espree: 9.6.1 - globals: 13.21.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - /@eslint/js@8.50.0: + '@eslint/js@8.50.0': resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@fal-works/esbuild-plugin-global-externals@2.1.2: + '@fal-works/esbuild-plugin-global-externals@2.1.2': resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} - dev: true - /@fastify/busboy@2.0.0: + '@fastify/busboy@2.0.0': resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} engines: {node: '>=14'} - dev: true - /@floating-ui/core@1.5.0: + '@floating-ui/core@1.5.0': resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} - dependencies: - '@floating-ui/utils': 0.1.6 - /@floating-ui/core@1.6.0: + '@floating-ui/core@1.6.0': resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} - dependencies: - '@floating-ui/utils': 0.2.1 - dev: false - /@floating-ui/dom@1.5.3: + '@floating-ui/dom@1.5.3': resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} - dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/utils': 0.1.6 - /@floating-ui/dom@1.6.1: + '@floating-ui/dom@1.6.1': resolution: {integrity: sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==} - dependencies: - '@floating-ui/core': 1.6.0 - '@floating-ui/utils': 0.2.1 - dev: false - /@floating-ui/react-dom@2.0.2(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react-dom@2.0.2': resolution: {integrity: sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==} peerDependencies: react: ^18.2.0 react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.5.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react-dom@2.0.8': resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} peerDependencies: react: ^18.2.0 react-dom: '>=16.8.0' - dependencies: - '@floating-ui/dom': 1.6.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@floating-ui/react@0.26.1(react-dom@18.2.0)(react@18.2.0): + '@floating-ui/react@0.26.1': resolution: {integrity: sha512-5gyJIJ2tZOPMgmZ/vEcVhdmQiy75b7LPO71sYIiDsxGcZ4hxLuygQWCuT0YXHqppt//Eese+L6t5KnX/gZ3tVA==} peerDependencies: react: ^18.2.0 react-dom: '>=16.8.0' - dependencies: - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@floating-ui/utils': 0.1.6 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - tabbable: 6.2.0 - dev: false - /@floating-ui/utils@0.1.6: + '@floating-ui/utils@0.1.6': resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} - /@floating-ui/utils@0.2.1: + '@floating-ui/utils@0.2.1': resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - dev: false - /@gar/promisify@1.1.3: + '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - requiresBuild: true - dev: false - optional: true - /@humanwhocodes/config-array@0.11.11: + '@humanwhocodes/config-array@0.11.11': resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true - /@humanwhocodes/object-schema@1.2.1: + '@humanwhocodes/object-schema@1.2.1': resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - /@iconify/types@2.0.0: + '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - dev: false - /@isaacs/cliui@8.0.2: + '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - /@istanbuljs/load-nyc-config@1.1.0: + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: + '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - dev: true - /@jest/schemas@29.6.3: + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - /@jest/transform@29.7.0: + '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.22.11 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.19 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/types@29.6.3: + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.2 - '@types/node': 20.8.0 - '@types/yargs': 17.0.28 - chalk: 4.1.2 - dev: true - /@jimp/bmp@0.10.3(@jimp/custom@0.10.3): + '@jimp/bmp@0.10.3': resolution: {integrity: sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - bmp-js: 0.1.0 - core-js: 3.32.1 - dev: false - /@jimp/core@0.10.3: + '@jimp/core@0.10.3': resolution: {integrity: sha512-Gd5IpL3U2bFIO57Fh/OA3HCpWm4uW/pU01E75rI03BXfTdz3T+J7TwvyG1XaqsQ7/DSlS99GXtLQPlfFIe28UA==} - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/utils': 0.10.3 - any-base: 1.1.0 - buffer: 5.7.1 - core-js: 3.32.1 - exif-parser: 0.1.12 - file-type: 9.0.0 - load-bmfont: 1.4.1 - mkdirp: 0.5.6 - phin: 2.9.3 - pixelmatch: 4.0.2 - tinycolor2: 1.6.0 - dev: false - /@jimp/custom@0.10.3: + '@jimp/custom@0.10.3': resolution: {integrity: sha512-nZmSI+jwTi5IRyNLbKSXQovoeqsw+D0Jn0SxW08wYQvdkiWA8bTlDQFgQ7HVwCAKBm8oKkDB/ZEo9qvHJ+1gAQ==} - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/core': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/gif@0.10.3(@jimp/custom@0.10.3): + '@jimp/gif@0.10.3': resolution: {integrity: sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - omggif: 1.0.10 - dev: false - /@jimp/jpeg@0.10.3(@jimp/custom@0.10.3): + '@jimp/jpeg@0.10.3': resolution: {integrity: sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - jpeg-js: 0.3.7 - dev: false - /@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-blit@0.10.3': resolution: {integrity: sha512-5zlKlCfx4JWw9qUVC7GI4DzXyxDWyFvgZLaoGFoT00mlXlN75SarlDwc9iZ/2e2kp4bJWxz3cGgG4G/WXrbg3Q==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-blur@0.10.3': resolution: {integrity: sha512-cTOK3rjh1Yjh23jSfA6EHCHjsPJDEGLC8K2y9gM7dnTUK1y9NNmkFS23uHpyjgsWFIoH9oRh2SpEs3INjCpZhQ==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-circle@0.10.3': resolution: {integrity: sha512-51GAPIVelqAcfuUpaM5JWJ0iWl4vEjNXB7p4P7SX5udugK5bxXUjO6KA2qgWmdpHuCKtoNgkzWU9fNSuYp7tCA==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-color@0.10.3': resolution: {integrity: sha512-RgeHUElmlTH7vpI4WyQrz6u59spiKfVQbsG/XUzfWGamFSixa24ZDwX/yV/Ts+eNaz7pZeIuv533qmKPvw2ujg==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - tinycolor2: 1.6.0 - dev: false - /@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3): + '@jimp/plugin-contain@0.10.3': resolution: {integrity: sha512-bYJKW9dqzcB0Ihc6u7jSyKa3juStzbLs2LFr6fu8TzA2WkMS/R8h+ddkiO36+F9ILTWHP0CIA3HFe5OdOGcigw==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-blit': '>=0.3.5' '@jimp/plugin-resize': '>=0.3.5' '@jimp/plugin-scale': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3): + '@jimp/plugin-cover@0.10.3': resolution: {integrity: sha512-pOxu0cM0BRPzdV468n4dMocJXoMbTnARDY/EpC3ZW15SpMuc/dr1KhWQHgoQX5kVW1Wt8zgqREAJJCQ5KuPKDA==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-crop': '>=0.3.5' '@jimp/plugin-resize': '>=0.3.5' '@jimp/plugin-scale': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-crop@0.10.3': resolution: {integrity: sha512-nB7HgOjjl9PgdHr076xZ3Sr6qHYzeBYBs9qvs3tfEEUeYMNnvzgCCGtUl6eMakazZFCMk3mhKmcB9zQuHFOvkg==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-displace@0.10.3': resolution: {integrity: sha512-8t3fVKCH5IVqI4lewe4lFFjpxxr69SQCz5/tlpDLQZsrNScNJivHdQ09zljTrVTCSgeCqQJIKgH2Q7Sk/pAZ0w==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-dither@0.10.3': resolution: {integrity: sha512-JCX/oNSnEg1kGQ8ffZ66bEgQOLCY3Rn+lrd6v1jjLy/mn9YVZTMsxLtGCXpiCDC2wG/KTmi4862ysmP9do9dAQ==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-fisheye@0.10.3': resolution: {integrity: sha512-RRZb1wqe+xdocGcFtj2xHU7sF7xmEZmIa6BmrfSchjyA2b32TGPWKnP3qyj7p6LWEsXn+19hRYbjfyzyebPElQ==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3): + '@jimp/plugin-flip@0.10.3': resolution: {integrity: sha512-0epbi8XEzp0wmSjoW9IB0iMu0yNF17aZOxLdURCN3Zr+8nWPs5VNIMqSVa1Y62GSyiMDpVpKF/ITiXre+EqrPg==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-rotate': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-gaussian@0.10.3': resolution: {integrity: sha512-25eHlFbHUDnMMGpgRBBeQ2AMI4wsqCg46sue0KklI+c2BaZ+dGXmJA5uT8RTOrt64/K9Wz5E+2n7eBnny4dfpQ==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-invert@0.10.3': resolution: {integrity: sha512-effYSApWY/FbtlzqsKXlTLkgloKUiHBKjkQnqh5RL4oQxh/33j6aX+HFdDyQKtsXb8CMd4xd7wyiD2YYabTa0g==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-mask@0.10.3': resolution: {integrity: sha512-twrg8q8TIhM9Z6Jcu9/5f+OCAPaECb0eKrrbbIajJqJ3bCUlj5zbfgIhiQIzjPJ6KjpnFPSqHQfHkU1Vvk/nVw==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-normalize@0.10.3': resolution: {integrity: sha512-xkb5eZI/mMlbwKkDN79+1/t/+DBo8bBXZUMsT4gkFgMRKNRZ6NQPxlv1d3QpRzlocsl6UMxrHnhgnXdLAcgrXw==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3): + '@jimp/plugin-print@0.10.3': resolution: {integrity: sha512-wjRiI6yjXsAgMe6kVjizP+RgleUCLkH256dskjoNvJzmzbEfO7xQw9g6M02VET+emnbY0CO83IkrGm2q43VRyg==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-blit': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - load-bmfont: 1.4.1 - dev: false - /@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugin-resize@0.10.3': resolution: {integrity: sha512-rf8YmEB1d7Sg+g4LpqF0Mp+dfXfb6JFJkwlAIWPUOR7lGsPWALavEwTW91c0etEdnp0+JB9AFpy6zqq7Lwkq6w==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3): + '@jimp/plugin-rotate@0.10.3': resolution: {integrity: sha512-YXLlRjm18fkW9MOHUaVAxWjvgZM851ofOipytz5FyKp4KZWDLk+dZK1JNmVmK7MyVmAzZ5jsgSLhIgj+GgN0Eg==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-blit': '>=0.3.5' '@jimp/plugin-crop': '>=0.3.5' '@jimp/plugin-resize': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3): + '@jimp/plugin-scale@0.10.3': resolution: {integrity: sha512-5DXD7x7WVcX1gUgnlFXQa8F+Q3ThRYwJm+aesgrYvDOY+xzRoRSdQvhmdd4JEEue3lyX44DvBSgCIHPtGcEPaw==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-resize': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3)(@jimp/plugin-resize@0.10.3): + '@jimp/plugin-shadow@0.10.3': resolution: {integrity: sha512-/nkFXpt2zVcdP4ETdkAUL0fSzyrC5ZFxdcphbYBodqD7fXNqChS/Un1eD4xCXWEpW8cnG9dixZgQgStjywH0Mg==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-blur': '>=0.3.5' '@jimp/plugin-resize': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3)(@jimp/plugin-resize@0.10.3): + '@jimp/plugin-threshold@0.10.3': resolution: {integrity: sha512-Dzh0Yq2wXP2SOnxcbbiyA4LJ2luwrdf1MghNIt9H+NX7B+IWw/N8qA2GuSm9n4BPGSLluuhdAWJqHcTiREriVA==} peerDependencies: '@jimp/custom': '>=0.3.5' '@jimp/plugin-color': '>=0.8.0' '@jimp/plugin-resize': '>=0.8.0' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - dev: false - /@jimp/plugins@0.10.3(@jimp/custom@0.10.3): + '@jimp/plugins@0.10.3': resolution: {integrity: sha512-jTT3/7hOScf0EIKiAXmxwayHhryhc1wWuIe3FrchjDjr9wgIGNN2a7XwCgPl3fML17DXK1x8EzDneCdh261bkw==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3) - '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3)(@jimp/plugin-scale@0.10.3) - '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3) - '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3) - '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) - '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3)(@jimp/plugin-crop@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3)(@jimp/plugin-resize@0.10.3) - '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3)(@jimp/plugin-resize@0.10.3) - core-js: 3.32.1 - timm: 1.7.1 - dev: false - /@jimp/png@0.10.3(@jimp/custom@0.10.3): + '@jimp/png@0.10.3': resolution: {integrity: sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - '@jimp/utils': 0.10.3 - core-js: 3.32.1 - pngjs: 3.4.0 - dev: false - /@jimp/tiff@0.10.3(@jimp/custom@0.10.3): + '@jimp/tiff@0.10.3': resolution: {integrity: sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/custom': 0.10.3 - core-js: 3.32.1 - utif: 2.0.1 - dev: false - /@jimp/types@0.10.3(@jimp/custom@0.10.3): + '@jimp/types@0.10.3': resolution: {integrity: sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==} peerDependencies: '@jimp/custom': '>=0.3.5' - dependencies: - '@babel/runtime': 7.22.11 - '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) - '@jimp/custom': 0.10.3 - '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) - '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3) - '@jimp/png': 0.10.3(@jimp/custom@0.10.3) - '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) - core-js: 3.32.1 - timm: 1.7.1 - dev: false - /@jimp/utils@0.10.3: + '@jimp/utils@0.10.3': resolution: {integrity: sha512-VcSlQhkil4ReYmg1KkN+WqHyYfZ2XfZxDsKAHSfST1GEz/RQHxKZbX+KhFKtKflnL0F4e6DlNQj3vznMNXCR2w==} - dependencies: - '@babel/runtime': 7.22.11 - core-js: 3.32.1 - regenerator-runtime: 0.13.11 - dev: false - /@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@4.5.2): + '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1': resolution: {integrity: sha512-ou4ZJSXMMWHqGS4g8uNRbC5TiTWxAgQZiVucoUrOCWuPrTbkpJbmVyIi9jU72SBry7gQtuMEDp4YR8EEXAg7VQ==} peerDependencies: typescript: '>= 4.3.x' @@ -3155,106 +1907,60 @@ packages: peerDependenciesMeta: typescript: optional: true - dependencies: - glob: 7.2.3 - glob-promise: 4.2.2(glob@7.2.3) - magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.2.2) - typescript: 5.2.2 - vite: 4.5.2 - dev: true - /@jridgewell/gen-mapping@0.3.3: + '@jridgewell/gen-mapping@0.3.3': resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 - /@jridgewell/resolve-uri@3.1.1: + '@jridgewell/resolve-uri@3.1.1': resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: + '@jridgewell/set-array@1.1.2': resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.5: + '@jridgewell/source-map@0.3.5': resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.19: + '@jridgewell/trace-mapping@0.3.19': resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - /@jspm/core@2.0.1: + '@jspm/core@2.0.1': resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} - dev: false - /@juggle/resize-observer@3.3.1: + '@juggle/resize-observer@3.3.1': resolution: {integrity: sha512-zMM9Ds+SawiUkakS7y94Ymqx+S0ORzpG3frZirN3l+UlXUmSUR7hF4wxCVqW+ei94JzV5kt0uXBcoOEAuiydrw==} - /@lit-labs/ssr-dom-shim@1.1.1: + '@lit-labs/ssr-dom-shim@1.1.1': resolution: {integrity: sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==} - /@lit/reactive-element@1.6.3: + '@lit/reactive-element@1.6.3': resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} - dependencies: - '@lit-labs/ssr-dom-shim': 1.1.1 - /@mapbox/node-pre-gyp@1.0.11: + '@mapbox/node-pre-gyp@1.0.11': resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true - dependencies: - detect-libc: 2.0.2 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.5.4 - tar: 6.2.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - /@math.gl/core@4.0.1: + '@math.gl/core@4.0.1': resolution: {integrity: sha512-9IewNjR9V66o+gYIIq5agFoHy6ZT6DRpRGQBfsUpZz4glAqOjVt64he8GGzjpmqfT+kKT4qwQ7nQl/hZLF15qA==} - dependencies: - '@math.gl/types': 4.0.1 - dev: false - /@math.gl/types@4.0.1: + '@math.gl/types@4.0.1': resolution: {integrity: sha512-E9qBKAjVBiZD8Is7TbygiLGtYBP3GSLus6RUJSuzFQegdYXeVagvrs4UkBJxhrRAxw4crfH0Tq7IhTMKuuJNQw==} - dev: false - /@mdx-js/react@2.3.0(react@18.2.0): + '@mdx-js/react@2.3.0': resolution: {integrity: sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==} peerDependencies: react: ^18.2.0 - dependencies: - '@types/mdx': 2.0.8 - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@msgpack/msgpack@2.8.0: + '@msgpack/msgpack@2.8.0': resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} - dev: false - /@mui/base@5.0.0-beta.34(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@mui/base@5.0.0-beta.34': resolution: {integrity: sha512-e2mbTGTtReD/y5RFwnhkl1Tgl3XwgJhY040IlfkTVaU9f5LWrVhEnpRsYXu3B1CtLrwiWs4cu7aMHV9yRd4jpw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3264,31 +1970,16 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.9 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.13(@types/react@18.2.20) - '@mui/utils': 5.15.7(@types/react@18.2.20)(react@18.2.0) - '@popperjs/core': 2.11.8 - '@types/react': 18.2.20 - clsx: 2.1.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@mui/types@7.2.13(@types/react@18.2.20): + '@mui/types@7.2.13': resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 18.2.20 - dev: false - /@mui/utils@5.15.7(@types/react@18.2.20)(react@18.2.0): + '@mui/utils@5.15.7': resolution: {integrity: sha512-8qhsxQRNV6aEOjjSk6YQIYJxkF5klhj8oG1FEEU4z6HV78TjNqRxMP08QGcdsibEbez+nihAaz6vu83b4XqbAg==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3297,106 +1988,54 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.23.9 - '@types/prop-types': 15.7.11 - '@types/react': 18.2.20 - prop-types: 15.8.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false - /@ndelangen/get-tarball@3.0.9: + '@ndelangen/get-tarball@3.0.9': resolution: {integrity: sha512-9JKTEik4vq+yGosHYhZ1tiH/3WpUS0Nh0kej4Agndhox8pAdWhEx5knFVRcb/ya9knCRCs1rPxNrSXTDdfVqpA==} - dependencies: - gunzip-maybe: 1.4.2 - pump: 3.0.0 - tar-fs: 2.1.1 - dev: true - /@nodelib/fs.scandir@2.1.5: + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - /@nodelib/fs.stat@2.0.5: + '@nodelib/fs.stat@2.0.5': resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true - /@nodelib/fs.walk@1.2.8: + '@nodelib/fs.walk@1.2.8': resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: true - /@npmcli/fs@2.1.2: + '@npmcli/fs@2.1.2': resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true - dependencies: - '@gar/promisify': 1.1.3 - semver: 7.6.0 - dev: false - optional: true - /@npmcli/move-file@2.0.1: + '@npmcli/move-file@2.0.1': resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This functionality has been moved to @npmcli/fs - requiresBuild: true - dependencies: - mkdirp: 1.0.4 - rimraf: 3.0.2 - dev: false - optional: true - /@nxg-org/mineflayer-tracker@1.2.1: + '@nxg-org/mineflayer-tracker@1.2.1': resolution: {integrity: sha512-SI1ffF8zvg3/ZNE021Ja2W0FZPN+WbQDZf8yFqOcXtPRXAtM9W6HvoACdzXep8BZid7WYgYLIgjKpB+9RqvCNQ==} - dependencies: - '@nxg-org/mineflayer-trajectories': 1.1.1 - '@nxg-org/mineflayer-util-plugin': 1.8.3 - dev: false - /@nxg-org/mineflayer-trajectories@1.1.1: + '@nxg-org/mineflayer-trajectories@1.1.1': resolution: {integrity: sha512-X103KXlX8+L3uMeK4jQxMUdTizv01sQRSfBizAF/iOAdfQZehRLXr3CYKeJzfwPYGLN0X0JCl++cMEcZVn4vbg==} - dependencies: - '@nxg-org/mineflayer-util-plugin': 1.8.3 - dev: false - /@nxg-org/mineflayer-util-plugin@1.8.3: + '@nxg-org/mineflayer-util-plugin@1.8.3': resolution: {integrity: sha512-YlIbzCDs9822xuvmYlD0vXZz0iye9buqp9NK4nNn15gYybdqBtC/YxK6BLqXtwNohZCKoZdKgei7Xd5Bt2/rUg==} - dev: false - /@pkgjs/parseargs@0.11.0: + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - requiresBuild: true - dev: true - optional: true - /@popperjs/core@2.11.8: + '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - dev: false - /@radix-ui/number@1.0.1: + '@radix-ui/number@1.0.1': resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} - dependencies: - '@babel/runtime': 7.22.11 - dev: true - /@radix-ui/primitive@1.0.1: + '@radix-ui/primitive@1.0.1': resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} - dependencies: - '@babel/runtime': 7.22.11 - dev: true - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-arrow@1.0.3': resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -3408,16 +2047,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-collection@1.0.3': resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -3429,19 +2060,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-compose-refs@1.0.1': resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} peerDependencies: '@types/react': '*' @@ -3449,13 +2069,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-context@1.0.1(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-context@1.0.1': resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==} peerDependencies: '@types/react': '*' @@ -3463,13 +2078,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-direction@1.0.1(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-direction@1.0.1': resolution: {integrity: sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==} peerDependencies: '@types/react': '*' @@ -3477,13 +2087,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-dismissable-layer@1.0.4': resolution: {integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==} peerDependencies: '@types/react': '*' @@ -3495,20 +2100,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-focus-guards@1.0.1': resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==} peerDependencies: '@types/react': '*' @@ -3516,13 +2109,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-focus-scope@1.0.3': resolution: {integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==} peerDependencies: '@types/react': '*' @@ -3534,18 +2122,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-id@1.0.1(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-id@1.0.1': resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==} peerDependencies: '@types/react': '*' @@ -3553,14 +2131,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-popper@1.1.2': resolution: {integrity: sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==} peerDependencies: '@types/react': '*' @@ -3572,25 +2144,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-portal@1.0.3': resolution: {integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==} peerDependencies: '@types/react': '*' @@ -3602,16 +2157,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-primitive@1.0.3': resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -3623,16 +2170,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-roving-focus@1.0.4': resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -3644,24 +2183,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-select@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-select@1.2.2': resolution: {integrity: sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==} peerDependencies: '@types/react': '*' @@ -3673,36 +2196,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/number': 1.0.1 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - aria-hidden: 1.2.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(@types/react@18.2.20)(react@18.2.0) - dev: true - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-separator@1.0.3': resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -3714,16 +2209,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-slot@1.0.2(@types/react@18.2.20)(react@18.2.0): + '@radix-ui/react-slot@1.0.2': resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} peerDependencies: '@types/react': '*' @@ -3731,14 +2218,8 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - react: 18.2.0 - dev: true - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-toggle-group@1.0.4': resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -3750,22 +2231,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-toggle@1.0.3': resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -3777,18 +2244,8 @@ packages: optional: true '@types/react-dom': optional: true - dependencies: - '@babel/runtime': 7.22.11 - '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + '@radix-ui/react-toolbar@1.0.4': resolution: {integrity: sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==} peerDependencies: '@types/react': '*' @@ -3800,182 +2257,8862 @@ packages: optional: true '@types/react-dom': optional: true + + '@radix-ui/react-use-callback-ref@1.0.1': + resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.0.1': + resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.0.3': + resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.0.1': + resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-previous@1.0.1': + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-rect@1.0.1': + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-size@1.0.1': + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-visually-hidden@1.0.3': + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^18.2.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/rect@1.0.1': + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + + '@react-oauth/google@0.12.1': + resolution: {integrity: sha512-qagsy22t+7UdkYAiT5ZhfM4StXi9PPNvw0zuwNmabrWyMKddczMtBIOARflbaIj+wHiQjnMAsZmzsUYuXeyoSg==} + peerDependencies: + react: ^18.2.0 + react-dom: '>=16.8.0' + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-node-resolve@11.2.1': + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/plugin-replace@2.4.2': + resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@5.0.5': + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rushstack/eslint-patch@1.4.0': + resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@socket.io/component-emitter@3.1.0': + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + + '@storybook/addon-actions@7.4.6': + resolution: {integrity: sha512-SsqZr3js5NinKPnC8AeNI7Ij+Q6fIl9tRdRmSulEgjksjOg7E5S1/Wsn5Bb2CCgj7MaX6VxGyC7s3XskQtDiIQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-backgrounds@7.4.6': + resolution: {integrity: sha512-+LHTZB/ZYMAzkyD5ZxSriBsqmsrvIaW/Nnd/BeuXGbkrVKKqM0qAKiFZAfjc2WchA1piVNy0/1Rsf+kuYCEiJw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-controls@7.4.6': + resolution: {integrity: sha512-4lq3sycEUIsK8SUWDYc60QgF4vV9FZZ3lDr6M7j2W9bOnvGw49d2fbdlnq+bX1ZprZZ9VgglQpBAorQB3BXZRw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-docs@7.4.6': + resolution: {integrity: sha512-dLaub+XWFq4hChw+xfuF9yYg0Txp77FUawKoAigccfjWXx+OOhRV3XTuAcknpXkYq94GWynHgUFXosXT9kbDNA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/addon-essentials@7.4.6': + resolution: {integrity: sha512-dWodufrt71TK7ELkeIvVae/x4PzECUlbOm57Iqqt4yQCyR291CgvI4PjeB8un2HbpcXCGZ+N/Oj3YkytvzBi4A==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/addon-highlight@7.4.6': + resolution: {integrity: sha512-zCufxxD2KS5VwczxfkcBxe1oR/juTTn2H1Qm8kYvWCJQx3UxzX0+G9cwafbpV7eivqaufLweEwROkH+0KjAtkQ==} + + '@storybook/addon-links@7.4.6': + resolution: {integrity: sha512-BPygElZKX+CPI9Se6GJNk1dYc5oxuhA+vHigO1tBqhiM6VkHyFP3cvezJNQvpNYhkUnu3cxnZXb3UJnlRbPY3g==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-measure@7.4.6': + resolution: {integrity: sha512-nCymMLaHnxv8TE3yEM1A9Tulb1NuRXRNmtsdHTkjv7P1aWCxZo8A/GZaottKe/GLT8jSRjZ+dnpYWrbAhw6wTQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-outline@7.4.6': + resolution: {integrity: sha512-errNUblRVDLpuEaHQPr/nsrnsUkD2ARmXawkRvizgDWLIDMDJYjTON3MUCaVx3x+hlZ3I6X//G5TVcma8tCc8A==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-toolbars@7.4.6': + resolution: {integrity: sha512-L9m2FBcKeteGq7qIYsMJr0LEfiH7Wdrv5IDcldZTn68eZUJTh1p4GdJZcOmzX1P5IFRr76hpu03iWsNlWQjpbQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/addon-viewport@7.4.6': + resolution: {integrity: sha512-INDtk54j7bi7NgxMfd2ATmbA0J7nAd6X8itMkLIyPuPJtx8bYHPDORyemDOd0AojgmAdTOAyUtDYdI/PFeo4Cw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/blocks@7.4.6': + resolution: {integrity: sha512-HxBSAeOiTZW2jbHQlo1upRWFgoMsaAyKijUFf5MwwMNIesXCuuTGZDJ3xTABwAVLK2qC9Ektfbo0CZCiPVuDRQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/builder-manager@7.4.6': + resolution: {integrity: sha512-zylZCD2rmyLOOFBFmUgtJg6UNUKmRNgXiig1XApzS2TkIbTZP827DsVEUl0ey/lskCe0uArkrEBR6ICba8p/Rw==} + + '@storybook/builder-vite@7.4.6': + resolution: {integrity: sha512-xV9STYK+TkqWWTf2ydm6jx+7P70fjD2UPd1XTUw08uKszIjhuuxk+bG/OF5R1E25mPunAKXm6kBFh351AKejBg==} + peerDependencies: + '@preact/preset-vite': '*' + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + + '@storybook/channels@7.4.6': + resolution: {integrity: sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==} + + '@storybook/cli@7.4.6': + resolution: {integrity: sha512-rRwaH8pOL+FHz/pJMEkNpMH2xvZvWsrl7obBYw26NQiHmiVSAkfHJicndSN1mwc+p5w+9iXthrgzbLtSAOSvkA==} + hasBin: true + + '@storybook/client-logger@7.4.6': + resolution: {integrity: sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==} + + '@storybook/codemod@7.4.6': + resolution: {integrity: sha512-lxmwEpwksCaAq96APN2YlooSDfKjJ1vKzN5Ni2EqQzf2TEXl7XQjLacHd7OOaII1kfsy+D5gNG4N5wBo7Ub30g==} + + '@storybook/components@7.4.6': + resolution: {integrity: sha512-nIRBhewAgrJJVafyCzuaLx1l+YOfvvD5dOZ0JxZsxJsefOdw1jFpUqUZ5fIpQ2moyvrR0mAUFw378rBfMdHz5Q==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/core-client@7.4.6': + resolution: {integrity: sha512-tfgxAHeCvMcs6DsVgtb4hQSDaCHeAPJOsoyhb47eDQfk4OmxzriM0qWucJV5DePSMi+KutX/rN2u0JxfOuN68g==} + + '@storybook/core-common@7.4.6': + resolution: {integrity: sha512-05MJFmOM86qvTLtgDskokIFz9txe0Lbhq4L3by1FtF0GwgH+p+W6I94KI7c6ANER+kVZkXQZhiRzwBFnVTW+Cg==} + + '@storybook/core-events@7.4.6': + resolution: {integrity: sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==} + + '@storybook/core-server@7.4.6': + resolution: {integrity: sha512-jqmRTGCJ1W0WReImivkisPVaLFT5sjtLnFoAk0feHp6QS5j7EYOPN7CYzliyQmARWTLUEXOVaFf3VD6nJZQhJQ==} + + '@storybook/csf-plugin@7.4.6': + resolution: {integrity: sha512-yi7Qa4NSqKOyiJTWCxlB0ih2ijXq6oY5qZKW6MuMMBP14xJNRGLbH5KabpfXgN2T7YECcOWG1uWaGj2veJb1KA==} + + '@storybook/csf-tools@7.4.6': + resolution: {integrity: sha512-ocKpcIUtTBy6hlLY34RUFQyX403cWpB2gGfqvkHbpGe2BQj7EyV0zpWnjsfVxvw+M9OWlCdxHWDOPUgXM33ELw==} + + '@storybook/csf@0.1.1': + resolution: {integrity: sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==} + + '@storybook/docs-mdx@0.1.0': + resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} + + '@storybook/docs-tools@7.4.6': + resolution: {integrity: sha512-nZj1L/8WwKWWJ41FW4MaKGajZUtrhnr9UwflRCkQJaWhAKmDfOb5M5TqI93uCOULpFPOm5wpoMBz2IHInQ2Lrg==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/manager-api@7.4.6': + resolution: {integrity: sha512-inrm3DIbCp8wjXSN/wK6e6i2ysQ/IEmtC7IN0OJ7vdrp+USCooPT448SQTUmVctUGCFmOU3fxXByq8g77oIi7w==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/manager@7.4.6': + resolution: {integrity: sha512-kA1hUDxpn1i2SO9OinvLvVXDeL4xgJkModp+pbE8IXv4NJWReNq1ecMeQCzPLS3Sil2gnrullQ9uYXsnZ9bxxA==} + + '@storybook/mdx2-csf@1.1.0': + resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} + + '@storybook/node-logger@7.4.6': + resolution: {integrity: sha512-djZb310Q27GviDug1XBv0jOEDLCiwr4hhDE0aifCEKZpfNCi/EaP31nbWimFzZwxu4hE/YAPWExzScruR1zw9Q==} + + '@storybook/postinstall@7.4.6': + resolution: {integrity: sha512-TqI5BucPAGRWrkh55BYiG2/gHLFtC0In4cuu0GsUzB/1jc4i51npLRorCwhmT7r7YliGl5F7JaP0Bni/qHN3Lg==} + + '@storybook/preview-api@7.4.6': + resolution: {integrity: sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA==} + + '@storybook/preview@7.4.6': + resolution: {integrity: sha512-2RPXusJ4CTDrIipIKKvbotD7fP0+8VzoFjImunflIrzN9rni+2rq5eMjqlXAaB+77w064zIR4uDUzI9fxsMDeQ==} + + '@storybook/react-dom-shim@7.4.6': + resolution: {integrity: sha512-DSq8l9FDocUF1ooVI+TF83pddj1LynE/Hv0/y8XZhc3IgJ/HkuOQuUmfz29ezgfAi9gFYUR8raTIBi3/xdoRmw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/react-vite@7.4.6': + resolution: {integrity: sha512-jkjnrf3FxzR5wcmebXRPflrsM4WIDjWyW/NVFJwxi5PeIOk7fE7/QAPrm4NFRUu2Q7DeuH3oLKsw8bigvUI9RA==} + engines: {node: '>=16'} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + vite: ^3.0.0 || ^4.0.0 + + '@storybook/react@7.4.6': + resolution: {integrity: sha512-w0dVo64baFFPTGpUOWFqkKsu6pQincoymegSNgqaBd5DxEyMDRiRoTWSJHMKE9BwgE8SyWhRkP1ak1mkccSOhQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/router@7.4.6': + resolution: {integrity: sha512-Vl1esrHkcHxDKqc+HY7+6JQpBPW3zYvGk0cQ2rxVMhWdLZTAz1hss9DqzN9tFnPyfn0a1Q77EpMySkUrvWKKNQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/telemetry@7.4.6': + resolution: {integrity: sha512-c8p/C1NIH8EMBviZkBCx8MMDk6rrITJ+b29DEp5MaWSRlklIVyhGiC4RPIRv6sxJwlD41PnqWVFtfu2j2eXLdQ==} + + '@storybook/theming@7.4.6': + resolution: {integrity: sha512-HW77iJ9ptCMqhoBOYFjRQw7VBap+38fkJGHP5KylEJCyYCgIAm2dEcQmtWpMVYFssSGcb6djfbtAMhYU4TL4Iw==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/types@7.4.6': + resolution: {integrity: sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==} + + '@storybook/web-components-vite@7.4.6': + resolution: {integrity: sha512-L/y6MTLbqfHaM0faK9Yl8n5PIyW4daZrtk7NfaOT6UjgNFjOx3o4CctYew6oj90cNk5HdZQX2OZny043GxDLZw==} + engines: {node: ^14.18 || >=16} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/web-components@7.4.6': + resolution: {integrity: sha512-HWqkZtdkmNimkzMmE0mGRys2ee9qgEeDVCruiffySVquBRMQ6n1xgvHZYaO6OLlMeH0YHPg083ZqUasS5GsYVg==} + engines: {node: '>=16.0.0'} + peerDependencies: + lit: ^2.0.0 + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tweenjs/tween.js@18.6.4': + resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} + + '@tweenjs/tween.js@20.0.3': + resolution: {integrity: sha512-SYUe1UgY5HM05EB4+0B4arq2IPjvyzKXoklXKxSYrc2IFxGm1cBrqg5XbiB5uwbs0xY5j+rj986NAJMM0KZaUw==} + + '@types/babel__core@7.20.2': + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + + '@types/babel__generator@7.6.5': + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} + + '@types/babel__template@7.4.2': + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} + + '@types/babel__traverse@7.20.2': + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} + + '@types/body-parser@1.19.3': + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} + + '@types/chai-subset@1.3.3': + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + + '@types/chai@4.3.6': + resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + + '@types/connect@3.4.36': + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + + '@types/cookie@0.4.1': + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + + '@types/cors@2.8.15': + resolution: {integrity: sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==} + + '@types/cross-spawn@6.0.3': + resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/detect-port@1.3.3': + resolution: {integrity: sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg==} + + '@types/doctrine@0.0.3': + resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} + + '@types/draco3d@1.4.7': + resolution: {integrity: sha512-sjx6hQ8UArRZf+2ZhpPkjJW8iCkyxar69/IElc9NHuGE40n0U9SuvxX59CHvF4xUH7qfJDQ2lIbANZ0HHJg+BQ==} + + '@types/ejs@3.1.3': + resolution: {integrity: sha512-mv5T/JI/bu+pbfz1o+TLl1NF0NIBbjS0Vl6Ppz1YY9DkXfzZT0lelXpfS5i3ZS3U/p90it7uERQpBvLYoK8e4A==} + + '@types/emscripten@1.39.8': + resolution: {integrity: sha512-Rk0HKcMXFUuqT32k1kXHZWgxiMvsyYsmlnjp0rLKa0MMoqXLE3T9dogDBTRfuc3SAsXu97KD3k4SKR1lHqd57w==} + + '@types/escodegen@0.0.6': + resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/estree@1.0.2': + resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + + '@types/express-serve-static-core@4.17.37': + resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} + + '@types/express@4.17.18': + resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==} + + '@types/find-cache-dir@3.2.1': + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + + '@types/gapi@0.0.47': + resolution: {integrity: sha512-/ZsLuq6BffMgbKMtZyDZ8vwQvTyKhKQ1G2K6VyWCgtHHhfSSXbk4+4JwImZiTjWNXfI2q1ZStAwFFHSkNoTkHA==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.7': + resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} + + '@types/http-cache-semantics@4.0.2': + resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} + + '@types/http-errors@2.0.2': + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} + + '@types/istanbul-lib-coverage@2.0.4': + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + '@types/istanbul-lib-report@3.0.1': + resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==} + + '@types/istanbul-reports@3.0.2': + resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==} + + '@types/js-cookie@2.2.7': + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + + '@types/json-schema@7.0.12': + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/lodash-es@4.17.9': + resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==} + + '@types/lodash@4.14.199': + resolution: {integrity: sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==} + + '@types/mdast@4.0.3': + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + + '@types/mdx@2.0.8': + resolution: {integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==} + + '@types/mime-types@2.1.2': + resolution: {integrity: sha512-q9QGHMGCiBJCHEvd4ZLdasdqXv570agPsUW0CeIm/B8DzhxsYMerD0l3IlI+EQ1A2RWHY2mmM9x1YIuuWxisCg==} + + '@types/mime@1.3.3': + resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==} + + '@types/mime@3.0.2': + resolution: {integrity: sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/minimist@1.2.3': + resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-fetch@2.6.6': + resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} + + '@types/node@14.18.56': + resolution: {integrity: sha512-+k+57NVS9opgrEn5l9c0gvD1r6C+PtyhVE4BTnMMRwiEA8ZO8uFcs6Yy2sXIy0eC95ZurBtRSvhZiHXBysbl6w==} + + '@types/node@16.18.58': + resolution: {integrity: sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA==} + + '@types/node@20.11.19': + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + + '@types/node@20.8.0': + resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} + + '@types/node@20.8.10': + resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + + '@types/normalize-package-data@2.4.2': + resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} + + '@types/offscreencanvas@2019.7.2': + resolution: {integrity: sha512-ujCjOxeA07IbEBQYAkoOI+XFw5sT3nhWJ/xZfPR6reJppDG7iPQPZacQiLTtWH1b3a2NYXWlxvYqa40y/LAixQ==} + + '@types/parse-json@4.0.0': + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + '@types/pretty-hrtime@1.0.1': + resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} + + '@types/prop-types@15.7.11': + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + '@types/prop-types@15.7.5': + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + + '@types/qs@6.9.8': + resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} + + '@types/range-parser@1.2.5': + resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==} + + '@types/rbush@3.0.1': + resolution: {integrity: sha512-0LecKcQjuJ/PclmThftzePIKXaKt7OMjoZZ3Xf17Ebd28ZU6OFUu1mObbvV74YXS1W3APdZO5GRHyD/ezGK4Vg==} + + '@types/react-dom@18.2.7': + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + + '@types/react-transition-group@4.4.7': + resolution: {integrity: sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==} + + '@types/react@18.2.20': + resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} + + '@types/readable-stream@4.0.10': + resolution: {integrity: sha512-AbUKBjcC8SHmImNi4yK2bbjogQlkFSg7shZCcicxPQapniOlajG8GCc39lvXzCWX4lLRRs7DM3VAeSlqmEVZUA==} + + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + + '@types/sat@0.0.31': + resolution: {integrity: sha512-P4SVw79XheP1p92useDVpLYYOUQ6lpw2L7IdQz4dD23DZ8DiC1STgPOh72hjR5IZJBPQbzlICAbmjCKbwyYuxg==} + + '@types/scheduler@0.16.3': + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + + '@types/semver@7.5.3': + resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} + + '@types/send@0.17.2': + resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} + + '@types/serve-static@1.15.3': + resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} + + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + + '@types/sizzle@2.3.3': + resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + + '@types/stats.js@0.17.1': + resolution: {integrity: sha512-OgfYE1x2w1jRUXzzKABX+kOdwz2y9PE0uSwnZabkWfJTWOzm7Pvfm4JI2xqRE0q2nwUe2jZLWcrcnhd9lQU63w==} + + '@types/three@0.154.0': + resolution: {integrity: sha512-IioqpGhch6FdLDh4zazRn3rXHj6Vn2nVOziJdXVbJFi9CaI65LtP9qqUtpzbsHK2Ezlox8NtsLNHSw3AQzucjA==} + + '@types/three@0.156.0': + resolution: {integrity: sha512-733bXDSRdlrxqOmQuOmfC1UBRuJ2pREPk8sWnx9MtIJEVDQMx8U0NQO5MVVaOrjzDPyLI+cFPim2X/ss9v0+LQ==} + + '@types/trusted-types@2.0.3': + resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + + '@types/ua-parser-js@0.7.39': + resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} + + '@types/unist@2.0.8': + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + + '@types/unist@3.0.2': + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + + '@types/webxr@0.5.7': + resolution: {integrity: sha512-Rcgs5c2eNFnHp53YOjgtKfl/zWX1Y+uFGUwlSXrWcZWu3yhANRezmph4MninmqybUYT6g9ZE0aQ9QIdPkLR3Kg==} + + '@types/wicg-file-system-access@2023.10.2': + resolution: {integrity: sha512-nSiK8qt0O7sQmDcW3HYfvya7GDoD6ipgdcUFzk3QN+UBIqXeNg38Nh6VnKv7EIPfkVETRiquyMskCbpxUzgX1Q==} + + '@types/yargs-parser@21.0.1': + resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} + + '@types/yargs@17.0.28': + resolution: {integrity: sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==} + + '@types/yauzl@2.10.1': + resolution: {integrity: sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@6.1.0': + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.7.3': + resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.1.0': + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/scope-manager@6.7.3': + resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.1.0': + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.1.0': + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/types@6.7.3': + resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.1.0': + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@6.7.3': + resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.1.0': + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.1.0': + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/visitor-keys@6.7.3': + resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@vitejs/plugin-react@3.1.0': + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.1.0-beta.0 + + '@vitest/expect@0.34.6': + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + + '@vitest/runner@0.34.6': + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + + '@vitest/snapshot@0.34.6': + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + + '@vitest/spy@0.34.6': + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + + '@vitest/utils@0.34.6': + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + + '@webgpu/types@0.1.40': + resolution: {integrity: sha512-/BBkHLS6/eQjyWhY2H7Dx5DHcVrS2ICj9owvSRdgtQT6KcafLZA86tPze0xAOsd4FbsYKCUBUQyNi87q7gV7kw==} + + '@xboxreplay/errors@0.1.0': + resolution: {integrity: sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==} + + '@xboxreplay/xboxlive-auth@3.3.3': + resolution: {integrity: sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==} + + '@xmcl/asm@1.0.1': + resolution: {integrity: sha512-7vCVgm1E1IZ2cujiitFk9550Vgu2XAOn1ff90di638fMmTK0XkFMXKsSR/nGZmYKt+XiTMI/0B3TvreqbVjOug==} + engines: {node: '>=16'} + + '@xmcl/core@2.12.0': + resolution: {integrity: sha512-rcxy29i2fjGFpe6sEvaJxYHFGlfYMcJwElbk6TIUCrKNOiMhyLZeBtCJSk38hvaYF0kiROA3c4EJeWNGHf2zVw==} + engines: {node: '>=16.0'} + + '@xmcl/file-transfer@1.0.3': + resolution: {integrity: sha512-p5JsUQpNShqW4VpqaKXcQzYSO9o/9UGjXZfb5aNt/24Ty+j9qepQyPo4P1CFwfzgFuf9GGhH5cPUi6nShlKS+g==} + engines: {node: '>=16.0'} + + '@xmcl/forge-site-parser@2.0.9': + resolution: {integrity: sha512-OHKG2KYE+F6TSeOQmymuGoqEifxbJb3w3X/hmxMNeqtewiYukJldPmKO559ZFnZnOuMQEnr+X0dMbTQwWs5dFg==} + engines: {node: '>=16'} + + '@xmcl/installer@5.1.0': + resolution: {integrity: sha512-KpoxpfYdUWH4U4Yat7RifS1JZajArOdfgsJ/LdU90y6Fc3hKhHSJsiRudk1VxASTyMXKCM0lWVxH5JzywRHBDw==} + engines: {node: '>=16.0'} + + '@xmcl/task@4.0.6': + resolution: {integrity: sha512-h0AR7DQm6xxBgROPnRi0EY8DlaDQwuGzPA5lFRMD4EsnpHJ/3fPdzwbMLb81ZxKJlLSCn3hVR2yI0mSKIm5Heg==} + + '@xmcl/text-component@2.1.3': + resolution: {integrity: sha512-LdUZgC5+8F23J2ZkZi7aZb87QBNfxwJqhUyts8YBQYwxQPwei20TOBm2hr69euoAeDo7NDfbLXssD4mUvsAS0Q==} + engines: {node: '>=16'} + + '@xmcl/unzip@2.1.2': + resolution: {integrity: sha512-Lm/eg/e0/p+sfj/RT2QDpsBAf39DZqQ3+XvX1JXZPb64wnjwOf8CGU1WPv6BseEcJ5CMOpm0s2NyrEQD04y0UQ==} + engines: {node: '>=16'} + peerDependencies: + yauzl: ^2.10.0 + + '@xobotyi/scrollbar-width@1.9.5': + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': + resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} + engines: {node: '>=14.15.0'} + peerDependencies: + esbuild: '>=0.10.0' + + '@yarnpkg/fslib@2.10.3': + resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/libzip@2.3.0': + resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} + engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@zardoy/flying-squid@0.0.15': + resolution: {integrity: sha512-VooP9XuzNQVL3y0zlaU5wStRm1vfQIXAzVNHuvMoMgyIyOiD7A59QzVZT93GAoTyUBHTwqweXMPQftjywUy62A==} + engines: {node: '>=8'} + hasBin: true + + '@zardoy/react-util@0.2.0': + resolution: {integrity: sha512-glABtx54mh4XSaK6BNALWE3mlshPjcPwPsRj/GnOXEA7WJY/6n43iJoukbaYF3758mGZRU5Fq6gklyFjBg0yHQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.0.0 + + '@zardoy/utils@0.0.11': + resolution: {integrity: sha512-d6xBnSFCOa98HcL52xSBflJKjKpxfRhtr1eVexy89YujeCHSQhUMmSz9h07xyrulfW60k9tSeYH5reuqoh4l4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + Base64@0.2.1: + resolution: {integrity: sha512-reGEWshDmTDQDsCec/HduOO9Wyj6yMOupMfhIf3ugN1TDlK2NQW4DDJSqNNtp380SNcvRfXtO8HSCQot0d0SMw==} + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + aes-js@3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + + after@0.8.2: + resolution: {integrity: sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==} + + agent-base@5.1.1: + resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} + engines: {node: '>= 6.0.0'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + + animejs@3.2.1: + resolution: {integrity: sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + apache-crypt@1.2.6: + resolution: {integrity: sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==} + engines: {node: '>=8'} + + apache-md5@1.1.8: + resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} + engines: {node: '>=8'} + + app-root-dir@1.0.2: + resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-hidden@1.2.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + + arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + arraybuffer.slice@0.0.7: + resolution: {integrity: sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asap@1.0.0: + resolution: {integrity: sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==} + + asn1.js@5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + + asn1@0.2.3: + resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assert@2.0.0: + resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + ast-types@0.14.2: + resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} + engines: {node: '>=4'} + + ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + + asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.5: + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.8.3: + resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.5.2: + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + backo2@1.0.2: + resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-arraybuffer@0.1.4: + resolution: {integrity: sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==} + engines: {node: '>= 0.6.0'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bcryptjs@2.4.3: + resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + + binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bit-twiddle@1.0.2: + resolution: {integrity: sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + + blob@0.0.5: + resolution: {integrity: sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browserfs@https://codeload.github.com/zardoy/browserfs/tar.gz/ab58ae8ef00e3a31db01909e365e6cb5188436e0: + resolution: {tarball: https://codeload.github.com/zardoy/browserfs/tar.gz/ab58ae8ef00e3a31db01909e365e6cb5188436e0} + version: 2.0.0 + engines: {node: '>= 18'} + + browserfs@https://codeload.github.com/zardoy/browserfs/tar.gz/e60ca69e74888e057a96a468afe1d62347d3f56f: + resolution: {tarball: https://codeload.github.com/zardoy/browserfs/tar.gz/e60ca69e74888e057a96a468afe1d62347d3f56f} + version: 2.0.0-zardoy + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + + browserify-sign@4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + + browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + + buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + c8@7.14.0: + resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} + engines: {node: '>=10.12.0'} + hasBin: true + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-keys@7.0.2: + resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} + engines: {node: '>=12'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001524: + resolution: {integrity: sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==} + + canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cbor-extract@2.2.0: + resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} + hasBin: true + + cbor-x@1.5.4: + resolution: {integrity: sha512-PVKILDn+Rf6MRhhcyzGXi5eizn1i0i3F8Fe6UMMxXBnWkalq9+C5+VTmlIjAYM4iF2IYF2N+zToqAfYOp+3rfw==} + + chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + change-case@5.1.2: + resolution: {integrity: sha512-CAtbGEDulyjzs05RXy3uKcwqeztz/dMEuAc1Xu9NQBsbrhuGMneL0u9Dj5SoutLKBFYun8txxYIwhjtLNfUmCA==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + + chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + + chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + engines: {node: '>=6'} + + cli-table3@0.6.3: + resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clsx@1.1.1: + resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} + engines: {node: '>=6'} + + clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@0.5.3: + resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-diff@1.4.0: + resolution: {integrity: sha512-4oDB/o78lNdppbaqrg0HjOp7pHmUc+dfCxWKWFnQg6AB/1dkjtBDop3RZht5386cq9xBUDRvDvSCA7WUlM9Jqw==} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-bind@1.0.0: + resolution: {integrity: sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==} + + component-emitter@1.2.1: + resolution: {integrity: sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==} + + component-emitter@1.3.0: + resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} + + component-inherit@0.0.3: + resolution: {integrity: sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + contro-max@0.1.1: + resolution: {integrity: sha512-H+bzJWxiuxu98Tz8iGs1occMkRlr9fOzfOKeflVU8bD5teAEiJu8zjVnNSbweLQIR+Vhdynygv18N69t97rVAw==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + + core-js-compat@3.32.1: + resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} + + core-js@3.32.1: + resolution: {integrity: sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + + corser@2.0.1: + resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} + engines: {node: '>= 0.4.0'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-browserify@3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + cypress-esbuild-preprocessor@1.0.2: + resolution: {integrity: sha512-JsFnm6fBQt/OEzstknJ1KLMTuUERUaG0ZB9fk0KdNUlZqxaVEoQ9/pFvKmqRfzUe2y00cWD++ptccQA4tNAAlQ==} + + cypress-plugin-snapshots@1.4.4: + resolution: {integrity: sha512-rijq3RTEZNtxQA4KCUwjXinmE1Ww+z6cQW0B14iodFM/HlX5LN16XT/2QS3X1nUXRKt0QdTrAC5MQfMUrjBkSQ==} + engines: {node: '>=8.2.1'} + peerDependencies: + cypress: ^4.5.0 + + cypress@10.11.0: + resolution: {integrity: sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==} + engines: {node: '>=12.0.0'} + hasBin: true + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + dayjs@1.11.9: + resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.1.0: + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.1.1: + resolution: {integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==} + deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decamelize@5.0.1: + resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} + engines: {node: '>=10'} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.0: + resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + engines: {node: '>= 0.4'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + defu@6.1.2: + resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} + + del@6.1.1: + resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@1.0.0: + resolution: {integrity: sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw==} + engines: {node: '>=6'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-collisions@7.0.5: + resolution: {integrity: sha512-RiebSYJ9Vok1uVm57bxpI69EO2ySK1rdcHpRv28IDBh/wgaF8wxjoZJV7mmqz8MOKioLwMHvcMyP1R0CLZ+RbA==} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + detect-package-manager@2.0.1: + resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} + engines: {node: '>=12'} + + detect-port@1.5.1: + resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} + hasBin: true + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + diamond-square@https://codeload.github.com/zardoy/diamond-square/tar.gz/915fce8e27fe8eb45464d89b9563956afa4f7687: + resolution: {tarball: https://codeload.github.com/zardoy/diamond-square/tar.gz/915fce8e27fe8eb45464d89b9563956afa4f7687} + version: 1.3.0 + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff2html@2.12.2: + resolution: {integrity: sha512-G/Zn1KyG/OeC+67N/P26WHsQpjrjUiRyWGvg29ypy3MxSsBmF0bzsU/Irq70i2UAg+f/MzmLx4v/Nkt01TOU3g==} + engines: {node: '>=4'} + + diff@2.2.3: + resolution: {integrity: sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==} + engines: {node: '>=0.3.1'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv-expand@10.0.0: + resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} + engines: {node: '>=12'} + + dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + + draco3d@1.5.6: + resolution: {integrity: sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.9: + resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.4.504: + resolution: {integrity: sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + emit-then@2.0.0: + resolution: {integrity: sha512-y5JHnrygHnCndtqVHHDhCr0ZzzWHK5RBTczWRlGSIR5UnGHBXuxpoaE0UB5E82qym8ma2dI799wDSSJN2e4VSg==} + engines: {node: '>=5'} + + emittery@0.10.2: + resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + endian-toggle@0.0.0: + resolution: {integrity: sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==} + + engine.io-client@3.5.3: + resolution: {integrity: sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==} + + engine.io-client@6.5.2: + resolution: {integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==} + + engine.io-parser@2.2.1: + resolution: {integrity: sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==} + + engine.io-parser@5.2.1: + resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + engines: {node: '>=10.0.0'} + + engine.io@3.6.1: + resolution: {integrity: sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==} + engines: {node: '>=8.0.0'} + + engine.io@6.5.3: + resolution: {integrity: sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==} + engines: {node: '>=10.2.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + envinfo@7.10.0: + resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} + engines: {node: '>=4'} + hasBin: true + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + eruda@3.0.1: + resolution: {integrity: sha512-6q1Xdwga4JTr1mKSW4mzuWSSbmXgqpm/8Wa1QGFGfCWRjC0bCQjbS4u06M1te1moucIS3hBLlbSTPWYH2W0qbQ==} + + es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + engines: {node: '>= 0.4'} + + es-abstract@1.22.4: + resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.0.17: + resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} + engines: {node: '>= 0.4'} + + es-module-lexer@0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + + es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es6-object-assign@1.1.0: + resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + esbuild-plugin-alias@0.2.1: + resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} + + esbuild-plugin-polyfill-node@0.3.0: + resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} + peerDependencies: + esbuild: '*' + + esbuild-register@3.5.0: + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.19.3: + resolution: {integrity: sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-xo-react@0.27.0: + resolution: {integrity: sha512-wiV215xQIn71XZyyVfaOXHaFpR1B14IJttwOjMi/eqUK1s+ojJdHr7eHqTLaGUfh6FKgWha1QNwePlIXx7mBUg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.6.0' + eslint-plugin-react: '>=7.29.0' + eslint-plugin-react-hooks: '>=4.3.0' + + eslint-config-xo-typescript@1.0.1: + resolution: {integrity: sha512-vPQssnRSUgBFOEfB/KY12CXwltwFSn4RSCfa+w7gjBC2PFQ7Yfgmyei+1XUZ3K+8LRGef2NMJUcxts7PldhDjg==} + engines: {node: '>=16'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>=6.0.0' + '@typescript-eslint/parser': '>=6.0.0' + eslint: '>=8.0.0' + typescript: '>=4.7' + + eslint-config-xo@0.43.1: + resolution: {integrity: sha512-azv1L2PysRA0NkZOgbndUpN+581L7wPqkgJOgxxw3hxwXAbJgD6Hqb/SjHRiACifXt/AvxCzE/jIKFAlI7XjvQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.27.0' + + eslint-config-zardoy@0.2.17: + resolution: {integrity: sha512-d31WsjyVSQqHbzTpBSmH96+nw5gwY2yhDbZatU89gr+U8ou1FRUkJSApYJUgmcINt8AQocj1RDDAVYmVSILZgQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + eslint: ^8.5.0 + eslint-plugin-vue: ^8.4.1 + typescript: ^4.5.2 + vue-eslint-parser: ^8.2.0 + peerDependenciesMeta: + eslint-plugin-vue: + optional: true + vue-eslint-parser: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.0: + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-es@3.0.1: + resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-eslint-comments@3.2.0: + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + + eslint-plugin-import@2.27.5: + resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-node@11.1.0: + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=5.16.0' + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.33.2: + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-sonarjs@0.19.0: + resolution: {integrity: sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw==} + engines: {node: '>=14'} + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + eslint-plugin-unicorn@48.0.0: + resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==} + engines: {node: '>=16'} + peerDependencies: + eslint: '>=8.44.0' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.50.0: + resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-to-babel@3.2.1: + resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} + engines: {node: '>=8.3.0'} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-promise@0.0.1: + resolution: {integrity: sha512-ouEmk2N0BalybPM0zmj3RHE93AX4p9hAIHZfbbqxolLChqCB6pcLDbYH6zZ8TaiFWImPHfs5kFnNpA0u9RdEaQ==} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + + exit-hook@2.2.1: + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} + engines: {node: '>=6'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + express-ws@4.0.0: + resolution: {integrity: sha512-KEyUw8AwRET2iFjFsI1EJQrJ/fHeGiJtgpYgEWG3yDv4l/To/m3a2GaYfeGyB3lsWdvbesjF5XCMx+SVBgAAYw==} + engines: {node: '>=4.5.0'} + peerDependencies: + express: ^4.0.0 || ^5.0.0-alpha.1 + + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extract-zip@1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + + fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + + fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + + fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fetch-retry@5.0.6: + resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} + + fflate@0.6.10: + resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-system-cache@2.3.0: + resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + + file-type@9.0.0: + resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} + engines: {node: '>=6'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filesize@10.0.12: + resolution: {integrity: sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==} + engines: {node: '>= 10.4.0'} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} + + flatmap@0.0.3: + resolution: {integrity: sha512-OuR+o7kHVe+x9RtIujPay7Uw3bvDZBZFSBXClEphZuSDLmZTqMdclasf4vFSsogC8baDz0eaC2NdO/2dlXHBKQ==} + + flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + flow-parser@0.218.0: + resolution: {integrity: sha512-mk4e7UK4P/W3tjrJyto6oxPuCjwvRMyzBh72hTl8T0dOcTzkP0M2JJHpncgyhKphMFi9pnjwHfc8e0oe4Uk3LA==} + engines: {node: '>=0.4.0'} + + follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@11.1.1: + resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-npm-tarball-url@2.0.3: + resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} + engines: {node: '>=12.17'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@5.1.1: + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} + engines: {node: '>=8'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getos@3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + giget@1.1.3: + resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} + hasBin: true + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + github-slugger@1.5.0: + resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} + + gl@6.0.2: + resolution: {integrity: sha512-yBbfpChOtFvg5D+KtMaBFvj6yt3vUnheNAH+UrQH2TfDB8kr0tERdL0Tjhe0W7xJ6jR6ftQBluTZR9jXUnKe8g==} + engines: {node: '>=14.0.0'} + + glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-promise@4.2.2: + resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} + engines: {node: '>=12'} + peerDependencies: + glob: ^7.1.6 + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.3.3: + resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + glsl-tokenizer@2.1.5: + resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-binary2@1.0.3: + resolution: {integrity: sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==} + + has-cors@1.1.0: + resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hogan.js@3.0.2: + resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} + hasBin: true + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + http-auth@3.1.3: + resolution: {integrity: sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==} + engines: {node: '>=4.6.1'} + + http-browserify@1.7.0: + resolution: {integrity: sha512-Irf/LJXmE3cBzU1eaR4+NEX6bmVLqt1wkmDiA7kBwH7zmb0D8kBAXsDmQ88hhj/qv9iEZKlyGx/hrMcFi8sOHw==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-server@14.1.1: + resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} + engines: {node: '>=12'} + hasBin: true + + http-signature@1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + https-proxy-agent@4.0.0: + resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} + engines: {node: '>= 6.0.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + + iconify-icon@1.0.8: + resolution: {integrity: sha512-jvbUKHXf8EnGGArmhlP2IG8VqQLFFyTvTqb9LVL2TKTh7/eCCD1o2HHE9thpbJJb6B8hzhcFb6rOKhvo7reNKA==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb@7.1.1: + resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + image-size@0.7.5: + resolution: {integrity: sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==} + engines: {node: '>=6.9.0'} + hasBin: true + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@3.0.0: + resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + indexof@0.0.1: + resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + inline-style-prefixer@6.0.4: + resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + + internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-absolute-url@3.0.3: + resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} + engines: {node: '>=8'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + + is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.1: + resolution: {integrity: sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + istanbul-lib-coverage@3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@2.3.0: + resolution: {integrity: sha512-uKmsITSsF4rUWQHzqaRUuyAir3fZfW3f202Ee34lz/gZCi970CPZwyQXLGNgWJvvZbvFyzeyGq0+4fcG/mBKZg==} + engines: {node: '>=14'} + + jake@10.8.7: + resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} + engines: {node: '>=10'} + hasBin: true + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jimp@0.10.3: + resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + + jose@4.15.4: + resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + + jpeg-js@0.3.7: + resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} + + js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-graph-algorithms@1.0.18: + resolution: {integrity: sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jscodeshift@0.14.0: + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpointer@5.0.1: + resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} + engines: {node: '>=0.10.0'} + + jsonwebtoken@9.0.2: + resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} + engines: {node: '>=12', npm: '>=6'} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + + lazy-universal-dotenv@4.0.0: + resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} + engines: {node: '>=14.0.0'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lil-gui@0.17.0: + resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} + + lil-gui@0.18.2: + resolution: {integrity: sha512-DgdrLy3/KGC0PiQLKgOcJMPItP4xY4iWgJ9+91Zaxfr8GCTmMps05QS9w9jW7yspILlbscbquwjOwxmWnSx5Uw==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + listr2@3.14.0: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + live-server@1.2.2: + resolution: {integrity: sha512-t28HXLjITRGoMSrCOv4eZ88viHaBVIjKjdI5PO92Vxlu+twbk6aE0t7dVIaz6ZWkjPilYFV6OSdMYl9ybN2B4w==} + engines: {node: '>=0.10.0'} + hasBin: true + + load-bmfont@1.4.1: + resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.compact@3.0.1: + resolution: {integrity: sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.includes@4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isinteger@4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + + lodash.isnumber@3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.reduce@4.6.0: + resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + looks-same@8.2.3: + resolution: {integrity: sha512-0LK5r4+9t2D56XPVNH3hhG4o0yBYUdeu9FEd8z0ZCs/2fR9zJQj+6ob6ued8iHk3yddrSAdUA+9YGVK2FBMGUw==} + engines: {node: '>= 12.0.0'} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} + engines: {node: 14 || >=16.14} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + macaddress@0.5.3: + resolution: {integrity: sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.4: + resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + engines: {node: '>=12'} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-it@14.0.0: + resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} + hasBin: true + + markdown-to-jsx@7.3.2: + resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} + engines: {node: '>= 10'} + peerDependencies: + react: ^18.2.0 + + math.gl@4.0.1: + resolution: {integrity: sha512-Yvw1HfmsDePxwhCBvGT8teyPN0mwxcxUaWLoDaRuZYxoUYa9HRg+6ywBS+yXopC0wIS9MFi+BCVKP8hdJpaJjw==} + + md5-file@4.0.0: + resolution: {integrity: sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==} + engines: {node: '>=6.0'} + hasBin: true + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mdast-util-definitions@4.0.0: + resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + + mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@1.1.0: + resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@10.1.5: + resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@1.2.1: + resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} + + meshoptimizer@0.18.1: + resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minecraft-assets@1.12.2: + resolution: {integrity: sha512-/eMxh3LNjCXOnU6KnQMjBM8dRnoJNpWIg7mD2m2RthraYiQK2FNzPWIKxWm2j3Ufcf5nzFXupgABledE86r4fQ==} + + minecraft-data@3.62.0: + resolution: {integrity: sha512-jJXZ/WgyX79tIHlqvfyqG+sJDUekHiA3e9NRUCMGUno4NDrZMcpRI065DnkrI720RHTMb8iadf0NmnBP4Rla5A==} + + minecraft-folder-path@1.2.0: + resolution: {integrity: sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==} + + minecraft-inventory-gui@https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/5554c7ab0a74bce52aa5f5f04a48eb8d3b9ac65c: + resolution: {tarball: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/5554c7ab0a74bce52aa5f5f04a48eb8d3b9ac65c} + version: 1.0.1 + + minecraft-protocol@https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f: + resolution: {tarball: https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f} + version: 1.45.0 + engines: {node: '>=14'} + + minecraft-wrap@1.5.1: + resolution: {integrity: sha512-7DZ2WhrcRD3fUMau84l9Va0KWzV92SHNdB7mnNdNhgXID2aW6pjWuYPZi8MepEBemA4XKKdnDx7HmhTbkoiR8A==} + hasBin: true + + minecrafthawkeye@1.3.6: + resolution: {integrity: sha512-SlRlorxQs6nNzMiiIQ5z47wzbAI27UaCdbRB82CE8jqj4C8m3Gqk5TlgN+PSThxx8EDPXySzd8Vk+/wNigAd5A==} + + mineflayer-pathfinder@2.4.4: + resolution: {integrity: sha512-HAXakZrJRb1UC+5dv8EaDrqjW3ZnBnBk3nkb6x/YWyhHCUKn/E7VU0FO+UN9whuqPlkSaVumEdXJdydE6lSYxQ==} + + mineflayer@https://codeload.github.com/PrismarineJS/mineflayer/tar.gz/ec76468c8ac4c6232bad3c2b66d4160f95f58396: + resolution: {tarball: https://codeload.github.com/PrismarineJS/mineflayer/tar.gz/ec76468c8ac4c6232bad3c2b66d4160f95f58396} + version: 4.20.1 + engines: {node: '>=18'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mkdirp@0.3.0: + resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} + deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + + mojangson@2.0.4: + resolution: {integrity: sha512-HYmhgDjr1gzF7trGgvcC/huIg2L8FsVbi/KacRe6r1AswbboGVZDS47SOZlomPuMWvZLas8m9vuHHucdZMwTmQ==} + + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + + morgan@1.10.0: + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} + engines: {node: '>= 0.8.0'} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + + nano-css@5.3.5: + resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} + peerDependencies: + react: ^18.2.0 + react-dom: '*' + + nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + napi-build-utils@1.0.2: + resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + + needle@2.9.1: + resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + nested-error-stacks@2.1.1: + resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} + + net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/7d827dba61bd2f9ac9a6086fe2079a0fccadd070: + resolution: {tarball: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/7d827dba61bd2f9ac9a6086fe2079a0fccadd070} + version: 0.2.4 + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abi@3.47.0: + resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} + engines: {node: '>=10'} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-canvas-webgl@0.3.0: + resolution: {integrity: sha512-wDRCTEE2TCqKDeSef5cNgtLv8kgjRlnFN3aYgB9yni0kHRNnKBSSP93lT8VIV5GuMWiy5KNXBU0ilyWL5wTvFg==} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-fetch-native@1.4.0: + resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build-optional-packages@5.1.1: + resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} + hasBin: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-gzip@1.1.2: + resolution: {integrity: sha512-ZB6zWpfZHGtxZnPMrJSKHVPrRjURoUzaDbLFj3VO70mpLTW5np96vXyHwft4Id0o+PYIzgDkBUjIzaNHhQ8srw==} + + node-html-parser@6.1.10: + resolution: {integrity: sha512-6/uWdWxjQWQ7tMcFK2wWlrflsQUzh1HsEzlIf2j5+TtzfhT2yUvg3DwZYAmjEHeR3uX74ko7exjHW69J0tOzIg==} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + node-rsa@0.4.2: + resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} + + node-rsa@1.1.1: + resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} + + nopt@1.0.10: + resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} + hasBin: true + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + opn@6.0.0: + resolution: {integrity: sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==} + engines: {node: '>=8'} + deprecated: The package has been renamed to `open` + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-asn1@5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.4: + resolution: {integrity: sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==} + + parse-color@1.0.0: + resolution: {integrity: sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==} + + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parseqs@0.0.6: + resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==} + + parseuri@0.0.6: + resolution: {integrity: sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + + path-exists-cli@2.0.0: + resolution: {integrity: sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + + peerjs-js-binarypack@2.0.0: + resolution: {integrity: sha512-wu+L0Qeg4IH2DXm3B6xKP5ODeCIovwEEO/Fu3MVqApPQeVLzSdZpFzQzPobh+sdhUWMQGEO7YxHeiwpPngLjqQ==} + engines: {node: '>= 14.0.0'} + + peerjs@1.5.0: + resolution: {integrity: sha512-NLZ73jRNE4aLq2pmVTiSkWmwf6cvt9cH72qJHnzaLH+I2CtoWVvY42U9/O0/tYE6UYwRYJ1ktKRs2DdZ1Jrgcg==} + engines: {node: '>= 14'} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + + polished@4.2.2: + resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} + engines: {node: '>=10'} + + poly-decomp@0.3.0: + resolution: {integrity: sha512-hWeBxGzPYiybmI4548Fca7Up/0k1qS5+79cVHI9+H33dKya5YNb9hxl0ZnDaDgvrZSuYFBhkCK/HOnqN7gefkQ==} + + portfinder@1.0.32: + resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} + engines: {node: '>= 0.12.0'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + + potpack@1.0.2: + resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} + + prebuild-install@7.1.1: + resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} + engines: {node: '>=10'} + hasBin: true + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier@1.19.1: + resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} + engines: {node: '>=4'} + hasBin: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} + engines: {node: ^14.13.1 || >=16.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + prismarine-auth@2.4.1: + resolution: {integrity: sha512-DwDI3Ucxf/eThJJo5QVzlywFrJulL1fK1z6F8bybvddim8YgudRksQc3w4cE2m0hPPHfE1BRd5lh1NpedrixMQ==} + + prismarine-biome@1.3.0: + resolution: {integrity: sha512-GY6nZxq93mTErT7jD7jt8YS1aPrOakbJHh39seYsJFXvueIOdHAmW16kYQVrTVMW5MlWLQVxV/EquRwOgr4MnQ==} + peerDependencies: + minecraft-data: 3.62.0 + prismarine-registry: ^1.1.0 + + prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0: + resolution: {tarball: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0} + version: 1.17.1 + + prismarine-chat@1.9.1: + resolution: {integrity: sha512-x7WWa5MNhiLZSO6tw+YyKpzquFZ+DNISVgiV6K3SU0GsishMXe+nto02WhF/4AuFerKdugm9u1d/r4C4zSkJOg==} + + prismarine-chunk@1.35.0: + resolution: {integrity: sha512-Q1lElMUle7wWxWdQjbZo3j2/dLNG325j90IcbbMmBTnHdQSWIjWFe792XOz3RVBlvrhRJEiZk38S6/eQTQ9esw==} + engines: {node: '>=14'} + + prismarine-entity@2.3.1: + resolution: {integrity: sha512-HOv8l7IetHNf4hwZ7V/W4vM3GNl+e6VCtKDkH9h02TRq7jWngsggKtJV+VanCce/sNwtJUhJDjORGs728ep4MA==} + + prismarine-item@1.14.0: + resolution: {integrity: sha512-udQHYGJ05klFe8Kkc0TOmwoXj5Xl1ZPgHVoMbGUAFB9exN4TFxEa1A39vkSYhxP5Et9PNufQQvFBFVom0nXikA==} + + prismarine-nbt@2.2.1: + resolution: {integrity: sha512-Mb50c58CPnuZ+qvM31DBa08tf9UumlTq1LkvpMoUpKfCuN05GZHTqCUwER3lxTSHLL0GZKghIPbYR/JQkINijQ==} + + prismarine-nbt@2.5.0: + resolution: {integrity: sha512-F0/8UAa9SDDnAGrBYqZc4nG8h2zj5cE2eAJU5xlDR/IsQQ3moVxkOjE3h3nMv6SbvZrvAcgX7waA/nd9LLHYdA==} + + prismarine-physics@1.8.0: + resolution: {integrity: sha512-gbM+S+bmVtOKVv+Z0WGaHMeEeBHISIDsRDRlv8sr0dex3ZJRhuq8djA02CBreguXtI18ZKh6q3TSj2qDr45NHA==} + + prismarine-provider-anvil@https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/02d81b0eba6ab1c362862970954f9a3c150c9a29: + resolution: {tarball: https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/02d81b0eba6ab1c362862970954f9a3c150c9a29} + version: 2.7.0 + + prismarine-realms@1.3.2: + resolution: {integrity: sha512-5apl9Ru8veTj5q2OozRc4GZOuSIcs3yY4UEtALiLKHstBe8bRw8vNlaz4Zla3jsQ8yP/ul1b1IJINTRbocuA6g==} + + prismarine-recipe@1.3.1: + resolution: {integrity: sha512-xfa9E9ACoaDi+YzNQ+nk8kWSIqt5vSZOOCHIT+dTXscf/dng2HaJ/59uwe1D/jvOkAd2OvM6RRJM6fFe0q/LDA==} + peerDependencies: + prismarine-registry: ^1.4.0 + + prismarine-registry@1.7.0: + resolution: {integrity: sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==} + + prismarine-schematic@1.2.3: + resolution: {integrity: sha512-Mwpn43vEHhm3aw3cPhJjWqztkW+nX+QLajDHlTask8lEOTGl1WmpvFja4iwiws4GIvaC8x0Foptf4uvDsnjrAg==} + + prismarine-windows@2.9.0: + resolution: {integrity: sha512-fm4kOLjGFPov7TEJRmXHoiPabxIQrG36r2mDjlNxfkcLfMHFb3/1ML6mp4iRQa7wL0GK4DIAyiBqCWoeWDxARg==} + + prismarine-world@https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465: + resolution: {tarball: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465} + version: 3.6.2 + engines: {node: '>=8.0.0'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + process@https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e: + resolution: {tarball: https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e} + version: 0.11.10 + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-queue@2.2.5: + resolution: {integrity: sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==} + engines: {node: '>= 0.8.0'} + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + promise@5.0.0: + resolution: {integrity: sha512-N2BfLz0Sigf7rsm5NnItRwTNqEDUF2ephwEXTcOAf2cO9NwZ9TnIjOmnQNtC0r70CV0S1+uc9mSMmFH7gxk87Q==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + prosemirror-commands@1.5.2: + resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==} + + prosemirror-dropcursor@1.8.1: + resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} + + prosemirror-example-setup@1.2.2: + resolution: {integrity: sha512-pHJc656IgYm249RNp0eQaWNmnyWGk6OrzysWfYI4+NwE14HQ7YNYOlRBLErUS6uCAHIYJLNXf0/XCmf1OCtNbQ==} + + prosemirror-gapcursor@1.3.2: + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} + + prosemirror-history@1.3.2: + resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==} + + prosemirror-inputrules@1.4.0: + resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==} + + prosemirror-keymap@1.2.2: + resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} + + prosemirror-markdown@1.12.0: + resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==} + + prosemirror-menu@1.2.4: + resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} + + prosemirror-model@1.19.4: + resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==} + + prosemirror-schema-list@1.3.0: + resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==} + + prosemirror-state@1.4.3: + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + + prosemirror-transform@1.8.0: + resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==} + + prosemirror-view@1.33.1: + resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==} + + protodef-validator@1.3.1: + resolution: {integrity: sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==} + hasBin: true + + protodef@1.15.0: + resolution: {integrity: sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==} + engines: {node: '>=14'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + + proxy-middleware@0.15.0: + resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} + engines: {node: '>=0.8.0'} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + puppeteer-core@2.1.1: + resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} + engines: {node: '>=8.16.0'} + + qrcode.react@3.1.0: + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} + peerDependencies: + react: ^18.2.0 + + qs@6.10.4: + resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} + engines: {node: '>=0.6'} + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + engines: {node: '>=0.6'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + + railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + + rambda@6.9.0: + resolution: {integrity: sha512-yosVdGg1hNGkXPzqGiOYNEpXKjEOxzUCg2rB0l+NKdyCaSf4z+i5ojbN0IqDSezMMf71YEglI+ZUTgTffn5afw==} + + ramda@0.29.0: + resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} + + randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + + random-seed@0.3.0: + resolution: {integrity: sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA==} + engines: {node: '>= 0.6.0'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + range@0.0.3: + resolution: {integrity: sha512-OxK2nY2bmeEB4NxoBraQIBOOeOIxoBvm6yt8MA1kLappgkG3SyLf173iOtT5woWycrtESDD2g0Nl2yt8YPoUnw==} + engines: {node: '>=0.8'} + + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + rbush@3.0.1: + resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: ^18.2.0 + react-dom: '>=16.8.0' + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@6.0.0-alpha.3: + resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} + engines: {node: '>=12.0.0'} + hasBin: true + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-element-to-jsx-string@15.0.0: + resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-inspector@6.0.2: + resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} + peerDependencies: + react: ^18.2.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react-popper@2.3.0: + resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^18.2.0 + react-dom: ^16.8.0 || ^17 || ^18 + + react-portal@4.2.1: + resolution: {integrity: sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==} + peerDependencies: + react: ^18.2.0 + react-dom: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 + + react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.4: + resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.5: + resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: ^18.2.0 + react-dom: '>=16.6.0' + + react-universal-interface@0.6.2: + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: ^18.2.0 + tslib: '*' + + react-use-measure@2.1.1: + resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} + peerDependencies: + react: ^18.2.0 + react-dom: '>=16.13' + + react-use@17.3.1: + resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} + peerDependencies: + react: ^18.2.0 + react-dom: ^16.8.0 || ^17.0.0 + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg-up@8.0.0: + resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} + engines: {node: '>=12'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + read-pkg@6.0.0: + resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} + engines: {node: '>=12'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + + recast@0.23.4: + resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} + engines: {node: '>= 4'} + + redent@4.0.0: + resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} + engines: {node: '>=12'} + + reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + + regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regjsparser@0.10.0: + resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} + hasBin: true + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + remark-external-links@8.0.0: + resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-slug@6.1.0: + resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rollup-plugin-terser@7.0.2: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + + rollup@2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + + rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + + rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + + safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sanitize-filename@1.6.3: + resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + + sat@0.9.0: + resolution: {integrity: sha512-mxdv5RZJO4tdMnUURGU3gAMcnDUEwcNJwE+lPO0/V+rBeDvFLH3wEZEOR0fH7cTN0zQaNxBEbHnyQL9DzupwQQ==} + + sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + + sdp@3.2.0: + resolution: {integrity: sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==} + + secure-compare@3.0.1: + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + + set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + sharp@0.30.7: + resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} + engines: {node: '>=12.13.0'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + + side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + simple-update-notifier@2.0.0: + resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} + engines: {node: '>=10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + skinview-utils@0.7.1: + resolution: {integrity: sha512-4eLrMqR526ehlZbsd8SuZ/CHpS9GiH0xUMoV+PYlJVi95ZFz5HJu7Spt5XYa72DRS7wgt5qquvHZf0XZJgmu9Q==} + + skinview3d@3.0.1: + resolution: {integrity: sha512-2LUSkzGxlZrTQelGT10jcW4TLiFTg5aZqXMEuqAFoWtk3qtaNu0qRFtwK5dN8zEXyKUJ3xlxah5eGtKY/NifQg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + socket.io-adapter@1.1.2: + resolution: {integrity: sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==} + + socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + + socket.io-client@2.5.0: + resolution: {integrity: sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==} + + socket.io-client@4.7.2: + resolution: {integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==} + engines: {node: '>=10.0.0'} + + socket.io-parser@3.3.3: + resolution: {integrity: sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==} + + socket.io-parser@3.4.3: + resolution: {integrity: sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + socket.io@2.5.0: + resolution: {integrity: sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==} + + socket.io@4.7.2: + resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} + engines: {node: '>=10.2.0'} + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + + source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + space-separated-tokens@1.1.5: + resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sshpk@1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stack-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + + stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + stats-gl@1.0.5: + resolution: {integrity: sha512-XimMxvwnf1Qf5KwebhcoA34kcX+fWEkIl0QjNkCbu4IpoyDMMsOajExn7FIq5w569k45+LhmsuRlGSrsvmGdNw==} + + stats.js@0.17.0: + resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + + store2@2.14.2: + resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} + + storybook@7.4.6: + resolution: {integrity: sha512-YkFSpnR47j5zz7yElA+2axLjXN7K7TxDGJRHHlqXmG5iQ0PXzmjrj2RxMDKFz4Ybp/QjEUoJ4rx//ESEY0Nb5A==} + hasBin: true + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + + string.prototype.padend@3.1.4: + resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-comments@2.0.1: + resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} + engines: {node: '>=10'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synchronous-promise@2.0.17: + resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} + + systeminformation@5.21.24: + resolution: {integrity: sha512-xQada8ByGGFoRXJaUptGgddn3i7IjtSdqNdCKzB8xkzsM7pHnfLYBWxkPdGzhZ0Z/l+W1yo+aZQZ74d2isj8kw==} + engines: {node: '>=8.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + + tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + + tar-fs@2.1.1: + resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + + telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + tempy@0.6.0: + resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} + engines: {node: '>=10'} + + tempy@1.0.1: + resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} + engines: {node: '>=10'} + + terser@5.19.2: + resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + three-stdlib@2.28.5: + resolution: {integrity: sha512-JdLMhkpT+1ZWeQPyKQNW1zqUwISI2hsUljS6u3vB9lp5EvwsayaAzGnbVeR35895udOF+zxcTiQY3psk+qqlxg==} + peerDependencies: + three: 0.154.0 + + three.meshline@1.4.0: + resolution: {integrity: sha512-A8IsiMrWP8zmHisGDAJ76ZD7t/dOF/oCe/FUKNE6Bu01ZYEx8N6IlU/1Plb2aOZtAuWM2A8s8qS3hvY0OFuvOw==} + + three@0.154.0: + resolution: {integrity: sha512-Uzz8C/5GesJzv8i+Y2prEMYUwodwZySPcNhuJUdsVMH2Yn4Nm8qlbQe6qRN5fOhg55XB0WiLfTPBxVHxpE60ug==} + + throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + + throttleit@1.0.0: + resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} + + through2@0.6.5: + resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + + timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + + tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + + tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + + title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + + tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-array@0.1.4: + resolution: {integrity: sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + tocbot@4.21.2: + resolution: {integrity: sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==} + + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + trim-newlines@4.1.1: + resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} + engines: {node: '>=12'} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + truncate-utf8-bytes@1.0.2: + resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + + ts-api-utils@1.0.3: + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + + tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tsx@4.7.0: + resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + engines: {node: '>=18.0.0'} + hasBin: true + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + twgl.js@5.5.4: + resolution: {integrity: sha512-6kFOmijOpmblTN9CCwOTCxK4lPg7rCyQjLuub6EMOlEp89Ex6yUcsMjsmH7andNPL2NE3XmHdqHeP5gVKKPhxw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.16.0: + resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + + typed-array-buffer@1.0.1: + resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + + typed-emitter@1.4.0: + resolution: {integrity: sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==} + + typed-emitter@2.1.0: + resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + ufo@1.3.1: + resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + + uglify-js@3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + engines: {node: '>=0.8.0'} + hasBin: true + + uint4@0.1.2: + resolution: {integrity: sha512-lhEx78gdTwFWG+mt6cWAZD/R6qrIj0TTBeH5xwyuDJyswLNlGe+KVlUPQ6+mx5Ld332pS0AMUTo9hIly7YsWxQ==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.25.4: + resolution: {integrity: sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==} + engines: {node: '>=14.0'} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unidiff@1.0.2: + resolution: {integrity: sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg==} + + unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + union@0.5.0: + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + unist-util-is@4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@3.1.1: + resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@2.0.3: + resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + unix-crypt-td-js@1.1.4: + resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin@1.5.0: + resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.0.11: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.0: + resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-deep-compare@1.1.0: + resolution: {integrity: sha512-6yY3zmKNCJ1jjIivfZMZMReZjr8e6iC6Uqtp701jvWJ6ejC/usXD+JjmslZDPJQgX8P4B1Oi5XSLHkOLeYSJsA==} + peerDependencies: + react: ^18.2.0 + + use-resize-observer@9.1.0: + resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} + peerDependencies: + react: ^18.2.0 + react-dom: 16.8.0 - 18 + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^18.2.0 + + use-typed-event-listener@4.0.2: + resolution: {integrity: sha512-AhjRw+qg5t7OWg7en2Q4XDCdi2iyhALFl71tITL3FeZqt/jD1Qa6KnbH/UolARtID1Gd0IElizbCgolv3ZbUFA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + peerDependencies: + react: ^18.2.0 + typescript: '>=4.1.2' + peerDependenciesMeta: + typescript: + optional: true + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + utf8-byte-length@1.0.4: + resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} + + utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid-1345@1.0.2: + resolution: {integrity: sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vec3@0.1.8: + resolution: {integrity: sha512-LfKrP625Bsg/Tj52YdYPsHmpsJuo+tc6fLxZxXjEo9k2xSspKlPvoYTHehykKhp1FvV9nm+XU3Ehej5/9tpDCg==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + + vite-node@0.34.6: + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true + + vite@4.4.10: + resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vite@4.5.2: + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + + webrtc-adapter@8.2.3: + resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==} + engines: {node: '>=6.0.0', npm: '>=3.10.0'} + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-fetch@3.6.18: + resolution: {integrity: sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + + which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} + + workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} + + workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} + engines: {node: '>=16.0.0'} + + workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} + + workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} + + workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} + + workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} + + workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} + + workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} + + workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} + + workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} + + workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} + + workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} + + workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} + + workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} + + workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@5.2.3: + resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + 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 + + xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlhttprequest-ssl@1.6.3: + resolution: {integrity: sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==} + engines: {node: '>=0.4.0'} + + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + xxhash-wasm@0.4.2: + resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + + yaml@2.4.1: + resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yeast@0.1.2: + resolution: {integrity: sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==} + + yggdrasil@1.7.0: + resolution: {integrity: sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + + zustand@3.6.5: + resolution: {integrity: sha512-/WfLJuXiEJimt61KGMHebrFBwckkCHGhAgVXTgPQHl6IMzjqm6MREb1OnDSnCRiSmRdhgdFCctceg6tSm79hiw==} + engines: {node: '>=12.7.0'} + peerDependencies: + react: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@ampproject/remapping@2.2.1': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@apideck/better-ajv-errors@0.3.6(ajv@8.12.0)': + dependencies: + ajv: 8.12.0 + json-schema: 0.4.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + + '@aw-web-design/x-default-browser@1.4.126': + dependencies: + default-browser-id: 3.0.0 + + '@azure/msal-common@14.7.0': {} + + '@azure/msal-node@2.6.3': + dependencies: + '@azure/msal-common': 14.7.0 + jsonwebtoken: 9.0.2 + uuid: 8.3.2 + + '@babel/code-frame@7.22.13': + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + '@babel/compat-data@7.22.9': {} + + '@babel/core@7.22.11': + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helpers': 7.22.11 + '@babel/parser': 7.22.13 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.22.10': + dependencies: + '@babel/types': 7.22.11 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + '@babel/helper-annotate-as-pure@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.10': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-compilation-targets@7.22.10': + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + '@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-environment-visitor@7.22.20': {} + + '@babel/helper-environment-visitor@7.22.5': {} + + '@babel/helper-function-name@7.22.5': + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.11 + + '@babel/helper-hoist-variables@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-member-expression-to-functions@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-member-expression-to-functions@7.23.0': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-imports@7.22.15': + dependencies: + '@babel/types': 7.23.0 + + '@babel/helper-module-imports@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-module-transforms@7.22.9(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 + + '@babel/helper-module-transforms@7.23.0(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + + '@babel/helper-optimise-call-expression@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-plugin-utils@7.22.5': {} + + '@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.10 + + '@babel/helper-replace-supers@7.22.9(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + + '@babel/helper-simple-access@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-split-export-declaration@7.22.6': + dependencies: + '@babel/types': 7.22.11 + + '@babel/helper-string-parser@7.22.5': {} + + '@babel/helper-validator-identifier@7.22.20': {} + + '@babel/helper-validator-identifier@7.22.5': {} + + '@babel/helper-validator-option@7.22.15': {} + + '@babel/helper-validator-option@7.22.5': {} + + '@babel/helper-wrap-function@7.22.10': + dependencies: + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.5 + '@babel/types': 7.22.11 + + '@babel/helpers@7.22.11': + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.11 + '@babel/types': 7.22.11 + transitivePeerDependencies: + - supports-color + + '@babel/highlight@7.22.13': + dependencies: + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + + '@babel/parser@7.22.13': + dependencies: + '@babel/types': 7.22.11 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.12(@babel/core@7.22.11) + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-async-generator-functions@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) + + '@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.11) + + '@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-block-scoping@7.22.10(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.11) + + '@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + '@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.5 + + '@babel/plugin-transform-destructuring@7.22.10(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.11) + + '@babel/plugin-transform-for-of@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) + + '@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-modules-commonjs@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + + '@babel/plugin-transform-modules-commonjs@7.23.0(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + + '@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + + '@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) + + '@babel/plugin-transform-object-rest-spread@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.11 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.11) + + '@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.11) + + '@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-optional-chaining@7.22.12(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) + + '@babel/plugin-transform-parameters@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.11(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.11) + + '@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + '@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.11) + + '@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.22.11) + '@babel/helper-plugin-utils': 7.22.5 + + '@babel/preset-env@7.22.10(@babel/core@7.22.11)': + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.11 + '@babel/helper-compilation-targets': 7.22.10 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.11) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.11) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.11) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.11) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.11) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.11) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.11) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.11) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.11) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.11) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.11) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-async-generator-functions': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-block-scoping': 7.22.10(@babel/core@7.22.11) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.11) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-destructuring': 7.22.10(@babel/core@7.22.11) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-modules-commonjs': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-object-rest-spread': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-optional-chaining': 7.22.12(@babel/core@7.22.11) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.11) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.11) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.11) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.11) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.11) + '@babel/types': 7.22.11 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.11) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.11) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.11) + core-js-compat: 3.32.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.22.15(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.11) + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.22.11 + esutils: 2.0.3 + + '@babel/preset-typescript@7.23.0(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.11) + '@babel/plugin-transform-modules-commonjs': 7.23.0(@babel/core@7.22.11) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.11) + + '@babel/register@7.22.15(@babel/core@7.22.11)': + dependencies: + '@babel/core': 7.22.11 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + '@babel/regjsgen@0.8.0': {} + + '@babel/runtime@7.22.11': + dependencies: + regenerator-runtime: 0.14.0 + + '@babel/runtime@7.23.9': + dependencies: + regenerator-runtime: 0.14.0 + + '@babel/template@7.22.5': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.13 + '@babel/types': 7.22.11 + + '@babel/traverse@7.22.11': + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.10 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.13 + '@babel/types': 7.22.11 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.22.11': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + to-fast-properties: 2.0.0 + + '@babel/types@7.23.0': + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + '@base2/pretty-print-object@1.0.1': {} + + '@bcoe/v8-coverage@0.2.3': {} + + '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': + optional: true + + '@cbor-extract/cbor-extract-darwin-x64@2.2.0': + optional: true + + '@cbor-extract/cbor-extract-linux-arm64@2.2.0': + optional: true + + '@cbor-extract/cbor-extract-linux-arm@2.2.0': + optional: true + + '@cbor-extract/cbor-extract-linux-x64@2.2.0': + optional: true + + '@cbor-extract/cbor-extract-win32-x64@2.2.0': + optional: true + + '@colors/colors@1.5.0': + optional: true + + '@cypress/request@2.88.12': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + http-signature: 1.3.6 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.10.4 + safe-buffer: 5.2.1 + tough-cookie: 4.1.3 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + + '@dimaka/interface@0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@emotion/css': 11.5.0(@babel/core@7.22.11) + '@juggle/resize-observer': 3.3.1 + animejs: 3.2.1 + clsx: 1.1.1 + react: 18.2.0 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-portal: 4.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-use: 17.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-use-measure: 2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + valtio: 1.11.2(@types/react@18.2.20)(react@18.2.0) + zustand: 3.6.5(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + - '@popperjs/core' + - '@types/react' + - react-dom + + '@discoveryjs/json-ext@0.5.7': {} + + '@emotion/babel-plugin@11.11.0': + dependencies: + '@babel/helper-module-imports': 7.22.5 + '@babel/runtime': 7.22.11 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.2 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + + '@emotion/cache@11.11.0': + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + + '@emotion/css@11.5.0(@babel/core@7.22.11)': + dependencies: + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.2 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + optionalDependencies: + '@babel/core': 7.22.11 + + '@emotion/hash@0.9.1': {} + + '@emotion/memoize@0.8.1': {} + + '@emotion/serialize@1.1.2': + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.2 + + '@emotion/sheet@1.2.2': {} + + '@emotion/unitless@0.8.1': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@emotion/utils@1.2.1': {} + + '@emotion/weak-memoize@0.3.1': {} + + '@esbuild/aix-ppc64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.18.20': + optional: true + + '@esbuild/android-arm64@0.19.11': + optional: true + + '@esbuild/android-arm64@0.19.3': + optional: true + + '@esbuild/android-arm@0.18.20': + optional: true + + '@esbuild/android-arm@0.19.11': + optional: true + + '@esbuild/android-arm@0.19.3': + optional: true + + '@esbuild/android-x64@0.18.20': + optional: true + + '@esbuild/android-x64@0.19.11': + optional: true + + '@esbuild/android-x64@0.19.3': + optional: true + + '@esbuild/darwin-arm64@0.18.20': + optional: true + + '@esbuild/darwin-arm64@0.19.11': + optional: true + + '@esbuild/darwin-arm64@0.19.3': + optional: true + + '@esbuild/darwin-x64@0.18.20': + optional: true + + '@esbuild/darwin-x64@0.19.11': + optional: true + + '@esbuild/darwin-x64@0.19.3': + optional: true + + '@esbuild/freebsd-arm64@0.18.20': + optional: true + + '@esbuild/freebsd-arm64@0.19.11': + optional: true + + '@esbuild/freebsd-arm64@0.19.3': + optional: true + + '@esbuild/freebsd-x64@0.18.20': + optional: true + + '@esbuild/freebsd-x64@0.19.11': + optional: true + + '@esbuild/freebsd-x64@0.19.3': + optional: true + + '@esbuild/linux-arm64@0.18.20': + optional: true + + '@esbuild/linux-arm64@0.19.11': + optional: true + + '@esbuild/linux-arm64@0.19.3': + optional: true + + '@esbuild/linux-arm@0.18.20': + optional: true + + '@esbuild/linux-arm@0.19.11': + optional: true + + '@esbuild/linux-arm@0.19.3': + optional: true + + '@esbuild/linux-ia32@0.18.20': + optional: true + + '@esbuild/linux-ia32@0.19.11': + optional: true + + '@esbuild/linux-ia32@0.19.3': + optional: true + + '@esbuild/linux-loong64@0.18.20': + optional: true + + '@esbuild/linux-loong64@0.19.11': + optional: true + + '@esbuild/linux-loong64@0.19.3': + optional: true + + '@esbuild/linux-mips64el@0.18.20': + optional: true + + '@esbuild/linux-mips64el@0.19.11': + optional: true + + '@esbuild/linux-mips64el@0.19.3': + optional: true + + '@esbuild/linux-ppc64@0.18.20': + optional: true + + '@esbuild/linux-ppc64@0.19.11': + optional: true + + '@esbuild/linux-ppc64@0.19.3': + optional: true + + '@esbuild/linux-riscv64@0.18.20': + optional: true + + '@esbuild/linux-riscv64@0.19.11': + optional: true + + '@esbuild/linux-riscv64@0.19.3': + optional: true + + '@esbuild/linux-s390x@0.18.20': + optional: true + + '@esbuild/linux-s390x@0.19.11': + optional: true + + '@esbuild/linux-s390x@0.19.3': + optional: true + + '@esbuild/linux-x64@0.18.20': + optional: true + + '@esbuild/linux-x64@0.19.11': + optional: true + + '@esbuild/linux-x64@0.19.3': + optional: true + + '@esbuild/netbsd-x64@0.18.20': + optional: true + + '@esbuild/netbsd-x64@0.19.11': + optional: true + + '@esbuild/netbsd-x64@0.19.3': + optional: true + + '@esbuild/openbsd-x64@0.18.20': + optional: true + + '@esbuild/openbsd-x64@0.19.11': + optional: true + + '@esbuild/openbsd-x64@0.19.3': + optional: true + + '@esbuild/sunos-x64@0.18.20': + optional: true + + '@esbuild/sunos-x64@0.19.11': + optional: true + + '@esbuild/sunos-x64@0.19.3': + optional: true + + '@esbuild/win32-arm64@0.18.20': + optional: true + + '@esbuild/win32-arm64@0.19.11': + optional: true + + '@esbuild/win32-arm64@0.19.3': + optional: true + + '@esbuild/win32-ia32@0.18.20': + optional: true + + '@esbuild/win32-ia32@0.19.11': + optional: true + + '@esbuild/win32-ia32@0.19.3': + optional: true + + '@esbuild/win32-x64@0.18.20': + optional: true + + '@esbuild/win32-x64@0.19.11': + optional: true + + '@esbuild/win32-x64@0.19.3': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.50.0)': + dependencies: + eslint: 8.50.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.8.0': {} + + '@eslint/eslintrc@2.1.2': + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.50.0': {} + + '@fal-works/esbuild-plugin-global-externals@2.1.2': {} + + '@fastify/busboy@2.0.0': {} + + '@floating-ui/core@1.5.0': + dependencies: + '@floating-ui/utils': 0.1.6 + + '@floating-ui/core@1.6.0': + dependencies: + '@floating-ui/utils': 0.2.1 + + '@floating-ui/dom@1.5.3': + dependencies: + '@floating-ui/core': 1.5.0 + '@floating-ui/utils': 0.1.6 + + '@floating-ui/dom@1.6.1': + dependencies: + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 + + '@floating-ui/react-dom@2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/dom': 1.6.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@floating-ui/react@0.26.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@floating-ui/utils': 0.1.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tabbable: 6.2.0 + + '@floating-ui/utils@0.1.6': {} + + '@floating-ui/utils@0.2.1': {} + + '@gar/promisify@1.1.3': + optional: true + + '@humanwhocodes/config-array@0.11.11': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@1.2.1': {} + + '@iconify/types@2.0.0': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.22.11 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.2 + '@types/node': 20.8.0 + '@types/yargs': 17.0.28 + chalk: 4.1.2 + + '@jimp/bmp@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + bmp-js: 0.1.0 + core-js: 3.32.1 + + '@jimp/core@0.10.3': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/utils': 0.10.3 + any-base: 1.1.0 + buffer: 5.7.1 + core-js: 3.32.1 + exif-parser: 0.1.12 + file-type: 9.0.0 + load-bmfont: 1.4.1 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + + '@jimp/custom@0.10.3': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/core': 0.10.3 + core-js: 3.32.1 + + '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + omggif: 1.0.10 + + '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + jpeg-js: 0.3.7 + + '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + tinycolor2: 1.6.0 + + '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + load-bmfont: 1.4.1 + + '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + + '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/plugin-blit': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-blur': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-circle': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-color': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-contain': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-cover': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-crop': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-displace': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-dither': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-fisheye': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-flip': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))) + '@jimp/plugin-gaussian': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-invert': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-mask': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-normalize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-print': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) + '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-shadow': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) + core-js: 3.32.1 + timm: 1.7.1 + + '@jimp/png@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + '@jimp/utils': 0.10.3 + core-js: 3.32.1 + pngjs: 3.4.0 + + '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/custom': 0.10.3 + core-js: 3.32.1 + utif: 2.0.1 + + '@jimp/types@0.10.3(@jimp/custom@0.10.3)': + dependencies: + '@babel/runtime': 7.22.11 + '@jimp/bmp': 0.10.3(@jimp/custom@0.10.3) + '@jimp/custom': 0.10.3 + '@jimp/gif': 0.10.3(@jimp/custom@0.10.3) + '@jimp/jpeg': 0.10.3(@jimp/custom@0.10.3) + '@jimp/png': 0.10.3(@jimp/custom@0.10.3) + '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) + core-js: 3.32.1 + timm: 1.7.1 + + '@jimp/utils@0.10.3': + dependencies: + '@babel/runtime': 7.22.11 + core-js: 3.32.1 + regenerator-runtime: 0.13.11 + + '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': + dependencies: + glob: 7.2.3 + glob-promise: 4.2.2(glob@7.2.3) + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.2.2) + vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + optionalDependencies: + typescript: 5.2.2 + + '@jridgewell/gen-mapping@0.3.3': + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/resolve-uri@3.1.1': {} + + '@jridgewell/set-array@1.1.2': {} + + '@jridgewell/source-map@0.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + '@jridgewell/sourcemap-codec@1.4.15': {} + + '@jridgewell/trace-mapping@0.3.19': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + '@jspm/core@2.0.1': {} + + '@juggle/resize-observer@3.3.1': {} + + '@lit-labs/ssr-dom-shim@1.1.1': {} + + '@lit/reactive-element@1.6.3': + dependencies: + '@lit-labs/ssr-dom-shim': 1.1.1 + + '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0(encoding@0.1.13) + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + + '@math.gl/core@4.0.1': + dependencies: + '@math.gl/types': 4.0.1 + + '@math.gl/types@4.0.1': {} + + '@mdx-js/react@2.3.0(react@18.2.0)': + dependencies: + '@types/mdx': 2.0.8 + '@types/react': 18.2.20 + react: 18.2.0 + + '@msgpack/msgpack@2.8.0': {} + + '@mui/base@5.0.0-beta.34(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.9 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.20) + '@mui/utils': 5.15.7(@types/react@18.2.20)(react@18.2.0) + '@popperjs/core': 2.11.8 + clsx: 2.1.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + + '@mui/types@7.2.13(@types/react@18.2.20)': + optionalDependencies: + '@types/react': 18.2.20 + + '@mui/utils@5.15.7(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.23.9 + '@types/prop-types': 15.7.11 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@ndelangen/get-tarball@3.0.9': + dependencies: + gunzip-maybe: 1.4.2 + pump: 3.0.0 + tar-fs: 2.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.0 + optional: true + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + optional: true + + '@nxg-org/mineflayer-tracker@1.2.1': + dependencies: + '@nxg-org/mineflayer-trajectories': 1.1.1 + '@nxg-org/mineflayer-util-plugin': 1.8.3 + + '@nxg-org/mineflayer-trajectories@1.1.1': + dependencies: + '@nxg-org/mineflayer-util-plugin': 1.8.3 + + '@nxg-org/mineflayer-util-plugin@1.8.3': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@popperjs/core@2.11.8': {} + + '@radix-ui/number@1.0.1': + dependencies: + '@babel/runtime': 7.22.11 + + '@radix-ui/primitive@1.0.1': + dependencies: + '@babel/runtime': 7.22.11 + + '@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-context@1.0.1(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-direction@1.0.1(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-id@1.0.1(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-popper@1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@floating-ui/react-dom': 2.0.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/rect': 1.0.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-select@1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/number': 1.0.1 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.20)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-slot@1.0.2(@types/react@18.2.20)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.20 + + '@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.22.11 + '@radix-ui/primitive': 1.0.1 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.20)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 + + '@radix-ui/react-toolbar@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.20)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 - /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} - peerDependencies: - '@types/react': '*' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@radix-ui/react-use-size@1.0.1(@types/react@18.2.20)(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.20)(react@18.2.0) - '@types/react': 18.2.20 react: 18.2.0 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^18.2.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.22.11 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.20 - '@types/react-dom': 18.2.7 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true + optionalDependencies: + '@types/react': 18.2.20 + '@types/react-dom': 18.2.7 - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + '@radix-ui/rect@1.0.1': dependencies: '@babel/runtime': 7.22.11 - dev: true - /@react-oauth/google@0.12.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qagsy22t+7UdkYAiT5ZhfM4StXi9PPNvw0zuwNmabrWyMKddczMtBIOARflbaIj+wHiQjnMAsZmzsUYuXeyoSg==} - peerDependencies: - react: ^18.2.0 - react-dom: '>=16.8.0' + '@react-oauth/google@0.12.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@rollup/plugin-babel@5.3.1(@babel/core@7.22.11)(rollup@2.79.1): - resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} - engines: {node: '>= 10.0.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/babel__core': ^7.1.9 - rollup: ^1.20.0||^2.0.0 - peerDependenciesMeta: - '@types/babel__core': - optional: true + '@rollup/plugin-babel@5.3.1(@babel/core@7.22.11)(@types/babel__core@7.20.2)(rollup@2.79.1)': dependencies: '@babel/core': 7.22.11 '@babel/helper-module-imports': 7.22.5 '@rollup/pluginutils': 3.1.0(rollup@2.79.1) rollup: 2.79.1 - dev: false + optionalDependencies: + '@types/babel__core': 7.20.2 - /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1): - resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) '@types/resolve': 1.17.1 @@ -3984,162 +11121,108 @@ packages: is-module: 1.0.0 resolve: 1.22.4 rollup: 2.79.1 - dev: false - /@rollup/plugin-replace@2.4.2(rollup@2.79.1): - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) magic-string: 0.25.9 rollup: 2.79.1 - dev: false - /@rollup/pluginutils@3.1.0(rollup@2.79.1): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 rollup: 2.79.1 - dev: false - /@rollup/pluginutils@5.0.5(rollup@2.79.1): - resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@rollup/pluginutils@5.0.5(rollup@2.79.1)': dependencies: '@types/estree': 1.0.2 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 2.79.1 - dev: true - /@rushstack/eslint-patch@1.4.0: - resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} - dev: true + '@rushstack/eslint-patch@1.4.0': {} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - dev: true + '@sinclair/typebox@0.27.8': {} - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} - dev: false + '@socket.io/component-emitter@3.1.0': {} - /@storybook/addon-actions@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-SsqZr3js5NinKPnC8AeNI7Ij+Q6fIl9tRdRmSulEgjksjOg7E5S1/Wsn5Bb2CCgj7MaX6VxGyC7s3XskQtDiIQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-actions@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 dequal: 2.0.3 lodash: 4.17.21 polished: 4.2.2 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) react-inspector: 6.0.2(react@18.2.0) telejson: 7.2.0 ts-dedent: 2.2.0 uuid: 9.0.1 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/addon-backgrounds@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-+LHTZB/ZYMAzkyD5ZxSriBsqmsrvIaW/Nnd/BeuXGbkrVKKqM0qAKiFZAfjc2WchA1piVNy0/1Rsf+kuYCEiJw==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-backgrounds@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 memoizerific: 1.11.3 + ts-dedent: 2.2.0 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/addon-controls@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4lq3sycEUIsK8SUWDYc60QgF4vV9FZZ3lDr6M7j2W9bOnvGw49d2fbdlnq+bX1ZprZZ9VgglQpBAorQB3BXZRw==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-controls@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@storybook/blocks': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.6 + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/core-events': 7.4.6 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 7.4.6 '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 lodash: 4.17.21 + ts-dedent: 2.2.0 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - encoding - supports-color - dev: true - /@storybook/addon-docs@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-dLaub+XWFq4hChw+xfuF9yYg0Txp77FUawKoAigccfjWXx+OOhRV3XTuAcknpXkYq94GWynHgUFXosXT9kbDNA==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-docs@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/csf-plugin': 7.4.6 '@storybook/csf-tools': 7.4.6 '@storybook/global': 5.0.0 @@ -4147,8 +11230,8 @@ packages: '@storybook/node-logger': 7.4.6 '@storybook/postinstall': 7.4.6 '@storybook/preview-api': 7.4.6 - '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 fs-extra: 11.1.1 react: 18.2.0 @@ -4161,25 +11244,20 @@ packages: - '@types/react-dom' - encoding - supports-color - dev: true - /@storybook/addon-essentials@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-dWodufrt71TK7ELkeIvVae/x4PzECUlbOm57Iqqt4yQCyR291CgvI4PjeB8un2HbpcXCGZ+N/Oj3YkytvzBi4A==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/addon-essentials@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@storybook/addon-actions': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-backgrounds': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-controls': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-actions': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-backgrounds': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-controls': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-docs': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-highlight': 7.4.6 - '@storybook/addon-measure': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-outline': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-toolbars': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-viewport': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/core-common': 7.4.6 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-measure': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-outline': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-toolbars': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-viewport': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/core-common': 7.4.6(encoding@0.1.13) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 7.4.6 '@storybook/preview-api': 7.4.6 react: 18.2.0 @@ -4190,159 +11268,107 @@ packages: - '@types/react-dom' - encoding - supports-color - dev: true - /@storybook/addon-highlight@7.4.6: - resolution: {integrity: sha512-zCufxxD2KS5VwczxfkcBxe1oR/juTTn2H1Qm8kYvWCJQx3UxzX0+G9cwafbpV7eivqaufLweEwROkH+0KjAtkQ==} + '@storybook/addon-highlight@7.4.6': dependencies: '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 '@storybook/preview-api': 7.4.6 - dev: true - /@storybook/addon-links@7.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-BPygElZKX+CPI9Se6GJNk1dYc5oxuhA+vHigO1tBqhiM6VkHyFP3cvezJNQvpNYhkUnu3cxnZXb3UJnlRbPY3g==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-links@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/core-events': 7.4.6 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/router': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/router': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 prop-types: 15.8.1 + ts-dedent: 2.2.0 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 - dev: true - /@storybook/addon-measure@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nCymMLaHnxv8TE3yEM1A9Tulb1NuRXRNmtsdHTkjv7P1aWCxZo8A/GZaottKe/GLT8jSRjZ+dnpYWrbAhw6wTQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-measure@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 '@storybook/types': 7.4.6 + tiny-invariant: 1.3.1 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tiny-invariant: 1.3.1 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/addon-outline@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-errNUblRVDLpuEaHQPr/nsrnsUkD2ARmXawkRvizgDWLIDMDJYjTON3MUCaVx3x+hlZ3I6X//G5TVcma8tCc8A==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-outline@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 '@storybook/types': 7.4.6 + ts-dedent: 2.2.0 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/addon-toolbars@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-L9m2FBcKeteGq7qIYsMJr0LEfiH7Wdrv5IDcldZTn68eZUJTh1p4GdJZcOmzX1P5IFRr76hpu03iWsNlWQjpbQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-toolbars@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/addon-viewport@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-INDtk54j7bi7NgxMfd2ATmbA0J7nAd6X8itMkLIyPuPJtx8bYHPDORyemDOd0AojgmAdTOAyUtDYdI/PFeo4Cw==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@storybook/addon-viewport@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) memoizerific: 1.11.3 prop-types: 15.8.1 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/blocks@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HxBSAeOiTZW2jbHQlo1upRWFgoMsaAyKijUFf5MwwMNIesXCuuTGZDJ3xTABwAVLK2qC9Ektfbo0CZCiPVuDRQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/blocks@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 - '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.4.6 '@storybook/csf': 0.1.1 - '@storybook/docs-tools': 7.4.6 + '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 '@types/lodash': 4.14.199 color-convert: 2.0.1 @@ -4352,7 +11378,7 @@ packages: memoizerific: 1.11.3 polished: 4.2.2 react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: 18.2.0(react@18.2.0) telejson: 7.2.0 tocbot: 4.21.2 @@ -4363,13 +11389,11 @@ packages: - '@types/react-dom' - encoding - supports-color - dev: true - /@storybook/builder-manager@7.4.6: - resolution: {integrity: sha512-zylZCD2rmyLOOFBFmUgtJg6UNUKmRNgXiig1XApzS2TkIbTZP827DsVEUl0ey/lskCe0uArkrEBR6ICba8p/Rw==} + '@storybook/builder-manager@7.4.6(encoding@0.1.13)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/manager': 7.4.6 '@storybook/node-logger': 7.4.6 '@types/ejs': 3.1.3 @@ -4387,26 +11411,12 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/builder-vite@7.4.6(typescript@5.2.2)(vite@4.5.2): - resolution: {integrity: sha512-xV9STYK+TkqWWTf2ydm6jx+7P70fjD2UPd1XTUw08uKszIjhuuxk+bG/OF5R1E25mPunAKXm6kBFh351AKejBg==} - peerDependencies: - '@preact/preset-vite': '*' - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 - vite-plugin-glimmerx: '*' - peerDependenciesMeta: - '@preact/preset-vite': - optional: true - typescript: - optional: true - vite-plugin-glimmerx: - optional: true + '@storybook/builder-vite@7.4.6(encoding@0.1.13)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/csf-plugin': 7.4.6 '@storybook/mdx2-csf': 1.1.0 '@storybook/node-logger': 7.4.6 @@ -4423,15 +11433,14 @@ packages: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.29.4 + vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + optionalDependencies: typescript: 5.2.2 - vite: 4.5.2 transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/channels@7.4.6: - resolution: {integrity: sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A==} + '@storybook/channels@7.4.6': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/core-events': 7.4.6 @@ -4439,23 +11448,20 @@ packages: qs: 6.11.2 telejson: 7.2.0 tiny-invariant: 1.3.1 - dev: true - /@storybook/cli@7.4.6: - resolution: {integrity: sha512-rRwaH8pOL+FHz/pJMEkNpMH2xvZvWsrl7obBYw26NQiHmiVSAkfHJicndSN1mwc+p5w+9iXthrgzbLtSAOSvkA==} - hasBin: true + '@storybook/cli@7.4.6(encoding@0.1.13)': dependencies: '@babel/core': 7.22.11 '@babel/preset-env': 7.22.10(@babel/core@7.22.11) '@babel/types': 7.22.11 '@ndelangen/get-tarball': 3.0.9 '@storybook/codemod': 7.4.6 - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/core-events': 7.4.6 - '@storybook/core-server': 7.4.6 + '@storybook/core-server': 7.4.6(encoding@0.1.13) '@storybook/csf-tools': 7.4.6 '@storybook/node-logger': 7.4.6 - '@storybook/telemetry': 7.4.6 + '@storybook/telemetry': 7.4.6(encoding@0.1.13) '@storybook/types': 7.4.6 '@types/semver': 7.5.3 '@yarnpkg/fslib': 2.10.3 @@ -4473,7 +11479,7 @@ packages: get-port: 5.1.1 giget: 1.1.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.10) + jscodeshift: 0.14.0(@babel/preset-env@7.22.10(@babel/core@7.22.11)) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 @@ -4491,16 +11497,12 @@ packages: - encoding - supports-color - utf-8-validate - dev: true - /@storybook/client-logger@7.4.6: - resolution: {integrity: sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw==} + '@storybook/client-logger@7.4.6': dependencies: '@storybook/global': 5.0.0 - dev: true - /@storybook/codemod@7.4.6: - resolution: {integrity: sha512-lxmwEpwksCaAq96APN2YlooSDfKjJ1vKzN5Ni2EqQzf2TEXl7XQjLacHd7OOaII1kfsy+D5gNG4N5wBo7Ub30g==} + '@storybook/codemod@7.4.6': dependencies: '@babel/core': 7.22.11 '@babel/preset-env': 7.22.10(@babel/core@7.22.11) @@ -4512,46 +11514,37 @@ packages: '@types/cross-spawn': 6.0.3 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.14.0(@babel/preset-env@7.22.10) + jscodeshift: 0.14.0(@babel/preset-env@7.22.10(@babel/core@7.22.11)) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 transitivePeerDependencies: - supports-color - dev: true - /@storybook/components@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nIRBhewAgrJJVafyCzuaLx1l+YOfvvD5dOZ0JxZsxJsefOdw1jFpUqUZ5fIpQ2moyvrR0mAUFw378rBfMdHz5Q==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/components@7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 1.2.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.4.6 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) + use-resize-observer: 9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) util-deprecate: 1.0.2 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - dev: true - /@storybook/core-client@7.4.6: - resolution: {integrity: sha512-tfgxAHeCvMcs6DsVgtb4hQSDaCHeAPJOsoyhb47eDQfk4OmxzriM0qWucJV5DePSMi+KutX/rN2u0JxfOuN68g==} + '@storybook/core-client@7.4.6': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/preview-api': 7.4.6 - dev: true - /@storybook/core-common@7.4.6: - resolution: {integrity: sha512-05MJFmOM86qvTLtgDskokIFz9txe0Lbhq4L3by1FtF0GwgH+p+W6I94KI7c6ANER+kVZkXQZhiRzwBFnVTW+Cg==} + '@storybook/core-common@7.4.6(encoding@0.1.13)': dependencies: '@storybook/core-events': 7.4.6 '@storybook/node-logger': 7.4.6 @@ -4570,7 +11563,7 @@ packages: glob: 10.3.3 handlebars: 4.7.8 lazy-universal-dotenv: 4.0.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) picomatch: 2.3.1 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 @@ -4579,22 +11572,18 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/core-events@7.4.6: - resolution: {integrity: sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w==} + '@storybook/core-events@7.4.6': dependencies: ts-dedent: 2.2.0 - dev: true - /@storybook/core-server@7.4.6: - resolution: {integrity: sha512-jqmRTGCJ1W0WReImivkisPVaLFT5sjtLnFoAk0feHp6QS5j7EYOPN7CYzliyQmARWTLUEXOVaFf3VD6nJZQhJQ==} + '@storybook/core-server@7.4.6(encoding@0.1.13)': dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 7.4.6 + '@storybook/builder-manager': 7.4.6(encoding@0.1.13) '@storybook/channels': 7.4.6 - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/core-events': 7.4.6 '@storybook/csf': 0.1.1 '@storybook/csf-tools': 7.4.6 @@ -4603,7 +11592,7 @@ packages: '@storybook/manager': 7.4.6 '@storybook/node-logger': 7.4.6 '@storybook/preview-api': 7.4.6 - '@storybook/telemetry': 7.4.6 + '@storybook/telemetry': 7.4.6(encoding@0.1.13) '@storybook/types': 7.4.6 '@types/detect-port': 1.3.3 '@types/node': 16.18.58 @@ -4636,19 +11625,15 @@ packages: - encoding - supports-color - utf-8-validate - dev: true - /@storybook/csf-plugin@7.4.6: - resolution: {integrity: sha512-yi7Qa4NSqKOyiJTWCxlB0ih2ijXq6oY5qZKW6MuMMBP14xJNRGLbH5KabpfXgN2T7YECcOWG1uWaGj2veJb1KA==} + '@storybook/csf-plugin@7.4.6': dependencies: '@storybook/csf-tools': 7.4.6 unplugin: 1.5.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf-tools@7.4.6: - resolution: {integrity: sha512-ocKpcIUtTBy6hlLY34RUFQyX403cWpB2gGfqvkHbpGe2BQj7EyV0zpWnjsfVxvw+M9OWlCdxHWDOPUgXM33ELw==} + '@storybook/csf-tools@7.4.6': dependencies: '@babel/generator': 7.22.10 '@babel/parser': 7.22.13 @@ -4661,22 +11646,16 @@ packages: ts-dedent: 2.2.0 transitivePeerDependencies: - supports-color - dev: true - /@storybook/csf@0.1.1: - resolution: {integrity: sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==} + '@storybook/csf@0.1.1': dependencies: type-fest: 2.19.0 - dev: true - /@storybook/docs-mdx@0.1.0: - resolution: {integrity: sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg==} - dev: true + '@storybook/docs-mdx@0.1.0': {} - /@storybook/docs-tools@7.4.6: - resolution: {integrity: sha512-nZj1L/8WwKWWJ41FW4MaKGajZUtrhnr9UwflRCkQJaWhAKmDfOb5M5TqI93uCOULpFPOm5wpoMBz2IHInQ2Lrg==} + '@storybook/docs-tools@7.4.6(encoding@0.1.13)': dependencies: - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/preview-api': 7.4.6 '@storybook/types': 7.4.6 '@types/doctrine': 0.0.3 @@ -4685,25 +11664,18 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/global@5.0.0: - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - dev: true + '@storybook/global@5.0.0': {} - /@storybook/manager-api@7.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-inrm3DIbCp8wjXSN/wK6e6i2ysQ/IEmtC7IN0OJ7vdrp+USCooPT448SQTUmVctUGCFmOU3fxXByq8g77oIi7w==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/manager-api@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 '@storybook/core-events': 7.4.6 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/router': 7.4.6(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/router': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/theming': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 dequal: 2.0.3 lodash: 4.17.21 @@ -4714,26 +11686,16 @@ packages: store2: 2.14.2 telejson: 7.2.0 ts-dedent: 2.2.0 - dev: true - /@storybook/manager@7.4.6: - resolution: {integrity: sha512-kA1hUDxpn1i2SO9OinvLvVXDeL4xgJkModp+pbE8IXv4NJWReNq1ecMeQCzPLS3Sil2gnrullQ9uYXsnZ9bxxA==} - dev: true + '@storybook/manager@7.4.6': {} - /@storybook/mdx2-csf@1.1.0: - resolution: {integrity: sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==} - dev: true + '@storybook/mdx2-csf@1.1.0': {} - /@storybook/node-logger@7.4.6: - resolution: {integrity: sha512-djZb310Q27GviDug1XBv0jOEDLCiwr4hhDE0aifCEKZpfNCi/EaP31nbWimFzZwxu4hE/YAPWExzScruR1zw9Q==} - dev: true + '@storybook/node-logger@7.4.6': {} - /@storybook/postinstall@7.4.6: - resolution: {integrity: sha512-TqI5BucPAGRWrkh55BYiG2/gHLFtC0In4cuu0GsUzB/1jc4i51npLRorCwhmT7r7YliGl5F7JaP0Bni/qHN3Lg==} - dev: true + '@storybook/postinstall@7.4.6': {} - /@storybook/preview-api@7.4.6: - resolution: {integrity: sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA==} + '@storybook/preview-api@7.4.6': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 @@ -4749,41 +11711,27 @@ packages: synchronous-promise: 2.0.17 ts-dedent: 2.2.0 util-deprecate: 1.0.2 - dev: true - /@storybook/preview@7.4.6: - resolution: {integrity: sha512-2RPXusJ4CTDrIipIKKvbotD7fP0+8VzoFjImunflIrzN9rni+2rq5eMjqlXAaB+77w064zIR4uDUzI9fxsMDeQ==} - dev: true + '@storybook/preview@7.4.6': {} - /@storybook/react-dom-shim@7.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DSq8l9FDocUF1ooVI+TF83pddj1LynE/Hv0/y8XZhc3IgJ/HkuOQuUmfz29ezgfAi9gFYUR8raTIBi3/xdoRmw==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/react-dom-shim@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/react-vite@7.4.6(react-dom@18.2.0)(react@18.2.0)(rollup@2.79.1)(typescript@5.2.2)(vite@4.5.2): - resolution: {integrity: sha512-jkjnrf3FxzR5wcmebXRPflrsM4WIDjWyW/NVFJwxi5PeIOk7fE7/QAPrm4NFRUu2Q7DeuH3oLKsw8bigvUI9RA==} - engines: {node: '>=16'} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - vite: ^3.0.0 || ^4.0.0 + '@storybook/react-vite@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@4.5.2) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) '@rollup/pluginutils': 5.0.5(rollup@2.79.1) - '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@4.5.2) - '@storybook/react': 7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2) - '@vitejs/plugin-react': 3.1.0(vite@4.5.2) + '@storybook/builder-vite': 7.4.6(encoding@0.1.13)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) + '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2) + '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) ast-types: 0.14.2 magic-string: 0.30.4 react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.2 + vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -4791,25 +11739,15 @@ packages: - supports-color - typescript - vite-plugin-glimmerx - dev: true - /@storybook/react@7.4.6(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-w0dVo64baFFPTGpUOWFqkKsu6pQincoymegSNgqaBd5DxEyMDRiRoTWSJHMKE9BwgE8SyWhRkP1ak1mkccSOhQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@storybook/react@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/core-client': 7.4.6 - '@storybook/docs-tools': 7.4.6 + '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/global': 5.0.0 '@storybook/preview-api': 7.4.6 - '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/react-dom-shim': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.4.6 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 @@ -4823,34 +11761,28 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-element-to-jsx-string: 15.0.0(react-dom@18.2.0)(react@18.2.0) + react-element-to-jsx-string: 15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) ts-dedent: 2.2.0 type-fest: 2.19.0 - typescript: 5.2.2 util-deprecate: 1.0.2 + optionalDependencies: + typescript: 5.2.2 transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/router@7.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Vl1esrHkcHxDKqc+HY7+6JQpBPW3zYvGk0cQ2rxVMhWdLZTAz1hss9DqzN9tFnPyfn0a1Q77EpMySkUrvWKKNQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/router@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 memoizerific: 1.11.3 qs: 6.11.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/telemetry@7.4.6: - resolution: {integrity: sha512-c8p/C1NIH8EMBviZkBCx8MMDk6rrITJ+b29DEp5MaWSRlklIVyhGiC4RPIRv6sxJwlD41PnqWVFtfu2j2eXLdQ==} + '@storybook/telemetry@7.4.6(encoding@0.1.13)': dependencies: '@storybook/client-logger': 7.4.6 - '@storybook/core-common': 7.4.6 + '@storybook/core-common': 7.4.6(encoding@0.1.13) '@storybook/csf-tools': 7.4.6 chalk: 4.1.2 detect-package-manager: 2.0.1 @@ -4860,13 +11792,8 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: true - /@storybook/theming@7.4.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HW77iJ9ptCMqhoBOYFjRQw7VBap+38fkJGHP5KylEJCyYCgIAm2dEcQmtWpMVYFssSGcb6djfbtAMhYU4TL4Iw==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/theming@7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@storybook/client-logger': 7.4.6 @@ -4874,28 +11801,20 @@ packages: memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/types@7.4.6: - resolution: {integrity: sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw==} + '@storybook/types@7.4.6': dependencies: '@storybook/channels': 7.4.6 '@types/babel__core': 7.20.2 '@types/express': 4.17.18 file-system-cache: 2.3.0 - dev: true - /@storybook/web-components-vite@7.4.6(lit@2.8.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.2.2)(vite@4.5.2): - resolution: {integrity: sha512-L/y6MTLbqfHaM0faK9Yl8n5PIyW4daZrtk7NfaOT6UjgNFjOx3o4CctYew6oj90cNk5HdZQX2OZny043GxDLZw==} - engines: {node: ^14.18 || >=16} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@storybook/web-components-vite@7.4.6(encoding@0.1.13)(lit@2.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': dependencies: - '@storybook/builder-vite': 7.4.6(typescript@5.2.2)(vite@4.5.2) - '@storybook/core-server': 7.4.6 + '@storybook/builder-vite': 7.4.6(encoding@0.1.13)(typescript@5.2.2)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) + '@storybook/core-server': 7.4.6(encoding@0.1.13) '@storybook/node-logger': 7.4.6 - '@storybook/web-components': 7.4.6(lit@2.8.0)(react-dom@18.2.0)(react@18.2.0) + '@storybook/web-components': 7.4.6(encoding@0.1.13)(lit@2.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) magic-string: 0.30.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -4909,19 +11828,14 @@ packages: - utf-8-validate - vite - vite-plugin-glimmerx - dev: true - /@storybook/web-components@7.4.6(lit@2.8.0)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HWqkZtdkmNimkzMmE0mGRys2ee9qgEeDVCruiffySVquBRMQ6n1xgvHZYaO6OLlMeH0YHPg083ZqUasS5GsYVg==} - engines: {node: '>=16.0.0'} - peerDependencies: - lit: ^2.0.0 + '@storybook/web-components@7.4.6(encoding@0.1.13)(lit@2.8.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/core-client': 7.4.6 - '@storybook/docs-tools': 7.4.6 + '@storybook/docs-tools': 7.4.6(encoding@0.1.13) '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.4.6(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.4.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.4.6 '@storybook/types': 7.4.6 lit: 2.8.0 @@ -4932,390 +11846,244 @@ packages: - react - react-dom - supports-color - dev: true - /@surma/rollup-plugin-off-main-thread@2.2.3: - resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: ejs: 3.1.9 json5: 2.2.3 magic-string: 0.25.9 string.prototype.matchall: 4.0.10 - dev: false - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - requiresBuild: true - dev: false + '@tootallnate/once@2.0.0': optional: true - /@tweenjs/tween.js@18.6.4: - resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} - dev: true + '@tweenjs/tween.js@18.6.4': {} - /@tweenjs/tween.js@20.0.3: - resolution: {integrity: sha512-SYUe1UgY5HM05EB4+0B4arq2IPjvyzKXoklXKxSYrc2IFxGm1cBrqg5XbiB5uwbs0xY5j+rj986NAJMM0KZaUw==} - dev: false + '@tweenjs/tween.js@20.0.3': {} - /@types/babel__core@7.20.2: - resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} + '@types/babel__core@7.20.2': dependencies: '@babel/parser': 7.22.13 '@babel/types': 7.22.11 '@types/babel__generator': 7.6.5 '@types/babel__template': 7.4.2 '@types/babel__traverse': 7.20.2 - dev: true - /@types/babel__generator@7.6.5: - resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} + '@types/babel__generator@7.6.5': dependencies: '@babel/types': 7.22.11 - dev: true - /@types/babel__template@7.4.2: - resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} + '@types/babel__template@7.4.2': dependencies: '@babel/parser': 7.22.13 '@babel/types': 7.22.11 - dev: true - /@types/babel__traverse@7.20.2: - resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} + '@types/babel__traverse@7.20.2': dependencies: '@babel/types': 7.22.11 - dev: true - /@types/body-parser@1.19.3: - resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} + '@types/body-parser@1.19.3': dependencies: '@types/connect': 3.4.36 '@types/node': 20.8.0 - dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + '@types/chai-subset@1.3.3': dependencies: '@types/chai': 4.3.6 - dev: true - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} - dev: true + '@types/chai@4.3.6': {} - /@types/connect@3.4.36: - resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + '@types/connect@3.4.36': dependencies: '@types/node': 20.8.10 - dev: true - /@types/cookie@0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: false + '@types/cookie@0.4.1': {} - /@types/cors@2.8.15: - resolution: {integrity: sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==} + '@types/cors@2.8.15': dependencies: '@types/node': 20.8.0 - dev: false - /@types/cross-spawn@6.0.3: - resolution: {integrity: sha512-BDAkU7WHHRHnvBf5z89lcvACsvkz/n7Tv+HyD/uW76O29HoH1Tk/W6iQrepaZVbisvlEek4ygwT8IW7ow9XLAA==} + '@types/cross-spawn@6.0.3': dependencies: '@types/node': 20.8.10 - dev: true - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - dev: false - /@types/detect-port@1.3.3: - resolution: {integrity: sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg==} - dev: true + '@types/detect-port@1.3.3': {} - /@types/doctrine@0.0.3: - resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} - dev: true + '@types/doctrine@0.0.3': {} - /@types/draco3d@1.4.7: - resolution: {integrity: sha512-sjx6hQ8UArRZf+2ZhpPkjJW8iCkyxar69/IElc9NHuGE40n0U9SuvxX59CHvF4xUH7qfJDQ2lIbANZ0HHJg+BQ==} - dev: false + '@types/draco3d@1.4.7': {} - /@types/ejs@3.1.3: - resolution: {integrity: sha512-mv5T/JI/bu+pbfz1o+TLl1NF0NIBbjS0Vl6Ppz1YY9DkXfzZT0lelXpfS5i3ZS3U/p90it7uERQpBvLYoK8e4A==} - dev: true + '@types/ejs@3.1.3': {} - /@types/emscripten@1.39.8: - resolution: {integrity: sha512-Rk0HKcMXFUuqT32k1kXHZWgxiMvsyYsmlnjp0rLKa0MMoqXLE3T9dogDBTRfuc3SAsXu97KD3k4SKR1lHqd57w==} - dev: true + '@types/emscripten@1.39.8': {} - /@types/escodegen@0.0.6: - resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} - dev: true + '@types/escodegen@0.0.6': {} - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - dev: false + '@types/estree@0.0.39': {} - /@types/estree@0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} - dev: true + '@types/estree@0.0.51': {} - /@types/estree@1.0.2: - resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} - dev: true + '@types/estree@1.0.2': {} - /@types/express-serve-static-core@4.17.37: - resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} + '@types/express-serve-static-core@4.17.37': dependencies: '@types/node': 20.8.0 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 - dev: true - /@types/express@4.17.18: - resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==} + '@types/express@4.17.18': dependencies: '@types/body-parser': 1.19.3 '@types/express-serve-static-core': 4.17.37 '@types/qs': 6.9.8 '@types/serve-static': 1.15.3 - dev: true - /@types/find-cache-dir@3.2.1: - resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} - dev: true + '@types/find-cache-dir@3.2.1': {} - /@types/gapi@0.0.47: - resolution: {integrity: sha512-/ZsLuq6BffMgbKMtZyDZ8vwQvTyKhKQ1G2K6VyWCgtHHhfSSXbk4+4JwImZiTjWNXfI2q1ZStAwFFHSkNoTkHA==} - dev: false + '@types/gapi@0.0.47': {} - /@types/glob@7.2.0: - resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 '@types/node': 20.8.0 - dev: true - /@types/graceful-fs@4.1.7: - resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} + '@types/graceful-fs@4.1.7': dependencies: '@types/node': 20.8.10 - dev: true - /@types/http-cache-semantics@4.0.2: - resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} - dev: true + '@types/http-cache-semantics@4.0.2': {} - /@types/http-errors@2.0.2: - resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} - dev: true + '@types/http-errors@2.0.2': {} - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true + '@types/istanbul-lib-coverage@2.0.4': {} - /@types/istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==} + '@types/istanbul-lib-report@3.0.1': dependencies: '@types/istanbul-lib-coverage': 2.0.4 - dev: true - /@types/istanbul-reports@3.0.2: - resolution: {integrity: sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==} + '@types/istanbul-reports@3.0.2': dependencies: '@types/istanbul-lib-report': 3.0.1 - dev: true - /@types/js-cookie@2.2.7: - resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} - dev: false + '@types/js-cookie@2.2.7': {} - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} - dev: true + '@types/json-schema@7.0.12': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/lodash-es@4.17.9: - resolution: {integrity: sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==} + '@types/lodash-es@4.17.9': dependencies: '@types/lodash': 4.14.199 - dev: true - /@types/lodash@4.14.199: - resolution: {integrity: sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg==} - dev: true + '@types/lodash@4.14.199': {} - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + '@types/mdast@4.0.3': dependencies: '@types/unist': 2.0.8 - dev: false - /@types/mdx@2.0.8: - resolution: {integrity: sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA==} - dev: true + '@types/mdx@2.0.8': {} - /@types/mime-types@2.1.2: - resolution: {integrity: sha512-q9QGHMGCiBJCHEvd4ZLdasdqXv570agPsUW0CeIm/B8DzhxsYMerD0l3IlI+EQ1A2RWHY2mmM9x1YIuuWxisCg==} - dev: true + '@types/mime-types@2.1.2': {} - /@types/mime@1.3.3: - resolution: {integrity: sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg==} - dev: true + '@types/mime@1.3.3': {} - /@types/mime@3.0.2: - resolution: {integrity: sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ==} - dev: true + '@types/mime@3.0.2': {} - /@types/minimatch@5.1.2: - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - dev: true + '@types/minimatch@5.1.2': {} - /@types/minimist@1.2.3: - resolution: {integrity: sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A==} - dev: true + '@types/minimist@1.2.3': {} - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false + '@types/ms@0.7.34': {} - /@types/node-fetch@2.6.6: - resolution: {integrity: sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw==} + '@types/node-fetch@2.6.6': dependencies: '@types/node': 20.8.0 form-data: 4.0.0 - dev: true - /@types/node@14.18.56: - resolution: {integrity: sha512-+k+57NVS9opgrEn5l9c0gvD1r6C+PtyhVE4BTnMMRwiEA8ZO8uFcs6Yy2sXIy0eC95ZurBtRSvhZiHXBysbl6w==} + '@types/node@14.18.56': {} - /@types/node@16.18.58: - resolution: {integrity: sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA==} - dev: true + '@types/node@16.18.58': {} - /@types/node@20.11.19: - resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} + '@types/node@20.11.19': dependencies: undici-types: 5.26.5 - /@types/node@20.8.0: - resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} + '@types/node@20.8.0': {} - /@types/node@20.8.10: - resolution: {integrity: sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w==} + '@types/node@20.8.10': dependencies: undici-types: 5.26.5 - /@types/normalize-package-data@2.4.2: - resolution: {integrity: sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==} - dev: true + '@types/normalize-package-data@2.4.2': {} - /@types/offscreencanvas@2019.7.2: - resolution: {integrity: sha512-ujCjOxeA07IbEBQYAkoOI+XFw5sT3nhWJ/xZfPR6reJppDG7iPQPZacQiLTtWH1b3a2NYXWlxvYqa40y/LAixQ==} - dev: false + '@types/offscreencanvas@2019.7.2': {} - /@types/parse-json@4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - dev: false + '@types/parse-json@4.0.0': {} - /@types/pretty-hrtime@1.0.1: - resolution: {integrity: sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ==} - dev: true + '@types/pretty-hrtime@1.0.1': {} - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - dev: false + '@types/prop-types@15.7.11': {} - /@types/prop-types@15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + '@types/prop-types@15.7.5': {} - /@types/qs@6.9.8: - resolution: {integrity: sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==} - dev: true + '@types/qs@6.9.8': {} - /@types/range-parser@1.2.5: - resolution: {integrity: sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==} - dev: true + '@types/range-parser@1.2.5': {} - /@types/rbush@3.0.1: - resolution: {integrity: sha512-0LecKcQjuJ/PclmThftzePIKXaKt7OMjoZZ3Xf17Ebd28ZU6OFUu1mObbvV74YXS1W3APdZO5GRHyD/ezGK4Vg==} - dev: false + '@types/rbush@3.0.1': {} - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + '@types/react-dom@18.2.7': dependencies: '@types/react': 18.2.20 - /@types/react-transition-group@4.4.7: - resolution: {integrity: sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg==} + '@types/react-transition-group@4.4.7': dependencies: '@types/react': 18.2.20 - dev: true - /@types/react@18.2.20: - resolution: {integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==} + '@types/react@18.2.20': dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 csstype: 3.1.2 - /@types/readable-stream@4.0.10: - resolution: {integrity: sha512-AbUKBjcC8SHmImNi4yK2bbjogQlkFSg7shZCcicxPQapniOlajG8GCc39lvXzCWX4lLRRs7DM3VAeSlqmEVZUA==} + '@types/readable-stream@4.0.10': dependencies: '@types/node': 20.11.19 safe-buffer: 5.1.2 - /@types/resolve@1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + '@types/resolve@1.17.1': dependencies: '@types/node': 20.8.10 - dev: false - /@types/sat@0.0.31: - resolution: {integrity: sha512-P4SVw79XheP1p92useDVpLYYOUQ6lpw2L7IdQz4dD23DZ8DiC1STgPOh72hjR5IZJBPQbzlICAbmjCKbwyYuxg==} - dev: false + '@types/sat@0.0.31': {} - /@types/scheduler@0.16.3: - resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + '@types/scheduler@0.16.3': {} - /@types/semver@7.5.3: - resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} - dev: true + '@types/semver@7.5.3': {} - /@types/send@0.17.2: - resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} + '@types/send@0.17.2': dependencies: '@types/mime': 1.3.3 '@types/node': 20.8.10 - dev: true - /@types/serve-static@1.15.3: - resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} + '@types/serve-static@1.15.3': dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 '@types/node': 20.8.0 - dev: true - /@types/sinonjs__fake-timers@8.1.1: - resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + '@types/sinonjs__fake-timers@8.1.1': {} - /@types/sizzle@2.3.3: - resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} + '@types/sizzle@2.3.3': {} - /@types/stats.js@0.17.1: - resolution: {integrity: sha512-OgfYE1x2w1jRUXzzKABX+kOdwz2y9PE0uSwnZabkWfJTWOzm7Pvfm4JI2xqRE0q2nwUe2jZLWcrcnhd9lQU63w==} + '@types/stats.js@0.17.1': {} - /@types/three@0.154.0: - resolution: {integrity: sha512-IioqpGhch6FdLDh4zazRn3rXHj6Vn2nVOziJdXVbJFi9CaI65LtP9qqUtpzbsHK2Ezlox8NtsLNHSw3AQzucjA==} + '@types/three@0.154.0': dependencies: '@tweenjs/tween.js': 18.6.4 '@types/stats.js': 0.17.1 @@ -5323,72 +12091,42 @@ packages: fflate: 0.6.10 lil-gui: 0.17.0 meshoptimizer: 0.18.1 - dev: true - /@types/three@0.156.0: - resolution: {integrity: sha512-733bXDSRdlrxqOmQuOmfC1UBRuJ2pREPk8sWnx9MtIJEVDQMx8U0NQO5MVVaOrjzDPyLI+cFPim2X/ss9v0+LQ==} + '@types/three@0.156.0': dependencies: '@types/stats.js': 0.17.1 '@types/webxr': 0.5.7 fflate: 0.6.10 meshoptimizer: 0.18.1 - dev: false - /@types/trusted-types@2.0.3: - resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} + '@types/trusted-types@2.0.3': {} - /@types/ua-parser-js@0.7.39: - resolution: {integrity: sha512-P/oDfpofrdtF5xw433SPALpdSchtJmY7nsJItf8h3KXqOslkbySh8zq4dSWXH2oTjRvJ5PczVEoCZPow6GicLg==} - dev: true + '@types/ua-parser-js@0.7.39': {} - /@types/unist@2.0.8: - resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} + '@types/unist@2.0.8': {} - /@types/unist@3.0.2: - resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - dev: false + '@types/unist@3.0.2': {} - /@types/webxr@0.5.7: - resolution: {integrity: sha512-Rcgs5c2eNFnHp53YOjgtKfl/zWX1Y+uFGUwlSXrWcZWu3yhANRezmph4MninmqybUYT6g9ZE0aQ9QIdPkLR3Kg==} + '@types/webxr@0.5.7': {} - /@types/wicg-file-system-access@2023.10.2: - resolution: {integrity: sha512-nSiK8qt0O7sQmDcW3HYfvya7GDoD6ipgdcUFzk3QN+UBIqXeNg38Nh6VnKv7EIPfkVETRiquyMskCbpxUzgX1Q==} - dev: false + '@types/wicg-file-system-access@2023.10.2': {} - /@types/yargs-parser@21.0.1: - resolution: {integrity: sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==} - dev: true + '@types/yargs-parser@21.0.1': {} - /@types/yargs@17.0.28: - resolution: {integrity: sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==} + '@types/yargs@17.0.28': dependencies: '@types/yargs-parser': 21.0.1 - dev: true - /@types/yauzl@2.10.1: - resolution: {integrity: sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==} - requiresBuild: true + '@types/yauzl@2.10.1': dependencies: '@types/node': 20.8.0 - dev: true - /@types/yauzl@2.10.3: - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - requiresBuild: true + '@types/yauzl@2.10.3': dependencies: '@types/node': 20.11.19 optional: true - /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2)': dependencies: '@eslint-community/regexpp': 4.8.0 '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) @@ -5404,20 +12142,12 @@ packages: natural-compare-lite: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.2.2) + optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2)': dependencies: '@typescript-eslint/scope-manager': 6.7.3 '@typescript-eslint/types': 6.7.3 @@ -5425,65 +12155,38 @@ packages: '@typescript-eslint/visitor-keys': 6.7.3 debug: 4.3.4(supports-color@8.1.1) eslint: 8.50.0 + optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@6.1.0: - resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.1.0': dependencies: '@typescript-eslint/types': 6.1.0 '@typescript-eslint/visitor-keys': 6.1.0 - dev: true - /@typescript-eslint/scope-manager@6.7.3: - resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.7.3': dependencies: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/visitor-keys': 6.7.3 - dev: true - /@typescript-eslint/type-utils@6.1.0(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@6.1.0(eslint@8.50.0)(typescript@5.2.2)': dependencies: '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.2.2) '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.2.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.50.0 ts-api-utils: 1.0.3(typescript@5.2.2) + optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@6.1.0: - resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.1.0': {} - /@typescript-eslint/types@6.7.3: - resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.7.3': {} - /@typescript-eslint/typescript-estree@6.1.0(typescript@5.2.2): - resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.1.0(typescript@5.2.2)': dependencies: '@typescript-eslint/types': 6.1.0 '@typescript-eslint/visitor-keys': 6.1.0 @@ -5492,19 +12195,12 @@ packages: is-glob: 4.0.3 semver: 7.6.0 ts-api-utils: 1.0.3(typescript@5.2.2) + optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2): - resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2)': dependencies: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/visitor-keys': 6.7.3 @@ -5513,16 +12209,12 @@ packages: is-glob: 4.0.3 semver: 7.6.0 ts-api-utils: 1.0.3(typescript@5.2.2) + optionalDependencies: typescript: 5.2.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@6.1.0(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@6.1.0(eslint@8.50.0)(typescript@5.2.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.12 @@ -5535,122 +12227,86 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@6.1.0: - resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.1.0': dependencies: '@typescript-eslint/types': 6.1.0 eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.7.3: - resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.7.3': dependencies: '@typescript-eslint/types': 6.7.3 eslint-visitor-keys: 3.4.3 - dev: true - /@vitejs/plugin-react@3.1.0(vite@4.5.2): - resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - vite: ^4.1.0-beta.0 + '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': dependencies: '@babel/core': 7.22.11 '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.11) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.5.2 + vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) transitivePeerDependencies: - supports-color - dev: true - /@vitest/expect@0.34.6: - resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + '@vitest/expect@0.34.6': dependencies: '@vitest/spy': 0.34.6 '@vitest/utils': 0.34.6 chai: 4.3.10 - dev: true - /@vitest/runner@0.34.6: - resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + '@vitest/runner@0.34.6': dependencies: '@vitest/utils': 0.34.6 p-limit: 4.0.0 pathe: 1.1.1 - dev: true - /@vitest/snapshot@0.34.6: - resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + '@vitest/snapshot@0.34.6': dependencies: magic-string: 0.30.4 pathe: 1.1.1 pretty-format: 29.7.0 - dev: true - /@vitest/spy@0.34.6: - resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + '@vitest/spy@0.34.6': dependencies: tinyspy: 2.2.0 - dev: true - /@vitest/utils@0.34.6: - resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + '@vitest/utils@0.34.6': dependencies: diff-sequences: 29.6.3 loupe: 2.3.6 pretty-format: 29.7.0 - dev: true - /@xboxreplay/errors@0.1.0: - resolution: {integrity: sha512-Tgz1d/OIPDWPeyOvuL5+aai5VCcqObhPnlI3skQuf80GVF3k1I0lPCnGC+8Cm5PV9aLBT5m8qPcJoIUQ2U4y9g==} + '@webgpu/types@0.1.40': {} - /@xboxreplay/xboxlive-auth@3.3.3(debug@4.3.4): - resolution: {integrity: sha512-j0AU8pW10LM8O68CTZ5QHnvOjSsnPICy0oQcP7zyM7eWkDQ/InkiQiirQKsPn1XRYDl4ccNu0WM582s3UKwcBg==} + '@xboxreplay/errors@0.1.0': {} + + '@xboxreplay/xboxlive-auth@3.3.3(debug@4.3.4)': dependencies: '@xboxreplay/errors': 0.1.0 axios: 0.21.4(debug@4.3.4) transitivePeerDependencies: - debug - /@xmcl/asm@1.0.1: - resolution: {integrity: sha512-7vCVgm1E1IZ2cujiitFk9550Vgu2XAOn1ff90di638fMmTK0XkFMXKsSR/nGZmYKt+XiTMI/0B3TvreqbVjOug==} - engines: {node: '>=16'} - dev: true + '@xmcl/asm@1.0.1': {} - /@xmcl/core@2.12.0(yauzl@2.10.0): - resolution: {integrity: sha512-rcxy29i2fjGFpe6sEvaJxYHFGlfYMcJwElbk6TIUCrKNOiMhyLZeBtCJSk38hvaYF0kiROA3c4EJeWNGHf2zVw==} - engines: {node: '>=16.0'} + '@xmcl/core@2.12.0(yauzl@2.10.0)': dependencies: '@xmcl/unzip': 2.1.2(yauzl@2.10.0) transitivePeerDependencies: - yauzl - dev: true - /@xmcl/file-transfer@1.0.3: - resolution: {integrity: sha512-p5JsUQpNShqW4VpqaKXcQzYSO9o/9UGjXZfb5aNt/24Ty+j9qepQyPo4P1CFwfzgFuf9GGhH5cPUi6nShlKS+g==} - engines: {node: '>=16.0'} + '@xmcl/file-transfer@1.0.3': dependencies: '@types/http-cache-semantics': 4.0.2 http-cache-semantics: 4.1.1 undici: 5.25.4 - dev: true - /@xmcl/forge-site-parser@2.0.9: - resolution: {integrity: sha512-OHKG2KYE+F6TSeOQmymuGoqEifxbJb3w3X/hmxMNeqtewiYukJldPmKO559ZFnZnOuMQEnr+X0dMbTQwWs5dFg==} - engines: {node: '>=16'} + '@xmcl/forge-site-parser@2.0.9': dependencies: node-html-parser: 6.1.10 - dev: true - /@xmcl/installer@5.1.0: - resolution: {integrity: sha512-KpoxpfYdUWH4U4Yat7RifS1JZajArOdfgsJ/LdU90y6Fc3hKhHSJsiRudk1VxASTyMXKCM0lWVxH5JzywRHBDw==} - engines: {node: '>=16.0'} + '@xmcl/installer@5.1.0': dependencies: '@xmcl/asm': 1.0.1 '@xmcl/core': 2.12.0(yauzl@2.10.0) @@ -5660,72 +12316,45 @@ packages: '@xmcl/unzip': 2.1.2(yauzl@2.10.0) undici: 5.25.4 yauzl: 2.10.0 - dev: true - /@xmcl/task@4.0.6: - resolution: {integrity: sha512-h0AR7DQm6xxBgROPnRi0EY8DlaDQwuGzPA5lFRMD4EsnpHJ/3fPdzwbMLb81ZxKJlLSCn3hVR2yI0mSKIm5Heg==} - dev: true + '@xmcl/task@4.0.6': {} - /@xmcl/text-component@2.1.3: - resolution: {integrity: sha512-LdUZgC5+8F23J2ZkZi7aZb87QBNfxwJqhUyts8YBQYwxQPwei20TOBm2hr69euoAeDo7NDfbLXssD4mUvsAS0Q==} - engines: {node: '>=16'} - dev: false + '@xmcl/text-component@2.1.3': {} - /@xmcl/unzip@2.1.2(yauzl@2.10.0): - resolution: {integrity: sha512-Lm/eg/e0/p+sfj/RT2QDpsBAf39DZqQ3+XvX1JXZPb64wnjwOf8CGU1WPv6BseEcJ5CMOpm0s2NyrEQD04y0UQ==} - engines: {node: '>=16'} - peerDependencies: - yauzl: ^2.10.0 + '@xmcl/unzip@2.1.2(yauzl@2.10.0)': dependencies: '@types/yauzl': 2.10.1 yauzl: 2.10.0 - dev: true - /@xobotyi/scrollbar-width@1.9.5: - resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} - dev: false + '@xobotyi/scrollbar-width@1.9.5': {} - /@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20): - resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} - engines: {node: '>=14.15.0'} - peerDependencies: - esbuild: '>=0.10.0' + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': dependencies: esbuild: 0.18.20 tslib: 2.6.2 - dev: true - /@yarnpkg/fslib@2.10.3: - resolution: {integrity: sha512-41H+Ga78xT9sHvWLlFOZLIhtU6mTGZ20pZ29EiZa97vnxdohJD2AF42rCoAoWfqUz486xY6fhjMH+DYEM9r14A==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + '@yarnpkg/fslib@2.10.3': dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 - dev: true - - /@yarnpkg/libzip@2.3.0: - resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} - engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} + + '@yarnpkg/libzip@2.3.0': dependencies: '@types/emscripten': 1.39.8 tslib: 1.14.1 - dev: true - /@zardoy/flying-squid@0.0.15: - resolution: {integrity: sha512-VooP9XuzNQVL3y0zlaU5wStRm1vfQIXAzVNHuvMoMgyIyOiD7A59QzVZT93GAoTyUBHTwqweXMPQftjywUy62A==} - engines: {node: '>=8'} - hasBin: true + '@zardoy/flying-squid@0.0.15(encoding@0.1.13)': dependencies: change-case: 4.1.2 colors: 1.4.0 - diamond-square: github.com/zardoy/diamond-square/915fce8e27fe8eb45464d89b9563956afa4f7687 + diamond-square: https://codeload.github.com/zardoy/diamond-square/tar.gz/915fce8e27fe8eb45464d89b9563956afa4f7687 emit-then: 2.0.0 event-promise: 0.0.1 exit-hook: 2.2.1 flatmap: 0.0.3 long: 5.2.3 minecraft-data: 3.62.0 - minecraft-protocol: github.com/zardoy/minecraft-protocol/2c14a686bfe7cbd9a5c87b629b402295ee86219f + minecraft-protocol: https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f(encoding@0.1.13) mkdirp: 2.1.6 moment: 2.30.1 needle: 2.9.1 @@ -5735,9 +12364,9 @@ packages: prismarine-entity: 2.3.1 prismarine-item: 1.14.0 prismarine-nbt: 2.5.0 - prismarine-provider-anvil: github.com/zardoy/prismarine-provider-anvil/0ddcd9d48574113308e1fbebef60816aced0846f(minecraft-data@3.62.0) + prismarine-provider-anvil: https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/02d81b0eba6ab1c362862970954f9a3c150c9a29(minecraft-data@3.62.0) prismarine-windows: 2.9.0 - prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 + prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465 random-seed: 0.3.0 range: 0.0.3 readline: 1.3.0 @@ -5749,369 +12378,219 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false - /@zardoy/react-util@0.2.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-glABtx54mh4XSaK6BNALWE3mlshPjcPwPsRj/GnOXEA7WJY/6n43iJoukbaYF3758mGZRU5Fq6gklyFjBg0yHQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.0.0 + '@zardoy/react-util@0.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@zardoy/utils@0.0.11: - resolution: {integrity: sha512-d6xBnSFCOa98HcL52xSBflJKjKpxfRhtr1eVexy89YujeCHSQhUMmSz9h07xyrulfW60k9tSeYH5reuqoh4l4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@zardoy/utils@0.0.11': dependencies: escape-string-regexp: 4.0.0 lodash.compact: 3.0.1 rambda: 6.9.0 type-fest: 2.19.0 - dev: false - /Base64@0.2.1: - resolution: {integrity: sha512-reGEWshDmTDQDsCec/HduOO9Wyj6yMOupMfhIf3ugN1TDlK2NQW4DDJSqNNtp380SNcvRfXtO8HSCQot0d0SMw==} - dev: true + Base64@0.2.1: {} - /abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false + abbrev@1.1.1: {} - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - /acorn-jsx@5.3.2(acorn@7.4.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 - dev: true - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.10.0): dependencies: acorn: 8.10.0 - dev: true - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@7.2.0: {} - /acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@8.2.0: {} - /acorn@7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@7.4.1: {} - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true + acorn@8.10.0: {} - /address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - dev: true + address@1.2.2: {} - /aes-js@3.1.2: - resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + aes-js@3.1.2: {} - /after@0.8.2: - resolution: {integrity: sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==} - dev: false + after@0.8.2: {} - /agent-base@5.1.1: - resolution: {integrity: sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==} - engines: {node: '>= 6.0.0'} - dev: true + agent-base@5.1.1: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: false - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} + agent-base@7.1.0: dependencies: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true - /agentkeepalive@4.5.0: - resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} - engines: {node: '>= 8.0.0'} - requiresBuild: true + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 - dev: false optional: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.12.0: dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 uri-js: 4.4.1 - dev: false - /animejs@3.2.1: - resolution: {integrity: sha512-sWno3ugFryK5nhiDm/2BKeFCpZv7vzerWUcUPyAZLDhMek3+S/p418ldZJbJXo5ZUOpfm2kP2XRO4NJcULMy9A==} - dev: false + animejs@3.2.1: {} - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + ansi-colors@4.1.3: {} - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: true + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - dev: true + ansi-styles@5.2.0: {} - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: true + ansi-styles@6.2.1: {} - /any-base@1.1.0: - resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} - dev: false + any-base@1.1.0: {} - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false + any-promise@1.3.0: {} - /anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + anymatch@2.0.0: dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 transitivePeerDependencies: - supports-color - dev: false - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true - /apache-crypt@1.2.6: - resolution: {integrity: sha512-072WetlM4blL8PREJVeY+WHiUh1R5VNt2HfceGS8aKqttPHcmqE5pkKuXPz/ULmJOFkc8Hw3kfKl6vy7Qka6DA==} - engines: {node: '>=8'} + apache-crypt@1.2.6: dependencies: unix-crypt-td-js: 1.1.4 - dev: false - /apache-md5@1.1.8: - resolution: {integrity: sha512-FCAJojipPn0bXjuEpjOOOMN8FZDkxfWWp4JGN9mifU2IhxvKyXZYqpzPHdnTSUpmPDy+tsslB6Z1g+Vg6nVbYA==} - engines: {node: '>=8'} - dev: false + apache-md5@1.1.8: {} - /app-root-dir@1.0.2: - resolution: {integrity: sha512-jlpIfsOoNoafl92Sz//64uQHGSyMrD2vYG5d8o2a4qGvyNCvXur7bzIsWtAC/6flI2RYAp3kv8rsfBtaLm7w0g==} - dev: true + app-root-dir@1.0.2: {} - /aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - dev: false + aproba@2.0.0: {} - /arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + arch@2.2.0: {} - /are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} + are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 - dev: false - /are-we-there-yet@3.0.1: - resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + are-we-there-yet@3.0.1: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 - dev: false optional: true - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} - engines: {node: '>=10'} + aria-hidden@1.2.3: dependencies: tslib: 2.6.2 - dev: true - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: false + arr-diff@4.0.0: {} - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: false + arr-flatten@1.1.0: {} - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: false + arr-union@3.1.0: {} - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-flatten@1.1.1: {} - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: false + array-unique@0.3.2: {} - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 - dev: true - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.tosorted@1.1.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.4 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 call-bind: 1.0.2 @@ -6121,9 +12600,7 @@ packages: is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -6133,151 +12610,92 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 - dev: true - /arraybuffer.slice@0.0.7: - resolution: {integrity: sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==} - dev: false + arraybuffer.slice@0.0.7: {} - /arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - dev: true + arrify@1.0.1: {} - /asap@1.0.0: - resolution: {integrity: sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==} - dev: false + asap@1.0.0: {} - /asn1.js@5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + asn1.js@5.4.1: dependencies: bn.js: 4.12.0 inherits: 2.0.4 minimalistic-assert: 1.0.1 safer-buffer: 2.1.2 - dev: true - /asn1@0.2.3: - resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} + asn1@0.2.3: {} - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} + assert-plus@1.0.0: {} - /assert@2.0.0: - resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} + assert@2.0.0: dependencies: es6-object-assign: 1.1.0 is-nan: 1.3.2 object-is: 1.1.5 util: 0.12.5 - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true + assertion-error@1.1.0: {} - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: false + assign-symbols@1.0.0: {} - /ast-types@0.14.2: - resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} - engines: {node: '>=4'} + ast-types@0.14.2: dependencies: tslib: 2.6.2 - dev: true - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} + ast-types@0.15.2: dependencies: tslib: 2.6.2 - dev: true - /ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} + ast-types@0.16.1: dependencies: tslib: 2.6.2 - dev: true - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} + astral-regex@2.0.0: {} - /async-each@1.0.6: - resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} - dev: false + async-each@1.0.6: {} - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + async-limiter@1.0.1: {} - /async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + async@2.6.4: dependencies: lodash: 4.17.21 - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + async@3.2.5: {} - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + asynciterator.prototype@1.0.0: dependencies: has-symbols: 1.0.3 - dev: true - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + asynckit@0.4.0: {} - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} + at-least-node@1.0.0: {} - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: false + atob@2.1.2: {} - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.5: {} - /available-typed-arrays@1.0.6: - resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} - engines: {node: '>= 0.4'} - dev: true + available-typed-arrays@1.0.6: {} - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + aws-sign2@0.7.0: {} - /aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + aws4@1.12.0: {} - /axios@0.21.4(debug@4.3.4): - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + axios@0.21.4(debug@4.3.4): dependencies: follow-redirects: 1.15.5(debug@4.3.4) transitivePeerDependencies: - debug - /babel-core@7.0.0-bridge.0(@babel/core@7.22.11): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.22.11): dependencies: '@babel/core': 7.22.11 - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 @@ -6286,21 +12704,14 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.22.11 cosmiconfig: 7.1.0 resolve: 1.22.4 - dev: false - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.11): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.11): dependencies: '@babel/compat-data': 7.22.9 '@babel/core': 7.22.11 @@ -6309,10 +12720,7 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.11): - resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.11): dependencies: '@babel/core': 7.22.11 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.11) @@ -6320,43 +12728,26 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.11): - resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.11): dependencies: '@babel/core': 7.22.11 '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.11) transitivePeerDependencies: - supports-color - /backo2@1.0.2: - resolution: {integrity: sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==} - dev: false + backo2@1.0.2: {} - /bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - dev: false + bail@2.0.2: {} - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-arraybuffer@0.1.4: - resolution: {integrity: sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==} - engines: {node: '>= 0.6.0'} - dev: false + base64-arraybuffer@0.1.4: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: {} - /base64id@2.0.0: - resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} - engines: {node: ^4.5.0 || >= 5.9} - dev: false + base64id@2.0.0: {} - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} + base@0.11.2: dependencies: cache-base: 1.0.1 class-utils: 0.3.6 @@ -6365,95 +12756,56 @@ packages: isobject: 3.0.1 mixin-deep: 1.3.2 pascalcase: 0.1.1 - dev: false - /basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} + basic-auth@2.0.1: dependencies: safe-buffer: 5.1.2 - /batch@0.6.1: - resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - dev: false + batch@0.6.1: {} - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 - /bcryptjs@2.4.3: - resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} - dev: false + bcryptjs@2.4.3: {} - /better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} + better-opn@3.0.2: dependencies: open: 8.4.2 - dev: true - /big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - dev: true + big-integer@1.6.51: {} - /binary-extensions@1.13.1: - resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} - engines: {node: '>=0.10.0'} - dev: false + binary-extensions@1.13.1: {} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: true + binary-extensions@2.2.0: {} - /bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - requiresBuild: true + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - dev: false optional: true - /bit-twiddle@1.0.2: - resolution: {integrity: sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==} - requiresBuild: true - dev: false + bit-twiddle@1.0.2: optional: true - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - /blob-util@2.0.2: - resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + blob-util@2.0.2: {} - /blob@0.0.5: - resolution: {integrity: sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==} - dev: false + blob@0.0.5: {} - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + bluebird@3.7.2: {} - /bmp-js@0.1.0: - resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} - dev: false + bmp-js@0.1.0: {} - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: true + bn.js@4.12.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: true + bn.js@5.2.1: {} - /body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -6470,9 +12822,7 @@ packages: transitivePeerDependencies: - supports-color - /body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -6488,33 +12838,23 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: true + boolbase@1.0.0: {} - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} + bplist-parser@0.2.0: dependencies: big-integer: 1.6.51 - dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - /braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} + braces@2.3.2: dependencies: arr-flatten: 1.1.0 array-unique: 0.3.2 @@ -6528,25 +12868,22 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - dev: true - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: true + brorand@1.1.0: {} - /browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - dev: true + browser-assert@1.2.1: {} - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + browserfs@https://codeload.github.com/zardoy/browserfs/tar.gz/ab58ae8ef00e3a31db01909e365e6cb5188436e0: {} + + browserfs@https://codeload.github.com/zardoy/browserfs/tar.gz/e60ca69e74888e057a96a468afe1d62347d3f56f: + dependencies: + async: 2.6.4 + + browserify-aes@1.2.0: dependencies: buffer-xor: 1.0.3 cipher-base: 1.0.4 @@ -6554,34 +12891,26 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /browserify-cipher@1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + browserify-cipher@1.0.1: dependencies: browserify-aes: 1.2.0 browserify-des: 1.0.2 evp_bytestokey: 1.0.3 - dev: true - /browserify-des@1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + browserify-des@1.0.2: dependencies: cipher-base: 1.0.4 des.js: 1.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /browserify-rsa@4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + browserify-rsa@4.1.0: dependencies: bn.js: 5.2.1 randombytes: 2.1.0 - dev: true - /browserify-sign@4.2.1: - resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + browserify-sign@4.2.1: dependencies: bn.js: 5.2.1 browserify-rsa: 4.1.0 @@ -6592,86 +12921,55 @@ packages: parse-asn1: 5.1.6 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: true - /browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + browserify-zlib@0.1.4: dependencies: pako: 0.2.9 - dev: true - /browserify-zlib@0.2.0: - resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + browserify-zlib@0.2.0: dependencies: pako: 1.0.11 - dev: true - /browserslist@4.21.10: - resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.21.10: dependencies: caniuse-lite: 1.0.30001524 electron-to-chromium: 1.4.504 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: true - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + buffer-crc32@0.2.13: {} - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + buffer-equal-constant-time@1.0.1: {} - /buffer-equal@0.0.1: - resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} - engines: {node: '>=0.4.0'} - dev: false + buffer-equal@0.0.1: {} - /buffer-equal@1.0.1: - resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} - engines: {node: '>=0.4'} + buffer-equal@1.0.1: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-from@1.1.2: {} - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true + buffer-xor@1.0.3: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} + builtin-modules@3.3.0: {} - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} + bytes@3.0.0: {} - /bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + bytes@3.1.2: {} - /c8@7.14.0: - resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==} - engines: {node: '>=10.12.0'} - hasBin: true + c8@7.14.0: dependencies: '@bcoe/v8-coverage': 0.2.3 '@istanbuljs/schema': 0.1.3 @@ -6685,17 +12983,10 @@ packages: v8-to-istanbul: 9.1.3 yargs: 16.2.0 yargs-parser: 20.2.9 - dev: true - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: true + cac@6.7.14: {} - /cacache@16.1.3: - resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + cacache@16.1.3: dependencies: '@npmcli/fs': 2.1.2 '@npmcli/move-file': 2.0.1 @@ -6717,12 +13008,9 @@ packages: unique-filename: 2.0.1 transitivePeerDependencies: - bluebird - dev: false optional: true - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} + cache-base@1.0.1: dependencies: collection-visit: 1.0.0 component-emitter: 1.3.0 @@ -6733,21 +13021,15 @@ packages: to-object-path: 0.3.0 union-value: 1.0.1 unset-value: 1.0.0 - dev: false - - /cachedir@2.4.0: - resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} - engines: {node: '>=6'} - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + cachedir@2.4.0: {} + + call-bind@1.0.2: dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -6755,68 +13037,44 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.1 - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + callsites@3.1.0: {} - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + camel-case@4.1.2: dependencies: pascal-case: 3.1.2 tslib: 2.6.2 - dev: false - /camelcase-keys@7.0.2: - resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} - engines: {node: '>=12'} + camelcase-keys@7.0.2: dependencies: camelcase: 6.3.0 map-obj: 4.3.0 quick-lru: 5.1.1 type-fest: 1.4.0 - dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: true + camelcase@6.3.0: {} - /caniuse-lite@1.0.30001524: - resolution: {integrity: sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==} + caniuse-lite@1.0.30001524: {} - /canvas@2.11.2: - resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} - engines: {node: '>=6'} - requiresBuild: true + canvas@2.11.2(encoding@0.1.13): dependencies: - '@mapbox/node-pre-gyp': 1.0.11 + '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) nan: 2.18.0 simple-get: 3.1.1 transitivePeerDependencies: - encoding - supports-color - dev: false - /capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + capital-case@1.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case-first: 2.0.2 - dev: false - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + caseless@0.12.0: {} - /cbor-extract@2.2.0: - resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} - hasBin: true - requiresBuild: true + cbor-extract@2.2.0: dependencies: node-gyp-build-optional-packages: 5.1.1 optionalDependencies: @@ -6826,18 +13084,13 @@ packages: '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 '@cbor-extract/cbor-extract-linux-x64': 2.2.0 '@cbor-extract/cbor-extract-win32-x64': 2.2.0 - dev: false optional: true - /cbor-x@1.5.4: - resolution: {integrity: sha512-PVKILDn+Rf6MRhhcyzGXi5eizn1i0i3F8Fe6UMMxXBnWkalq9+C5+VTmlIjAYM4iF2IYF2N+zToqAfYOp+3rfw==} + cbor-x@1.5.4: optionalDependencies: cbor-extract: 2.2.0 - dev: false - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} - engines: {node: '>=4'} + chai@4.3.10: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 @@ -6846,25 +13099,19 @@ packages: loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 - dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + change-case@4.1.2: dependencies: camel-case: 4.1.2 capital-case: 1.0.4 @@ -6878,29 +13125,18 @@ packages: sentence-case: 3.0.4 snake-case: 3.0.4 tslib: 2.6.2 - dev: false - /change-case@5.1.2: - resolution: {integrity: sha512-CAtbGEDulyjzs05RXy3uKcwqeztz/dMEuAc1Xu9NQBsbrhuGMneL0u9Dj5SoutLKBFYun8txxYIwhjtLNfUmCA==} - dev: false + change-case@5.1.2: {} - /character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - dev: false + character-entities@2.0.2: {} - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - dev: true - /check-more-types@2.24.0: - resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} - engines: {node: '>= 0.8.0'} + check-more-types@2.24.0: {} - /chokidar@2.1.8: - resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} - deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + chokidar@2.1.8: dependencies: anymatch: 2.0.0 async-each: 1.0.6 @@ -6917,11 +13153,8 @@ packages: fsevents: 1.2.13 transitivePeerDependencies: - supports-color - dev: false - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} + chokidar@3.5.3: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -6932,230 +13165,138 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true - /chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + chownr@1.1.4: {} - /chownr@2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} + chownr@2.0.0: {} - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} - engines: {node: '>=8'} + ci-info@3.8.0: {} - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + cipher-base@1.0.4: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} + class-utils@0.3.6: dependencies: arr-union: 3.1.0 define-property: 0.2.5 isobject: 3.0.1 static-extend: 0.1.2 - dev: false - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - dev: false + classnames@2.3.2: {} - /clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} + clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 - dev: true - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} + clean-stack@2.2.0: {} - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - /cli-spinners@2.9.1: - resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} - engines: {node: '>=6'} - dev: true + cli-spinners@2.9.1: {} - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} - engines: {node: 10.* || >= 12.*} + cli-table3@0.6.3: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 - /cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: true - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: true + clone@1.0.4: {} - /clsx@1.1.1: - resolution: {integrity: sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==} - engines: {node: '>=6'} - dev: false + clsx@1.1.1: {} - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - dev: false + clsx@2.1.0: {} - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} + collection-visit@1.0.0: dependencies: map-visit: 1.0.0 object-visit: 1.0.1 - dev: false - /color-convert@0.5.3: - resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} - dev: false + color-convert@0.5.3: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-diff@1.4.0: - resolution: {integrity: sha512-4oDB/o78lNdppbaqrg0HjOp7pHmUc+dfCxWKWFnQg6AB/1dkjtBDop3RZht5386cq9xBUDRvDvSCA7WUlM9Jqw==} - dev: false + color-diff@1.4.0: {} - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + color-string@1.9.1: dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 - dev: false - /color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - dev: false + color-support@1.1.3: {} - /color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} + color@4.2.3: dependencies: color-convert: 2.0.1 color-string: 1.9.1 - dev: false - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + colorette@2.0.20: {} - /colors@1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - dev: false + colors@1.4.0: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@2.20.3: {} - /commander@5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} + commander@5.1.0: {} - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true + commander@6.2.1: {} - /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} + common-tags@1.8.2: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: true + commondir@1.0.1: {} - /component-bind@1.0.0: - resolution: {integrity: sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==} - dev: false + component-bind@1.0.0: {} - /component-emitter@1.2.1: - resolution: {integrity: sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==} - dev: false + component-emitter@1.2.1: {} - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: false + component-emitter@1.3.0: {} - /component-inherit@0.0.3: - resolution: {integrity: sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==} - dev: false + component-inherit@0.0.3: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.52.0 - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} + compression@1.7.4: dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -7167,26 +13308,18 @@ packages: transitivePeerDependencies: - supports-color - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} + concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 inherits: 2.0.4 readable-stream: 2.3.8 typedarray: 0.0.6 - dev: true - /confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - dev: true + confusing-browser-globals@1.0.11: {} - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + connect@3.7.0: dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -7194,36 +13327,24 @@ packages: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - dev: false + console-control-strings@1.1.0: {} - /constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + constant-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case: 2.0.2 - dev: false - /constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - dev: true + constants-browserify@1.0.0: {} - /content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 - /content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + content-type@1.0.5: {} - /contro-max@0.1.1(typescript@5.2.2): - resolution: {integrity: sha512-H+bzJWxiuxu98Tz8iGs1occMkRlr9fOzfOKeflVU8bD5teAEiJu8zjVnNSbweLQIR+Vhdynygv18N69t97rVAw==} + contro-max@0.1.1(typescript@5.2.2): dependencies: emittery: 0.10.2 lodash-es: 4.17.21 @@ -7232,97 +13353,62 @@ packages: use-typed-event-listener: 4.0.2(react@18.2.0)(typescript@5.2.2) transitivePeerDependencies: - typescript - dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@1.9.0: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true + convert-source-map@2.0.0: {} - /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie-signature@1.0.6: {} - /cookie@0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: false + cookie@0.4.2: {} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} - engines: {node: '>= 0.6'} + cookie@0.5.0: {} - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: false + copy-descriptor@0.1.1: {} - /copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + copy-to-clipboard@3.3.3: dependencies: toggle-selection: 1.0.6 - dev: false - /core-js-compat@3.32.1: - resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} + core-js-compat@3.32.1: dependencies: browserslist: 4.21.10 - /core-js@3.32.1: - resolution: {integrity: sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==} - requiresBuild: true - dev: false + core-js@3.32.1: {} - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + core-util-is@1.0.2: {} - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + core-util-is@1.0.3: {} - /cors@2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} + cors@2.8.5: dependencies: object-assign: 4.1.1 vary: 1.1.2 - dev: false - /corser@2.0.1: - resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} - engines: {node: '>= 0.4.0'} - dev: true + corser@2.0.1: {} - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.0 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: false - /create-ecdh@4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + create-ecdh@4.0.4: dependencies: bn.js: 4.12.0 elliptic: 6.5.4 - dev: true - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + create-hash@1.2.0: dependencies: cipher-base: 1.0.4 inherits: 2.0.4 md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: true - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + create-hmac@1.1.7: dependencies: cipher-base: 1.0.4 create-hash: 1.2.0 @@ -7330,33 +13416,24 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true - /crelt@1.0.6: - resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - dev: false + crelt@1.0.6: {} - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} + cross-spawn@6.0.5: dependencies: nice-try: 1.0.5 path-key: 2.0.1 semver: 5.7.2 shebang-command: 1.2.0 which: 1.3.1 - dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crypto-browserify@3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + crypto-browserify@3.12.0: dependencies: browserify-cipher: 1.0.1 browserify-sign: 4.2.1 @@ -7369,53 +13446,33 @@ packages: public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 - dev: true - /crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} - engines: {node: '>=8'} + crypto-random-string@2.0.0: {} - /css-in-js-utils@3.1.0: - resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + css-in-js-utils@3.1.0: dependencies: hyphenate-style-name: 1.0.4 - dev: false - /css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.1.0: dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 domutils: 3.1.0 nth-check: 2.1.1 - dev: true - /css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} + css-tree@1.1.3: dependencies: mdn-data: 2.0.14 source-map: 0.6.1 - dev: false - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: true + css-what@6.1.0: {} - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + csstype@3.1.2: {} - /cypress-esbuild-preprocessor@1.0.2: - resolution: {integrity: sha512-JsFnm6fBQt/OEzstknJ1KLMTuUERUaG0ZB9fk0KdNUlZqxaVEoQ9/pFvKmqRfzUe2y00cWD++ptccQA4tNAAlQ==} - dev: true + cypress-esbuild-preprocessor@1.0.2: {} - /cypress-plugin-snapshots@1.4.4(cypress@10.11.0): - resolution: {integrity: sha512-rijq3RTEZNtxQA4KCUwjXinmE1Ww+z6cQW0B14iodFM/HlX5LN16XT/2QS3X1nUXRKt0QdTrAC5MQfMUrjBkSQ==} - engines: {node: '>=8.2.1'} - peerDependencies: - cypress: ^4.5.0 + cypress-plugin-snapshots@1.4.4(cypress@10.11.0): dependencies: cypress: 10.11.0 diff2html: 2.12.2 @@ -7437,13 +13494,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /cypress@10.11.0: - resolution: {integrity: sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==} - engines: {node: '>=12.0.0'} - hasBin: true - requiresBuild: true + cypress@10.11.0: dependencies: '@cypress/request': 2.88.12 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) @@ -7488,212 +13540,116 @@ packages: untildify: 4.0.0 yauzl: 2.10.0 - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} + dashdash@1.14.1: dependencies: assert-plus: 1.0.0 - /dayjs@1.11.9: - resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + dayjs@1.11.9: {} - /debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} - dev: false + debounce@1.2.1: {} - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.1.0: dependencies: ms: 2.0.0 - dev: false - /debug@3.2.7(supports-color@8.1.1): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: supports-color: 8.1.1 - /debug@4.1.1: - resolution: {integrity: sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==} - deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.1.1: dependencies: ms: 2.1.3 - dev: false - /debug@4.3.4(supports-color@8.1.1): - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4(supports-color@8.1.1): dependencies: ms: 2.1.2 + optionalDependencies: supports-color: 8.1.1 - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 - dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true + decamelize@1.2.0: {} - /decamelize@5.0.1: - resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} - engines: {node: '>=10'} - dev: true + decamelize@5.0.1: {} - /decode-named-character-reference@1.0.2: - resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 - dev: false - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false + decode-uri-component@0.2.2: {} - /decompress-response@4.2.1: - resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} - engines: {node: '>=8'} + decompress-response@4.2.1: dependencies: mimic-response: 2.1.0 - dev: false - /decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 - dev: false - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} - engines: {node: '>=6'} + deep-eql@4.1.3: dependencies: type-detect: 4.0.8 - dev: true - /deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - requiresBuild: true - dev: false + deep-extend@0.6.0: {} - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: false + deepmerge@4.3.1: {} - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} + default-browser-id@3.0.0: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 - dev: true - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: true - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} - engines: {node: '>= 0.4'} + define-data-property@1.1.0: dependencies: get-intrinsic: 1.2.1 gopd: 1.0.1 has-property-descriptors: 1.0.0 - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true + define-lazy-prop@2.0.0: {} - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} + define-property@0.2.5: dependencies: is-descriptor: 0.1.7 - dev: false - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} + define-property@1.0.0: dependencies: is-descriptor: 1.0.3 - dev: false - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} + define-property@2.0.2: dependencies: is-descriptor: 1.0.3 isobject: 3.0.1 - dev: false - /defu@6.1.2: - resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==} - dev: true + defu@6.1.2: {} - /del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} + del@6.1.1: dependencies: globby: 11.1.0 graceful-fs: 4.2.11 @@ -7703,252 +13659,160 @@ packages: p-map: 4.0.0 rimraf: 3.0.2 slash: 3.0.0 - dev: true - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + delayed-stream@1.0.0: {} - /delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - dev: false + delegates@1.0.0: {} - /depd@1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false + depd@1.1.2: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + depd@2.0.0: {} - /dequal@1.0.0: - resolution: {integrity: sha512-/Nd1EQbQbI9UbSHrMiKZjFLrXSnU328iQdZKPQf78XQI6C+gutkFUeoHpG5J08Ioa6HeRbRNFpSIclh1xyG0mw==} - engines: {node: '>=6'} - dev: true + dequal@1.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + dequal@2.0.3: {} - /des.js@1.1.0: - resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + des.js@1.1.0: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: true - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + destroy@1.2.0: {} - /detect-collisions@7.0.5: - resolution: {integrity: sha512-RiebSYJ9Vok1uVm57bxpI69EO2ySK1rdcHpRv28IDBh/wgaF8wxjoZJV7mmqz8MOKioLwMHvcMyP1R0CLZ+RbA==} + detect-collisions@7.0.5: dependencies: '@types/rbush': 3.0.1 '@types/sat': 0.0.31 poly-decomp: 0.3.0 rbush: 3.0.1 sat: 0.9.0 - dev: false - /detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true + detect-indent@6.1.0: {} - /detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - requiresBuild: true - dev: false + detect-libc@2.0.2: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: true + detect-node-es@1.1.0: {} - /detect-package-manager@2.0.1: - resolution: {integrity: sha512-j/lJHyoLlWi6G1LDdLgvUtz60Zo5GEj+sVYtTVXnYLDPuzgC3llMxonXym9zIwhhUII8vjdw0LXxavpLqTbl1A==} - engines: {node: '>=12'} + detect-package-manager@2.0.1: dependencies: execa: 5.1.1 - dev: true - /detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} - hasBin: true + detect-port@1.5.1: dependencies: address: 1.2.2 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true - /devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + devlop@1.1.0: dependencies: dequal: 2.0.3 - dev: false - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diamond-square@https://codeload.github.com/zardoy/diamond-square/tar.gz/915fce8e27fe8eb45464d89b9563956afa4f7687: + dependencies: + minecraft-data: 3.62.0 + prismarine-chunk: 1.35.0(minecraft-data@3.62.0) + random-seed: 0.3.0 + vec3: 0.1.8 - /diff2html@2.12.2: - resolution: {integrity: sha512-G/Zn1KyG/OeC+67N/P26WHsQpjrjUiRyWGvg29ypy3MxSsBmF0bzsU/Irq70i2UAg+f/MzmLx4v/Nkt01TOU3g==} - engines: {node: '>=4'} + diff-sequences@29.6.3: {} + + diff2html@2.12.2: dependencies: diff: 4.0.2 hogan.js: 3.0.2 merge: 1.2.1 whatwg-fetch: 3.6.18 - dev: false - /diff@2.2.3: - resolution: {integrity: sha512-9wfm3RLzMp/PyTFWuw9liEzdlxsdGixCW0ZTU1XDmtlAkvpVXTPGF8KnfSs0hm3BPbg19OrUPPsRkHXoREpP1g==} - engines: {node: '>=0.3.1'} - dev: false + diff@2.2.3: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false + diff@4.0.2: {} - /diffie-hellman@5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + diffie-hellman@5.0.3: dependencies: bn.js: 4.12.0 miller-rabin: 4.0.1 randombytes: 2.1.0 - dev: true - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /discontinuous-range@1.0.0: - resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + discontinuous-range@1.0.0: {} - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.22.11 csstype: 3.1.2 - dev: false - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 entities: 4.5.0 - dev: true - /dom-walk@0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} - dev: false + dom-walk@0.1.2: {} - /domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - dev: true + domelementtype@2.3.0: {} - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 - dev: true - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dev: true - /dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dot-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 - dev: false - /dotenv-expand@10.0.0: - resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} - engines: {node: '>=12'} - dev: true + dotenv-expand@10.0.0: {} - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} - dev: true + dotenv@16.3.1: {} - /draco3d@1.5.6: - resolution: {integrity: sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ==} - dev: false + draco3d@1.5.6: {} - /duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - dev: false + duplexer@0.1.2: {} - /duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.1 - dev: true - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true + eastasianwidth@0.2.0: {} - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + ecdsa-sig-formatter@1.0.11: dependencies: safe-buffer: 5.2.1 - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + ee-first@1.1.1: {} - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true + ejs@3.1.9: dependencies: jake: 10.8.7 - /electron-to-chromium@1.4.504: - resolution: {integrity: sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==} + electron-to-chromium@1.4.504: {} - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -7957,47 +13821,29 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: true - /emit-then@2.0.0: - resolution: {integrity: sha512-y5JHnrygHnCndtqVHHDhCr0ZzzWHK5RBTczWRlGSIR5UnGHBXuxpoaE0UB5E82qym8ma2dI799wDSSJN2e4VSg==} - engines: {node: '>=5'} - dev: false + emit-then@2.0.0: {} - /emittery@0.10.2: - resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} - engines: {node: '>=12'} - dev: true + emittery@0.10.2: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true + emoji-regex@9.2.2: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} + encodeurl@1.0.2: {} - /encoding@0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - requiresBuild: true + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 - dev: false optional: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - /endian-toggle@0.0.0: - resolution: {integrity: sha512-ShfqhXeHRE4TmggSlHXG8CMGIcsOsqDw/GcoPcosToE59Rm9e4aXaMhEQf2kPBsBRrKem1bbOAv5gOKnkliMFQ==} + endian-toggle@0.0.0: {} - /engine.io-client@3.5.3: - resolution: {integrity: sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==} + engine.io-client@3.5.3: dependencies: component-emitter: 1.3.0 component-inherit: 0.0.3 @@ -8014,10 +13860,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io-client@6.5.2: - resolution: {integrity: sha512-CQZqbrpEYnrpGqC07a9dJDz4gePZUgTPMU3NKJPSeQOyw27Tst4Pl3FemKoFGAlHzgZmKjoRmiJvbWfhCXUlIg==} + engine.io-client@6.5.2: dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4(supports-color@8.1.1) @@ -8028,26 +13872,18 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io-parser@2.2.1: - resolution: {integrity: sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==} + engine.io-parser@2.2.1: dependencies: after: 0.8.2 arraybuffer.slice: 0.0.7 base64-arraybuffer: 0.1.4 blob: 0.0.5 has-binary2: 1.0.3 - dev: false - /engine.io-parser@5.2.1: - resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} - engines: {node: '>=10.0.0'} - dev: false + engine.io-parser@5.2.1: {} - /engine.io@3.6.1: - resolution: {integrity: sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==} - engines: {node: '>=8.0.0'} + engine.io@3.6.1: dependencies: accepts: 1.3.8 base64id: 2.0.0 @@ -8059,11 +13895,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io@6.5.3: - resolution: {integrity: sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==} - engines: {node: '>=10.2.0'} + engine.io@6.5.3: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.15 @@ -8079,56 +13912,33 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} + entities@4.5.0: {} - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - requiresBuild: true - dev: false + env-paths@2.2.1: optional: true - /envinfo@7.10.0: - resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} - engines: {node: '>=4'} - hasBin: true - dev: true + envinfo@7.10.0: {} - /err-code@2.0.3: - resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} - requiresBuild: true - dev: false + err-code@2.0.3: optional: true - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - dev: false - /eruda@3.0.1: - resolution: {integrity: sha512-6q1Xdwga4JTr1mKSW4mzuWSSbmXgqpm/8Wa1QGFGfCWRjC0bCQjbS4u06M1te1moucIS3hBLlbSTPWYH2W0qbQ==} - dev: false + eruda@3.0.1: {} - /es-abstract@1.22.2: - resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} - engines: {node: '>= 0.4'} + es-abstract@1.22.2: dependencies: array-buffer-byte-length: 1.0.0 arraybuffer.prototype.slice: 1.0.2 @@ -8170,9 +13980,7 @@ packages: unbox-primitive: 1.0.2 which-typed-array: 1.1.11 - /es-abstract@1.22.4: - resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} - engines: {node: '>= 0.4'} + es-abstract@1.22.4: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -8215,21 +14023,14 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.14 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-iterator-helpers@1.0.17: - resolution: {integrity: sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.17: dependencies: asynciterator.prototype: 1.0.0 call-bind: 1.0.7 @@ -8246,92 +14047,59 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.0 - dev: true - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} - dev: true + es-module-lexer@0.9.3: {} - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 - /es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.1 - dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.1 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - /es6-object-assign@1.1.0: - resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} + es6-object-assign@1.1.0: {} - /es6-promise@4.2.8: - resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: false + es6-promise@4.2.8: {} - /es6-promisify@5.0.0: - resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - dev: false - /esbuild-plugin-alias@0.2.1: - resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} - dev: true + esbuild-plugin-alias@0.2.1: {} - /esbuild-plugin-polyfill-node@0.3.0(esbuild@0.19.3): - resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==} - peerDependencies: - esbuild: '*' + esbuild-plugin-polyfill-node@0.3.0(esbuild@0.19.3): dependencies: '@jspm/core': 2.0.1 esbuild: 0.19.3 import-meta-resolve: 3.0.0 - dev: false - /esbuild-register@3.5.0(esbuild@0.18.20): - resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} - peerDependencies: - esbuild: '>=0.12 <1' + esbuild-register@3.5.0(esbuild@0.18.20): dependencies: debug: 4.3.4(supports-color@8.1.1) esbuild: 0.18.20 transitivePeerDependencies: - supports-color - dev: true - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 '@esbuild/android-arm64': 0.18.20 @@ -8356,11 +14124,7 @@ packages: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.19.11: optionalDependencies: '@esbuild/aix-ppc64': 0.19.11 '@esbuild/android-arm': 0.19.11 @@ -8385,13 +14149,8 @@ packages: '@esbuild/win32-arm64': 0.19.11 '@esbuild/win32-ia32': 0.19.11 '@esbuild/win32-x64': 0.19.11 - dev: false - /esbuild@0.19.3: - resolution: {integrity: sha512-UlJ1qUUA2jL2nNib1JTSkifQTcYTroFqRjwCFW4QYEKEsixXD5Tik9xML7zh2gTxkYTBKGHNH9y7txMwVyPbjw==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true + esbuild@0.19.3: optionalDependencies: '@esbuild/android-arm': 0.19.3 '@esbuild/android-arm64': 0.19.3 @@ -8415,106 +14174,57 @@ packages: '@esbuild/win32-arm64': 0.19.3 '@esbuild/win32-ia32': 0.19.3 '@esbuild/win32-x64': 0.19.3 - dev: false - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + escalade@3.1.1: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true + escodegen@2.1.0: dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 - dev: true - /eslint-config-prettier@8.10.0(eslint@8.50.0): - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@8.10.0(eslint@8.50.0): dependencies: eslint: 8.50.0 - dev: true - /eslint-config-xo-react@0.27.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0): - resolution: {integrity: sha512-wiV215xQIn71XZyyVfaOXHaFpR1B14IJttwOjMi/eqUK1s+ojJdHr7eHqTLaGUfh6FKgWha1QNwePlIXx7mBUg==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=8.6.0' - eslint-plugin-react: '>=7.29.0' - eslint-plugin-react-hooks: '>=4.3.0' + eslint-config-xo-react@0.27.0(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0): dependencies: eslint: 8.50.0 eslint-plugin-react: 7.33.2(eslint@8.50.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0) - dev: true - /eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-vPQssnRSUgBFOEfB/KY12CXwltwFSn4RSCfa+w7gjBC2PFQ7Yfgmyei+1XUZ3K+8LRGef2NMJUcxts7PldhDjg==} - engines: {node: '>=16'} - peerDependencies: - '@typescript-eslint/eslint-plugin': '>=6.0.0' - '@typescript-eslint/parser': '>=6.0.0' - eslint: '>=8.0.0' - typescript: '>=4.7' + eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2): dependencies: - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) eslint: 8.50.0 typescript: 5.2.2 - dev: true - /eslint-config-xo@0.43.1(eslint@8.50.0): - resolution: {integrity: sha512-azv1L2PysRA0NkZOgbndUpN+581L7wPqkgJOgxxw3hxwXAbJgD6Hqb/SjHRiACifXt/AvxCzE/jIKFAlI7XjvQ==} - engines: {node: '>=12'} - peerDependencies: - eslint: '>=8.27.0' + eslint-config-xo@0.43.1(eslint@8.50.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.50.0 - dev: true - /eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-d31WsjyVSQqHbzTpBSmH96+nw5gwY2yhDbZatU89gr+U8ou1FRUkJSApYJUgmcINt8AQocj1RDDAVYmVSILZgQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - eslint: ^8.5.0 - eslint-plugin-vue: ^8.4.1 - typescript: ^4.5.2 - vue-eslint-parser: ^8.2.0 - peerDependenciesMeta: - eslint-plugin-vue: - optional: true - vue-eslint-parser: - optional: true + eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.2.2): dependencies: '@rushstack/eslint-patch': 1.4.0 - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2) '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) eslint: 8.50.0 eslint-config-prettier: 8.10.0(eslint@8.50.0) eslint-config-xo: 0.43.1(eslint@8.50.0) - eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.50.0) - eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0)(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0) + eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0)(typescript@5.2.2) eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.7.3)(eslint@8.50.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0) eslint-plugin-node: 11.1.0(eslint@8.50.0) eslint-plugin-sonarjs: 0.19.0(eslint@8.50.0) eslint-plugin-unicorn: 48.0.0(eslint@8.50.0) @@ -8525,80 +14235,39 @@ packages: - eslint-plugin-react - eslint-plugin-react-hooks - supports-color - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.13.0 resolve: 1.22.4 transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-es@3.0.1(eslint@8.50.0): - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint-plugin-es@3.0.1(eslint@8.50.0): dependencies: eslint: 8.50.0 eslint-utils: 2.1.0 regexpp: 3.2.0 - dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.50.0): - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} - engines: {node: '>=6.5.0'} - peerDependencies: - eslint: '>=4.19.1' + eslint-plugin-eslint-comments@3.2.0(eslint@8.50.0): dependencies: escape-string-regexp: 1.0.5 eslint: 8.50.0 ignore: 5.2.4 - dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.7.3)(eslint@8.50.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint@8.50.0): dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) array-includes: 3.1.7 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -8606,7 +14275,7 @@ packages: doctrine: 2.1.0 eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -8615,17 +14284,14 @@ packages: resolve: 1.22.4 semver: 6.3.1 tsconfig-paths: 3.14.2 + optionalDependencies: + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-node@11.1.0(eslint@8.50.0): - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} - engines: {node: '>=8.10.0'} - peerDependencies: - eslint: '>=5.16.0' + eslint-plugin-node@11.1.0(eslint@8.50.0): dependencies: eslint: 8.50.0 eslint-plugin-es: 3.0.1(eslint@8.50.0) @@ -8634,22 +14300,12 @@ packages: minimatch: 3.1.2 resolve: 1.22.4 semver: 6.3.1 - dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.50.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.0(eslint@8.50.0): dependencies: eslint: 8.50.0 - dev: true - /eslint-plugin-react@7.33.2(eslint@8.50.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.33.2(eslint@8.50.0): dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -8668,22 +14324,12 @@ packages: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.10 - dev: true - /eslint-plugin-sonarjs@0.19.0(eslint@8.50.0): - resolution: {integrity: sha512-6+s5oNk5TFtVlbRxqZN7FIGmjdPCYQKaTzFPmqieCmsU1kBYDzndTeQav0xtQNwZJWu5awWfTGe8Srq9xFOGnw==} - engines: {node: '>=14'} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-sonarjs@0.19.0(eslint@8.50.0): dependencies: eslint: 8.50.0 - dev: true - /eslint-plugin-unicorn@48.0.0(eslint@8.50.0): - resolution: {integrity: sha512-8fk/v3p1ro34JSVDBEmtOq6EEQRpMR0iTir79q69KnXFZ6DJyPkT3RAi+ZoTqhQMdDSpGh8BGR68ne1sP5cnAA==} - engines: {node: '>=16'} - peerDependencies: - eslint: '>=8.44.0' + eslint-plugin-unicorn@48.0.0(eslint@8.50.0): dependencies: '@babel/helper-validator-identifier': 7.22.5 '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) @@ -8701,37 +14347,21 @@ packages: regjsparser: 0.10.0 semver: 7.5.4 strip-indent: 3.0.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} - engines: {node: '>=6'} + eslint-utils@2.1.0: dependencies: eslint-visitor-keys: 1.3.0 - dev: true - /eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} - engines: {node: '>=4'} - dev: true + eslint-visitor-keys@1.3.0: {} - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.50.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@eslint-community/regexpp': 4.8.0 @@ -8772,77 +14402,46 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.10.0 acorn-jsx: 5.3.2(acorn@8.10.0) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true - /estree-to-babel@3.2.1: - resolution: {integrity: sha512-YNF+mZ/Wu2FU/gvmzuWtYc8rloubL7wfXCTgouFrnjGVXPA/EeYYA7pupXWrb3Iv1cTBeSSxxJIbK23l4MRNqg==} - engines: {node: '>=8.3.0'} + estraverse@5.3.0: {} + + estree-to-babel@3.2.1: dependencies: '@babel/traverse': 7.22.11 '@babel/types': 7.23.0 c8: 7.14.0 transitivePeerDependencies: - supports-color - dev: true - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: false + estree-walker@1.0.1: {} - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true + estree-walker@2.0.2: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + esutils@2.0.3: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + etag@1.8.1: {} - /event-promise@0.0.1: - resolution: {integrity: sha512-ouEmk2N0BalybPM0zmj3RHE93AX4p9hAIHZfbbqxolLChqCB6pcLDbYH6zZ8TaiFWImPHfs5kFnNpA0u9RdEaQ==} + event-promise@0.0.1: dependencies: promise: 5.0.0 - dev: false - /event-stream@3.3.4: - resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + event-stream@3.3.4: dependencies: duplexer: 0.1.2 from: 0.1.7 @@ -8851,32 +14450,21 @@ packages: split: 0.3.3 stream-combiner: 0.0.4 through: 2.3.8 - dev: false - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} + event-target-shim@5.0.1: {} - /eventemitter2@6.4.7: - resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + eventemitter2@6.4.7: {} - /eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@4.0.7: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} + events@3.3.0: {} - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + evp_bytestokey@1.0.3: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: true - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} + execa@4.1.0: dependencies: cross-spawn: 7.0.3 get-stream: 5.2.0 @@ -8888,9 +14476,7 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -8901,26 +14487,16 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} + executable@4.1.1: dependencies: pify: 2.3.0 - /exif-parser@0.1.12: - resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} - dev: false + exif-parser@0.1.12: {} - /exit-hook@2.2.1: - resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} - engines: {node: '>=6'} - dev: false + exit-hook@2.2.1: {} - /expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} + expand-brackets@2.1.4: dependencies: debug: 2.6.9 define-property: 0.2.5 @@ -8931,36 +14507,21 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - requiresBuild: true - dev: false + expand-template@2.0.3: {} - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - requiresBuild: true - dev: false + exponential-backoff@3.1.1: optional: true - /express-ws@4.0.0(express@4.18.2): - resolution: {integrity: sha512-KEyUw8AwRET2iFjFsI1EJQrJ/fHeGiJtgpYgEWG3yDv4l/To/m3a2GaYfeGyB3lsWdvbesjF5XCMx+SVBgAAYw==} - engines: {node: '>=4.5.0'} - peerDependencies: - express: ^4.0.0 || ^5.0.0-alpha.1 + express-ws@4.0.0(express@4.18.2): dependencies: express: 4.18.2 ws: 5.2.3 transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} - engines: {node: '>= 0.10.0'} + express@4.18.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -8996,27 +14557,18 @@ packages: transitivePeerDependencies: - supports-color - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 - dev: false - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} + extend-shallow@3.0.2: dependencies: assign-symbols: 1.0.0 is-extendable: 1.0.1 - dev: false - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extend@3.0.2: {} - /extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} + extglob@2.0.4: dependencies: array-unique: 0.3.2 define-property: 1.0.0 @@ -9028,11 +14580,8 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /extract-zip@1.7.0: - resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} - hasBin: true + extract-zip@1.7.0: dependencies: concat-stream: 1.6.2 debug: 2.6.9 @@ -9040,12 +14589,8 @@ packages: yauzl: 2.10.0 transitivePeerDependencies: - supports-color - dev: true - /extract-zip@2.0.1(supports-color@8.1.1): - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true + extract-zip@2.0.1(supports-color@8.1.1): dependencies: debug: 4.3.4(supports-color@8.1.1) get-stream: 5.2.0 @@ -9055,134 +14600,84 @@ packages: transitivePeerDependencies: - supports-color - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} + extsprintf@1.3.0: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.1: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-loops@1.1.3: - resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} - dev: false + fast-loops@1.1.3: {} - /fast-shallow-equal@1.0.0: - resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} - dev: false + fast-shallow-equal@1.0.0: {} - /fastest-stable-stringify@2.0.2: - resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} - dev: false + fastest-stable-stringify@2.0.2: {} - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.15.0: dependencies: reusify: 1.0.4 - dev: true - /faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} + faye-websocket@0.11.4: dependencies: websocket-driver: 0.7.4 - dev: false - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fd-slicer@1.1.0: dependencies: pend: 1.2.0 - /fetch-retry@5.0.6: - resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} - dev: true + fetch-retry@5.0.6: {} - /fflate@0.6.10: - resolution: {integrity: sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==} + fflate@0.6.10: {} - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.1.0 - dev: true - /file-system-cache@2.3.0: - resolution: {integrity: sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==} + file-system-cache@2.3.0: dependencies: fs-extra: 11.1.1 ramda: 0.29.0 - dev: true - /file-type@9.0.0: - resolution: {integrity: sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==} - engines: {node: '>=6'} - dev: false + file-type@9.0.0: {} - /file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - requiresBuild: true - dev: false + file-uri-to-path@1.0.0: optional: true - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + filelist@1.0.4: dependencies: minimatch: 5.1.6 - /filesize@10.0.12: - resolution: {integrity: sha512-6RS9gDchbn+qWmtV2uSjo5vmKizgfCQeb5jKmqx8HyzA3MoLqqyQxN+QcjkGBJt7FjJ9qFce67Auyya5rRRbpw==} - engines: {node: '>= 10.4.0'} + filesize@10.0.12: {} - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} + fill-range@4.0.0: dependencies: extend-shallow: 2.0.1 is-number: 3.0.0 repeat-string: 1.6.1 to-regex-range: 2.1.1 - dev: false - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - dev: true - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + finalhandler@1.1.2: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -9193,11 +14688,8 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} - engines: {node: '>= 0.8'} + finalhandler@1.2.0: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -9209,248 +14701,150 @@ packages: transitivePeerDependencies: - supports-color - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - dev: true - /find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} + find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - dev: true - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false + find-root@1.1.0: {} - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} + flat-cache@3.1.0: dependencies: flatted: 3.2.7 keyv: 4.5.3 rimraf: 3.0.2 - dev: true - /flatmap@0.0.3: - resolution: {integrity: sha512-OuR+o7kHVe+x9RtIujPay7Uw3bvDZBZFSBXClEphZuSDLmZTqMdclasf4vFSsogC8baDz0eaC2NdO/2dlXHBKQ==} - dev: false + flatmap@0.0.3: {} - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - dev: true + flatted@3.2.7: {} - /flow-parser@0.218.0: - resolution: {integrity: sha512-mk4e7UK4P/W3tjrJyto6oxPuCjwvRMyzBh72hTl8T0dOcTzkP0M2JJHpncgyhKphMFi9pnjwHfc8e0oe4Uk3LA==} - engines: {node: '>=0.4.0'} - dev: true + flow-parser@0.218.0: {} - /follow-redirects@1.15.3(debug@4.3.4): - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: + follow-redirects@1.15.3(debug@4.3.4): + optionalDependencies: debug: 4.3.4(supports-color@8.1.1) - dev: true - /follow-redirects@1.15.5(debug@4.3.4): - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: + follow-redirects@1.15.5(debug@4.3.4): + optionalDependencies: debug: 4.3.4(supports-color@8.1.1) - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: false + for-in@1.0.2: {} - /foreground-child@2.0.0: - resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} - engines: {node: '>=8.0.0'} + foreground-child@2.0.0: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 - dev: true - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - dev: true - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + forever-agent@0.6.1: {} - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} + form-data@2.3.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - /forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + forwarded@0.2.0: {} - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} + fragment-cache@0.2.1: dependencies: map-cache: 0.2.2 - dev: false - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} + fresh@0.5.2: {} - /from@0.1.7: - resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} - dev: false + from@0.1.7: {} - /fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-constants@1.0.0: {} - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} + fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} + fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - /fs-minipass@2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2 - requiresBuild: true + fsevents@1.2.13: dependencies: bindings: 1.5.0 nan: 2.18.0 - dev: false 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] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + function-bind@1.1.1: {} - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 functions-have-names: 1.2.3 - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + functions-have-names@1.2.3: {} - /gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} + gauge@3.0.2: dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -9461,12 +14855,8 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false - /gauge@4.0.4: - resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + gauge@4.0.4: dependencies: aproba: 2.0.0 color-support: 1.1.3 @@ -9476,32 +14866,22 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 - dev: false optional: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + get-caller-file@2.0.5: {} - /get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true + get-func-name@2.0.2: {} - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + get-intrinsic@1.2.1: dependencies: function-bind: 1.1.1 has: 1.0.3 has-proto: 1.0.1 has-symbols: 1.0.3 - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -9509,81 +14889,48 @@ packages: has-symbols: 1.0.3 hasown: 2.0.1 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: true + get-nonce@1.0.1: {} - /get-npm-tarball-url@2.0.3: - resolution: {integrity: sha512-R/PW6RqyaBQNWYaSyfrh54/qtcnOp22FHCCiRhSSZj0FP3KQWCsxxt0DzIdVTbwTqe9CtQfvl/FPD4UIPt4pqw==} - engines: {node: '>=12.17'} - dev: true + get-npm-tarball-url@2.0.3: {} - /get-own-enumerable-property-symbols@3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: false + get-own-enumerable-property-symbols@3.0.2: {} - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + get-package-type@0.1.0: {} - /get-port@5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - dev: true + get-port@5.1.1: {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-stream@5.2.0: dependencies: pump: 3.0.0 - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true + get-stream@6.0.1: {} - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.0: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + get-tsconfig@4.7.2: dependencies: resolve-pkg-maps: 1.0.0 - dev: false - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: false + get-value@2.0.6: {} - /getos@3.2.1: - resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + getos@3.2.1: dependencies: async: 3.2.5 - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + getpass@0.1.7: dependencies: assert-plus: 1.0.0 - /giget@1.1.3: - resolution: {integrity: sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==} - hasBin: true + giget@1.1.3: dependencies: colorette: 2.0.20 defu: 6.1.2 @@ -9594,21 +14941,12 @@ packages: tar: 6.2.0 transitivePeerDependencies: - supports-color - dev: true - /github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - requiresBuild: true - dev: false + github-from-package@0.0.0: {} - /github-slugger@1.5.0: - resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} - dev: true + github-slugger@1.5.0: {} - /gl@6.0.2: - resolution: {integrity: sha512-yBbfpChOtFvg5D+KtMaBFvj6yt3vUnheNAH+UrQH2TfDB8kr0tERdL0Tjhe0W7xJ6jR6ftQBluTZR9jXUnKe8g==} - engines: {node: '>=14.0.0'} - requiresBuild: true + gl@6.0.2: dependencies: bindings: 1.5.0 bit-twiddle: 1.0.2 @@ -9620,58 +14958,37 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false optional: true - /glob-parent@3.1.0: - resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + glob-parent@3.1.0: dependencies: is-glob: 3.1.0 path-dirname: 1.0.2 - dev: false - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-promise@4.2.2(glob@7.2.3): - resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} - engines: {node: '>=12'} - peerDependencies: - glob: ^7.1.6 + glob-promise@4.2.2(glob@7.2.3): dependencies: '@types/glob': 7.2.0 glob: 7.2.3 - dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true + glob-to-regexp@0.4.1: {} - /glob@10.3.3: - resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.3: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.0 minimatch: 9.0.3 minipass: 7.0.3 path-scurry: 1.10.1 - dev: true - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -9680,52 +14997,35 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - requiresBuild: true + glob@8.1.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: false optional: true - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} + global-dirs@3.0.1: dependencies: ini: 2.0.0 - /global@4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + global@4.4.0: dependencies: min-document: 2.19.0 process: 0.11.10 - dev: false - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@11.12.0: {} - /globals@13.21.0: - resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} - engines: {node: '>=8'} + globals@13.21.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -9733,31 +15033,21 @@ packages: ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 - dev: true - /glsl-tokenizer@2.1.5: - resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} - requiresBuild: true + glsl-tokenizer@2.1.5: dependencies: through2: 0.6.5 - dev: false optional: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.1 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true + gunzip-maybe@1.4.2: dependencies: browserify-zlib: 0.1.4 is-deflate: 1.0.0 @@ -9765,12 +15055,8 @@ packages: peek-stream: 1.1.3 pumpify: 1.5.1 through2: 2.0.5 - dev: true - /handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true + handlebars@4.7.8: dependencies: minimist: 1.2.8 neo-async: 2.6.2 @@ -9778,216 +15064,135 @@ packages: wordwrap: 1.0.0 optionalDependencies: uglify-js: 3.17.4 - dev: true - /hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - dev: true + hard-rejection@2.1.0: {} - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + has-bigints@1.0.2: {} - /has-binary2@1.0.3: - resolution: {integrity: sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==} + has-binary2@1.0.3: dependencies: isarray: 2.0.1 - dev: false - /has-cors@1.1.0: - resolution: {integrity: sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==} - dev: false + has-cors@1.1.0: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + has-property-descriptors@1.0.0: dependencies: get-intrinsic: 1.2.1 - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-proto@1.0.1: {} - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} + + has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - dev: false + has-unicode@2.0.1: {} - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} + has-value@0.3.1: dependencies: get-value: 2.0.6 has-values: 0.1.4 isobject: 2.1.0 - dev: false - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} + has-value@1.0.0: dependencies: get-value: 2.0.6 has-values: 1.0.0 isobject: 3.0.1 - dev: false - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: false + has-values@0.1.4: {} - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} + has-values@1.0.0: dependencies: is-number: 3.0.0 kind-of: 4.0.0 - dev: false - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} + has@1.0.3: dependencies: function-bind: 1.1.1 - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} + hash-base@3.1.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: true - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: true - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} - engines: {node: '>= 0.4'} + hasown@2.0.1: dependencies: function-bind: 1.1.2 - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: true + he@1.2.0: {} - /header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + header-case@2.0.4: dependencies: capital-case: 1.0.4 tslib: 2.6.2 - dev: false - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: true - /hogan.js@3.0.2: - resolution: {integrity: sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==} - hasBin: true + hogan.js@3.0.2: dependencies: mkdirp: 0.3.0 nopt: 1.0.10 - dev: false - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true + hosted-git-info@2.8.9: {} - /hosted-git-info@4.1.0: - resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} - engines: {node: '>=10'} + hosted-git-info@4.1.0: dependencies: lru-cache: 6.0.0 - dev: true - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 - dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /html-tags@3.3.1: - resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} - engines: {node: '>=8'} - dev: true + html-tags@3.3.1: {} - /http-auth@3.1.3: - resolution: {integrity: sha512-Jbx0+ejo2IOx+cRUYAGS1z6RGc6JfYUNkysZM4u4Sfk1uLlGv814F7/PIjQQAuThLdAWxb74JMGd5J8zex1VQg==} - engines: {node: '>=4.6.1'} + http-auth@3.1.3: dependencies: apache-crypt: 1.2.6 apache-md5: 1.1.8 bcryptjs: 2.4.3 uuid: 3.4.0 - dev: false - /http-browserify@1.7.0: - resolution: {integrity: sha512-Irf/LJXmE3cBzU1eaR4+NEX6bmVLqt1wkmDiA7kBwH7zmb0D8kBAXsDmQ88hhj/qv9iEZKlyGx/hrMcFi8sOHw==} + http-browserify@1.7.0: dependencies: Base64: 0.2.1 inherits: 2.0.4 - dev: true - /http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.1.1: {} - /http-errors@1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} + http-errors@1.6.3: dependencies: depd: 1.1.2 inherits: 2.0.3 setprototypeof: 1.1.0 statuses: 1.5.0 - dev: false - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 @@ -9995,38 +15200,26 @@ packages: statuses: 2.0.1 toidentifier: 1.0.1 - /http-parser-js@0.5.8: - resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - dev: false + http-parser-js@0.5.8: {} - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - requiresBuild: true + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: false optional: true - /http-proxy@1.18.1(debug@4.3.4): - resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} - engines: {node: '>=8.0.0'} + http-proxy@1.18.1(debug@4.3.4): dependencies: eventemitter3: 4.0.7 follow-redirects: 1.15.3(debug@4.3.4) requires-port: 1.0.0 transitivePeerDependencies: - debug - dev: true - /http-server@14.1.1(debug@4.3.4): - resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} - engines: {node: '>=12'} - hasBin: true + http-server@14.1.1(debug@4.3.4): dependencies: basic-auth: 2.0.1 chalk: 4.1.2 @@ -10044,624 +15237,367 @@ packages: transitivePeerDependencies: - debug - supports-color - dev: true - /http-signature@1.3.6: - resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} - engines: {node: '>=0.10'} + http-signature@1.3.6: dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.17.0 - /https-browserify@1.0.0: - resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} - dev: true + https-browserify@1.0.0: {} - /https-proxy-agent@4.0.0: - resolution: {integrity: sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==} - engines: {node: '>= 6.0.0'} + https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: false - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: true - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} + human-signals@1.1.1: {} - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true + human-signals@2.1.0: {} - /humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - requiresBuild: true + humanize-ms@1.2.1: dependencies: ms: 2.1.3 - dev: false optional: true - /hyphenate-style-name@1.0.4: - resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} - dev: false + hyphenate-style-name@1.0.4: {} - /iconify-icon@1.0.8: - resolution: {integrity: sha512-jvbUKHXf8EnGGArmhlP2IG8VqQLFFyTvTqb9LVL2TKTh7/eCCD1o2HHE9thpbJJb6B8hzhcFb6rOKhvo7reNKA==} + iconify-icon@1.0.8: dependencies: '@iconify/types': 2.0.0 - dev: false - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - /idb@7.1.1: - resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - dev: false + idb@7.1.1: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ieee754@1.2.1: {} - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: true + ignore@5.2.4: {} - /image-size@0.7.5: - resolution: {integrity: sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==} - engines: {node: '>=6.9.0'} - hasBin: true - dev: false + image-size@0.7.5: {} - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false + immediate@3.0.6: {} - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-meta-resolve@3.0.0: - resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} - dev: false + import-meta-resolve@3.0.0: {} - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + indent-string@4.0.0: {} - /indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - dev: true + indent-string@5.0.0: {} - /indexof@0.0.1: - resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==} - dev: false + indexof@0.0.1: {} - /infer-owner@1.0.4: - resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} - requiresBuild: true - dev: false + infer-owner@1.0.4: optional: true - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: false + inherits@2.0.3: {} - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - requiresBuild: true - dev: false + ini@1.3.8: {} - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} + ini@2.0.0: {} - /inline-style-prefixer@6.0.4: - resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + inline-style-prefixer@6.0.4: dependencies: css-in-js-utils: 3.1.0 fast-loops: 1.1.3 - dev: false - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} + internal-slot@1.0.5: dependencies: get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.1 side-channel: 1.0.5 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: true - /ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + ip@2.0.0: {} - /ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + ipaddr.js@1.9.1: {} - /is-absolute-url@3.0.3: - resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} - engines: {node: '>=8'} - dev: true + is-absolute-url@3.0.3: {} - /is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} + is-accessor-descriptor@1.0.1: dependencies: hasown: 2.0.1 - dev: false - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.2: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-typed-array: 1.1.12 - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.2.1: {} - /is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - dev: false + is-arrayish@0.3.2: {} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - /is-binary-path@1.0.1: - resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} - engines: {node: '>=0.10.0'} + is-binary-path@1.0.1: dependencies: binary-extensions: 1.13.1 - dev: false - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} + is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - dev: true - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: false + is-buffer@1.1.6: {} - /is-builtin-module@3.2.1: - resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} - engines: {node: '>=6'} + is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-callable@1.2.7: {} - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true + is-ci@3.0.1: dependencies: ci-info: 3.8.0 - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + is-core-module@2.13.0: dependencies: has: 1.0.3 - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.1 - dev: true - /is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} + is-data-descriptor@1.0.1: dependencies: hasown: 2.0.1 - dev: false - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 - /is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - dev: true + is-deflate@1.0.0: {} - /is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} + is-descriptor@0.1.7: dependencies: is-accessor-descriptor: 1.0.1 is-data-descriptor: 1.0.1 - dev: false - /is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} + is-descriptor@1.0.3: dependencies: is-accessor-descriptor: 1.0.1 is-data-descriptor: 1.0.1 - dev: false - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true + is-docker@2.2.1: {} - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: false + is-extendable@0.1.1: {} - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} + is-extendable@1.0.1: dependencies: is-plain-object: 2.0.4 - dev: false - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-function@1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - dev: false + is-function@1.0.2: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - /is-glob@3.1.0: - resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} - engines: {node: '>=0.10.0'} + is-glob@3.1.0: dependencies: is-extglob: 2.1.1 - dev: false - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - dev: true + is-gzip@1.0.0: {} - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} + is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: true + is-interactive@1.0.0: {} - /is-lambda@1.0.1: - resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} - requiresBuild: true - dev: false + is-lambda@1.0.1: optional: true - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true + is-map@2.0.2: {} - /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: false + is-module@1.0.0: {} - /is-nan@1.3.2: - resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} - engines: {node: '>= 0.4'} + is-nan@1.3.2: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} + is-negative-zero@2.0.2: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} + is-number@3.0.0: dependencies: kind-of: 3.2.2 - dev: false - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true + is-number@7.0.0: {} - /is-obj@1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: false + is-obj@1.0.1: {} - /is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - dev: true + is-path-cwd@2.2.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} + is-path-inside@3.0.3: {} - /is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-obj@1.1.0: {} - /is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - dev: false + is-plain-obj@4.1.0: {} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: true + is-plain-object@5.0.0: {} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-regexp@1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: false + is-regexp@1.0.0: {} - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true + is-set@2.0.2: {} - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.2 - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + is-stream@2.0.1: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.11 - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.14 - dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-typedarray@1.0.0: {} - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + is-unicode-supported@0.1.0: {} - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true + is-weakmap@2.0.1: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.2 - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + is-weakset@2.0.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: false + is-windows@1.0.2: {} - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false + is-wsl@1.1.0: {} - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - dev: true - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - requiresBuild: true - dev: false + isarray@0.0.1: optional: true - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isarray@1.0.0: {} - /isarray@2.0.1: - resolution: {integrity: sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==} - dev: false + isarray@2.0.1: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} + isobject@2.1.0: dependencies: isarray: 1.0.0 - dev: false - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} + isobject@3.0.1: {} - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + isstream@0.1.2: {} - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.0: {} - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.22.11 '@babel/parser': 7.22.13 @@ -10670,57 +15606,40 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.0 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} - engines: {node: '>=8'} + istanbul-reports@3.1.6: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.5 set-function-name: 2.0.1 - dev: true - /jackspeak@2.3.0: - resolution: {integrity: sha512-uKmsITSsF4rUWQHzqaRUuyAir3fZfW3f202Ee34lz/gZCi970CPZwyQXLGNgWJvvZbvFyzeyGq0+4fcG/mBKZg==} - engines: {node: '>=14'} + jackspeak@2.3.0: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: true - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true + jake@10.8.7: dependencies: async: 3.2.5 chalk: 4.1.2 filelist: 1.0.4 minimatch: 3.1.2 - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.7 @@ -10735,16 +15654,10 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - dev: true - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.6.3: {} - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.8.0 @@ -10752,29 +15665,21 @@ packages: ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} + + jest-worker@26.6.2: dependencies: '@types/node': 20.8.10 merge-stream: 2.0.0 supports-color: 7.2.0 - dev: false - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.8.10 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - /jimp@0.10.3: - resolution: {integrity: sha512-meVWmDMtyUG5uYjFkmzu0zBgnCvvxwWNi27c4cg55vWNVC9ES4Lcwb+ogx+uBBQE3Q+dLKjXaLl0JVW+nUNwbQ==} + jimp@0.10.3: dependencies: '@babel/runtime': 7.22.11 '@jimp/custom': 0.10.3 @@ -10782,54 +15687,31 @@ packages: '@jimp/types': 0.10.3(@jimp/custom@0.10.3) core-js: 3.32.1 regenerator-runtime: 0.13.11 - dev: false - /jose@4.15.4: - resolution: {integrity: sha512-W+oqK4H+r5sITxfxpSU+MMdr/YSWGvgZMQDIsNoBDGGy4i7GBPTtvFKibQzW06n3U3TqHjhvBJsirShsEJ6eeQ==} + jose@4.15.4: {} - /jpeg-js@0.3.7: - resolution: {integrity: sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==} - dev: false + jpeg-js@0.3.7: {} - /js-base64@2.6.4: - resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - dev: false + js-base64@2.6.4: {} - /js-cookie@2.2.1: - resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - dev: false + js-cookie@2.2.1: {} - /js-graph-algorithms@1.0.18: - resolution: {integrity: sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==} - hasBin: true - dev: false + js-graph-algorithms@1.0.18: {} - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsbn@0.1.1: {} - /jscodeshift@0.14.0(@babel/preset-env@7.22.10): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 + jscodeshift@0.14.0(@babel/preset-env@7.22.10(@babel/core@7.22.11)): dependencies: '@babel/core': 7.22.11 '@babel/parser': 7.22.13 @@ -10853,88 +15735,50 @@ packages: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color - dev: true - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + jsesc@0.5.0: {} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + jsesc@2.5.2: {} - /jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - dev: true + jsesc@3.0.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true + json-parse-better-errors@1.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@2.3.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@0.4.1: {} - /json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - dev: false + json-schema-traverse@1.0.0: {} - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-schema@0.4.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json-stringify-safe@5.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json5@2.2.3: {} - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true + jsonc-parser@3.2.0: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: universalify: 2.0.0 optionalDependencies: graceful-fs: 4.2.11 - /jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: false + jsonpointer@5.0.1: {} - /jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} + jsonwebtoken@9.0.2: dependencies: jws: 3.2.2 lodash.includes: 4.3.0 @@ -10947,166 +15791,113 @@ packages: ms: 2.1.3 semver: 7.6.0 - /jsprim@2.0.2: - resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} - engines: {'0': node >=0.6.0} + jsprim@2.0.2: dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.1.7 - dev: true - /jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + jszip@3.10.1: dependencies: lie: 3.3.0 pako: 1.0.11 readable-stream: 2.3.8 setimmediate: 1.0.5 - dev: false - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + jwa@1.4.1: dependencies: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + jws@3.2.2: dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + keyv@4.5.3: dependencies: json-buffer: 3.0.1 - dev: true - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} + kind-of@3.2.2: dependencies: is-buffer: 1.1.6 - dev: false - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} + kind-of@4.0.0: dependencies: is-buffer: 1.1.6 - dev: false - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} + kind-of@6.0.3: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true + kleur@3.0.3: {} - /lazy-ass@1.6.0: - resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} - engines: {node: '> 0.8'} + lazy-ass@1.6.0: {} - /lazy-universal-dotenv@4.0.0: - resolution: {integrity: sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==} - engines: {node: '>=14.0.0'} + lazy-universal-dotenv@4.0.0: dependencies: app-root-dir: 1.0.2 dotenv: 16.3.1 dotenv-expand: 10.0.0 - dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + leven@3.1.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + lie@3.3.0: dependencies: immediate: 3.0.6 - dev: false - /lil-gui@0.17.0: - resolution: {integrity: sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==} - dev: true + lil-gui@0.17.0: {} - /lil-gui@0.18.2: - resolution: {integrity: sha512-DgdrLy3/KGC0PiQLKgOcJMPItP4xY4iWgJ9+91Zaxfr8GCTmMps05QS9w9jW7yspILlbscbquwjOwxmWnSx5Uw==} - dev: false + lil-gui@0.18.2: {} - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - dev: false - /listr2@3.14.0(enquirer@2.4.1): - resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} - engines: {node: '>=10.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + listr2@3.14.0(enquirer@2.4.1): dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 - enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 + optionalDependencies: + enquirer: 2.4.1 - /lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + lit-element@3.3.3: dependencies: '@lit-labs/ssr-dom-shim': 1.1.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - /lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.3 - /lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + lit@2.8.0: dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 lit-html: 2.8.0 - /live-server@1.2.2: - resolution: {integrity: sha512-t28HXLjITRGoMSrCOv4eZ88viHaBVIjKjdI5PO92Vxlu+twbk6aE0t7dVIaz6ZWkjPilYFV6OSdMYl9ybN2B4w==} - engines: {node: '>=0.10.0'} - hasBin: true + live-server@1.2.2: dependencies: chokidar: 2.1.8 colors: 1.4.0 @@ -11123,10 +15914,8 @@ packages: serve-index: 1.9.1 transitivePeerDependencies: - supports-color - dev: false - /load-bmfont@1.4.1: - resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} + load-bmfont@1.4.1: dependencies: buffer-equal: 0.0.1 mime: 1.6.0 @@ -11136,119 +15925,76 @@ packages: phin: 2.9.3 xhr: 2.6.0 xtend: 4.0.2 - dev: false - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} + load-json-file@4.0.0: dependencies: graceful-fs: 4.2.11 parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 - dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true + local-pkg@0.4.3: {} - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: true - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - /lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.21: {} - /lodash.compact@3.0.1: - resolution: {integrity: sha512-2ozeiPi+5eBXW1CLtzjk8XQFhQOEMwwfxblqeq6EGyTxZJ1bPATqilY0e6g2SLQpP4KuMeuioBhEnWz5Pr7ICQ==} - dev: false + lodash.compact@3.0.1: {} - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.debounce@4.0.8: {} - /lodash.get@4.4.2: - resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + lodash.get@4.4.2: {} - /lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + lodash.includes@4.3.0: {} - /lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + lodash.isboolean@3.0.3: {} - /lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + lodash.isinteger@4.0.4: {} - /lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + lodash.isnumber@3.0.3: {} - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.isplainobject@4.0.6: {} - /lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.isstring@4.0.1: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.merge@4.6.2: {} - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + lodash.once@4.1.1: {} - /lodash.reduce@4.6.0: - resolution: {integrity: sha512-6raRe2vxCYBhpBu+B+TtNGUzah+hQjVdu3E17wfusjyrXBka2nBS8OH/gjVZ5PvHOhWmIZTYri09Z6n/QfnNMw==} + lodash.reduce@4.6.0: {} - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: false + lodash.sortby@4.7.0: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.21: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + log-update@4.0.0: dependencies: ansi-escapes: 4.3.2 cli-cursor: 3.1.0 slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - dev: false + long@5.2.3: {} - /longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - dev: false + longest-streak@3.1.0: {} - /looks-same@8.2.3: - resolution: {integrity: sha512-0LK5r4+9t2D56XPVNH3hhG4o0yBYUdeu9FEd8z0ZCs/2fR9zJQj+6ob6ued8iHk3yddrSAdUA+9YGVK2FBMGUw==} - engines: {node: '>= 12.0.0'} + looks-same@8.2.3: dependencies: color-diff: 1.4.0 fs-extra: 8.1.0 @@ -11257,97 +16003,60 @@ packages: nested-error-stacks: 2.1.1 parse-color: 1.0.0 sharp: 0.30.7 - dev: false - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + loupe@2.3.6: dependencies: get-func-name: 2.0.2 - dev: true - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lower-case@2.0.2: dependencies: tslib: 2.6.2 - dev: false - /lru-cache@10.0.1: - resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} - engines: {node: 14 || >=16.14} - dev: true + lru-cache@10.0.1: {} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - /lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - requiresBuild: true - dev: false + lru-cache@7.18.3: optional: true - /macaddress@0.5.3: - resolution: {integrity: sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==} + macaddress@0.5.3: {} - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 - dev: false - /magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} + magic-string@0.27.0: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /magic-string@0.30.4: - resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} - engines: {node: '>=12'} + magic-string@0.30.4: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 - dev: true - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + make-dir@3.1.0: dependencies: semver: 6.3.1 - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + make-dir@4.0.0: dependencies: semver: 7.6.0 - dev: true - /make-fetch-happen@10.2.1: - resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + make-fetch-happen@10.2.1: dependencies: agentkeepalive: 4.5.0 cacache: 16.1.3 @@ -11368,48 +16077,27 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false optional: true - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: true - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: false + map-cache@0.2.2: {} - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: true + map-obj@1.0.1: {} - /map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - dev: true + map-obj@4.3.0: {} - /map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - dev: true + map-or-similar@1.5.0: {} - /map-stream@0.1.0: - resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} - dev: false + map-stream@0.1.0: {} - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} + map-visit@1.0.0: dependencies: object-visit: 1.0.1 - dev: false - /markdown-it@14.0.0: - resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} - hasBin: true + markdown-it@14.0.0: dependencies: argparse: 2.0.1 entities: 4.5.0 @@ -11417,45 +16105,28 @@ packages: mdurl: 2.0.0 punycode.js: 2.3.1 uc.micro: 2.1.0 - dev: false - /markdown-to-jsx@7.3.2(react@18.2.0): - resolution: {integrity: sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==} - engines: {node: '>= 10'} - peerDependencies: - react: ^18.2.0 + markdown-to-jsx@7.3.2(react@18.2.0): dependencies: react: 18.2.0 - dev: true - /math.gl@4.0.1: - resolution: {integrity: sha512-Yvw1HfmsDePxwhCBvGT8teyPN0mwxcxUaWLoDaRuZYxoUYa9HRg+6ywBS+yXopC0wIS9MFi+BCVKP8hdJpaJjw==} + math.gl@4.0.1: dependencies: '@math.gl/core': 4.0.1 - dev: false - /md5-file@4.0.0: - resolution: {integrity: sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==} - engines: {node: '>=6.0'} - hasBin: true - dev: false + md5-file@4.0.0: {} - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + md5.js@1.3.5: dependencies: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /mdast-util-definitions@4.0.0: - resolution: {integrity: sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==} + mdast-util-definitions@4.0.0: dependencies: unist-util-visit: 2.0.3 - dev: true - /mdast-util-from-markdown@2.0.0: - resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + mdast-util-from-markdown@2.0.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.2 @@ -11471,17 +16142,13 @@ packages: unist-util-stringify-position: 4.0.0 transitivePeerDependencies: - supports-color - dev: false - /mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 - dev: false - /mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.0: dependencies: '@types/mdast': 4.0.3 '@types/unist': 3.0.2 @@ -11491,44 +16158,26 @@ packages: micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 - dev: false - /mdast-util-to-string@1.1.0: - resolution: {integrity: sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==} - dev: true + mdast-util-to-string@1.1.0: {} - /mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-to-string@4.0.0: dependencies: '@types/mdast': 4.0.3 - dev: false - /mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - dev: false + mdn-data@2.0.14: {} - /mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - dev: false + mdurl@2.0.0: {} - /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} + media-typer@0.3.0: {} - /memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 - dev: true - /memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: true + memorystream@0.3.1: {} - /meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + meow@10.1.5: dependencies: '@types/minimist': 1.2.3 camelcase-keys: 7.0.2 @@ -11542,32 +16191,20 @@ packages: trim-newlines: 4.1.1 type-fest: 1.4.0 yargs-parser: 20.2.9 - dev: true - /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.1: {} - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true + merge2@1.4.1: {} - /merge@1.2.1: - resolution: {integrity: sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==} - dev: false + merge@1.2.1: {} - /meshoptimizer@0.18.1: - resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} + meshoptimizer@0.18.1: {} - /methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} + methods@1.1.2: {} - /micromark-core-commonmark@2.0.0: - resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + micromark-core-commonmark@2.0.0: dependencies: decode-named-character-reference: 1.0.2 devlop: 1.1.0 @@ -11585,140 +16222,100 @@ packages: micromark-util-subtokenize: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-destination@2.0.0: - resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + micromark-factory-destination@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-label@2.0.0: - resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + micromark-factory-label@2.0.0: dependencies: devlop: 1.1.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-space@2.0.0: - resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + micromark-factory-space@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-title@2.0.0: - resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + micromark-factory-title@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-factory-whitespace@2.0.0: - resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + micromark-factory-whitespace@2.0.0: dependencies: micromark-factory-space: 2.0.0 micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + micromark-util-character@2.1.0: dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-chunked@2.0.0: - resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + micromark-util-chunked@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-classify-character@2.0.0: - resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + micromark-util-classify-character@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-combine-extensions@2.0.0: - resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + micromark-util-combine-extensions@2.0.0: dependencies: micromark-util-chunked: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-decode-numeric-character-reference@2.0.1: - resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + micromark-util-decode-numeric-character-reference@2.0.1: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-decode-string@2.0.0: - resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + micromark-util-decode-string@2.0.0: dependencies: decode-named-character-reference: 1.0.2 micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - dev: false + micromark-util-encode@2.0.0: {} - /micromark-util-html-tag-name@2.0.0: - resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} - dev: false + micromark-util-html-tag-name@2.0.0: {} - /micromark-util-normalize-identifier@2.0.0: - resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + micromark-util-normalize-identifier@2.0.0: dependencies: micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-resolve-all@2.0.0: - resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + micromark-util-resolve-all@2.0.0: dependencies: micromark-util-types: 2.0.0 - dev: false - /micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + micromark-util-sanitize-uri@2.0.0: dependencies: micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 - dev: false - /micromark-util-subtokenize@2.0.0: - resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + micromark-util-subtokenize@2.0.0: dependencies: devlop: 1.1.0 micromark-util-chunked: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 - dev: false - /micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - dev: false + micromark-util-symbol@2.0.0: {} - /micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - dev: false + micromark-util-types@2.0.0: {} - /micromark@4.0.0: - resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + micromark@4.0.0: dependencies: '@types/debug': 4.1.12 debug: 4.3.4(supports-color@8.1.1) @@ -11739,11 +16336,8 @@ packages: micromark-util-types: 2.0.0 transitivePeerDependencies: - supports-color - dev: false - /micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} + micromatch@3.1.10: dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 @@ -11760,83 +16354,77 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true - /miller-rabin@4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true + miller-rabin@4.0.1: dependencies: bn.js: 4.12.0 brorand: 1.1.0 - dev: true - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: true + mime@2.6.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@2.1.0: {} - /mimic-response@2.1.0: - resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} - engines: {node: '>=8'} - dev: false + mimic-response@2.1.0: {} - /mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false + mimic-response@3.1.0: {} - /min-document@2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + min-document@2.19.0: dependencies: dom-walk: 0.1.2 - dev: false - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minecraft-assets@1.12.2: - resolution: {integrity: sha512-/eMxh3LNjCXOnU6KnQMjBM8dRnoJNpWIg7mD2m2RthraYiQK2FNzPWIKxWm2j3Ufcf5nzFXupgABledE86r4fQ==} - dev: false + minecraft-assets@1.12.2: {} - /minecraft-data@3.62.0: - resolution: {integrity: sha512-jJXZ/WgyX79tIHlqvfyqG+sJDUekHiA3e9NRUCMGUno4NDrZMcpRI065DnkrI720RHTMb8iadf0NmnBP4Rla5A==} + minecraft-data@3.62.0: {} - /minecraft-folder-path@1.2.0: - resolution: {integrity: sha512-qaUSbKWoOsH9brn0JQuBhxNAzTDMwrOXorwuRxdJKKKDYvZhtml+6GVCUrY5HRiEsieBEjCUnhVpDuQiKsiFaw==} + minecraft-folder-path@1.2.0: {} + + minecraft-inventory-gui@https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/5554c7ab0a74bce52aa5f5f04a48eb8d3b9ac65c(@types/react@18.2.20)(react@18.2.0): + dependencies: + valtio: 1.11.2(@types/react@18.2.20)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - react + + minecraft-protocol@https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f(encoding@0.1.13): + dependencies: + '@types/readable-stream': 4.0.10 + aes-js: 3.1.2 + buffer-equal: 1.0.1 + debug: 4.3.4(supports-color@8.1.1) + endian-toggle: 0.0.0 + lodash.get: 4.4.2 + lodash.merge: 4.6.2 + minecraft-data: 3.62.0 + minecraft-folder-path: 1.2.0 + node-fetch: 2.7.0(encoding@0.1.13) + node-rsa: 0.4.2 + prismarine-auth: 2.4.1(encoding@0.1.13) + prismarine-nbt: 2.5.0 + prismarine-realms: 1.3.2(encoding@0.1.13) + protodef: 1.15.0 + readable-stream: 4.5.2 + uuid-1345: 1.0.2 + yggdrasil: 1.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color - /minecraft-wrap@1.5.1: - resolution: {integrity: sha512-7DZ2WhrcRD3fUMau84l9Va0KWzV92SHNdB7mnNdNhgXID2aW6pjWuYPZi8MepEBemA4XKKdnDx7HmhTbkoiR8A==} - hasBin: true + minecraft-wrap@1.5.1(encoding@0.1.13): dependencies: debug: 4.3.4(supports-color@8.1.1) es6-promisify: 5.0.0 @@ -11846,200 +16434,151 @@ packages: minecraft-folder-path: 1.2.0 mkdirp: 0.5.6 mz: 2.7.0 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) promise-queue: 2.2.5 rimraf: 3.0.2 - yggdrasil: 1.7.0 + yggdrasil: 1.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - dev: false - /minecrafthawkeye@1.3.6: - resolution: {integrity: sha512-SlRlorxQs6nNzMiiIQ5z47wzbAI27UaCdbRB82CE8jqj4C8m3Gqk5TlgN+PSThxx8EDPXySzd8Vk+/wNigAd5A==} + minecrafthawkeye@1.3.6: dependencies: detect-collisions: 7.0.5 vec3: 0.1.8 - dev: false - /mineflayer-pathfinder@2.4.4: - resolution: {integrity: sha512-HAXakZrJRb1UC+5dv8EaDrqjW3ZnBnBk3nkb6x/YWyhHCUKn/E7VU0FO+UN9whuqPlkSaVumEdXJdydE6lSYxQ==} + mineflayer-pathfinder@2.4.4: dependencies: minecraft-data: 3.62.0 - prismarine-block: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 prismarine-entity: 2.3.1 prismarine-item: 1.14.0 prismarine-nbt: 2.2.1 prismarine-physics: 1.8.0 vec3: 0.1.8 - dev: true - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: true + mineflayer@https://codeload.github.com/PrismarineJS/mineflayer/tar.gz/ec76468c8ac4c6232bad3c2b66d4160f95f58396(encoding@0.1.13): + dependencies: + minecraft-data: 3.62.0 + minecraft-protocol: https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f(encoding@0.1.13) + prismarine-biome: 1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0) + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 + prismarine-chat: 1.9.1 + prismarine-chunk: 1.35.0(minecraft-data@3.62.0) + prismarine-entity: 2.3.1 + prismarine-item: 1.14.0 + prismarine-nbt: 2.5.0 + prismarine-physics: 1.8.0 + prismarine-recipe: 1.3.1(prismarine-registry@1.7.0) + prismarine-registry: 1.7.0 + prismarine-windows: 2.9.0 + prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465 + protodef: 1.15.0 + typed-emitter: 1.4.0 + vec3: 0.1.8 + transitivePeerDependencies: + - encoding + - supports-color - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: true + minimalistic-assert@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - dev: true - /minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} + minimist-options@4.1.0: dependencies: arrify: 1.0.1 is-plain-obj: 1.1.0 kind-of: 6.0.3 - dev: true - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.8: {} - /minipass-collect@1.0.2: - resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} - engines: {node: '>= 8'} - requiresBuild: true + minipass-collect@1.0.2: dependencies: minipass: 3.3.6 - dev: false optional: true - /minipass-fetch@2.1.2: - resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + minipass-fetch@2.1.2: dependencies: minipass: 3.3.6 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: encoding: 0.1.13 - dev: false optional: true - /minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} - engines: {node: '>= 8'} - requiresBuild: true + minipass-flush@1.0.5: dependencies: minipass: 3.3.6 - dev: false optional: true - /minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - requiresBuild: true + minipass-pipeline@1.2.4: dependencies: minipass: 3.3.6 - dev: false optional: true - /minipass-sized@1.0.3: - resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} - engines: {node: '>=8'} - requiresBuild: true + minipass-sized@1.0.3: dependencies: minipass: 3.3.6 - dev: false optional: true - /minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} + minipass@3.3.6: dependencies: yallist: 4.0.0 - /minipass@5.0.0: - resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} - engines: {node: '>=8'} + minipass@5.0.0: {} - /minipass@7.0.3: - resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} - engines: {node: '>=16 || 14 >=14.17'} - dev: true + minipass@7.0.3: {} - /minizlib@2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} + minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} + mixin-deep@1.3.2: dependencies: for-in: 1.0.2 is-extendable: 1.0.1 - dev: false - /mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + mkdirp-classic@0.5.3: {} - /mkdirp@0.3.0: - resolution: {integrity: sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==} - deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.) - dev: false + mkdirp@0.3.0: {} - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + mkdirp@1.0.4: {} - /mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} - engines: {node: '>=10'} - hasBin: true - dev: false + mkdirp@2.1.6: {} - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + mlly@1.4.2: dependencies: acorn: 8.10.0 pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 - dev: true - /mojangson@2.0.4: - resolution: {integrity: sha512-HYmhgDjr1gzF7trGgvcC/huIg2L8FsVbi/KacRe6r1AswbboGVZDS47SOZlomPuMWvZLas8m9vuHHucdZMwTmQ==} + mojangson@2.0.4: dependencies: nearley: 2.20.1 - /moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - dev: false + moment@2.30.1: {} - /moo@0.5.2: - resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + moo@0.5.2: {} - /morgan@1.10.0: - resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} - engines: {node: '>= 0.8.0'} + morgan@1.10.0: dependencies: basic-auth: 2.0.1 debug: 2.6.9 @@ -12048,39 +16587,24 @@ packages: on-headers: 1.0.2 transitivePeerDependencies: - supports-color - dev: false - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: true + mri@1.2.0: {} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + mz@2.7.0: dependencies: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 - dev: false - /nan@2.18.0: - resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} - dev: false + nan@2.18.0: {} - /nano-css@5.3.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-vSB9X12bbNu4ALBu7nigJgRViZ6ja3OU7CeuiV1zMIbXOdmkLahgtPmh3GBOlDxbKY0CitqlPdOReGlBLSp+yg==} - peerDependencies: - react: ^18.2.0 - react-dom: '*' + nano-css@5.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: css-tree: 1.1.3 csstype: 3.1.2 @@ -12092,22 +16616,12 @@ packages: sourcemap-codec: 1.4.8 stacktrace-js: 2.0.2 stylis: 4.2.0 - dev: false - /nanoid@3.3.6: - resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.6: {} - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: true + nanoid@3.3.7: {} - /nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} + nanomatch@1.2.13: dependencies: arr-diff: 4.0.0 array-unique: 0.3.2 @@ -12122,126 +16636,85 @@ packages: to-regex: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - requiresBuild: true - dev: false + napi-build-utils@1.0.2: {} - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true + natural-compare-lite@1.4.0: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /nearley@2.20.1: - resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} - hasBin: true + nearley@2.20.1: dependencies: commander: 2.20.3 moo: 0.5.2 railroad-diagrams: 1.0.0 randexp: 0.4.6 - /needle@2.9.1: - resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} - engines: {node: '>= 4.4.x'} - hasBin: true + needle@2.9.1: dependencies: debug: 3.2.7(supports-color@8.1.1) iconv-lite: 0.4.24 sax: 1.3.0 transitivePeerDependencies: - supports-color - dev: false - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true + neo-async@2.6.2: {} - /nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - dev: false + nested-error-stacks@2.1.1: {} - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true + net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/7d827dba61bd2f9ac9a6086fe2079a0fccadd070: + dependencies: + body-parser: 1.20.2 + express: 4.18.2 + express-ws: 4.0.0(express@4.18.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + nice-try@1.0.5: {} + + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.6.2 - dev: false - /node-abi@3.47.0: - resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} - engines: {node: '>=10'} - requiresBuild: true + node-abi@3.47.0: dependencies: semver: 7.6.0 - dev: false - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false + node-addon-api@5.1.0: {} - /node-canvas-webgl@0.3.0: - resolution: {integrity: sha512-wDRCTEE2TCqKDeSef5cNgtLv8kgjRlnFN3aYgB9yni0kHRNnKBSSP93lT8VIV5GuMWiy5KNXBU0ilyWL5wTvFg==} - requiresBuild: true + node-canvas-webgl@0.3.0(encoding@0.1.13): dependencies: - canvas: 2.11.2 + canvas: 2.11.2(encoding@0.1.13) gl: 6.0.2 transitivePeerDependencies: - bluebird - encoding - supports-color - dev: false optional: true - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 - dev: true - /node-fetch-native@1.4.0: - resolution: {integrity: sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA==} - dev: true + node-fetch-native@1.4.0: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 - /node-gyp-build-optional-packages@5.1.1: - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} - hasBin: true - requiresBuild: true + node-gyp-build-optional-packages@5.1.1: dependencies: detect-libc: 2.0.2 - dev: false optional: true - /node-gyp@9.4.1: - resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} - engines: {node: ^12.13 || ^14.13 || >=16} - hasBin: true - requiresBuild: true + node-gyp@9.4.1: dependencies: env-paths: 2.2.1 exponential-backoff: 3.1.1 @@ -12257,97 +16730,61 @@ packages: transitivePeerDependencies: - bluebird - supports-color - dev: false optional: true - /node-gzip@1.1.2: - resolution: {integrity: sha512-ZB6zWpfZHGtxZnPMrJSKHVPrRjURoUzaDbLFj3VO70mpLTW5np96vXyHwft4Id0o+PYIzgDkBUjIzaNHhQ8srw==} - dev: false + node-gzip@1.1.2: {} - /node-html-parser@6.1.10: - resolution: {integrity: sha512-6/uWdWxjQWQ7tMcFK2wWlrflsQUzh1HsEzlIf2j5+TtzfhT2yUvg3DwZYAmjEHeR3uX74ko7exjHW69J0tOzIg==} + node-html-parser@6.1.10: dependencies: css-select: 5.1.0 he: 1.2.0 - dev: true - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true + node-int64@0.4.0: {} - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.13: {} - /node-rsa@0.4.2: - resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} + node-rsa@0.4.2: dependencies: asn1: 0.2.3 - /node-rsa@1.1.1: - resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} + node-rsa@1.1.1: dependencies: asn1: 0.2.6 - dev: false - /nopt@1.0.10: - resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==} - hasBin: true + nopt@1.0.10: dependencies: abbrev: 1.1.1 - dev: false - /nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true + nopt@5.0.0: dependencies: abbrev: 1.1.1 - dev: false - /nopt@6.0.0: - resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - hasBin: true - requiresBuild: true + nopt@6.0.0: dependencies: abbrev: 1.1.1 - dev: false optional: true - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 resolve: 1.22.4 semver: 5.7.2 validate-npm-package-license: 3.0.4 - dev: true - /normalize-package-data@3.0.3: - resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} - engines: {node: '>=10'} + normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.0 semver: 7.6.0 validate-npm-package-license: 3.0.4 - dev: true - /normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} + normalize-path@2.1.1: dependencies: remove-trailing-separator: 1.1.0 - dev: false - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + normalize-path@3.0.0: {} - /npm-run-all@4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true + npm-run-all@4.1.5: dependencies: ansi-styles: 3.2.1 chalk: 2.4.2 @@ -12358,195 +16795,127 @@ packages: read-pkg: 3.0.0 shell-quote: 1.8.1 string.prototype.padend: 3.1.4 - dev: true - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - /npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 - dev: false - /npmlog@6.0.2: - resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + npmlog@6.0.2: dependencies: are-we-there-yet: 3.0.1 console-control-strings: 1.1.0 gauge: 4.0.4 set-blocking: 2.0.0 - dev: false optional: true - /nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@2.1.1: dependencies: boolbase: 1.0.0 - dev: true - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} + object-copy@0.1.0: dependencies: copy-descriptor: 0.1.1 define-property: 0.2.5 kind-of: 3.2.2 - dev: false - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + object-inspect@1.12.3: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.1: {} - /object-is@1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} + object-is@1.1.5: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} + object-keys@1.1.1: {} - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} + object-visit@1.0.1: dependencies: isobject: 3.0.1 - dev: false - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.4: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} - engines: {node: '>= 0.4'} + object.entries@1.1.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.4 - dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.4 - dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + object.hasown@1.1.3: dependencies: define-properties: 1.2.1 es-abstract: 1.22.4 - dev: true - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} + object.pick@1.3.0: dependencies: isobject: 3.0.1 - dev: false - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} - engines: {node: '>= 0.4'} + object.values@1.1.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - dev: true - /omggif@1.0.10: - resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} - dev: false + omggif@1.0.10: {} - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 - dev: false - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} + on-headers@1.0.2: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: true - /opener@1.5.2: - resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} - hasBin: true - dev: true + opener@1.5.2: {} - /opn@6.0.0: - resolution: {integrity: sha512-I9PKfIZC+e4RXZ/qr1RhgyCnGgYX0UEIlXgWnCOVACIvFgaC9rz6Won7xbdhoHrd8IIhV7YEpHjreNUNkqCGkQ==} - engines: {node: '>=8'} - deprecated: The package has been renamed to `open` + opn@6.0.0: dependencies: is-wsl: 1.1.0 - dev: false - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -12554,11 +16923,8 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -12569,434 +16935,254 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: true - /orderedmap@2.1.1: - resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - dev: false + orderedmap@2.1.1: {} - /os-browserify@0.3.0: - resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} - dev: true + os-browserify@0.3.0: {} - /ospath@1.2.2: - resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + ospath@1.2.2: {} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@4.0.0: dependencies: yocto-queue: 1.0.0 - dev: true - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true + p-try@2.2.0: {} - /pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - dev: true + pako@0.2.9: {} - /pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + pako@1.0.11: {} - /param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + param-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - dev: false - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - /parse-asn1@5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + parse-asn1@5.1.6: dependencies: asn1.js: 5.4.1 browserify-aes: 1.2.0 evp_bytestokey: 1.0.3 pbkdf2: 3.1.2 safe-buffer: 5.2.1 - dev: true - /parse-bmfont-ascii@1.0.6: - resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} - dev: false + parse-bmfont-ascii@1.0.6: {} - /parse-bmfont-binary@1.0.6: - resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} - dev: false + parse-bmfont-binary@1.0.6: {} - /parse-bmfont-xml@1.1.4: - resolution: {integrity: sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==} + parse-bmfont-xml@1.1.4: dependencies: xml-parse-from-string: 1.0.1 xml2js: 0.4.23 - dev: false - /parse-color@1.0.0: - resolution: {integrity: sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==} + parse-color@1.0.0: dependencies: color-convert: 0.5.3 - dev: false - /parse-headers@2.0.5: - resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} - dev: false + parse-headers@2.0.5: {} - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parseqs@0.0.6: - resolution: {integrity: sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==} - dev: false + parseqs@0.0.6: {} - /parseuri@0.0.6: - resolution: {integrity: sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==} - dev: false + parseuri@0.0.6: {} - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + parseurl@1.3.3: {} - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + pascal-case@3.1.2: dependencies: no-case: 3.0.4 tslib: 2.6.2 - dev: false - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: false + pascalcase@0.1.1: {} - /path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true + path-browserify@1.0.1: {} - /path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - dev: false - /path-dirname@1.0.2: - resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} - dev: false + path-dirname@1.0.2: {} - /path-exists-cli@2.0.0: - resolution: {integrity: sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true + path-exists-cli@2.0.0: dependencies: meow: 10.1.5 path-exists: 5.0.0 - dev: true - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: true + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true + path-exists@4.0.0: {} - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true + path-exists@5.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true + path-key@2.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.10.1: dependencies: lru-cache: 10.0.1 minipass: 7.0.3 - dev: true - /path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.7: {} - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} + path-type@3.0.0: dependencies: pify: 3.0.0 - dev: true - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: true + pathe@1.1.1: {} - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true + pathval@1.1.1: {} - /pause-stream@0.0.11: - resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + pause-stream@0.0.11: dependencies: through: 2.3.8 - dev: false - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} + pbkdf2@3.1.2: dependencies: create-hash: 1.2.0 create-hmac: 1.1.7 ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true - /peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 duplexify: 3.7.1 through2: 2.0.5 - dev: true - /peerjs-js-binarypack@2.0.0: - resolution: {integrity: sha512-wu+L0Qeg4IH2DXm3B6xKP5ODeCIovwEEO/Fu3MVqApPQeVLzSdZpFzQzPobh+sdhUWMQGEO7YxHeiwpPngLjqQ==} - engines: {node: '>= 14.0.0'} - dev: false + peerjs-js-binarypack@2.0.0: {} - /peerjs@1.5.0: - resolution: {integrity: sha512-NLZ73jRNE4aLq2pmVTiSkWmwf6cvt9cH72qJHnzaLH+I2CtoWVvY42U9/O0/tYE6UYwRYJ1ktKRs2DdZ1Jrgcg==} - engines: {node: '>= 14'} + peerjs@1.5.0: dependencies: '@msgpack/msgpack': 2.8.0 cbor-x: 1.5.4 eventemitter3: 4.0.7 peerjs-js-binarypack: 2.0.0 webrtc-adapter: 8.2.3 - dev: false - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + pend@1.2.0: {} - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + performance-now@2.1.0: {} - /phin@2.9.3: - resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} - dev: false + phin@2.9.3: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pidtree@0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true + pidtree@0.3.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} + pify@2.3.0: {} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: true + pify@3.0.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true + pify@4.0.1: {} - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: true + pirates@4.0.6: {} - /pixelmatch@4.0.2: - resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} - hasBin: true + pixelmatch@4.0.2: dependencies: pngjs: 3.4.0 - dev: false - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - dev: true - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} - engines: {node: '>=10'} + pkg-dir@5.0.0: dependencies: find-up: 5.0.0 - dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + pkg-types@1.0.3: dependencies: jsonc-parser: 3.2.0 mlly: 1.4.2 pathe: 1.1.1 - dev: true - /pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - dev: true + pluralize@8.0.0: {} - /pngjs@3.4.0: - resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} - engines: {node: '>=4.0.0'} - dev: false + pngjs@3.4.0: {} - /polished@4.2.2: - resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} - engines: {node: '>=10'} + polished@4.2.2: dependencies: '@babel/runtime': 7.22.11 - dev: true - /poly-decomp@0.3.0: - resolution: {integrity: sha512-hWeBxGzPYiybmI4548Fca7Up/0k1qS5+79cVHI9+H33dKya5YNb9hxl0ZnDaDgvrZSuYFBhkCK/HOnqN7gefkQ==} - dev: false + poly-decomp@0.3.0: {} - /portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} + portfinder@1.0.32: dependencies: async: 2.6.4 debug: 3.2.7(supports-color@8.1.1) mkdirp: 0.5.6 transitivePeerDependencies: - supports-color - dev: true - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: false + posix-character-classes@0.1.1: {} - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - /postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.35: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true - /potpack@1.0.2: - resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} - dev: false + potpack@1.0.2: {} - /prebuild-install@7.1.1: - resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==} - engines: {node: '>=10'} - hasBin: true + prebuild-install@7.1.1: dependencies: detect-libc: 2.0.2 expand-template: 2.0.3 @@ -13010,85 +17196,63 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier@1.19.1: - resolution: {integrity: sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==} - engines: {node: '>=4'} - hasBin: true - dev: false + prettier@1.19.1: {} - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: true + prettier@2.8.8: {} - /pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} + pretty-bytes@5.6.0: {} - /pretty-bytes@6.1.1: - resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} - engines: {node: ^14.13.1 || >=16.0.0} - dev: false + pretty-bytes@6.1.1: {} - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - dev: true - /pretty-hrtime@1.0.3: - resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} - engines: {node: '>= 0.8'} - dev: true + pretty-hrtime@1.0.3: {} - /prismarine-auth@2.4.1: - resolution: {integrity: sha512-DwDI3Ucxf/eThJJo5QVzlywFrJulL1fK1z6F8bybvddim8YgudRksQc3w4cE2m0hPPHfE1BRd5lh1NpedrixMQ==} + prismarine-auth@2.4.1(encoding@0.1.13): dependencies: '@azure/msal-node': 2.6.3 '@xboxreplay/xboxlive-auth': 3.3.3(debug@4.3.4) debug: 4.3.4(supports-color@8.1.1) jose: 4.15.4 - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) smart-buffer: 4.2.0 uuid-1345: 1.0.2 transitivePeerDependencies: - encoding - supports-color - /prismarine-biome@1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0): - resolution: {integrity: sha512-GY6nZxq93mTErT7jD7jt8YS1aPrOakbJHh39seYsJFXvueIOdHAmW16kYQVrTVMW5MlWLQVxV/EquRwOgr4MnQ==} - peerDependencies: + prismarine-biome@1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0): + dependencies: minecraft-data: 3.62.0 - prismarine-registry: ^1.1.0 + prismarine-registry: 1.7.0 + + prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0: dependencies: minecraft-data: 3.62.0 + prismarine-biome: 1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0) + prismarine-chat: 1.9.1 + prismarine-item: 1.14.0 + prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 - /prismarine-chat@1.9.1: - resolution: {integrity: sha512-x7WWa5MNhiLZSO6tw+YyKpzquFZ+DNISVgiV6K3SU0GsishMXe+nto02WhF/4AuFerKdugm9u1d/r4C4zSkJOg==} + prismarine-chat@1.9.1: dependencies: mojangson: 2.0.4 prismarine-item: 1.14.0 prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 - /prismarine-chunk@1.35.0(minecraft-data@3.62.0): - resolution: {integrity: sha512-Q1lElMUle7wWxWdQjbZo3j2/dLNG325j90IcbbMmBTnHdQSWIjWFe792XOz3RVBlvrhRJEiZk38S6/eQTQ9esw==} - engines: {node: '>=14'} + prismarine-chunk@1.35.0(minecraft-data@3.62.0): dependencies: prismarine-biome: 1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0) - prismarine-block: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 prismarine-nbt: 2.2.1 prismarine-registry: 1.7.0 smart-buffer: 4.2.0 @@ -13098,155 +17262,123 @@ packages: transitivePeerDependencies: - minecraft-data - /prismarine-entity@2.3.1: - resolution: {integrity: sha512-HOv8l7IetHNf4hwZ7V/W4vM3GNl+e6VCtKDkH9h02TRq7jWngsggKtJV+VanCce/sNwtJUhJDjORGs728ep4MA==} + prismarine-entity@2.3.1: dependencies: prismarine-chat: 1.9.1 prismarine-item: 1.14.0 prismarine-registry: 1.7.0 vec3: 0.1.8 - /prismarine-item@1.14.0: - resolution: {integrity: sha512-udQHYGJ05klFe8Kkc0TOmwoXj5Xl1ZPgHVoMbGUAFB9exN4TFxEa1A39vkSYhxP5Et9PNufQQvFBFVom0nXikA==} + prismarine-item@1.14.0: dependencies: prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 - /prismarine-nbt@2.2.1: - resolution: {integrity: sha512-Mb50c58CPnuZ+qvM31DBa08tf9UumlTq1LkvpMoUpKfCuN05GZHTqCUwER3lxTSHLL0GZKghIPbYR/JQkINijQ==} + prismarine-nbt@2.2.1: dependencies: protodef: 1.15.0 - /prismarine-nbt@2.5.0: - resolution: {integrity: sha512-F0/8UAa9SDDnAGrBYqZc4nG8h2zj5cE2eAJU5xlDR/IsQQ3moVxkOjE3h3nMv6SbvZrvAcgX7waA/nd9LLHYdA==} + prismarine-nbt@2.5.0: dependencies: protodef: 1.15.0 - /prismarine-physics@1.8.0: - resolution: {integrity: sha512-gbM+S+bmVtOKVv+Z0WGaHMeEeBHISIDsRDRlv8sr0dex3ZJRhuq8djA02CBreguXtI18ZKh6q3TSj2qDr45NHA==} + prismarine-physics@1.8.0: dependencies: minecraft-data: 3.62.0 prismarine-nbt: 2.5.0 vec3: 0.1.8 - dev: true - /prismarine-realms@1.3.2: - resolution: {integrity: sha512-5apl9Ru8veTj5q2OozRc4GZOuSIcs3yY4UEtALiLKHstBe8bRw8vNlaz4Zla3jsQ8yP/ul1b1IJINTRbocuA6g==} + prismarine-provider-anvil@https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/02d81b0eba6ab1c362862970954f9a3c150c9a29(minecraft-data@3.62.0): + dependencies: + prismarine-chunk: 1.35.0(minecraft-data@3.62.0) + prismarine-nbt: 2.5.0 + uint4: 0.1.2 + vec3: 0.1.8 + transitivePeerDependencies: + - minecraft-data + + prismarine-realms@1.3.2(encoding@0.1.13): dependencies: debug: 4.3.4(supports-color@8.1.1) - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - /prismarine-recipe@1.3.1(prismarine-registry@1.7.0): - resolution: {integrity: sha512-xfa9E9ACoaDi+YzNQ+nk8kWSIqt5vSZOOCHIT+dTXscf/dng2HaJ/59uwe1D/jvOkAd2OvM6RRJM6fFe0q/LDA==} - peerDependencies: - prismarine-registry: ^1.4.0 + prismarine-recipe@1.3.1(prismarine-registry@1.7.0): dependencies: prismarine-registry: 1.7.0 - dev: true - /prismarine-registry@1.7.0: - resolution: {integrity: sha512-yyva0FpWI078nNeMhx8ekVza5uUTYhEv+C+ADu3wUQXiG8qhXkvrf0uzsnhTgZL8BLdsi2axgCEiKw9qSKIuxQ==} + prismarine-registry@1.7.0: dependencies: minecraft-data: 3.62.0 prismarine-nbt: 2.5.0 - /prismarine-schematic@1.2.3: - resolution: {integrity: sha512-Mwpn43vEHhm3aw3cPhJjWqztkW+nX+QLajDHlTask8lEOTGl1WmpvFja4iwiws4GIvaC8x0Foptf4uvDsnjrAg==} + prismarine-schematic@1.2.3: dependencies: minecraft-data: 3.62.0 - prismarine-block: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 prismarine-nbt: 2.2.1 - prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 + prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465 vec3: 0.1.8 - dev: false - /prismarine-windows@2.9.0: - resolution: {integrity: sha512-fm4kOLjGFPov7TEJRmXHoiPabxIQrG36r2mDjlNxfkcLfMHFb3/1ML6mp4iRQa7wL0GK4DIAyiBqCWoeWDxARg==} + prismarine-windows@2.9.0: dependencies: prismarine-item: 1.14.0 prismarine-registry: 1.7.0 typed-emitter: 2.1.0 - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + prismarine-world@https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465: + dependencies: + vec3: 0.1.8 - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} + process-nextick-args@2.0.1: {} - /progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} - engines: {node: '>=0.4.0'} - dev: true + process@0.11.10: {} - /promise-inflight@1.0.1: - resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} - requiresBuild: true - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true - dev: false + process@https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e: {} + + progress@2.0.3: {} + + promise-inflight@1.0.1: optional: true - /promise-queue@2.2.5: - resolution: {integrity: sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==} - engines: {node: '>= 0.8.0'} - dev: false + promise-queue@2.2.5: {} - /promise-retry@2.0.1: - resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} - engines: {node: '>=10'} - requiresBuild: true + promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 - dev: false optional: true - /promise@5.0.0: - resolution: {integrity: sha512-N2BfLz0Sigf7rsm5NnItRwTNqEDUF2ephwEXTcOAf2cO9NwZ9TnIjOmnQNtC0r70CV0S1+uc9mSMmFH7gxk87Q==} + promise@5.0.0: dependencies: asap: 1.0.0 - dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /prosemirror-commands@1.5.2: - resolution: {integrity: sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==} + prosemirror-commands@1.5.2: dependencies: prosemirror-model: 1.19.4 prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 - dev: false - /prosemirror-dropcursor@1.8.1: - resolution: {integrity: sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==} + prosemirror-dropcursor@1.8.1: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 prosemirror-view: 1.33.1 - dev: false - /prosemirror-example-setup@1.2.2: - resolution: {integrity: sha512-pHJc656IgYm249RNp0eQaWNmnyWGk6OrzysWfYI4+NwE14HQ7YNYOlRBLErUS6uCAHIYJLNXf0/XCmf1OCtNbQ==} + prosemirror-example-setup@1.2.2: dependencies: prosemirror-commands: 1.5.2 prosemirror-dropcursor: 1.8.1 @@ -13257,130 +17389,94 @@ packages: prosemirror-menu: 1.2.4 prosemirror-schema-list: 1.3.0 prosemirror-state: 1.4.3 - dev: false - /prosemirror-gapcursor@1.3.2: - resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} + prosemirror-gapcursor@1.3.2: dependencies: prosemirror-keymap: 1.2.2 prosemirror-model: 1.19.4 prosemirror-state: 1.4.3 prosemirror-view: 1.33.1 - dev: false - /prosemirror-history@1.3.2: - resolution: {integrity: sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==} + prosemirror-history@1.3.2: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 prosemirror-view: 1.33.1 rope-sequence: 1.3.4 - dev: false - /prosemirror-inputrules@1.4.0: - resolution: {integrity: sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==} + prosemirror-inputrules@1.4.0: dependencies: prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 - dev: false - /prosemirror-keymap@1.2.2: - resolution: {integrity: sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==} + prosemirror-keymap@1.2.2: dependencies: prosemirror-state: 1.4.3 w3c-keyname: 2.2.8 - dev: false - /prosemirror-markdown@1.12.0: - resolution: {integrity: sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==} + prosemirror-markdown@1.12.0: dependencies: markdown-it: 14.0.0 prosemirror-model: 1.19.4 - dev: false - /prosemirror-menu@1.2.4: - resolution: {integrity: sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==} + prosemirror-menu@1.2.4: dependencies: crelt: 1.0.6 prosemirror-commands: 1.5.2 prosemirror-history: 1.3.2 prosemirror-state: 1.4.3 - dev: false - /prosemirror-model@1.19.4: - resolution: {integrity: sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==} + prosemirror-model@1.19.4: dependencies: orderedmap: 2.1.1 - dev: false - /prosemirror-schema-list@1.3.0: - resolution: {integrity: sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==} + prosemirror-schema-list@1.3.0: dependencies: prosemirror-model: 1.19.4 prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 - dev: false - /prosemirror-state@1.4.3: - resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + prosemirror-state@1.4.3: dependencies: prosemirror-model: 1.19.4 prosemirror-transform: 1.8.0 prosemirror-view: 1.33.1 - dev: false - /prosemirror-transform@1.8.0: - resolution: {integrity: sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==} + prosemirror-transform@1.8.0: dependencies: prosemirror-model: 1.19.4 - dev: false - /prosemirror-view@1.33.1: - resolution: {integrity: sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==} + prosemirror-view@1.33.1: dependencies: prosemirror-model: 1.19.4 prosemirror-state: 1.4.3 prosemirror-transform: 1.8.0 - dev: false - /protodef-validator@1.3.1: - resolution: {integrity: sha512-lZ5FWKZYR9xOjpMw1+EfZRfCjzNRQWPq+Dk+jki47Sikl2EeWEPnTfnJERwnU/EwFq6us+0zqHHzSsmLeYX+Lg==} - hasBin: true + protodef-validator@1.3.1: dependencies: ajv: 6.12.6 - /protodef@1.15.0: - resolution: {integrity: sha512-bZ2Omw8dT+DACjJHLrBWZlqN4MlT9g9oSpJDdkUAJOStUzgJp+Zn42FJfPUdwutUxjaxA0PftN0PDlNa2XbneA==} - engines: {node: '>=14'} + protodef@1.15.0: dependencies: lodash.get: 4.4.2 lodash.reduce: 4.6.0 protodef-validator: 1.3.1 readable-stream: 3.6.2 - /proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - /proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + proxy-compare@2.5.1: {} - /proxy-from-env@1.0.0: - resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + proxy-from-env@1.0.0: {} - /proxy-middleware@0.15.0: - resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} - engines: {node: '>=0.8.0'} - dev: false + proxy-middleware@0.15.0: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + psl@1.9.0: {} - /public-encrypt@4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + public-encrypt@4.0.3: dependencies: bn.js: 4.12.0 browserify-rsa: 4.1.0 @@ -13388,45 +17484,30 @@ packages: parse-asn1: 5.1.6 randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: true - /pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + pump@2.0.1: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - /pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + pumpify@1.5.1: dependencies: duplexify: 3.7.1 inherits: 2.0.4 pump: 2.0.1 - dev: true - /punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - dev: false + punycode.js@2.3.1: {} - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} + punycode@2.3.0: {} - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} + punycode@2.3.1: {} - /puppeteer-core@2.1.1: - resolution: {integrity: sha512-n13AWriBMPYxnpbb6bnaY5YoY6rGj8vPLrz6CZF3o0qJNEwlcfJVxBzYZ0NJsQ21UbdJoijPCDrM++SUVEz7+w==} - engines: {node: '>=8.16.0'} + puppeteer-core@2.1.1: dependencies: '@types/mime-types': 2.1.2 debug: 4.3.4(supports-color@8.1.1) @@ -13442,155 +17523,94 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: true - /qrcode.react@3.1.0(react@18.2.0): - resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} - peerDependencies: - react: ^18.2.0 + qrcode.react@3.1.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /qs@6.10.4: - resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} - engines: {node: '>=0.6'} + qs@6.10.4: dependencies: side-channel: 1.0.5 - /qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} + qs@6.11.0: dependencies: side-channel: 1.0.4 - /qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} - engines: {node: '>=0.6'} + qs@6.11.2: dependencies: side-channel: 1.0.4 - dev: true - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + querystringify@2.2.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true + queue-microtask@1.2.3: {} - /quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true + quick-lru@5.1.1: {} - /quickselect@2.0.0: - resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} - dev: false + quickselect@2.0.0: {} - /railroad-diagrams@1.0.0: - resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + railroad-diagrams@1.0.0: {} - /rambda@6.9.0: - resolution: {integrity: sha512-yosVdGg1hNGkXPzqGiOYNEpXKjEOxzUCg2rB0l+NKdyCaSf4z+i5ojbN0IqDSezMMf71YEglI+ZUTgTffn5afw==} - dev: false + rambda@6.9.0: {} - /ramda@0.29.0: - resolution: {integrity: sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==} - dev: true + ramda@0.29.0: {} - /randexp@0.4.6: - resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} - engines: {node: '>=0.12'} + randexp@0.4.6: dependencies: discontinuous-range: 1.0.0 ret: 0.1.15 - /random-seed@0.3.0: - resolution: {integrity: sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA==} - engines: {node: '>= 0.6.0'} + random-seed@0.3.0: dependencies: json-stringify-safe: 5.0.1 - dev: false - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - /randomfill@1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + randomfill@1.0.4: dependencies: randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: true - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + range-parser@1.2.1: {} - /range@0.0.3: - resolution: {integrity: sha512-OxK2nY2bmeEB4NxoBraQIBOOeOIxoBvm6yt8MA1kLappgkG3SyLf173iOtT5woWycrtESDD2g0Nl2yt8YPoUnw==} - engines: {node: '>=0.8'} - dev: false + range@0.0.3: {} - /raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} + raw-body@2.5.1: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - /raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} - engines: {node: '>= 0.8'} + raw-body@2.5.2: dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - dev: false - /rbush@3.0.1: - resolution: {integrity: sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==} + rbush@3.0.1: dependencies: quickselect: 2.0.0 - dev: false - /rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - requiresBuild: true + rc@1.2.8: dependencies: deep-extend: 0.6.0 ini: 1.3.8 minimist: 1.2.8 strip-json-comments: 2.0.1 - dev: false - /react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} - peerDependencies: - react: ^18.2.0 - react-dom: '>=16.8.0' + react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /react-docgen-typescript@2.2.2(typescript@5.2.2): - resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} - peerDependencies: - typescript: '>= 4.3.x' + react-docgen-typescript@2.2.2(typescript@5.2.2): dependencies: typescript: 5.2.2 - dev: true - /react-docgen@6.0.0-alpha.3: - resolution: {integrity: sha512-DDLvB5EV9As1/zoUsct6Iz2Cupw9FObEGD3DMcIs3EDFIoSKyz8FZtoWj3Wj+oodrU4/NfidN0BL5yrapIcTSA==} - engines: {node: '>=12.0.0'} - hasBin: true + react-docgen@6.0.0-alpha.3: dependencies: '@babel/core': 7.22.11 '@babel/generator': 7.22.10 @@ -13604,139 +17624,78 @@ packages: strip-indent: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - /react-element-to-jsx-string@15.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-element-to-jsx-string@15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@base2/pretty-print-object': 1.0.1 is-plain-object: 5.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 18.1.0 - dev: true - - /react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - dev: false - /react-inspector@6.0.2(react@18.2.0): - resolution: {integrity: sha512-x+b7LxhmHXjHoU/VrFAzw5iutsILRoYyDq97EDYdFpPLcvqtEzk4ZSZSQjnFPbr5T57tLXnHcqFYoN1pI6u8uQ==} - peerDependencies: - react: ^18.2.0 + react-fast-compare@3.2.2: {} + + react-inspector@6.0.2(react@18.2.0): dependencies: react: 18.2.0 - dev: true - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-is@18.1.0: - resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} - dev: true + react-is@18.1.0: {} - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.2.0: {} - /react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} - peerDependencies: - '@popperjs/core': ^2.0.0 - react: ^18.2.0 - react-dom: ^16.8.0 || ^17 || ^18 + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@popperjs/core': 2.11.8 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-fast-compare: 3.2.2 warning: 4.0.3 - dev: false - /react-portal@4.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-fE9kOBagwmTXZ3YGRYb4gcMy+kSA+yLO0xnPankjRlfBv4uCpFXqKPfkpsGQQR15wkZ9EssnvTOl1yMzbkxhPQ==} - peerDependencies: - react: ^18.2.0 - react-dom: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 + react-portal@4.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} - engines: {node: '>=0.10.0'} - dev: true + react-refresh@0.14.0: {} - /react-remove-scroll-bar@2.3.4(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.4(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) tslib: 2.6.2 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /react-remove-scroll@2.5.5(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.5(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 react: 18.2.0 react-remove-scroll-bar: 2.3.4(@types/react@18.2.20)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) tslib: 2.6.2 use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0) - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: ^18.2.0 - react-dom: '>=16.6.0' + react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.22.11 dom-helpers: 5.2.1 @@ -13744,34 +17703,19 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): - resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} - peerDependencies: - react: ^18.2.0 - tslib: '*' + react-universal-interface@0.6.2(react@18.2.0)(tslib@2.6.2): dependencies: react: 18.2.0 tslib: 2.6.2 - dev: false - /react-use-measure@2.1.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==} - peerDependencies: - react: ^18.2.0 - react-dom: '>=16.13' + react-use-measure@2.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: debounce: 1.2.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react-use@17.3.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} - peerDependencies: - react: ^18.2.0 - react-dom: ^16.8.0 || ^17.0.0 + react-use@17.3.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@types/js-cookie': 2.2.7 '@xobotyi/scrollbar-width': 1.9.5 @@ -13779,7 +17723,7 @@ packages: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.3.5(react-dom@18.2.0)(react@18.2.0) + nano-css: 5.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.6.2) @@ -13789,74 +17733,52 @@ packages: throttle-debounce: 3.0.1 ts-easing: 0.2.0 tslib: 2.6.2 - dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - dev: true - /read-pkg-up@8.0.0: - resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} - engines: {node: '>=12'} + read-pkg-up@8.0.0: dependencies: find-up: 5.0.0 read-pkg: 6.0.0 type-fest: 1.4.0 - dev: true - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} + read-pkg@3.0.0: dependencies: load-json-file: 4.0.0 normalize-package-data: 2.5.0 path-type: 3.0.0 - dev: true - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.2 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 - dev: true - /read-pkg@6.0.0: - resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} - engines: {node: '>=12'} + read-pkg@6.0.0: dependencies: '@types/normalize-package-data': 2.4.2 normalize-package-data: 3.0.3 parse-json: 5.2.0 type-fest: 1.4.0 - dev: true - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - requiresBuild: true + readable-stream@1.0.34: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 - dev: false optional: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -13866,17 +17788,13 @@ packages: string_decoder: 1.1.1 util-deprecate: 1.0.2 - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - /readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readable-stream@4.5.2: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 @@ -13884,60 +17802,41 @@ packages: process: 0.11.10 string_decoder: 1.3.0 - /readdirp@2.2.1: - resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} - engines: {node: '>=0.10'} + readdirp@2.2.1: dependencies: graceful-fs: 4.2.11 micromatch: 3.1.10 readable-stream: 2.3.8 transitivePeerDependencies: - supports-color - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - dev: true - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false + readline@1.3.0: {} - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} + recast@0.21.5: dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.2 - dev: true - /recast@0.23.4: - resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} - engines: {node: '>= 4'} + recast@0.23.4: dependencies: assert: 2.0.0 ast-types: 0.16.1 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.2 - dev: true - /redent@4.0.0: - resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} - engines: {node: '>=12'} + redent@4.0.0: dependencies: indent-string: 5.0.0 strip-indent: 4.0.0 - dev: true - /reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -13946,68 +17845,44 @@ packages: get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 - dev: true - /regenerate-unicode-properties@10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} + regenerate-unicode-properties@10.1.0: dependencies: regenerate: 1.4.2 - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerate@1.4.2: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false + regenerator-runtime@0.13.11: {} - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + regenerator-runtime@0.14.0: {} - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.22.11 - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} + regex-not@1.0.2: dependencies: extend-shallow: 3.0.2 safe-regex: 1.1.0 - dev: false - /regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - dev: true + regexp-tree@0.1.27: {} - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 set-function-name: 2.0.1 - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.1 - dev: true - /regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true + regexpp@3.2.0: {} - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -14016,31 +17891,23 @@ packages: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - /regjsparser@0.10.0: - resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} - hasBin: true + regjsparser@0.10.0: dependencies: jsesc: 0.5.0 - dev: true - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - /remark-external-links@8.0.0: - resolution: {integrity: sha512-5vPSX0kHoSsqtdftSHhIYofVINC8qmp0nctkeU9YoJwV3YfiBRiI6cbFRJ0oI/1F9xS+bopXG0m2KS8VFscuKA==} + remark-external-links@8.0.0: dependencies: extend: 3.0.2 is-absolute-url: 3.0.3 mdast-util-definitions: 4.0.0 space-separated-tokens: 1.1.5 unist-util-visit: 2.0.3 - dev: true - /remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-from-markdown: 2.0.0 @@ -14048,26 +17915,20 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remark-slug@6.1.0: - resolution: {integrity: sha512-oGCxDF9deA8phWvxFuyr3oSJsdyUAxMFbA0mZ7Y1Sas+emILtO+e5WutF9564gDsEN4IXaQXm5pFo6MLH+YmwQ==} + remark-slug@6.1.0: dependencies: github-slugger: 1.5.0 mdast-util-to-string: 1.1.0 unist-util-visit: 2.0.3 - dev: true - /remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.3 mdast-util-to-markdown: 2.1.0 unified: 11.0.4 - dev: false - /remark@15.0.1: - resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} + remark@15.0.1: dependencies: '@types/mdast': 4.0.3 remark-parse: 11.0.0 @@ -14075,295 +17936,177 @@ packages: unified: 11.0.4 transitivePeerDependencies: - supports-color - dev: false - /remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: false + remove-trailing-separator@1.1.0: {} - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: false + repeat-element@1.1.4: {} - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: false + repeat-string@1.6.1: {} - /request-progress@3.0.0: - resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + request-progress@3.0.0: dependencies: throttleit: 1.0.0 - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + require-directory@2.1.1: {} - /require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - dev: false + require-from-string@2.0.2: {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + requires-port@1.0.0: {} - /resize-observer-polyfill@1.5.1: - resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} - dev: false + resize-observer-polyfill@1.5.1: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - dev: false + resolve-pkg-maps@1.0.0: {} - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: false + resolve-url@0.2.1: {} - /resolve@1.22.4: - resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} - hasBin: true + resolve@1.22.4: dependencies: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} + ret@0.1.15: {} - /retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - requiresBuild: true - dev: false + retry@0.12.0: optional: true - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true + reusify@1.0.4: {} - /rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + rfdc@1.3.0: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - dev: true - /rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true + rimraf@2.7.1: dependencies: glob: 7.2.3 - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /rimraf@5.0.1: - resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} - engines: {node: '>=14'} - hasBin: true + rimraf@5.0.1: dependencies: glob: 10.3.3 - dev: true - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: true - /rollup-plugin-terser@7.0.2(rollup@2.79.1): - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 + rollup-plugin-terser@7.0.2(rollup@2.79.1): dependencies: '@babel/code-frame': 7.22.13 jest-worker: 26.6.2 rollup: 2.79.1 serialize-javascript: 4.0.0 terser: 5.19.2 - dev: false - /rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} - hasBin: true + rollup@2.79.1: optionalDependencies: fsevents: 2.3.3 - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true + rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - /rope-sequence@1.3.4: - resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} - dev: false + rope-sequence@1.3.4: {} - /rtl-css-js@1.16.1: - resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + rtl-css-js@1.16.1: dependencies: '@babel/runtime': 7.22.11 - dev: false - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - dev: true - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - requiresBuild: true + rxjs@7.8.1: dependencies: tslib: 2.6.2 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.0.1: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 has-symbols: 1.0.3 isarray: 2.0.5 - /safe-array-concat@1.1.0: - resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.0: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.0: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-regex: 1.1.4 - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + safe-regex@1.1.0: dependencies: ret: 0.1.15 - dev: false - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + safer-buffer@2.1.2: {} - /sanitize-filename@1.6.3: - resolution: {integrity: sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==} + sanitize-filename@1.6.3: dependencies: truncate-utf8-bytes: 1.0.2 - dev: false - /sat@0.9.0: - resolution: {integrity: sha512-mxdv5RZJO4tdMnUURGU3gAMcnDUEwcNJwE+lPO0/V+rBeDvFLH3wEZEOR0fH7cTN0zQaNxBEbHnyQL9DzupwQQ==} - dev: false + sat@0.9.0: {} - /sax@1.3.0: - resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} - dev: false + sax@1.3.0: {} - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - /screenfull@5.2.0: - resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} - engines: {node: '>=0.10.0'} - dev: false + screenfull@5.2.0: {} - /sdp@3.2.0: - resolution: {integrity: sha512-d7wDPgDV3DDiqulJjKiV2865wKsJ34YI+NDREbm+FySq6WuKOikwyNQcm+doLAZ1O6ltdO0SeKle2xMpN3Brgw==} - dev: false + sdp@3.2.0: {} - /secure-compare@3.0.1: - resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} - dev: true + secure-compare@3.0.1: {} - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true + semver@7.5.4: dependencies: lru-cache: 6.0.0 - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.0: dependencies: lru-cache: 6.0.0 - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -14381,23 +18124,17 @@ packages: transitivePeerDependencies: - supports-color - /sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + sentence-case@3.0.4: dependencies: no-case: 3.0.4 tslib: 2.6.2 upper-case-first: 2.0.2 - dev: false - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + serialize-javascript@4.0.0: dependencies: randombytes: 2.1.0 - dev: false - /serve-index@1.9.1: - resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} - engines: {node: '>= 0.8.0'} + serve-index@1.9.1: dependencies: accepts: 1.3.8 batch: 0.6.1 @@ -14408,11 +18145,8 @@ packages: parseurl: 1.3.3 transitivePeerDependencies: - supports-color - dev: false - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -14421,13 +18155,9 @@ packages: transitivePeerDependencies: - supports-color - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /set-function-length@1.2.1: - resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} - engines: {node: '>= 0.4'} + set-function-length@1.2.1: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -14436,58 +18166,37 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} + set-function-name@2.0.1: dependencies: define-data-property: 1.1.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.0 - /set-harmonic-interval@1.0.1: - resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} - engines: {node: '>=6.9'} - dev: false + set-harmonic-interval@1.0.1: {} - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} + set-value@2.0.1: dependencies: extend-shallow: 2.0.1 is-extendable: 0.1.1 is-plain-object: 2.0.4 split-string: 3.1.0 - dev: false - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setimmediate@1.0.5: {} - /setprototypeof@1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: false + setprototypeof@1.1.0: {} - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + setprototypeof@1.2.0: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + sha.js@2.4.11: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - dev: true - /sharp@0.30.7: - resolution: {integrity: sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==} - engines: {node: '>=12.13.0'} - requiresBuild: true + sharp@0.30.7: dependencies: color: 4.2.3 detect-libc: 2.0.2 @@ -14497,162 +18206,104 @@ packages: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - dev: false - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true + shebang-regex@1.0.0: {} - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true + shell-quote@1.8.1: {} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.4: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 object-inspect: 1.12.3 - /side-channel@1.0.5: - resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} - engines: {node: '>= 0.4'} + side-channel@1.0.5: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - /siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - dev: true + siginfo@2.0.0: {} - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true + signal-exit@4.1.0: {} - /simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: false + simple-concat@1.0.1: {} - /simple-get@3.1.1: - resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + simple-get@3.1.1: dependencies: decompress-response: 4.2.1 once: 1.4.0 simple-concat: 1.0.1 - dev: false - /simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - dev: false - /simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + simple-swizzle@0.2.2: dependencies: is-arrayish: 0.3.2 - dev: false - - /simple-update-notifier@2.0.0: - resolution: {integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==} - engines: {node: '>=10'} + + simple-update-notifier@2.0.0: dependencies: semver: 7.6.0 - dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true + sisteransi@1.0.5: {} - /skinview-utils@0.7.1: - resolution: {integrity: sha512-4eLrMqR526ehlZbsd8SuZ/CHpS9GiH0xUMoV+PYlJVi95ZFz5HJu7Spt5XYa72DRS7wgt5qquvHZf0XZJgmu9Q==} - dev: false + skinview-utils@0.7.1: {} - /skinview3d@3.0.1: - resolution: {integrity: sha512-2LUSkzGxlZrTQelGT10jcW4TLiFTg5aZqXMEuqAFoWtk3qtaNu0qRFtwK5dN8zEXyKUJ3xlxah5eGtKY/NifQg==} + skinview3d@3.0.1: dependencies: '@types/three': 0.156.0 skinview-utils: 0.7.1 three: 0.154.0 - dev: false - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: true + slash@3.0.0: {} - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} + slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - /smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smart-buffer@4.2.0: {} - /snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + snake-case@3.0.4: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - dev: false - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} + snapdragon-node@2.1.1: dependencies: define-property: 1.0.0 isobject: 3.0.1 snapdragon-util: 3.0.1 - dev: false - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} + snapdragon-util@3.0.1: dependencies: kind-of: 3.2.2 - dev: false - /snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} + snapdragon@0.8.2: dependencies: base: 0.11.2 debug: 2.6.9 @@ -14664,23 +18315,17 @@ packages: use: 3.1.1 transitivePeerDependencies: - supports-color - dev: false - /socket.io-adapter@1.1.2: - resolution: {integrity: sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==} - dev: false + socket.io-adapter@1.1.2: {} - /socket.io-adapter@2.5.2: - resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + socket.io-adapter@2.5.2: dependencies: ws: 8.11.0 transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /socket.io-client@2.5.0: - resolution: {integrity: sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==} + socket.io-client@2.5.0: dependencies: backo2: 1.0.2 component-bind: 1.0.0 @@ -14697,11 +18342,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-client@4.7.2: - resolution: {integrity: sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==} - engines: {node: '>=10.0.0'} + socket.io-client@4.7.2: dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4(supports-color@8.1.1) @@ -14711,41 +18353,31 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-parser@3.3.3: - resolution: {integrity: sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==} + socket.io-parser@3.3.3: dependencies: component-emitter: 1.3.0 debug: 3.1.0 isarray: 2.0.1 transitivePeerDependencies: - supports-color - dev: false - /socket.io-parser@3.4.3: - resolution: {integrity: sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==} - engines: {node: '>=10.0.0'} + socket.io-parser@3.4.3: dependencies: component-emitter: 1.2.1 debug: 4.1.1 isarray: 2.0.1 transitivePeerDependencies: - supports-color - dev: false - /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.0 debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: false - /socket.io@2.5.0: - resolution: {integrity: sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==} + socket.io@2.5.0: dependencies: debug: 4.1.1 engine.io: 3.6.1 @@ -14757,11 +18389,8 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io@4.7.2: - resolution: {integrity: sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==} - engines: {node: '>=10.2.0'} + socket.io@4.7.2: dependencies: accepts: 1.3.8 base64id: 2.0.0 @@ -14774,130 +18403,78 @@ packages: - bufferutil - supports-color - utf-8-validate - dev: false - /socks-proxy-agent@7.0.0: - resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} - engines: {node: '>= 10'} - requiresBuild: true + socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 debug: 4.3.4(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color - dev: false optional: true - /socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} - requiresBuild: true + socks@2.7.1: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 - dev: false optional: true - /source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} - engines: {node: '>=0.10.0'} + source-map-js@1.0.2: {} - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated + source-map-resolve@0.5.3: dependencies: atob: 2.1.2 decode-uri-component: 0.2.2 resolve-url: 0.2.1 source-map-url: 0.4.1 urix: 0.1.0 - dev: false - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: false + source-map-url@0.4.1: {} - /source-map@0.5.6: - resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.6: {} - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.7: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + source-map@0.6.1: {} - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} + source-map@0.8.0-beta.0: dependencies: whatwg-url: 7.1.0 - dev: false - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: false + sourcemap-codec@1.4.8: {} - /space-separated-tokens@1.1.5: - resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} - dev: true + space-separated-tokens@1.1.5: {} - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 - dev: true - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true + spdx-exceptions@2.3.0: {} - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 - dev: true - /spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - dev: true + spdx-license-ids@3.0.13: {} - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} + split-string@3.1.0: dependencies: extend-shallow: 3.0.2 - dev: false - /split@0.3.3: - resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + split@0.3.3: dependencies: through: 2.3.8 - dev: false - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true + sprintf-js@1.0.3: {} - /sshpk@1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true + sshpk@1.17.0: dependencies: asn1: 0.2.6 assert-plus: 1.0.0 @@ -14909,125 +18486,80 @@ packages: safer-buffer: 2.1.2 tweetnacl: 0.14.5 - /ssri@9.0.1: - resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + ssri@9.0.1: dependencies: minipass: 3.3.6 - dev: false optional: true - /stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + stack-generator@2.0.10: dependencies: stackframe: 1.3.4 - dev: false - /stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - dev: true + stackback@0.0.2: {} - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false + stackframe@1.3.4: {} - /stacktrace-gps@3.1.2: - resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + stacktrace-gps@3.1.2: dependencies: source-map: 0.5.6 stackframe: 1.3.4 - dev: false - /stacktrace-js@2.0.2: - resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + stacktrace-js@2.0.2: dependencies: error-stack-parser: 2.1.4 stack-generator: 2.0.10 stacktrace-gps: 3.1.2 - dev: false - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} + static-extend@0.1.2: dependencies: define-property: 0.2.5 object-copy: 0.1.0 - dev: false - /stats-gl@1.0.5: - resolution: {integrity: sha512-XimMxvwnf1Qf5KwebhcoA34kcX+fWEkIl0QjNkCbu4IpoyDMMsOajExn7FIq5w569k45+LhmsuRlGSrsvmGdNw==} - dev: false + stats-gl@1.0.5: {} - /stats.js@0.17.0: - resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==} - dev: false + stats.js@0.17.0: {} - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false + statuses@1.5.0: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} + statuses@2.0.1: {} - /std-env@3.4.3: - resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} - dev: true + std-env@3.4.3: {} - /store2@2.14.2: - resolution: {integrity: sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==} - dev: true + store2@2.14.2: {} - /storybook@7.4.6: - resolution: {integrity: sha512-YkFSpnR47j5zz7yElA+2axLjXN7K7TxDGJRHHlqXmG5iQ0PXzmjrj2RxMDKFz4Ybp/QjEUoJ4rx//ESEY0Nb5A==} - hasBin: true + storybook@7.4.6(encoding@0.1.13): dependencies: - '@storybook/cli': 7.4.6 + '@storybook/cli': 7.4.6(encoding@0.1.13) transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - dev: true - /stream-browserify@3.0.0: - resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 readable-stream: 3.6.2 - dev: true - /stream-combiner@0.0.4: - resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + stream-combiner@0.0.4: dependencies: duplexer: 0.1.2 - dev: false - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: true + stream-shift@1.0.1: {} - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.matchall@4.0.10: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 @@ -15039,174 +18571,108 @@ packages: set-function-name: 2.0.1 side-channel: 1.0.4 - /string.prototype.padend@3.1.4: - resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} - engines: {node: '>= 0.4'} + string.prototype.padend@3.1.4: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - requiresBuild: true - dev: false + string_decoder@0.10.31: optional: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /stringify-object@3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} + stringify-object@3.3.0: dependencies: get-own-enumerable-property-symbols: 3.0.2 is-obj: 1.0.1 is-regexp: 1.0.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - dev: true - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-comments@2.0.1: - resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} - engines: {node: '>=10'} - dev: false + strip-comments@2.0.1: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + strip-final-newline@2.0.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-indent@4.0.0: - resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} - engines: {node: '>=12'} + strip-indent@4.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - requiresBuild: true - dev: false + strip-json-comments@2.0.1: {} - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + strip-literal@1.3.0: dependencies: acorn: 8.10.0 - dev: true - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false + stylis@4.2.0: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /synchronous-promise@2.0.17: - resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} - dev: true + synchronous-promise@2.0.17: {} - /systeminformation@5.21.24: - resolution: {integrity: sha512-xQada8ByGGFoRXJaUptGgddn3i7IjtSdqNdCKzB8xkzsM7pHnfLYBWxkPdGzhZ0Z/l+W1yo+aZQZ74d2isj8kw==} - engines: {node: '>=8.0.0'} - os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] - hasBin: true - requiresBuild: true - dev: false + systeminformation@5.21.24: optional: true - /tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - dev: false + tabbable@6.2.0: {} - /tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - /tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + tar-stream@2.2.0: dependencies: bl: 4.1.0 end-of-stream: 1.4.4 @@ -15214,9 +18680,7 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} - engines: {node: '>=10'} + tar@6.2.0: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -15225,85 +18689,55 @@ packages: mkdirp: 1.0.4 yallist: 4.0.0 - /telejson@7.2.0: - resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + telejson@7.2.0: dependencies: memoizerific: 1.11.3 - dev: true - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} + temp-dir@2.0.0: {} - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} + temp@0.8.4: dependencies: rimraf: 2.6.3 - dev: true - /tempy@0.6.0: - resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} - engines: {node: '>=10'} + tempy@0.6.0: dependencies: is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 - dev: false - /tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} - engines: {node: '>=10'} + tempy@1.0.1: dependencies: del: 6.1.1 is-stream: 2.0.1 temp-dir: 2.0.0 type-fest: 0.16.0 unique-string: 2.0.0 - dev: true - /terser@5.19.2: - resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} - engines: {node: '>=10'} - hasBin: true + terser@5.19.2: dependencies: '@jridgewell/source-map': 0.3.5 acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 - dev: false - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thenify@3.3.1: dependencies: any-promise: 1.3.0 - dev: false - /three-stdlib@2.28.5(three@0.154.0): - resolution: {integrity: sha512-JdLMhkpT+1ZWeQPyKQNW1zqUwISI2hsUljS6u3vB9lp5EvwsayaAzGnbVeR35895udOF+zxcTiQY3psk+qqlxg==} - peerDependencies: - three: 0.154.0 + three-stdlib@2.28.5(three@0.154.0): dependencies: '@types/draco3d': 1.4.7 '@types/offscreencanvas': 2019.7.2 @@ -15312,313 +18746,184 @@ packages: fflate: 0.6.10 potpack: 1.0.2 three: 0.154.0 - dev: false - /three.meshline@1.4.0: - resolution: {integrity: sha512-A8IsiMrWP8zmHisGDAJ76ZD7t/dOF/oCe/FUKNE6Bu01ZYEx8N6IlU/1Plb2aOZtAuWM2A8s8qS3hvY0OFuvOw==} - dev: false + three.meshline@1.4.0: {} - /three@0.154.0: - resolution: {integrity: sha512-Uzz8C/5GesJzv8i+Y2prEMYUwodwZySPcNhuJUdsVMH2Yn4Nm8qlbQe6qRN5fOhg55XB0WiLfTPBxVHxpE60ug==} + three@0.154.0: {} - /throttle-debounce@3.0.1: - resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} - engines: {node: '>=10'} - dev: false + throttle-debounce@3.0.1: {} - /throttleit@1.0.0: - resolution: {integrity: sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==} + throttleit@1.0.0: {} - /through2@0.6.5: - resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} - requiresBuild: true + through2@0.6.5: dependencies: readable-stream: 1.0.34 xtend: 4.0.2 - dev: false optional: true - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: true - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + through@2.3.8: {} - /timers-browserify@2.0.12: - resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} - engines: {node: '>=0.6.0'} + timers-browserify@2.0.12: dependencies: setimmediate: 1.0.5 - dev: true - /timm@1.7.1: - resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} - dev: false + timm@1.7.1: {} - /tiny-invariant@1.3.1: - resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} - dev: true + tiny-invariant@1.3.1: {} - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true + tinybench@2.5.1: {} - /tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - dev: false + tinycolor2@1.6.0: {} - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} - dev: true + tinypool@0.7.0: {} - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} - engines: {node: '>=14.0.0'} - dev: true + tinyspy@2.2.0: {} - /title-case@3.0.3: - resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + title-case@3.0.3: dependencies: tslib: 2.6.2 - dev: false - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + tmp@0.2.1: dependencies: rimraf: 3.0.2 - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true + tmpl@1.0.5: {} - /to-array@0.1.4: - resolution: {integrity: sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==} - dev: false + to-array@0.1.4: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + to-fast-properties@2.0.0: {} - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} + to-object-path@0.3.0: dependencies: kind-of: 3.2.2 - dev: false - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} + to-regex-range@2.1.1: dependencies: is-number: 3.0.0 repeat-string: 1.6.1 - dev: false - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} + to-regex@3.0.2: dependencies: define-property: 2.0.2 extend-shallow: 3.0.2 regex-not: 1.0.2 safe-regex: 1.1.0 - dev: false - /tocbot@4.21.2: - resolution: {integrity: sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw==} - dev: true + tocbot@4.21.2: {} - /toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} - dev: false + toggle-selection@1.0.6: {} - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + toidentifier@1.0.1: {} - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} + tough-cookie@4.1.3: dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@0.0.3: {} - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@1.0.1: dependencies: punycode: 2.3.1 - dev: false - /trim-newlines@4.1.1: - resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} - engines: {node: '>=12'} - dev: true + trim-newlines@4.1.1: {} - /trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - dev: false + trough@2.2.0: {} - /truncate-utf8-bytes@1.0.2: - resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} + truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.4 - dev: false - /ts-api-utils@1.0.3(typescript@5.2.2): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.0.3(typescript@5.2.2): dependencies: typescript: 5.2.2 - dev: true - /ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - dev: true + ts-dedent@2.2.0: {} - /ts-easing@0.2.0: - resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} - dev: false + ts-easing@0.2.0: {} - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + tsconfig-paths@3.14.2: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: true + tslib@1.14.1: {} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.2: {} - /tsx@4.7.0: - resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} - engines: {node: '>=18.0.0'} - hasBin: true + tsx@4.7.0: dependencies: esbuild: 0.19.11 get-tsconfig: 4.7.2 optionalDependencies: fsevents: 2.3.3 - dev: false - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + tweetnacl@0.14.5: {} - /twgl.js@5.5.4: - resolution: {integrity: sha512-6kFOmijOpmblTN9CCwOTCxK4lPg7rCyQjLuub6EMOlEp89Ex6yUcsMjsmH7andNPL2NE3XmHdqHeP5gVKKPhxw==} - dev: false + twgl.js@5.5.4: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: true + type-detect@4.0.8: {} - /type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} - engines: {node: '>=10'} + type-fest@0.16.0: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} + type-fest@0.21.3: {} - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true + type-fest@0.6.0: {} - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true + type-fest@0.8.1: {} - /type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} - engines: {node: '>=10'} - dev: true + type-fest@1.4.0: {} - /type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} - engines: {node: '>=12.20'} + type-fest@2.19.0: {} - /type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} + type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 is-typed-array: 1.1.12 - /typed-array-buffer@1.0.1: - resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.2 for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.12 - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 @@ -15626,100 +18931,62 @@ packages: has-proto: 1.0.1 is-typed-array: 1.1.12 - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.4: dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.12 - /typed-emitter@1.4.0: - resolution: {integrity: sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==} + typed-emitter@1.4.0: {} - /typed-emitter@2.1.0: - resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==} + typed-emitter@2.1.0: optionalDependencies: rxjs: 7.8.1 - /typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true + typedarray@0.0.6: {} - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - dev: true + typescript@5.2.2: {} - /ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} - dev: false + ua-parser-js@1.0.37: {} - /uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - dev: false + uc.micro@2.1.0: {} - /ufo@1.3.1: - resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - dev: true + ufo@1.3.1: {} - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - requiresBuild: true - dev: true + uglify-js@3.17.4: optional: true - /uint4@0.1.2: - resolution: {integrity: sha512-lhEx78gdTwFWG+mt6cWAZD/R6qrIj0TTBeH5xwyuDJyswLNlGe+KVlUPQ6+mx5Ld332pS0AMUTo9hIly7YsWxQ==} + uint4@0.1.2: {} - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.2 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - requiresBuild: true + undici-types@5.26.5: {} - /undici@5.25.4: - resolution: {integrity: sha512-450yJxT29qKMf3aoudzFpIciqpx6Pji3hEWaXqXmanbXF58LTAGCKxcJjxMXWu3iG+Mudgo3ZUfDB6YDFd/dAw==} - engines: {node: '>=14.0'} + undici@5.25.4: dependencies: '@fastify/busboy': 2.0.0 - dev: true - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} + unicode-canonical-property-names-ecmascript@2.0.0: {} - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} + unicode-match-property-value-ecmascript@2.1.0: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} + unicode-property-aliases-ecmascript@2.1.0: {} - /unidiff@1.0.2: - resolution: {integrity: sha512-2sbEzki5fBmjgAqoafwxRenfMcumMlmVAoJDwYJa3CI4ZVugkdR6qjTw5sVsl29/4JfBBXhWEAd5ars8nRdqXg==} + unidiff@1.0.2: dependencies: diff: 2.2.3 - dev: false - /unified@11.0.4: - resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + unified@11.0.4: dependencies: '@types/unist': 3.0.2 bail: 2.0.2 @@ -15728,278 +18995,166 @@ packages: is-plain-obj: 4.1.0 trough: 2.2.0 vfile: 6.0.1 - dev: false - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} + union-value@1.0.1: dependencies: arr-union: 3.1.0 get-value: 2.0.6 is-extendable: 0.1.1 set-value: 2.0.1 - dev: false - /union@0.5.0: - resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} - engines: {node: '>= 0.8.0'} + union@0.5.0: dependencies: qs: 6.11.2 - dev: true - /unique-filename@2.0.1: - resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + unique-filename@2.0.1: dependencies: unique-slug: 3.0.0 - dev: false optional: true - /unique-slug@3.0.0: - resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - requiresBuild: true + unique-slug@3.0.0: dependencies: imurmurhash: 0.1.4 - dev: false optional: true - /unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} - engines: {node: '>=8'} + unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 - /unist-util-is@4.1.0: - resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} - dev: true + unist-util-is@4.1.0: {} - /unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.2 - dev: false - /unist-util-visit-parents@3.1.1: - resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==} + unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.8 unist-util-is: 4.1.0 - dev: true - /unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 - dev: false - /unist-util-visit@2.0.3: - resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==} + unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.8 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 - dev: true - /unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.0.0: dependencies: '@types/unist': 3.0.2 unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - dev: false - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false + universalify@0.1.2: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} + universalify@0.2.0: {} - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} + universalify@2.0.0: {} - /unix-crypt-td-js@1.1.4: - resolution: {integrity: sha512-8rMeVYWSIyccIJscb9NdCfZKSRBKYTeVnwmiRYT2ulE3qd1RaDQ0xQDP+rI3ccIWbhu/zuo5cgN8z73belNZgw==} - dev: false + unix-crypt-td-js@1.1.4: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + unpipe@1.0.0: {} - /unplugin@1.5.0: - resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} + unplugin@1.5.0: dependencies: acorn: 8.10.0 chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 - dev: true - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} + unset-value@1.0.0: dependencies: has-value: 0.3.1 isobject: 3.0.1 - dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} + untildify@4.0.0: {} - /upath@1.2.0: - resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} - engines: {node: '>=4'} - dev: false + upath@1.2.0: {} - /update-browserslist-db@1.0.11(browserslist@4.21.10): - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.11(browserslist@4.21.10): dependencies: browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 - /upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + upper-case-first@2.0.2: dependencies: tslib: 2.6.2 - dev: false - /upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + upper-case@2.0.2: dependencies: tslib: 2.6.2 - dev: false - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.0 - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: false + urix@0.1.0: {} - /url-join@4.0.1: - resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} - dev: true + url-join@4.0.1: {} - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - /use-callback-ref@1.3.0(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.0(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 react: 18.2.0 tslib: 2.6.2 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /use-deep-compare@1.1.0(react@18.2.0): - resolution: {integrity: sha512-6yY3zmKNCJ1jjIivfZMZMReZjr8e6iC6Uqtp701jvWJ6ejC/usXD+JjmslZDPJQgX8P4B1Oi5XSLHkOLeYSJsA==} - peerDependencies: - react: ^18.2.0 + use-deep-compare@1.1.0(react@18.2.0): dependencies: dequal: 1.0.0 react: 18.2.0 - dev: true - /use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} - peerDependencies: - react: ^18.2.0 - react-dom: 16.8.0 - 18 + use-resize-observer@9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@juggle/resize-observer': 3.3.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /use-sidecar@1.1.2(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 - dev: true + optionalDependencies: + '@types/react': 18.2.20 - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^18.2.0 + use-sync-external-store@1.2.0(react@18.2.0): dependencies: react: 18.2.0 - /use-typed-event-listener@4.0.2(react@18.2.0)(typescript@5.2.2): - resolution: {integrity: sha512-AhjRw+qg5t7OWg7en2Q4XDCdi2iyhALFl71tITL3FeZqt/jD1Qa6KnbH/UolARtID1Gd0IElizbCgolv3ZbUFA==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - peerDependencies: - react: ^18.2.0 - typescript: '>=4.1.2' - peerDependenciesMeta: - typescript: - optional: true + use-typed-event-listener@4.0.2(react@18.2.0)(typescript@5.2.2): dependencies: '@babel/runtime': 7.22.11 react: 18.2.0 - typescript: 5.2.2 use-deep-compare: 1.1.0(react@18.2.0) - dev: true + optionalDependencies: + typescript: 5.2.2 - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: false + use@3.1.1: {} - /utf8-byte-length@1.0.4: - resolution: {integrity: sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==} - dev: false + utf8-byte-length@1.0.4: {} - /utif@2.0.1: - resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + utif@2.0.1: dependencies: pako: 1.0.11 - dev: false - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 @@ -16007,104 +19162,66 @@ packages: is-typed-array: 1.1.12 which-typed-array: 1.1.11 - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} + utils-merge@1.0.1: {} - /uuid-1345@1.0.2: - resolution: {integrity: sha512-bA5zYZui+3nwAc0s3VdGQGBfbVsJLVX7Np7ch2aqcEWFi5lsAEcmO3+lx3djM1npgpZI8KY2FITZ2uYTnYUYyw==} + uuid-1345@1.0.2: dependencies: macaddress: 0.5.3 - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false + uuid@3.4.0: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: true + uuid@9.0.1: {} - /v8-to-istanbul@9.1.3: - resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} - engines: {node: '>=10.12.0'} + v8-to-istanbul@9.1.3: dependencies: '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 2.0.0 - dev: true - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true - /valtio@1.11.2(@types/react@18.2.20)(react@18.2.0): - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true + valtio@1.11.2(@types/react@18.2.20)(react@18.2.0): dependencies: - '@types/react': 18.2.20 proxy-compare: 2.5.1 - react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.20 + react: 18.2.0 - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + vary@1.1.2: {} - /vec3@0.1.8: - resolution: {integrity: sha512-LfKrP625Bsg/Tj52YdYPsHmpsJuo+tc6fLxZxXjEo9k2xSspKlPvoYTHehykKhp1FvV9nm+XU3Ehej5/9tpDCg==} + vec3@0.1.8: {} - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} + verror@1.10.0: dependencies: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.3.0 - /vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 - dev: false - /vfile@6.0.1: - resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + vfile@6.0.1: dependencies: '@types/unist': 3.0.2 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - dev: false - /vite-node@0.34.6(@types/node@20.8.0): - resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} - engines: {node: '>=v14.18.0'} - hasBin: true + vite-node@0.34.6(@types/node@20.8.0)(terser@5.19.2): dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.10(@types/node@20.8.0) + vite: 4.4.10(@types/node@20.8.0)(terser@5.19.2) transitivePeerDependencies: - '@types/node' - less @@ -16114,108 +19231,38 @@ packages: - sugarss - supports-color - terser - dev: true - /vite@4.4.10(@types/node@20.8.0): - resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@4.4.10(@types/node@20.11.19)(terser@5.19.2): dependencies: - '@types/node': 20.8.0 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 optionalDependencies: + '@types/node': 20.11.19 fsevents: 2.3.3 + terser: 5.19.2 - /vite@4.5.2: - resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} - engines: {node: ^14.18.0 || >=16.0.0} - hasBin: true - peerDependencies: - '@types/node': '>= 14' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + vite@4.4.10(@types/node@20.8.0)(terser@5.19.2): + dependencies: + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + '@types/node': 20.8.0 + fsevents: 2.3.3 + terser: 5.19.2 + + vite@4.5.2(@types/node@20.8.0)(terser@5.19.2): dependencies: esbuild: 0.18.20 postcss: 8.4.35 rollup: 3.29.4 optionalDependencies: + '@types/node': 20.8.0 fsevents: 2.3.3 - dev: true + terser: 5.19.2 - /vitest@0.34.6: - resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true + vitest@0.34.6(terser@5.19.2): dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 @@ -16238,8 +19285,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.10(@types/node@20.8.0) - vite-node: 0.34.6(@types/node@20.8.0) + vite: 4.4.10(@types/node@20.8.0)(terser@5.19.2) + vite-node: 0.34.6(@types/node@20.8.0)(terser@5.19.2) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -16249,102 +19296,64 @@ packages: - sugarss - supports-color - terser - dev: true - /w3c-keyname@2.2.8: - resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - dev: false + w3c-keyname@2.2.8: {} - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /warning@4.0.3: - resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + warning@4.0.3: dependencies: loose-envify: 1.4.0 - dev: false - - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + + watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - dev: true - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: true - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@3.0.1: {} - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: false + webidl-conversions@4.0.2: {} - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} - dev: true + webpack-sources@3.2.3: {} - /webpack-virtual-modules@0.5.0: - resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} - dev: true + webpack-virtual-modules@0.5.0: {} - /webrtc-adapter@8.2.3: - resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==} - engines: {node: '>=6.0.0', npm: '>=3.10.0'} + webrtc-adapter@8.2.3: dependencies: sdp: 3.2.0 - dev: false - /websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} + websocket-driver@0.7.4: dependencies: http-parser-js: 0.5.8 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 - dev: false - /websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - dev: false + websocket-extensions@0.1.4: {} - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-fetch@3.6.18: - resolution: {integrity: sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==} - dev: false + whatwg-fetch@3.6.18: {} - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 tr46: 1.0.1 webidl-conversions: 4.0.2 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 @@ -16352,9 +19361,7 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -16368,20 +19375,15 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.1 which-typed-array: 1.1.14 - dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + which-collection@1.0.1: dependencies: is-map: 2.0.2 is-set: 2.0.2 is-weakmap: 2.0.1 is-weakset: 2.0.2 - dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.11: dependencies: available-typed-arrays: 1.0.5 call-bind: 1.0.2 @@ -16389,72 +19391,49 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.0 - /which-typed-array@1.1.14: - resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.14: dependencies: available-typed-arrays: 1.0.6 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + which@1.3.1: dependencies: isexe: 2.0.0 - dev: true - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /why-is-node-running@2.2.2: - resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} - engines: {node: '>=8'} - hasBin: true + why-is-node-running@2.2.2: dependencies: siginfo: 2.0.0 stackback: 0.0.2 - dev: true - /wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wide-align@1.1.5: dependencies: string-width: 4.2.3 - dev: false - /wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - dev: true + wordwrap@1.0.0: {} - /workbox-background-sync@7.0.0: - resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} + workbox-background-sync@7.0.0: dependencies: idb: 7.1.1 workbox-core: 7.0.0 - dev: false - /workbox-broadcast-update@7.0.0: - resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} + workbox-broadcast-update@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-build@7.0.0: - resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} - engines: {node: '>=16.0.0'} + workbox-build@7.0.0(@types/babel__core@7.20.2): dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.12.0) '@babel/core': 7.22.11 '@babel/preset-env': 7.22.10(@babel/core@7.22.11) '@babel/runtime': 7.22.11 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.22.11)(rollup@2.79.1) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.22.11)(@types/babel__core@7.20.2)(rollup@2.79.1) '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.1) '@rollup/plugin-replace': 2.4.2(rollup@2.79.1) '@surma/rollup-plugin-off-main-thread': 2.2.3 @@ -16490,56 +19469,40 @@ packages: transitivePeerDependencies: - '@types/babel__core' - supports-color - dev: false - /workbox-cacheable-response@7.0.0: - resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} + workbox-cacheable-response@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-core@7.0.0: - resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} - dev: false + workbox-core@7.0.0: {} - /workbox-expiration@7.0.0: - resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} + workbox-expiration@7.0.0: dependencies: idb: 7.1.1 workbox-core: 7.0.0 - dev: false - /workbox-google-analytics@7.0.0: - resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} + workbox-google-analytics@7.0.0: dependencies: workbox-background-sync: 7.0.0 workbox-core: 7.0.0 workbox-routing: 7.0.0 workbox-strategies: 7.0.0 - dev: false - /workbox-navigation-preload@7.0.0: - resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} + workbox-navigation-preload@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-precaching@7.0.0: - resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} + workbox-precaching@7.0.0: dependencies: workbox-core: 7.0.0 workbox-routing: 7.0.0 workbox-strategies: 7.0.0 - dev: false - /workbox-range-requests@7.0.0: - resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} + workbox-range-requests@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-recipes@7.0.0: - resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} + workbox-recipes@7.0.0: dependencies: workbox-cacheable-response: 7.0.0 workbox-core: 7.0.0 @@ -16547,217 +19510,111 @@ packages: workbox-precaching: 7.0.0 workbox-routing: 7.0.0 workbox-strategies: 7.0.0 - dev: false - /workbox-routing@7.0.0: - resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} + workbox-routing@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-strategies@7.0.0: - resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} + workbox-strategies@7.0.0: dependencies: workbox-core: 7.0.0 - dev: false - /workbox-streams@7.0.0: - resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} + workbox-streams@7.0.0: dependencies: workbox-core: 7.0.0 workbox-routing: 7.0.0 - dev: false - /workbox-sw@7.0.0: - resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} - dev: false + workbox-sw@7.0.0: {} - /workbox-window@7.0.0: - resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} + workbox-window@7.0.0: dependencies: '@types/trusted-types': 2.0.3 workbox-core: 7.0.0 - dev: false - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: true - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /ws@5.2.3: - resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@5.2.3: dependencies: async-limiter: 1.0.1 - dev: false - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@6.2.2: dependencies: async-limiter: 1.0.1 - dev: true - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@7.4.6: {} - /ws@8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} - 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 + ws@8.11.0: {} - /xhr@2.6.0: - resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + xhr@2.6.0: dependencies: global: 4.4.0 is-function: 1.0.2 parse-headers: 2.0.5 xtend: 4.0.2 - dev: false - /xml-parse-from-string@1.0.1: - resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} - dev: false + xml-parse-from-string@1.0.1: {} - /xml2js@0.4.23: - resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} - engines: {node: '>=4.0.0'} + xml2js@0.4.23: dependencies: sax: 1.3.0 xmlbuilder: 11.0.1 - dev: false - /xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - dev: false + xmlbuilder@11.0.1: {} - /xmlhttprequest-ssl@1.6.3: - resolution: {integrity: sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==} - engines: {node: '>=0.4.0'} - dev: false + xmlhttprequest-ssl@1.6.3: {} - /xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - dev: false + xmlhttprequest-ssl@2.0.0: {} - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + xtend@4.0.2: {} - /xxhash-wasm@0.4.2: - resolution: {integrity: sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA==} + xxhash-wasm@0.4.2: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false + yaml@1.10.2: {} - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} - engines: {node: '>= 14'} - dev: true + yaml@2.3.2: {} - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} - engines: {node: '>= 14'} - hasBin: true - dev: false + yaml@2.4.1: {} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: true + yargs-parser@20.2.9: {} - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: false + yargs-parser@21.1.1: {} - /yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs@16.2.0: dependencies: cliui: 7.0.4 escalade: 3.1.1 @@ -16766,11 +19623,8 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: true - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.1 @@ -16779,197 +19633,27 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: false - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - /yeast@0.1.2: - resolution: {integrity: sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==} - dev: false + yeast@0.1.2: {} - /yggdrasil@1.7.0: - resolution: {integrity: sha512-QBIo5fiNd7688G3FqXXYGr36uyrYzczlNuzpWFy2zL3+R+3KT2lF+wFxm51synfA3l3z6IBiGOc1/EVXWCYY1Q==} + yggdrasil@1.7.0(encoding@0.1.13): dependencies: - node-fetch: 2.7.0 + node-fetch: 2.7.0(encoding@0.1.13) uuid: 8.3.2 transitivePeerDependencies: - encoding - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - dev: true + yocto-queue@0.1.0: {} - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: true + yocto-queue@1.0.0: {} - /zustand@3.6.5(react@18.2.0): - resolution: {integrity: sha512-/WfLJuXiEJimt61KGMHebrFBwckkCHGhAgVXTgPQHl6IMzjqm6MREb1OnDSnCRiSmRdhgdFCctceg6tSm79hiw==} - engines: {node: '>=12.7.0'} - peerDependencies: - react: ^18.2.0 - peerDependenciesMeta: - react: - optional: true - dependencies: + zustand@3.6.5(react@18.2.0): + optionalDependencies: react: 18.2.0 - dev: false - - /zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - dev: false - - github.com/PrismarineJS/mineflayer/195b3cbd70a110080af9b77a4659991c5d9e484a: - resolution: {tarball: https://codeload.github.com/PrismarineJS/mineflayer/tar.gz/195b3cbd70a110080af9b77a4659991c5d9e484a} - name: mineflayer - version: 4.20.0 - engines: {node: '>=18'} - dependencies: - minecraft-data: 3.62.0 - minecraft-protocol: github.com/zardoy/minecraft-protocol/2c14a686bfe7cbd9a5c87b629b402295ee86219f - prismarine-biome: 1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0) - prismarine-block: github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0 - prismarine-chat: 1.9.1 - prismarine-chunk: 1.35.0(minecraft-data@3.62.0) - prismarine-entity: 2.3.1 - prismarine-item: 1.14.0 - prismarine-nbt: 2.5.0 - prismarine-physics: 1.8.0 - prismarine-recipe: 1.3.1(prismarine-registry@1.7.0) - prismarine-registry: 1.7.0 - prismarine-windows: 2.9.0 - prismarine-world: github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465 - protodef: 1.15.0 - typed-emitter: 1.4.0 - vec3: 0.1.8 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - github.com/PrismarineJS/node-process/380d0b4f4c86f1b65b216c311bf00431f314e88e: - resolution: {tarball: https://codeload.github.com/PrismarineJS/node-process/tar.gz/380d0b4f4c86f1b65b216c311bf00431f314e88e} - name: process - version: 0.11.10 - engines: {node: '>= 0.6.0'} - dev: true - - github.com/zardoy/browserfs/ab58ae8ef00e3a31db01909e365e6cb5188436e0: - resolution: {tarball: https://codeload.github.com/zardoy/browserfs/tar.gz/ab58ae8ef00e3a31db01909e365e6cb5188436e0} - name: browserfs - version: 2.0.0 - engines: {node: '>= 18'} - dev: false - - github.com/zardoy/browserfs/e60ca69e74888e057a96a468afe1d62347d3f56f: - resolution: {tarball: https://codeload.github.com/zardoy/browserfs/tar.gz/e60ca69e74888e057a96a468afe1d62347d3f56f} - name: browserfs - version: 2.0.0-zardoy - dependencies: - async: 2.6.4 - dev: false - - github.com/zardoy/diamond-square/915fce8e27fe8eb45464d89b9563956afa4f7687: - resolution: {tarball: https://codeload.github.com/zardoy/diamond-square/tar.gz/915fce8e27fe8eb45464d89b9563956afa4f7687} - name: diamond-square - version: 1.3.0 - dependencies: - minecraft-data: 3.62.0 - prismarine-chunk: 1.35.0(minecraft-data@3.62.0) - random-seed: 0.3.0 - vec3: 0.1.8 - dev: false - github.com/zardoy/minecraft-inventory-gui/6685fa4a10590a5decef90a454ba0b9e045e7737(@types/react@18.2.20)(react@18.2.0): - resolution: {tarball: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/6685fa4a10590a5decef90a454ba0b9e045e7737} - id: github.com/zardoy/minecraft-inventory-gui/6685fa4a10590a5decef90a454ba0b9e045e7737 - name: minecraft-inventory-gui - version: 1.0.1 - dependencies: - valtio: 1.11.2(@types/react@18.2.20)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react - dev: true - - github.com/zardoy/minecraft-protocol/2c14a686bfe7cbd9a5c87b629b402295ee86219f: - resolution: {tarball: https://codeload.github.com/zardoy/minecraft-protocol/tar.gz/2c14a686bfe7cbd9a5c87b629b402295ee86219f} - name: minecraft-protocol - version: 1.45.0 - engines: {node: '>=14'} - dependencies: - '@types/readable-stream': 4.0.10 - aes-js: 3.1.2 - buffer-equal: 1.0.1 - debug: 4.3.4(supports-color@8.1.1) - endian-toggle: 0.0.0 - lodash.get: 4.4.2 - lodash.merge: 4.6.2 - minecraft-data: 3.62.0 - minecraft-folder-path: 1.2.0 - node-fetch: 2.7.0 - node-rsa: 0.4.2 - prismarine-auth: 2.4.1 - prismarine-nbt: 2.5.0 - prismarine-realms: 1.3.2 - protodef: 1.15.0 - readable-stream: 4.5.2 - uuid-1345: 1.0.2 - yggdrasil: 1.7.0 - transitivePeerDependencies: - - encoding - - supports-color - - github.com/zardoy/prismarine-block/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0: - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-block/tar.gz/ada4ec3fdfbbc1cc20ab01d0e23f0718a77cc1a0} - name: prismarine-block - version: 1.17.1 - dependencies: - minecraft-data: 3.62.0 - prismarine-biome: 1.3.0(minecraft-data@3.62.0)(prismarine-registry@1.7.0) - prismarine-chat: 1.9.1 - prismarine-item: 1.14.0 - prismarine-nbt: 2.2.1 - prismarine-registry: 1.7.0 - - github.com/zardoy/prismarine-provider-anvil/0ddcd9d48574113308e1fbebef60816aced0846f(minecraft-data@3.62.0): - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/0ddcd9d48574113308e1fbebef60816aced0846f} - id: github.com/zardoy/prismarine-provider-anvil/0ddcd9d48574113308e1fbebef60816aced0846f - name: prismarine-provider-anvil - version: 2.7.0 - dependencies: - prismarine-chunk: 1.35.0(minecraft-data@3.62.0) - prismarine-nbt: 2.5.0 - uint4: 0.1.2 - vec3: 0.1.8 - transitivePeerDependencies: - - minecraft-data - dev: false - - github.com/zardoy/prismarine-world/6ae6f009d38460de284f8c226c665f04cbad9465: - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-world/tar.gz/6ae6f009d38460de284f8c226c665f04cbad9465} - name: prismarine-world - version: 3.6.2 - engines: {node: '>=8.0.0'} - dependencies: - vec3: 0.1.8 - - github.com/zardoy/prismarinejs-net-browserify/7d827dba61bd2f9ac9a6086fe2079a0fccadd070: - resolution: {tarball: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/7d827dba61bd2f9ac9a6086fe2079a0fccadd070} - name: net-browserify - version: 0.2.4 - dependencies: - body-parser: 1.20.2 - express: 4.18.2 - express-ws: 4.0.0(express@4.18.2) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false + zwitch@2.0.4: {} diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag index ca0c9f4dc..5fb121e4c 100644 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ b/prismarine-viewer/examples/_FragmentShader.frag @@ -1,31 +1,4 @@ -#version 300 es -precision highp float; - -out vec4 FragColor; - -in vec2 TexCoord; -flat in float TextureIndex; -flat in vec3 BiomeColor; - -uniform sampler2D texture1; - -void main() -{ - ivec2 texSize = textureSize(texture1, 0); - int TilesPerRow = texSize.x / 16; - - ivec2 coord = ivec2(16,16) * ivec2(int(TextureIndex)%TilesPerRow,int(TextureIndex)/TilesPerRow); - coord = coord + ivec2(TexCoord * 16.0f); - - vec4 t = texelFetch(texture1, coord, 0); - if (abs(t.x-t.y) <=0.010 || abs(t.x-t.z)<=0.010 ||abs(t.y-t.z) <=0.010) - { - FragColor = vec4(BiomeColor,1.0f)*t; - } - else - { - FragColor = t; - //FragColor = mix(t, vec4(BiomeColor, 1.0f), 0.5f); - } - +@fragment +fn main() -> @location(0) vec4f { + return vec4(1.0, 0.0, 0.0, 1.0); } diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert index 0acdacf94..0df4e5fc2 100644 --- a/prismarine-viewer/examples/_VertexShader.vert +++ b/prismarine-viewer/examples/_VertexShader.vert @@ -1,87 +1,12 @@ -#version 300 es -layout (location = 0) in vec3 aPos; -layout (location = 1) in vec2 aTexCoord; -layout (location = 2) in float CubeSide; - -layout (location = 3) in vec3 aOffset; -layout (location = 4) in float aTextureIndex; -layout (location = 6) in vec3 aBiomeColor; - -//#Define - -out vec2 TexCoord; -flat out float TextureIndex; -flat out vec3 BiomeColor; - -uniform mat4 view; -uniform mat4 projection; -uniform int tick; - -mat4 rotationX( in float angle ) { - return mat4( 1.0, 0, 0, 0, - 0, cos(angle), -sin(angle), 0, - 0, sin(angle), cos(angle), 0, - 0, 0, 0, 1); -} - -mat4 rotationY( in float angle ) { - return mat4( cos(angle), 0, sin(angle), 0, - 0, 1.0, 0, 0, - -sin(angle), 0, cos(angle), 0, - 0, 0, 0, 1); -} - -void main() -{ - //vec3 TransitionedPos = aPos; - vec3 TransitionedPos ;//= (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; - - TexCoord = vec2(aTexCoord.x, (1.0 - aTexCoord.y)); // Flipping image for opengl coordinates - TextureIndex = aTextureIndex; //Passing texture index to fragment shader - switch (int(CubeSide)) { - case 0: - TexCoord = vec2((1.0f-aTexCoord.x), (1.0 - aTexCoord.y)); - //TextureIndex = aTextureIndex.x; - //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; - - TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; - break; - case 1: - //TextureIndex = aTextureIndex.y; - TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(90.0f))).xyz; - break; - case 2: - //TextureIndex = aTextureIndex.z; - //TexCoord = vec2((1.0f-aTexCoord.y), (1.0f - aTexCoord.x)); - TransitionedPos = vec4(aPos,0.0f).xyz; - break; - case 3: - //TextureIndex = aTextureIndex.z; - //TexCoord = vec2(aTexCoord.y, (1.0f - aTexCoord.x)); - TexCoord = vec2(aTexCoord); - //TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(-90.0f))).xyz; - //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; - TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; - break; - case 4: - //TextureIndex = aTextureIndexPlus.x; - //TransitionedPos = vec4(aPos,0.0f).xyz; - //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; - TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; - break; - case 5: - //TextureIndex = aTextureIndexPlus.y; - //TransitionedPos = vec4(aPos,0.0f).xyz; - - //TransitionedPos = (vec4(aPos,0.0f) *rotationX(radians(180.0f))).xyz; - //TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(90.0f))).xyz; - TransitionedPos = (vec4(aPos,0.0f) *rotationY(radians(-90.0f))).xyz; - break; - } - TextureIndex += float(tick); - - BiomeColor = aBiomeColor; - - gl_Position = projection * view * vec4(TransitionedPos + aOffset + vec3(0.5f,0.5f,0.5f), 1.0f); //Offseting by 0.5 to center the cube - //CubeSideIndex = CubeSide; //Passing cube side index to fragment shader +@vertex +fn main( + @builtin(vertex_index) VertexIndex : u32 +) -> @builtin(position) vec4f { + var pos = array( + vec2(0.0, 0.5), + vec2(-0.5, -0.5), + vec2(0.5, -0.5) + ); + + return vec4f(pos[VertexIndex], 0.0, 1.0); } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index a5c9f6720..f89a95f56 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -14,12 +14,12 @@ import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' import { findTextureInBlockStates } from '../../src/playerWindows' -import { initWebglRenderer, loadFixtureSides, setAnimationTick } from './webglRenderer' +import { initWebgpuRenderer, loadFixtureSides, setAnimationTick } from './webgpuRendererMain' import { renderToDom } from '@zardoy/react-util' globalThis.THREE = THREE //@ts-ignore -import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; +import { OrbitControls } from 'three/addons/controls/OrbitControls.js' import { renderPlayground } from './TouchControls2' import { WorldRendererWebgl } from '../viewer/lib/worldrendererWebgl' import { TextureAnimation } from './TextureAnimation' @@ -137,6 +137,7 @@ async function main () { // chunk1.setBlockStateId(targetPos.offset(0, 1, 0), 1) // chunk1.setBlockStateId(targetPos.offset(1, 1, 0), 1) // chunk1.setBlockStateId(targetPos.offset(-1, 1, 0), 1) + //@ts-ignore const world = new World((chunkX, chunkZ) => { // if (chunkX === 0 && chunkZ === 0) return chunk1 // if (chunkX === 1 && chunkZ === 0) return chunk2 @@ -157,14 +158,14 @@ async function main () { viewer.setVersion(version) globalThis.viewer = viewer - await initWebglRenderer(version, () => { }, !enableControls && !fixture, true) + await initWebgpuRenderer(version, () => { }, !enableControls && !fixture, true) const simpleControls = () => { let pressedKeys = new Set() const loop = () => { // Create a vector that points in the direction the camera is looking - let direction = new THREE.Vector3(0, 0, 0); + let direction = new THREE.Vector3(0, 0, 0) if (pressedKeys.has('KeyW')) { - direction.z = -0.5; + direction.z = -0.5 } if (pressedKeys.has('KeyS')) { direction.z += 0.5 @@ -183,10 +184,10 @@ async function main () { if (pressedKeys.has('Space')) { viewer.camera.position.y += 0.5 } - direction.applyQuaternion(viewer.camera.quaternion); - direction.y = 0; + direction.applyQuaternion(viewer.camera.quaternion) + direction.y = 0 // Add the vector to the camera's position to move the camera - viewer.camera.position.add(direction); + viewer.camera.position.add(direction) } setInterval(loop, 1000 / 30) const keys = (e) => { @@ -244,7 +245,7 @@ async function main () { viewer.camera.position.set(pos[0], pos[1], pos[2]) } - if (!enableControls) return + return // Create viewer diff --git a/prismarine-viewer/examples/webglRenderer.ts b/prismarine-viewer/examples/webgpuRendererMain.ts similarity index 95% rename from prismarine-viewer/examples/webglRenderer.ts rename to prismarine-viewer/examples/webgpuRendererMain.ts index 1047a50f2..947eca856 100644 --- a/prismarine-viewer/examples/webglRenderer.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -73,7 +73,7 @@ export const removeBlocksSection = (key) => { } let playground = false -export const initWebglRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { +export const initWebgpuRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { playground = actuallyPlayground await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) @@ -93,7 +93,7 @@ export const initWebglRenderer = async (version: string, postRender = () => { }, const offscreen = canvas.transferControlToOffscreen() // replacable by initWebglRenderer - worker = new Worker('./webglRendererWorker.js') + worker = new Worker('./webgpuRendererWorker.js') addFpsCounters() sendWorkerMessage({ canvas: offscreen, @@ -159,7 +159,7 @@ globalThis.exportFixture = () => { worker.postMessage({ type: 'exportData' }) const controller = new AbortController() worker.addEventListener('message', async (e) => { - const receivedData = e.data.data; + const receivedData = e.data.data console.log('received fixture') // await new Promise(resolve => { // setTimeout(resolve, 0) @@ -194,7 +194,7 @@ const addFpsCounters = () => { worker.addEventListener('message', (e) => { if (e.data.type === 'fps') { updateText(`FPS: ${e.data.fps}`) - if (prevTimeout) clearTimeout(prevTimeout); + if (prevTimeout) clearTimeout(prevTimeout) prevTimeout = setTimeout(() => { updateText('') }, 1002) diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts new file mode 100644 index 000000000..fb6549124 --- /dev/null +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -0,0 +1,486 @@ +/// +import * as THREE from 'three' + +//@ts-ignore +import VertShader from './_VertexShader.vert' +//@ts-ignore +import FragShader from './_FragmentShader.frag' +import { BlockFaceType, BlockType } from './shared' +import * as tweenJs from '@tweenjs/tween.js' +import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './cube' + +let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] +let allSidesAdded = 0 +let needsSidesUpdate = false + +let chunksArrIndexes = {} +let freeArrayIndexes = [] as [number, number][] +let rendering = true +let sidePositions +let updateCubes: (startIndex: any, forceUpdate?) => void +let lastNotUpdatedIndex +let lastNotUpdatedArrSize +let animationTick = 0 + +const updateCubesWhenAvailable = (pos) => { + if (updateCubes) { + updateCubes(pos) + } else { + setTimeout(updateCubesWhenAvailable, 100) + } +} + +const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) +globalThis.camera = camera + +let renderedFrames = 0 +setInterval(() => { + // console.log('FPS:', renderedFrames) + postMessage({ type: 'fps', fps: renderedFrames }) + renderedFrames = 0 +}, 1000) + +const updateSize = (width, height) => { + camera.aspect = width / height + camera.updateProjectionMatrix() +} + + +export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { + // isPlayground = false + // blockStates = blockStatesJson + const textureBitmap = await createImageBitmap(imageBlob) + const textureWidth = textureBitmap.width + const textureHeight = textureBitmap.height + + const adapter = await navigator.gpu.requestAdapter() + const device = await adapter.requestDevice() + + const ctx = canvas.getContext('webgpu')! + + const presentationFormat = navigator.gpu.getPreferredCanvasFormat() + + ctx.configure({ + device, + format: presentationFormat, + alphaMode: 'premultiplied', + }) + + const verticesBuffer = device.createBuffer({ + size: cubeVertexArray.byteLength, + usage: GPUBufferUsage.VERTEX, + mappedAtCreation: true, + }) + new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) + verticesBuffer.unmap() + + const code = /* wgsl */ ` + struct Uniforms { + modelViewProjectionMatrix : mat4x4f, + } + + @group(0) @binding(0) var uniforms : Uniforms; + @group(0) @binding(1) var mySampler: sampler; + @group(0) @binding(2) var myTexture: texture_2d; + + struct VertexOutput { + @builtin(position) Position : vec4f, + @location(0) fragUV : vec2f, + } + + @vertex + fn vertex_main( + @location(0) position : vec4f, + @location(1) uv : vec2f + ) -> VertexOutput { + return VertexOutput(uniforms.modelViewProjectionMatrix * position, uv); + } + + @fragment + fn fragment_main(@location(0) fragUV: vec2f) -> @location(0) vec4f { + return textureSample(myTexture, mySampler, fragUV); + } + ` + + const trianglePipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: device.createShaderModule({ + code: VertShader + }), + }, + fragment: { + module: device.createShaderModule({ + code: FragShaderOverride || FragShader + }), + targets: [ + { + format: presentationFormat, + }, + ], + }, + primitive: { + topology: 'triangle-list', + }, + }) + + const pipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: device.createShaderModule({ + code, + }), + buffers: [ + { + arrayStride: cubeVertexSize, + attributes: [ + { + // position + shaderLocation: 0, + offset: cubePositionOffset, + format: 'float32x4', + }, + { + // uv + shaderLocation: 1, + offset: cubeUVOffset, + format: 'float32x2', + }, + ], + }, + ], + }, + fragment: { + module: device.createShaderModule({ + code, + }), + targets: [ + { + format: presentationFormat, + }, + ], + }, + primitive: { + topology: 'triangle-list', + cullMode: 'back', + }, + depthStencil: { + depthWriteEnabled: true, + depthCompare: 'less', + format: 'depth24plus', + }, + }) + + const depthTexture = device.createTexture({ + size: [canvas.width, canvas.height], + format: 'depth24plus', + usage: GPUTextureUsage.RENDER_ATTACHMENT, + }) + + const uniformBufferSize = 4 * 16 // 4x4 matrix + const uniformBuffer = device.createBuffer({ + size: uniformBufferSize, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + }) + + // Fetch the image and upload it into a GPUTexture. + let cubeTexture: GPUTexture + { + cubeTexture = device.createTexture({ + size: [textureBitmap.width, textureBitmap.height, 1], + format: 'rgba8unorm', + usage: + GPUTextureUsage.TEXTURE_BINDING | + GPUTextureUsage.COPY_DST | + GPUTextureUsage.RENDER_ATTACHMENT, + }) + device.queue.copyExternalImageToTexture( + { source: textureBitmap }, + { texture: cubeTexture }, + [textureBitmap.width, textureBitmap.height] + ) + } + + const sampler = device.createSampler({ + magFilter: 'linear', + minFilter: 'linear', + }) + + const uniformBindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { + binding: 0, + resource: { + buffer: uniformBuffer, + }, + }, + { + binding: 1, + resource: sampler, + }, + { + binding: 2, + resource: cubeTexture.createView(), + }, + ], + }) + + const renderPassDescriptor: GPURenderPassDescriptor = { + colorAttachments: [ + { + view: undefined, // Assigned later + + clearValue: [0.5, 0.5, 0.5, 1.0], + loadOp: 'clear', + storeOp: 'store', + }, + ], + depthStencilAttachment: { + view: depthTexture.createView(), + + depthClearValue: 1.0, + depthLoadOp: 'clear', + depthStoreOp: 'store', + }, + } + + const loop = () => { + const now = Date.now() + tweenJs.update() + + const modelViewProjectionMat4 = new THREE.Matrix4() + const projectionMatrix = camera.projectionMatrix + modelViewProjectionMat4.multiplyMatrices(projectionMatrix, camera.matrix.invert()) + const modelViewProjection = new Float32Array(modelViewProjectionMat4.elements) + globalThis.modelViewProjection = modelViewProjection + device.queue.writeBuffer( + uniformBuffer, + 0, + modelViewProjection.buffer, + modelViewProjection.byteOffset, + modelViewProjection.byteLength + ) + renderPassDescriptor.colorAttachments[0].view = ctx + .getCurrentTexture() + .createView() + + const commandEncoder = device.createCommandEncoder() + const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor) + passEncoder.setPipeline(pipeline) + passEncoder.setBindGroup(0, uniformBindGroup) + passEncoder.setVertexBuffer(0, verticesBuffer) + passEncoder.draw(cubeVertexCount) + passEncoder.end() + device.queue.submit([commandEncoder.finish()]) + renderedFrames++ + if (rendering) { + requestAnimationFrame(loop) + } + } + + const triangleLoop = () => { + const commandEncoder = device.createCommandEncoder() + const textureView = ctx.getCurrentTexture().createView() + + const renderPassDescriptor: GPURenderPassDescriptor = { + colorAttachments: [ + { + view: textureView, + clearValue: [0, 0, 0, 1], + loadOp: 'clear', + storeOp: 'store', + }, + ], + } + + const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor) + passEncoder.setPipeline(trianglePipeline) + passEncoder.draw(3) + passEncoder.end() + + device.queue.submit([commandEncoder.finish()]) + requestAnimationFrame(triangleLoop) + } + + // loop() + triangleLoop() + + return canvas +} + +let fullReset + +const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { + const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { + const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' + const shader = gl.createShader(type)! + gl.shaderSource(shader, source) + gl.compileShader(shader) + + const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) + if (!success) { + const info = gl.getShaderInfoLog(shader) + gl.deleteShader(shader) + throw new Error(`Shader ${shaderName} compile error: ` + info) + } + return shader + } + + + + const program = gl.createProgram()! + gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) + gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) + gl.linkProgram(program) + const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) + if (!linkSuccess) { + const info = gl.getProgramInfoLog(program) + gl.deleteProgram(program) + throw new Error('Program link error: ' + info) + } + return program +} + +let started = false +let newWidth: number | undefined +let newHeight: number | undefined +let autoTickUpdate = undefined as number | undefined +onmessage = function (e) { + if (!started) { + started = true + initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) + return + } + if (e.data.type === 'startRender') { + rendering = true + } + if (e.data.type === 'stopRender') { + rendering = false + } + if (e.data.type === 'resize') { + newWidth = e.data.newWidth + newHeight = e.data.newHeight + } + if (e.data.type === 'addBlocksSection') { + const currentLength = allSides.length + // in: object - name, out: [x, y, z, name] + const newData = Object.entries(e.data.data.blocks).flatMap(([key, value]) => { + const [x, y, z] = key.split(',').map(Number) + const block = value as BlockType + return block.sides.map((side) => { + return [x, y, z, side] as [number, number, number, BlockFaceType] + }) + }) + // find freeIndexes if possible + const freeArea = freeArrayIndexes.find(([startIndex, endIndex]) => endIndex - startIndex >= newData.length) + if (freeArea) { + const [startIndex, endIndex] = freeArea + allSides.splice(startIndex, newData.length, ...newData) + lastNotUpdatedIndex ??= startIndex + const freeAreaIndex = freeArrayIndexes.indexOf(freeArea) + freeArrayIndexes[freeAreaIndex] = [startIndex + newData.length, endIndex] + if (freeArrayIndexes[freeAreaIndex][0] >= freeArrayIndexes[freeAreaIndex][1]) { + freeArrayIndexes.splice(freeAreaIndex, 1) + // todo merge + } + lastNotUpdatedArrSize = newData.length + console.log('using free area', freeArea) + } + + chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] + allSides.push(...newData) + lastNotUpdatedIndex ??= currentLength + // updateCubes?.(currentLength) + } + if (e.data.type === 'addBlocksSectionDone') { + updateCubesWhenAvailable(lastNotUpdatedIndex) + lastNotUpdatedIndex = undefined + lastNotUpdatedArrSize = undefined + } + if (e.data.type === 'removeBlocksSection') { + // fill data with 0 + const [startIndex, endIndex] = chunksArrIndexes[e.data.key] + for (let i = startIndex; i < endIndex; i++) { + allSides[i] = undefined + } + lastNotUpdatedArrSize = endIndex - startIndex + updateCubes(startIndex) + + // freeArrayIndexes.push([startIndex, endIndex]) + + // // merge freeArrayIndexes TODO + // if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)?.[1]) { + // const [startIndex, endIndex] = freeArrayIndexes.pop()! + // const [startIndex2, endIndex2] = freeArrayIndexes.pop()! + // freeArrayIndexes.push([startIndex2, endIndex]) + // } + } + if (e.data.type === 'camera') { + camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') + // camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === 0) { + // initial camera position + camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + } else { + new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 50).start() + } + } + if (e.data.type === 'animationTick') { + if (e.data.frames <= 0) { + autoTickUpdate = undefined + animationTick = 0 + return + } + if (e.data.tick === -1) { + autoTickUpdate = e.data.frames + } else { + autoTickUpdate = undefined + animationTick = e.data.tick % 20 // todo update automatically in worker + } + } + if (e.data.type === 'fullReset') { + fullReset() + } + if (e.data.type === 'exportData') { + const exported = exportData() + postMessage({ type: 'exportData', data: exported }, undefined, [exported.sides.buffer]) + } + if (e.data.type === 'loadFixture') { + // allSides = e.data.json.map(([x, y, z, face, textureIndex]) => { + // return [x, y, z, { face, textureIndex }] as [number, number, number, BlockFaceType] + // }) + const dataSize = e.data.json.length / 5 + for (let i = 0; i < e.data.json.length; i += 5) { + allSides.push([e.data.json[i], e.data.json[i + 1], e.data.json[i + 2], { face: e.data.json[i + 3], textureIndex: e.data.json[i + 4] }]) + } + updateCubesWhenAvailable(0) + } +} + +globalThis.testDuplicates = () => { + const duplicates = allSides.filter((value, index, self) => self.indexOf(value) !== index) + console.log('duplicates', duplicates) +} + +const exportData = () => { + // Calculate the total length of the final array + const totalLength = allSides.length * 5 + + // Create a new Int16Array with the total length + const flatData = new Int16Array(totalLength) + + // Fill the flatData array + for (let i = 0; i < allSides.length; i++) { + const [x, y, z, side] = allSides[i] + flatData.set([x, y, z, side.face, side.textureIndex], i * 5) + } + + return { sides: flatData } +} + +setInterval(() => { + if (autoTickUpdate) { + animationTick = (animationTick + 1) % autoTickUpdate + } +}, 1000 / 20) diff --git a/src/index.ts b/src/index.ts index 8310b810b..f428154bb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -96,7 +96,7 @@ import { handleMovementStickDelta, joystickPointer } from './react/TouchAreasCon import { possiblyHandleStateVariable } from './googledrive' import flyingSquidEvents from './flyingSquidEvents' import { hideNotification, notificationProxy } from './react/NotificationProvider' -import { initWebglRenderer } from 'prismarine-viewer/examples/webglRenderer' +import { initWebgpuRenderer } from 'prismarine-viewer/examples/webgpuRendererMain' import { addNewStat } from 'prismarine-viewer/examples/newStats' // import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' @@ -388,7 +388,7 @@ async function connect (connectOptions: { if (downloadVersion) { await downloadMcData(downloadVersion) } - await initWebglRenderer(downloadVersion, () => { + await initWebgpuRenderer(downloadVersion, () => { postRenderFrameFn() viewer.update() }) From 4abdead924ccf4b1a45b407881cd0fa2e691e0e1 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 22 May 2024 00:14:46 +0300 Subject: [PATCH 087/303] working cube! --- buildWorkers.mjs | 7 +- esbuild.mjs | 3 +- prismarine-viewer/examples/Cube.frag.wgsl | 10 + prismarine-viewer/examples/Cube.vert.wgsl | 22 + prismarine-viewer/examples/cube.tsx | 51 ++ prismarine-viewer/examples/playground.ts | 1 + .../examples/webgpuRendererWorker.ts | 441 ++++++++---------- prismarine-viewer/viewer/lib/viewer.ts | 4 +- src/globals.d.ts | 10 +- 9 files changed, 289 insertions(+), 260 deletions(-) create mode 100644 prismarine-viewer/examples/Cube.frag.wgsl create mode 100644 prismarine-viewer/examples/Cube.vert.wgsl create mode 100644 prismarine-viewer/examples/cube.tsx diff --git a/buildWorkers.mjs b/buildWorkers.mjs index 24e986309..cf39f8867 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -8,7 +8,7 @@ const watch = process.argv.includes('-w') const result = await (watch ? context : build)({ bundle: true, platform: 'browser', - entryPoints: ['prismarine-viewer/examples/webglRendererWorker.ts'], + entryPoints: ['prismarine-viewer/examples/webgpuRendererWorker.ts'], outdir: 'prismarine-viewer/public/', sourcemap: watch ? 'inline' : 'external', minify: !watch, @@ -33,7 +33,7 @@ const result = await (watch ? context : build)({ plugins: [ { name: 'writeOutput', - setup (build) { + setup(build) { build.onEnd(({ outputFiles }) => { for (const file of outputFiles) { for (const dir of ['prismarine-viewer/public', 'dist']) { @@ -47,7 +47,8 @@ const result = await (watch ? context : build)({ ], loader: { '.vert': 'text', - '.frag': 'text' + '.frag': 'text', + '.wgsl': 'text', }, mainFields: [ 'browser', 'module', 'main' diff --git a/esbuild.mjs b/esbuild.mjs index 6f7f903ee..6a425073c 100644 --- a/esbuild.mjs +++ b/esbuild.mjs @@ -80,7 +80,8 @@ const buildOptions = { '.png': 'dataurl', '.map': 'empty', '.vert': 'text', - '.frag': 'text' + '.frag': 'text', + '.wgsl': 'text', }, write: false, // todo would be better to enable? diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl new file mode 100644 index 000000000..c438e9eea --- /dev/null +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -0,0 +1,10 @@ +@group(0) @binding(1) var mySampler: sampler; +@group(0) @binding(2) var myTexture: texture_2d; + +@fragment +fn main( + @location(0) fragUV: vec2f, + @location(1) fragPosition: vec4f +) -> @location(0) vec4f { + return textureSample(myTexture, mySampler, fragUV); +} diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl new file mode 100644 index 000000000..5f4b0f271 --- /dev/null +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -0,0 +1,22 @@ +struct Uniforms { + modelViewProjectionMatrix : mat4x4f, +} +@binding(0) @group(0) var uniforms : Uniforms; + +struct VertexOutput { + @builtin(position) Position : vec4f, + @location(0) fragUV : vec2f, + @location(1) fragPosition: vec4f, +} + +@vertex +fn main( + @location(0) position : vec4f, + @location(1) uv : vec2f +) -> VertexOutput { + var output : VertexOutput; + output.Position = uniforms.modelViewProjectionMatrix * position; + output.fragUV = uv; + output.fragPosition = 0.5 * (position + vec4(1.0, 1.0, 1.0, 1.0)); + return output; +} diff --git a/prismarine-viewer/examples/cube.tsx b/prismarine-viewer/examples/cube.tsx new file mode 100644 index 000000000..f2a591821 --- /dev/null +++ b/prismarine-viewer/examples/cube.tsx @@ -0,0 +1,51 @@ +export const cubeVertexSize = 4 * 10 // Byte size of one cube vertex. +export const cubePositionOffset = 0 +export const cubeColorOffset = 4 * 4 // Byte offset of cube vertex color attribute. +export const cubeUVOffset = 4 * 8 +export const cubeVertexCount = 36 + +//@ts-format-ignore-region +export const cubeVertexArray = new Float32Array([ + // float4 position, float4 color, float2 uv, + 1, -1, 1, 1, 1, 0, 1, 1, 0, 1, + -1, -1, 1, 1, 0, 0, 1, 1, 1, 1, + -1, -1, -1, 1, 0, 0, 0, 1, 1, 0, + 1, -1, -1, 1, 1, 0, 0, 1, 0, 0, + 1, -1, 1, 1, 1, 0, 1, 1, 0, 1, + -1, -1, -1, 1, 0, 0, 0, 1, 1, 0, + + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, -1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, -1, -1, 1, 1, 0, 0, 1, 1, 0, + 1, 1, -1, 1, 1, 1, 0, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, -1, -1, 1, 1, 0, 0, 1, 1, 0, + + -1, 1, 1, 1, 0, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, -1, 1, 1, 1, 0, 1, 1, 0, + -1, 1, -1, 1, 0, 1, 0, 1, 0, 0, + -1, 1, 1, 1, 0, 1, 1, 1, 0, 1, + 1, 1, -1, 1, 1, 1, 0, 1, 1, 0, + + -1, -1, 1, 1, 0, 0, 1, 1, 0, 1, + -1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, + -1, -1, -1, 1, 0, 0, 0, 1, 0, 0, + -1, -1, 1, 1, 0, 0, 1, 1, 0, 1, + -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, + + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + -1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + -1, -1, 1, 1, 0, 0, 1, 1, 1, 0, + -1, -1, 1, 1, 0, 0, 1, 1, 1, 0, + 1, -1, 1, 1, 1, 0, 1, 1, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + + 1, -1, -1, 1, 1, 0, 0, 1, 0, 1, + -1, -1, -1, 1, 0, 0, 0, 1, 1, 1, + -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, + 1, 1, -1, 1, 1, 1, 0, 1, 0, 0, + 1, -1, -1, 1, 1, 0, 0, 1, 0, 1, + -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, + ]); diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index f89a95f56..041c5832e 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -222,6 +222,7 @@ async function main () { } window.addEventListener('pointermove', mouseMove) } + viewer.camera.position.set(0, 0, 8) simpleControls() renderPlayground() diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index fb6549124..fdc031359 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -1,13 +1,12 @@ /// import * as THREE from 'three' - -//@ts-ignore -import VertShader from './_VertexShader.vert' -//@ts-ignore -import FragShader from './_FragmentShader.frag' import { BlockFaceType, BlockType } from './shared' import * as tweenJs from '@tweenjs/tween.js' import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './cube' +//@ts-ignore +import VertShader from './Cube.vert.wgsl' +//@ts-ignore +import FragShader from './Cube.frag.wgsl' let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] let allSidesAdded = 0 @@ -46,214 +45,210 @@ const updateSize = (width, height) => { } -export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { - // isPlayground = false - // blockStates = blockStatesJson - const textureBitmap = await createImageBitmap(imageBlob) - const textureWidth = textureBitmap.width - const textureHeight = textureBitmap.height - - const adapter = await navigator.gpu.requestAdapter() - const device = await adapter.requestDevice() - - const ctx = canvas.getContext('webgpu')! - - const presentationFormat = navigator.gpu.getPreferredCanvasFormat() - - ctx.configure({ - device, - format: presentationFormat, - alphaMode: 'premultiplied', - }) - - const verticesBuffer = device.createBuffer({ - size: cubeVertexArray.byteLength, - usage: GPUBufferUsage.VERTEX, - mappedAtCreation: true, - }) - new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) - verticesBuffer.unmap() - - const code = /* wgsl */ ` - struct Uniforms { - modelViewProjectionMatrix : mat4x4f, - } - - @group(0) @binding(0) var uniforms : Uniforms; - @group(0) @binding(1) var mySampler: sampler; - @group(0) @binding(2) var myTexture: texture_2d; - - struct VertexOutput { - @builtin(position) Position : vec4f, - @location(0) fragUV : vec2f, - } - - @vertex - fn vertex_main( - @location(0) position : vec4f, - @location(1) uv : vec2f - ) -> VertexOutput { - return VertexOutput(uniforms.modelViewProjectionMatrix * position, uv); - } - - @fragment - fn fragment_main(@location(0) fragUV: vec2f) -> @location(0) vec4f { - return textureSample(myTexture, mySampler, fragUV); - } - ` - - const trianglePipeline = device.createRenderPipeline({ - layout: 'auto', - vertex: { - module: device.createShaderModule({ - code: VertShader - }), - }, - fragment: { - module: device.createShaderModule({ - code: FragShaderOverride || FragShader - }), - targets: [ +class WebgpuRendererWorker { + device: GPUDevice + renderPassDescriptor: GPURenderPassDescriptor + uniformBindGroup: GPUBindGroup + uniformBuffer: GPUBuffer + ctx: GPUCanvasContext + verticesBuffer: GPUBuffer + pipeline: GPURenderPipeline + + constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { + this.init() + } + + async init () { + const { canvas, imageBlob, isPlayground, FragShaderOverride } = this + + updateSize(canvas.width, canvas.height) + // export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { + // isPlayground = false + // blockStates = blockStatesJson + const textureBitmap = await createImageBitmap(imageBlob) + const textureWidth = textureBitmap.width + const textureHeight = textureBitmap.height + + const adapter = await navigator.gpu.requestAdapter() + this.device = await adapter.requestDevice() + const { device } = this + + const ctx = this.ctx = canvas.getContext('webgpu')! + + const presentationFormat = navigator.gpu.getPreferredCanvasFormat() + + ctx.configure({ + device, + format: presentationFormat, + alphaMode: 'premultiplied', + }) + + const verticesBuffer = device.createBuffer({ + size: cubeVertexArray.byteLength, + usage: GPUBufferUsage.VERTEX, + mappedAtCreation: true, + }) + this.verticesBuffer = verticesBuffer + new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) + verticesBuffer.unmap() + + const vertexCode = VertShader + + const fragmentCode = FragShader + + const pipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: device.createShaderModule({ + code: vertexCode, + }), + buffers: [ + { + arrayStride: cubeVertexSize, + attributes: [ + { + // position + shaderLocation: 0, + offset: cubePositionOffset, + format: 'float32x4', + }, + { + // uv + shaderLocation: 1, + offset: cubeUVOffset, + format: 'float32x2', + }, + ], + }, + ], + }, + fragment: { + module: device.createShaderModule({ + code: fragmentCode, + }), + targets: [ + { + format: presentationFormat, + blend: { + color: { + srcFactor: 'src-alpha', + dstFactor: 'one-minus-src-alpha', + operation: 'add', + }, + alpha: { + srcFactor: 'src-alpha', + dstFactor: 'one-minus-src-alpha', + operation: 'add', + } + }, + }, + ], + }, + primitive: { + topology: 'triangle-list', + //cullMode: 'back', + + }, + depthStencil: { + depthWriteEnabled: true, + depthCompare: 'less', + format: 'depth24plus', + }, + + }) + this.pipeline = pipeline + + const depthTexture = device.createTexture({ + size: [canvas.width, canvas.height], + format: 'depth24plus', + usage: GPUTextureUsage.RENDER_ATTACHMENT, + }) + + const uniformBufferSize = 4 * 16 // 4x4 matrix + this.uniformBuffer = device.createBuffer({ + size: uniformBufferSize, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + }) + + // Fetch the image and upload it into a GPUTexture. + let cubeTexture: GPUTexture + { + cubeTexture = device.createTexture({ + size: [textureBitmap.width, textureBitmap.height, 1], + format: 'rgba8unorm', + usage: + GPUTextureUsage.TEXTURE_BINDING | + GPUTextureUsage.COPY_DST | + GPUTextureUsage.RENDER_ATTACHMENT, + }) + device.queue.copyExternalImageToTexture( + { source: textureBitmap }, + { texture: cubeTexture }, + [textureBitmap.width, textureBitmap.height] + ) + } + + const sampler = device.createSampler({ + magFilter: 'linear', + minFilter: 'linear', + }) + + this.uniformBindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ { - format: presentationFormat, + binding: 0, + resource: { + buffer: this.uniformBuffer, + }, }, - ], - }, - primitive: { - topology: 'triangle-list', - }, - }) - - const pipeline = device.createRenderPipeline({ - layout: 'auto', - vertex: { - module: device.createShaderModule({ - code, - }), - buffers: [ { - arrayStride: cubeVertexSize, - attributes: [ - { - // position - shaderLocation: 0, - offset: cubePositionOffset, - format: 'float32x4', - }, - { - // uv - shaderLocation: 1, - offset: cubeUVOffset, - format: 'float32x2', - }, - ], + binding: 1, + resource: sampler, }, - ], - }, - fragment: { - module: device.createShaderModule({ - code, - }), - targets: [ { - format: presentationFormat, + binding: 2, + resource: cubeTexture.createView(), }, ], - }, - primitive: { - topology: 'triangle-list', - cullMode: 'back', - }, - depthStencil: { - depthWriteEnabled: true, - depthCompare: 'less', - format: 'depth24plus', - }, - }) - - const depthTexture = device.createTexture({ - size: [canvas.width, canvas.height], - format: 'depth24plus', - usage: GPUTextureUsage.RENDER_ATTACHMENT, - }) - - const uniformBufferSize = 4 * 16 // 4x4 matrix - const uniformBuffer = device.createBuffer({ - size: uniformBufferSize, - usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, - }) - - // Fetch the image and upload it into a GPUTexture. - let cubeTexture: GPUTexture - { - cubeTexture = device.createTexture({ - size: [textureBitmap.width, textureBitmap.height, 1], - format: 'rgba8unorm', - usage: - GPUTextureUsage.TEXTURE_BINDING | - GPUTextureUsage.COPY_DST | - GPUTextureUsage.RENDER_ATTACHMENT, }) - device.queue.copyExternalImageToTexture( - { source: textureBitmap }, - { texture: cubeTexture }, - [textureBitmap.width, textureBitmap.height] - ) - } - const sampler = device.createSampler({ - magFilter: 'linear', - minFilter: 'linear', - }) - - const uniformBindGroup = device.createBindGroup({ - layout: pipeline.getBindGroupLayout(0), - entries: [ - { - binding: 0, - resource: { - buffer: uniformBuffer, + this.renderPassDescriptor = { + colorAttachments: [ + { + view: undefined, // Assigned later + + clearValue: [0.5, 0.5, 0.5, 1.0], + loadOp: 'clear', + storeOp: 'store', }, + ], + depthStencilAttachment: { + view: depthTexture.createView(), + + depthClearValue: 1.0, + depthLoadOp: 'clear', + depthStoreOp: 'store', }, - { - binding: 1, - resource: sampler, - }, - { - binding: 2, - resource: cubeTexture.createView(), - }, - ], - }) + } - const renderPassDescriptor: GPURenderPassDescriptor = { - colorAttachments: [ - { - view: undefined, // Assigned later + this.loop() - clearValue: [0.5, 0.5, 0.5, 1.0], - loadOp: 'clear', - storeOp: 'store', - }, - ], - depthStencilAttachment: { - view: depthTexture.createView(), - - depthClearValue: 1.0, - depthLoadOp: 'clear', - depthStoreOp: 'store', - }, + return canvas } - const loop = () => { + loop () { + const { device, uniformBuffer, renderPassDescriptor, uniformBindGroup, pipeline, ctx, verticesBuffer } = this + const now = Date.now() tweenJs.update() const modelViewProjectionMat4 = new THREE.Matrix4() + camera.updateMatrix() const projectionMatrix = camera.projectionMatrix modelViewProjectionMat4.multiplyMatrices(projectionMatrix, camera.matrix.invert()) const modelViewProjection = new Float32Array(modelViewProjectionMat4.elements) - globalThis.modelViewProjection = modelViewProjection + // globalThis.modelViewProjection = modelViewProjection device.queue.writeBuffer( uniformBuffer, 0, @@ -275,73 +270,16 @@ export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: Im device.queue.submit([commandEncoder.finish()]) renderedFrames++ if (rendering) { - requestAnimationFrame(loop) + requestAnimationFrame(() => this.loop()) } } - - const triangleLoop = () => { - const commandEncoder = device.createCommandEncoder() - const textureView = ctx.getCurrentTexture().createView() - - const renderPassDescriptor: GPURenderPassDescriptor = { - colorAttachments: [ - { - view: textureView, - clearValue: [0, 0, 0, 1], - loadOp: 'clear', - storeOp: 'store', - }, - ], - } - - const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor) - passEncoder.setPipeline(trianglePipeline) - passEncoder.draw(3) - passEncoder.end() - - device.queue.submit([commandEncoder.finish()]) - requestAnimationFrame(triangleLoop) - } - - // loop() - triangleLoop() - - return canvas } let fullReset -const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { - const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { - const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' - const shader = gl.createShader(type)! - gl.shaderSource(shader, source) - gl.compileShader(shader) - - const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) - if (!success) { - const info = gl.getShaderInfoLog(shader) - gl.deleteShader(shader) - throw new Error(`Shader ${shaderName} compile error: ` + info) - } - return shader - } +let webglRendererWorker: WebgpuRendererWorker | undefined - - const program = gl.createProgram()! - gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) - gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) - gl.linkProgram(program) - const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) - if (!linkSuccess) { - const info = gl.getProgramInfoLog(program) - gl.deleteProgram(program) - throw new Error('Program link error: ' + info) - } - return program -} - let started = false let newWidth: number | undefined let newHeight: number | undefined @@ -349,7 +287,7 @@ let autoTickUpdate = undefined as number | undefined onmessage = function (e) { if (!started) { started = true - initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) + webglRendererWorker = new WebgpuRendererWorker(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) return } if (e.data.type === 'startRender') { @@ -361,6 +299,7 @@ onmessage = function (e) { if (e.data.type === 'resize') { newWidth = e.data.newWidth newHeight = e.data.newHeight + updateSize(newWidth, newHeight) } if (e.data.type === 'addBlocksSection') { const currentLength = allSides.length diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 01864cb3c..3f97d48e4 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -7,7 +7,7 @@ import { Primitives } from './primitives' import { getVersion } from './version' import EventEmitter from 'events' import { EffectComposer, RenderPass, ShaderPass, FXAAShader } from 'three-stdlib' -import { sendCameraToWorker } from '../../examples/webglRenderer' +import { sendCameraToWorker } from '../../examples/webgpuRendererMain' import { WorldRendererThree } from './worldrendererThree' import { generateSpiralMatrix } from 'flying-squid/dist/utils' @@ -31,7 +31,7 @@ export class Viewer { fxaaPass: ShaderPass renderPass: RenderPass - constructor (public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { + constructor(public renderer: THREE.WebGLRenderer, numWorkers?: number, public enableFXAA = false) { // https://discourse.threejs.org/t/updates-to-color-management-in-three-js-r152/50791 THREE.ColorManagement.enabled = false renderer.outputColorSpace = THREE.LinearSRGBColorSpace diff --git a/src/globals.d.ts b/src/globals.d.ts index c2c5ac6b3..dbf23b1cb 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -80,11 +80,15 @@ declare module '*.vert' { const png: string export default png } +declare module '*.wgsl' { + const png: string + export default png +} interface PromiseConstructor { withResolvers (): { - resolve: (value: T) => void; - reject: (reason: any) => void; - promise: Promise; + resolve: (value: T) => void + reject: (reason: any) => void + promise: Promise } } From c8310945aa64fd91e4b6dd187f43b44b0470d68f Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 22 May 2024 02:19:31 +0300 Subject: [PATCH 088/303] initial instance shading Co-authored-by: Ilya --- prismarine-viewer/examples/Cube.frag.wgsl | 2 +- prismarine-viewer/examples/Cube.vert.wgsl | 6 ++ .../examples/_FragmentShader.frag | 4 -- prismarine-viewer/examples/_VertexShader.vert | 12 ---- .../examples/webgpuRendererMain.ts | 2 +- .../examples/webgpuRendererWorker.ts | 60 +++++++++++++++---- .../viewer/lib/worldrendererWebgl.ts | 4 +- 7 files changed, 59 insertions(+), 31 deletions(-) delete mode 100644 prismarine-viewer/examples/_FragmentShader.frag delete mode 100644 prismarine-viewer/examples/_VertexShader.vert diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index c438e9eea..0d936ae7c 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -6,5 +6,5 @@ fn main( @location(0) fragUV: vec2f, @location(1) fragPosition: vec4f ) -> @location(0) vec4f { - return textureSample(myTexture, mySampler, fragUV); + return textureSample(myTexture, mySampler, fragUV/64); } diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index 5f4b0f271..a3b59c62e 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -1,5 +1,8 @@ struct Uniforms { modelViewProjectionMatrix : mat4x4f, + //modelViewProjectionMatrix : array, + //ProjectionMatrix : mat4x4f, + // ViewMatrix: mat4x4f } @binding(0) @group(0) var uniforms : Uniforms; @@ -11,11 +14,14 @@ struct VertexOutput { @vertex fn main( + //@builtin(instance_index) instanceIdx : u32, @location(0) position : vec4f, @location(1) uv : vec2f + //@location(2) ModelMatrix : mat4x4f, ) -> VertexOutput { var output : VertexOutput; output.Position = uniforms.modelViewProjectionMatrix * position; + //output.Position = uniforms.modelViewProjectionMatrix[instanceIdx] * position; output.fragUV = uv; output.fragPosition = 0.5 * (position + vec4(1.0, 1.0, 1.0, 1.0)); return output; diff --git a/prismarine-viewer/examples/_FragmentShader.frag b/prismarine-viewer/examples/_FragmentShader.frag deleted file mode 100644 index 5fb121e4c..000000000 --- a/prismarine-viewer/examples/_FragmentShader.frag +++ /dev/null @@ -1,4 +0,0 @@ -@fragment -fn main() -> @location(0) vec4f { - return vec4(1.0, 0.0, 0.0, 1.0); -} diff --git a/prismarine-viewer/examples/_VertexShader.vert b/prismarine-viewer/examples/_VertexShader.vert deleted file mode 100644 index 0df4e5fc2..000000000 --- a/prismarine-viewer/examples/_VertexShader.vert +++ /dev/null @@ -1,12 +0,0 @@ -@vertex -fn main( - @builtin(vertex_index) VertexIndex : u32 -) -> @builtin(position) vec4f { - var pos = array( - vec2(0.0, 0.5), - vec2(-0.5, -0.5), - vec2(0.5, -0.5) - ); - - return vec4f(pos[VertexIndex], 0.0, 1.0); -} diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index 947eca856..d77f64b3e 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -128,7 +128,7 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } sendWorkerMessage({ type: 'resize', newWidth: window.innerWidth * window.devicePixelRatio, - height: window.innerHeight * window.devicePixelRatio + newHeight: window.innerHeight * window.devicePixelRatio }) } postRender() diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index fdc031359..423f36d44 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -49,9 +49,12 @@ class WebgpuRendererWorker { device: GPUDevice renderPassDescriptor: GPURenderPassDescriptor uniformBindGroup: GPUBindGroup - uniformBuffer: GPUBuffer + UniformBuffer: GPUBuffer + ViewUniformBuffer: GPUBuffer + ProjectionUniformBuffer: GPUBuffer ctx: GPUCanvasContext verticesBuffer: GPUBuffer + InstancedModelBuffer: GPUBuffer pipeline: GPURenderPipeline constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { @@ -91,9 +94,18 @@ class WebgpuRendererWorker { this.verticesBuffer = verticesBuffer new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) verticesBuffer.unmap() + let ModelMatrix = new THREE.Matrix4() + const InstancedModelBuffer = device.createBuffer({ + size: 4 * 4 * 4, + usage: GPUBufferUsage.VERTEX, + mappedAtCreation: true, + }) + this.InstancedModelBuffer = InstancedModelBuffer + new Float32Array(InstancedModelBuffer.getMappedRange()).set(ModelMatrix.elements) + InstancedModelBuffer.unmap() + //device.StepM const vertexCode = VertShader - const fragmentCode = FragShader const pipeline = device.createRenderPipeline({ @@ -120,6 +132,18 @@ class WebgpuRendererWorker { }, ], }, + { + arrayStride: 4 * 4 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 2, + offset: 0, + format: 'float32x4', + } + ], + stepMode: 'instance', + } ], }, fragment: { @@ -164,8 +188,8 @@ class WebgpuRendererWorker { usage: GPUTextureUsage.RENDER_ATTACHMENT, }) - const uniformBufferSize = 4 * 16 // 4x4 matrix - this.uniformBuffer = device.createBuffer({ + const uniformBufferSize = 4 * (4 * 4) // 4x4 matrix + this.UniformBuffer = device.createBuffer({ size: uniformBufferSize, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, }) @@ -189,8 +213,8 @@ class WebgpuRendererWorker { } const sampler = device.createSampler({ - magFilter: 'linear', - minFilter: 'linear', + magFilter: 'nearest', + minFilter: 'nearest', }) this.uniformBindGroup = device.createBindGroup({ @@ -199,7 +223,7 @@ class WebgpuRendererWorker { { binding: 0, resource: { - buffer: this.uniformBuffer, + buffer: this.UniformBuffer, }, }, { @@ -217,7 +241,6 @@ class WebgpuRendererWorker { colorAttachments: [ { view: undefined, // Assigned later - clearValue: [0.5, 0.5, 0.5, 1.0], loadOp: 'clear', storeOp: 'store', @@ -237,8 +260,16 @@ class WebgpuRendererWorker { return canvas } + + lastCall = performance.now() + logged = false loop () { - const { device, uniformBuffer, renderPassDescriptor, uniformBindGroup, pipeline, ctx, verticesBuffer } = this + if (!rendering) { + requestAnimationFrame(() => this.loop()) + return + } + + const { device, UniformBuffer: uniformBuffer, renderPassDescriptor, uniformBindGroup, pipeline, ctx, verticesBuffer } = this const now = Date.now() tweenJs.update() @@ -262,15 +293,21 @@ class WebgpuRendererWorker { const commandEncoder = device.createCommandEncoder() const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor) + passEncoder.setPipeline(pipeline) passEncoder.setBindGroup(0, uniformBindGroup) passEncoder.setVertexBuffer(0, verticesBuffer) - passEncoder.draw(cubeVertexCount) + passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) + passEncoder.draw(cubeVertexCount, 1) + passEncoder.end() device.queue.submit([commandEncoder.finish()]) + renderedFrames++ if (rendering) { - requestAnimationFrame(() => this.loop()) + // this.loop() + setTimeout(() => this.loop()) + // requestAnimationFrame(() => this.loop()) } } } @@ -299,6 +336,7 @@ onmessage = function (e) { if (e.data.type === 'resize') { newWidth = e.data.newWidth newHeight = e.data.newHeight + updateSize(newWidth, newHeight) } if (e.data.type === 'addBlocksSection') { diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts index a8dcfff06..078a1cc32 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgl.ts @@ -1,6 +1,6 @@ import { Vec3 } from 'vec3' import { updateStatText } from '../../examples/newStats' -import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webglRenderer' +import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webgpuRendererMain' import type { WebglData } from '../prepare/webglData' import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' @@ -16,7 +16,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { super(numWorkers) this.renderUpdateEmitter.on('update', () => { - const loadedChunks = Object.keys(this.finishedChunks).length; + const loadedChunks = Object.keys(this.finishedChunks).length updateStatText('loaded-chunks', `${loadedChunks}/${this.chunksLength} chunks (${this.lastChunkDistance})`) }) } From fb6b965f98c0b785370212c0a124228a32305935 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 22 May 2024 05:06:46 +0300 Subject: [PATCH 089/303] use new insane workers api, cleanup webgpu constants --- prismarine-viewer/examples/playground.ts | 6 +- .../examples/webgpuRendererMain.ts | 52 +++------ .../examples/webgpuRendererWorker.ts | 104 +++++++++--------- prismarine-viewer/examples/workerProxy.ts | 58 ++++++++++ prismarine-viewer/viewer/lib/viewer.ts | 6 +- .../viewer/lib/worldrendererCommon.ts | 8 +- ...endererWebgl.ts => worldrendererWebgpu.ts} | 14 +-- tsconfig.json | 1 + 8 files changed, 141 insertions(+), 108 deletions(-) create mode 100644 prismarine-viewer/examples/workerProxy.ts rename prismarine-viewer/viewer/lib/{worldrendererWebgl.ts => worldrendererWebgpu.ts} (89%) diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 041c5832e..0c3f97e21 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -21,7 +21,7 @@ globalThis.THREE = THREE //@ts-ignore import { OrbitControls } from 'three/addons/controls/OrbitControls.js' import { renderPlayground } from './TouchControls2' -import { WorldRendererWebgl } from '../viewer/lib/worldrendererWebgl' +import { WorldRendererWebgpu } from '../viewer/lib/worldrendererWebgpu' import { TextureAnimation } from './TextureAnimation' const gui = new GUI() @@ -369,7 +369,7 @@ async function main () { viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) }, animationTick () { - const webgl = (viewer.world as WorldRendererWebgl).playgroundGetWebglData() + const webgl = (viewer.world as WorldRendererWebgpu).playgroundGetWebglData() if (!webgl?.animation) { setAnimationTick(0) return @@ -452,7 +452,7 @@ async function main () { } viewer.world.renderUpdateEmitter.addListener('update', () => { // const frames = viewer.world.hasWithFrames ? viewer.world.hasWithFrames - 1 : 0; - const webgl = (viewer.world as WorldRendererWebgl).playgroundGetWebglData() + const webgl = (viewer.world as WorldRendererWebgpu).playgroundGetWebglData() if (webgl?.animation) { params.animationTick = -1 animationController.show() diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index d77f64b3e..3fe2ecaf0 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -2,15 +2,14 @@ import { generateSpiralMatrix } from 'flying-squid/dist/utils' import { Viewer } from '../viewer/lib/viewer' import { options } from '../../src/optionsStorage' import { addNewStat } from './newStats' +import type { workerProxyType } from './webgpuRendererWorker' +import { useWorkerProxy } from './workerProxy' -let worker +let worker: Worker -declare const viewer: Viewer +export let webgpuChannel: typeof workerProxyType['__workerProxy'] -export const sendWorkerMessage = (message: any, transfer?: Transferable[]) => { - worker.postMessage(message, transfer) - // replacable by onmessage -} +declare const viewer: Viewer let allReceived = false declare const customEvents @@ -32,9 +31,7 @@ if (typeof customEvents !== 'undefined') { let isWaitingToUpload = false export const addBlocksSection = (key, data) => { - sendWorkerMessage({ - type: 'addBlocksSection', data, key - }) + webgpuChannel.addBlocksSection(data, key) if (playground && !isWaitingToUpload) { isWaitingToUpload = true // viewer.waitForChunksToRender().then(() => { @@ -47,9 +44,7 @@ export const addBlocksSection = (key, data) => { } export const loadFixtureSides = (json) => { - sendWorkerMessage({ - type: 'loadFixture', json - }) + webgpuChannel.loadFixture(json) } export const sendCameraToWorker = () => { @@ -60,16 +55,11 @@ export const sendCameraToWorker = () => { }, {}) return acc }, {}) - sendWorkerMessage({ - type: 'camera', - camera: cameraData - }) + webgpuChannel.camera(cameraData) } export const removeBlocksSection = (key) => { - sendWorkerMessage({ - type: 'removeBlocksSection', key - }) + webgpuChannel.removeBlocksSection(key) } let playground = false @@ -95,12 +85,8 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } // replacable by initWebglRenderer worker = new Worker('./webgpuRendererWorker.js') addFpsCounters() - sendWorkerMessage({ - canvas: offscreen, - imageBlob, - isPlayground: playgroundModeInWorker, - FragShaderOverride: localStorage.FragShader - }, [offscreen]) + const webgpuChannel = useWorkerProxy(worker, true) + webgpuChannel.canvas(offscreen, imageBlob, playgroundModeInWorker, localStorage.FragShader) let oldWidth = window.innerWidth let oldHeight = window.innerHeight @@ -111,11 +97,11 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } let focused = true window.addEventListener('focus', () => { focused = true - sendWorkerMessage({ type: 'startRender' }) + webgpuChannel.startRender() }) window.addEventListener('blur', () => { focused = false - sendWorkerMessage({ type: 'stopRender' }) + webgpuChannel.stopRender() }) const mainLoop = () => { requestAnimationFrame(mainLoop) @@ -125,11 +111,7 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } if (oldWidth !== window.innerWidth || oldHeight !== window.innerHeight) { oldWidth = window.innerWidth oldHeight = window.innerHeight - sendWorkerMessage({ - type: 'resize', - newWidth: window.innerWidth * window.devicePixelRatio, - newHeight: window.innerHeight * window.devicePixelRatio - }) + webgpuChannel.resize(window.innerWidth * window.devicePixelRatio, window.innerHeight * window.devicePixelRatio) } postRender() // TODO! do it in viewer to avoid possible delays @@ -148,11 +130,7 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } } export const setAnimationTick = (tick: number, frames?: number) => { - sendWorkerMessage({ - type: 'animationTick', - tick, - frames - }) + webgpuChannel.animationTick(tick, frames) } globalThis.exportFixture = () => { diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index 423f36d44..1a23be97c 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -7,6 +7,7 @@ import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cub import VertShader from './Cube.vert.wgsl' //@ts-ignore import FragShader from './Cube.frag.wgsl' +import { createWorkerProxy } from './workerProxy' let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] let allSidesAdded = 0 @@ -73,6 +74,7 @@ class WebgpuRendererWorker { const textureHeight = textureBitmap.height const adapter = await navigator.gpu.requestAdapter() + if (!adapter) throw new Error('WebGPU not supported') this.device = await adapter.requestDevice() const { device } = this @@ -240,7 +242,7 @@ class WebgpuRendererWorker { this.renderPassDescriptor = { colorAttachments: [ { - view: undefined, // Assigned later + view: undefined as any, // Assigned later clearValue: [0.5, 0.5, 0.5, 1.0], loadOp: 'clear', storeOp: 'store', @@ -305,9 +307,7 @@ class WebgpuRendererWorker { renderedFrames++ if (rendering) { - // this.loop() - setTimeout(() => this.loop()) - // requestAnimationFrame(() => this.loop()) + requestAnimationFrame(() => this.loop()) } } } @@ -321,28 +321,26 @@ let started = false let newWidth: number | undefined let newHeight: number | undefined let autoTickUpdate = undefined as number | undefined -onmessage = function (e) { - if (!started) { +export const workerProxyType = createWorkerProxy({ + canvas (canvas, imageBlob, isPlayground, FragShaderOverride) { started = true - webglRendererWorker = new WebgpuRendererWorker(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) - return - } - if (e.data.type === 'startRender') { + webglRendererWorker = new WebgpuRendererWorker(canvas, imageBlob, isPlayground, FragShaderOverride) + }, + startRender () { rendering = true - } - if (e.data.type === 'stopRender') { + }, + stopRender () { rendering = false - } - if (e.data.type === 'resize') { - newWidth = e.data.newWidth - newHeight = e.data.newHeight - + }, + resize (newWidth, newHeight) { + newWidth = newWidth + newHeight = newHeight updateSize(newWidth, newHeight) - } - if (e.data.type === 'addBlocksSection') { + }, + addBlocksSection (data, key) { const currentLength = allSides.length // in: object - name, out: [x, y, z, name] - const newData = Object.entries(e.data.data.blocks).flatMap(([key, value]) => { + const newData = Object.entries(data.blocks).flatMap(([key, value]) => { const [x, y, z] = key.split(',').map(Number) const block = value as BlockType return block.sides.map((side) => { @@ -365,19 +363,19 @@ onmessage = function (e) { console.log('using free area', freeArea) } - chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] + chunksArrIndexes[key] = [currentLength, currentLength + newData.length] allSides.push(...newData) lastNotUpdatedIndex ??= currentLength // updateCubes?.(currentLength) - } - if (e.data.type === 'addBlocksSectionDone') { + }, + addBlocksSectionDone () { updateCubesWhenAvailable(lastNotUpdatedIndex) lastNotUpdatedIndex = undefined lastNotUpdatedArrSize = undefined - } - if (e.data.type === 'removeBlocksSection') { + }, + removeBlocksSection (key) { // fill data with 0 - const [startIndex, endIndex] = chunksArrIndexes[e.data.key] + const [startIndex, endIndex] = chunksArrIndexes[key] for (let i = startIndex; i < endIndex; i++) { allSides[i] = undefined } @@ -392,48 +390,48 @@ onmessage = function (e) { // const [startIndex2, endIndex2] = freeArrayIndexes.pop()! // freeArrayIndexes.push([startIndex2, endIndex]) // } - } - if (e.data.type === 'camera') { - camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') - // camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + }, + camera (camera) { + camera.rotation.set(camera.rotation.x, camera.rotation.y, camera.rotation.z, 'ZYX') + // camera.position.set(camera.position.x, camera.position.y, camera.position.z) if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === 0) { // initial camera position - camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) + camera.position.set(camera.position.x, camera.position.y, camera.position.z) } else { - new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 50).start() + new tweenJs.Tween(camera.position).to({ x: camera.position.x, y: camera.position.y, z: camera.position.z }, 50).start() } - } - if (e.data.type === 'animationTick') { - if (e.data.frames <= 0) { + }, + animationTick (frames, tick) { + if (frames <= 0) { autoTickUpdate = undefined animationTick = 0 return } - if (e.data.tick === -1) { - autoTickUpdate = e.data.frames + if (tick === -1) { + autoTickUpdate = frames } else { autoTickUpdate = undefined - animationTick = e.data.tick % 20 // todo update automatically in worker + animationTick = tick % 20 // todo update automatically in worker } - } - if (e.data.type === 'fullReset') { + }, + fullReset () { fullReset() - } - if (e.data.type === 'exportData') { + }, + exportData () { const exported = exportData() - postMessage({ type: 'exportData', data: exported }, undefined, [exported.sides.buffer]) - } - if (e.data.type === 'loadFixture') { - // allSides = e.data.json.map(([x, y, z, face, textureIndex]) => { + postMessage({ type: 'exportData', data: exported }, undefined as any, [exported.sides.buffer]) + }, + loadFixture (json) { + // allSides = json.map(([x, y, z, face, textureIndex]) => { // return [x, y, z, { face, textureIndex }] as [number, number, number, BlockFaceType] // }) - const dataSize = e.data.json.length / 5 - for (let i = 0; i < e.data.json.length; i += 5) { - allSides.push([e.data.json[i], e.data.json[i + 1], e.data.json[i + 2], { face: e.data.json[i + 3], textureIndex: e.data.json[i + 4] }]) + const dataSize = json.length / 5 + for (let i = 0; i < json.length; i += 5) { + allSides.push([json[i], json[i + 1], json[i + 2], { face: json[i + 3], textureIndex: json[i + 4] }]) } updateCubesWhenAvailable(0) - } -} + }, +}) globalThis.testDuplicates = () => { const duplicates = allSides.filter((value, index, self) => self.indexOf(value) !== index) @@ -449,7 +447,9 @@ const exportData = () => { // Fill the flatData array for (let i = 0; i < allSides.length; i++) { - const [x, y, z, side] = allSides[i] + const sideData = allSides[i] + if (!sideData) continue + const [x, y, z, side] = sideData flatData.set([x, y, z, side.face, side.textureIndex], i * 5) } diff --git a/prismarine-viewer/examples/workerProxy.ts b/prismarine-viewer/examples/workerProxy.ts new file mode 100644 index 000000000..80a8cdb4d --- /dev/null +++ b/prismarine-viewer/examples/workerProxy.ts @@ -0,0 +1,58 @@ +export function createWorkerProxy void>> (handlers: T): { __workerProxy: T } { + addEventListener('message', (event) => { + const { type, args } = event.data + if (handlers[type]) { + handlers[type](...args) + } + }) + return null as any +} + +/** + * in main thread + * ```ts + * // either: + * import type { importedTypeWorkerProxy } from './worker' + * // or: + * type importedTypeWorkerProxy = import('./worker').importedTypeWorkerProxy + * + * const workerChannel = useWorkerProxy(worker) + * ``` + */ +export const useWorkerProxy = void> }> (worker: Worker, autoTransfer = true): T['__workerProxy'] & { + transfer: (...args: Transferable[]) => T['__workerProxy'] +} => { + // in main thread + return new Proxy({} as any, { + get: (target, prop) => { + if (prop === 'transfer') return (...transferable: Transferable[]) => { + return new Proxy({}, { + get: (target, prop) => { + return (...args: any[]) => { + worker.postMessage({ + type: prop, + args, + }, transferable) + } + } + }) + } + return (...args: any[]) => { + const transfer = autoTransfer ? args.filter(arg => arg instanceof ArrayBuffer || arg instanceof MessagePort || arg instanceof ImageBitmap || arg instanceof OffscreenCanvas || arg instanceof ImageData) : [] + worker.postMessage({ + type: prop, + args, + }, transfer) + } + } + }) +} + +// const workerProxy = createWorkerProxy({ +// startRender (canvas: HTMLCanvasElement) { +// }, +// }) + +// const worker = useWorkerProxy(null, workerProxy) + +// worker. diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 3f97d48e4..84bd92c51 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -1,7 +1,7 @@ import * as THREE from 'three' import * as tweenJs from '@tweenjs/tween.js' import { Vec3 } from 'vec3' -import { WorldRendererWebgl } from './worldrendererWebgl' +import { WorldRendererWebgpu } from './worldrendererWebgpu' import { Entities } from './entities' import { Primitives } from './primitives' import { getVersion } from './version' @@ -16,7 +16,7 @@ export class Viewer { ambientLight: THREE.AmbientLight directionalLight: THREE.DirectionalLight camera: THREE.PerspectiveCamera - world: WorldRendererWebgl/* | WorldRendererThree */ + world: WorldRendererWebgpu/* | WorldRendererThree */ entities: Entities primitives: Primitives domElement: HTMLCanvasElement @@ -42,7 +42,7 @@ export class Viewer { if (this.enableFXAA) { this.enableFxaaScene() } - this.world = new WorldRendererWebgl(numWorkers) + this.world = new WorldRendererWebgpu(numWorkers) this.entities = new Entities(this.scene) this.primitives = new Primitives(this.scene, this.camera) diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index ffa764121..474fdce72 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -3,7 +3,7 @@ import { Vec3 } from 'vec3' import { loadJSON } from './utils' import { loadTexture } from './utils.web' import { EventEmitter } from 'events' -import mcDataRaw from 'minecraft-data/data.js'; // handled correctly in esbuild plugin +import mcDataRaw from 'minecraft-data/data.js' // handled correctly in esbuild plugin import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' import { toMajor } from './version.js' import { chunkPos } from './simpleUtils' @@ -39,9 +39,9 @@ export abstract class WorldRendererCommon chunksLength = 0 // promisesQueue = [] as Promise[] - abstract outputFormat: 'threeJs' | 'webgl' + abstract outputFormat: 'threeJs' | 'webgpu' - constructor (numWorkers: number) { + constructor(numWorkers: number) { // init workers for (let i = 0; i < numWorkers; i++) { // Node environment needs an absolute path, but browser needs the url of the file @@ -211,7 +211,7 @@ export abstract class WorldRendererCommon if (this.viewDistance === -1) throw new Error('viewDistance not set') const distance = this.getDistance(pos) if (distance[0] > this.viewDistance || distance[1] > this.viewDistance) return - const key = `${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}`; + const key = `${Math.floor(pos.x / 16) * 16},${Math.floor(pos.y / 16) * 16},${Math.floor(pos.z / 16) * 16}` // if (this.sectionsOutstanding.has(key)) return this.renderUpdateEmitter.emit('dirty', pos, value) // Dispatch sections to workers based on position diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts similarity index 89% rename from prismarine-viewer/viewer/lib/worldrendererWebgl.ts rename to prismarine-viewer/viewer/lib/worldrendererWebgpu.ts index 078a1cc32..036b34452 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgl.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts @@ -1,12 +1,12 @@ import { Vec3 } from 'vec3' import { updateStatText } from '../../examples/newStats' -import { addBlocksSection, removeBlocksSection, sendWorkerMessage } from '../../examples/webgpuRendererMain' +import { addBlocksSection, removeBlocksSection, webgpuChannel } from '../../examples/webgpuRendererMain' import type { WebglData } from '../prepare/webglData' import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' -export class WorldRendererWebgl extends WorldRendererCommon { - outputFormat = 'webgl' as const +export class WorldRendererWebgpu extends WorldRendererCommon { + outputFormat = 'webgpu' as const newChunks = {} as Record webglData: WebglData stopBlockUpdate = false @@ -40,9 +40,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { allChunksLoaded (): void { console.log('allChunksLoaded') - sendWorkerMessage({ - type: 'addBlocksSectionDone' - }) + webgpuChannel.addBlocksSectionDone() } handleWorkerMessage (data: any): void { @@ -60,9 +58,7 @@ export class WorldRendererWebgl extends WorldRendererCommon { } chunksReset () { - sendWorkerMessage({ - type: 'fullReset' - }) + webgpuChannel.fullReset() } updatePosDataChunk (key: string) { diff --git a/tsconfig.json b/tsconfig.json index 47a363c3c..dbbb9ceda 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,7 @@ "forceConsistentCasingInFileNames": true, "useUnknownInCatchVariables": false, "skipLibCheck": true, + "strictBindCallApply": true, // this the only options that allows smooth transition from js to ts (by not dropping types from js files) // however might need to consider includeing *only needed libraries* instead of using this "maxNodeModuleJsDepth": 1, From c33ab7ad6ca9d8fed6936c6b545e407b447d6513 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 22 May 2024 05:11:06 +0300 Subject: [PATCH 090/303] fix crashes --- prismarine-viewer/examples/webgpuRendererMain.ts | 6 ++++-- prismarine-viewer/examples/webgpuRendererWorker.ts | 11 +++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index 3fe2ecaf0..9c5649df5 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -7,7 +7,9 @@ import { useWorkerProxy } from './workerProxy' let worker: Worker -export let webgpuChannel: typeof workerProxyType['__workerProxy'] +export let webgpuChannel: typeof workerProxyType['__workerProxy'] = new Proxy({}, { + get: () => () => { } +}) as any // placeholder to avoid crashes declare const viewer: Viewer @@ -85,7 +87,7 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } // replacable by initWebglRenderer worker = new Worker('./webgpuRendererWorker.js') addFpsCounters() - const webgpuChannel = useWorkerProxy(worker, true) + webgpuChannel = useWorkerProxy(worker, true) webgpuChannel.canvas(offscreen, imageBlob, playgroundModeInWorker, localStorage.FragShader) let oldWidth = window.innerWidth diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index 1a23be97c..384a071ed 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -391,14 +391,13 @@ export const workerProxyType = createWorkerProxy({ // freeArrayIndexes.push([startIndex2, endIndex]) // } }, - camera (camera) { - camera.rotation.set(camera.rotation.x, camera.rotation.y, camera.rotation.z, 'ZYX') - // camera.position.set(camera.position.x, camera.position.y, camera.position.z) - if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === 0) { + camera (newCam) { + camera.rotation.set(newCam.rotation.x, newCam.rotation.y, newCam.rotation.z, 'ZYX') + if (newCam.position.x === 0 && newCam.position.y === 0 && newCam.position.z === 0) { // initial camera position - camera.position.set(camera.position.x, camera.position.y, camera.position.z) + camera.position.set(newCam.position.x, newCam.position.y, newCam.position.z) } else { - new tweenJs.Tween(camera.position).to({ x: camera.position.x, y: camera.position.y, z: camera.position.z }, 50).start() + new tweenJs.Tween(camera.position).to({ x: newCam.position.x, y: newCam.position.y, z: newCam.position.z }, 50).start() } }, animationTick (frames, tick) { From 208b02653037a14b4e43ceae669727389ce0f217 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 00:50:53 +0300 Subject: [PATCH 091/303] instancing --- prismarine-viewer/examples/Cube.vert.wgsl | 6 +- .../examples/webglRendererWorker.ts | 593 ------------------ .../examples/webgpuRendererWorker.ts | 21 +- 3 files changed, 18 insertions(+), 602 deletions(-) delete mode 100644 prismarine-viewer/examples/webglRendererWorker.ts diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index a3b59c62e..bce33581f 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -16,11 +16,11 @@ struct VertexOutput { fn main( //@builtin(instance_index) instanceIdx : u32, @location(0) position : vec4f, - @location(1) uv : vec2f - //@location(2) ModelMatrix : mat4x4f, + @location(1) uv : vec2f, + @location(2) ModelMatrix : vec3f, ) -> VertexOutput { var output : VertexOutput; - output.Position = uniforms.modelViewProjectionMatrix * position; + output.Position = uniforms.modelViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); //output.Position = uniforms.modelViewProjectionMatrix[instanceIdx] * position; output.fragUV = uv; output.fragPosition = 0.5 * (position + vec4(1.0, 1.0, 1.0, 1.0)); diff --git a/prismarine-viewer/examples/webglRendererWorker.ts b/prismarine-viewer/examples/webglRendererWorker.ts deleted file mode 100644 index 9f59ba59b..000000000 --- a/prismarine-viewer/examples/webglRendererWorker.ts +++ /dev/null @@ -1,593 +0,0 @@ -import * as THREE from 'three' - -//@ts-ignore -import VertShader from './_VertexShader.vert' -//@ts-ignore -import FragShader from './_FragmentShader.frag' -import { BlockFaceType, BlockType } from './shared' -import * as tweenJs from '@tweenjs/tween.js' - -let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] -let allSidesAdded = 0 -let needsSidesUpdate = false - -let chunksArrIndexes = {} -let freeArrayIndexes = [] as [number, number][] -let rendering = true -let sidePositions -let updateCubes: (startIndex: any, forceUpdate?) => void -let lastNotUpdatedIndex -let lastNotUpdatedArrSize -let animationTick = 0; - -const updateCubesWhenAvailable = (pos) => { - if (updateCubes) { - updateCubes(pos) - } else { - setTimeout(updateCubesWhenAvailable, 100) - } -} - -const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) - -let renderedFrames = 0 -setInterval(() => { - // console.log('FPS:', renderedFrames) - postMessage({ type: 'fps', fps: renderedFrames }) - renderedFrames = 0 -}, 1000) - -const updateSize = (width, height) => { - camera.aspect = width / height - camera.updateProjectionMatrix() -} - - -export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { - // isPlayground = false - // blockStates = blockStatesJson - const textureBitmap = await createImageBitmap(imageBlob) - const textureWidth = textureBitmap.width - const textureHeight = textureBitmap.height - - const gl = canvas.getContext('webgl2')! - - const program = createProgram(gl, VertShader, FragShaderOverride || FragShader) - - let CubeMesh = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // Bottom-let - 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, // bottom-right - 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right - 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right - -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, // top-let - -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // bottom-let - // ront ace - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, // bottom-let - 0.5, 0.5, 0.5, 1.0, 1.0, 1.0, // top-right - 0.5, -0.5, 0.5, 1.0, 0.0, 1.0, // bottom-right - 0.5, 0.5, 0.5, 1.0, 1.0, 1.0,// top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0,// bottom-let - -0.5, 0.5, 0.5, 0.0, 1.0, 1.0,// top-let - // Let ace - -0.5, 0.5, 0.5, 1.0, 0.0, 2.0,// top-right - -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let - -0.5, 0.5, -0.5, 1.0, 1.0, 2.0,// top-let - -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let - -0.5, 0.5, 0.5, 1.0, 0.0, 2.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 2.0,// bottom-right - // Right ace - 0.5, 0.5, 0.5, 1.0, 0.0, 3.0,// top-let - 0.5, 0.5, -0.5, 1.0, 1.0, 3.0,// top-right - 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right - 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right - 0.5, -0.5, 0.5, 0.0, 0.0, 3.0,// bottom-let - 0.5, 0.5, 0.5, 1.0, 0.0, 3.0, // top-let - // Bottom ace - -0.5, -0.5, -0.5, 0.0, 1.0, 4.0,// top-right - 0.5, -0.5, 0.5, 1.0, 0.0, 4.0,// bottom-let - 0.5, -0.5, -0.5, 1.0, 1.0, 4.0,// top-let - 0.5, -0.5, 0.5, 1.0, 0.0, 4.0, // bottom-let - -0.5, -0.5, -0.5, 0.0, 1.0, 4.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 4.0, // bottom-right - // Top ace - -0.5, 0.5, -0.5, 0.0, 1.0, 5.0,// top-let - 0.5, 0.5, -0.5, 1.0, 1.0, 5.0,// top-right - 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right - 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right - -0.5, 0.5, 0.5, 0.0, 0.0, 5.0,// bottom-let - -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let - ]) - - let SideMesh = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let - 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right - -0.5, 0.5, -0.5, 0.0, 1.0, // top-let - 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - // 0.5, 0.5, -0.5, 1.0, 1.0, // top-right - // -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let - // ront ace - ]) - - - - let NumberOfCube = isPlayground ? 10_000 : 16_000_000 - - sidePositions = new Float32Array(NumberOfCube * 3 * 6) - let sideTextureIndices = new Float32Array(NumberOfCube * 1 * 6); - let sideIndexes = new Float32Array(NumberOfCube * 1 * 6); - let sideBiomeColor = new Float32Array(NumberOfCube * 3 * 6); - - - // write random coordinates to cube positions xyz ten cubes; - if (isPlayground) { - for (let i = 0; i < NumberOfCube * 18; i += 18) { - - sidePositions[i] = Math.floor(Math.random() * 1000) - 500; - sidePositions[i + 1] = Math.floor(Math.random() * 1000) - 500; - sidePositions[i + 2] = Math.floor(Math.random() * 100) - 100; - - sideBiomeColor[i] = (Math.random()); - sideBiomeColor[i + 1] = (Math.random()); - sideBiomeColor[i + 2] = (Math.random()); - for (let j = 1; j <= 6; j++) { - - if (j != 6) { - sidePositions[j * 3 + i] = sidePositions[i] - sidePositions[j * 3 + i + 1] = sidePositions[i + 1] - sidePositions[j * 3 + i + 2] = sidePositions[i + 2] - - sideBiomeColor[j * 3 + i] = sideBiomeColor[i] - sideBiomeColor[j * 3 + i + 1] = sideBiomeColor[i + 1] - sideBiomeColor[j * 3 + i + 2] = sideBiomeColor[i + 2] - } - - sideIndexes[i / 3 + j - 1] = j - 1; - sideTextureIndices[i / 3 + j - 1] = Math.floor(Math.random() * 800); - //sideTextureIndices[i / 3 + j - 1] = 1; - } - - } - - } - let VAO = gl.createVertexArray(); - - - let instanceVBO = gl.createBuffer(); - let instanceTextureID = gl.createBuffer(); - let instanceBiomeColor = gl.createBuffer(); - let instanceCubeSide = gl.createBuffer(); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.bufferData(gl.ARRAY_BUFFER, sidePositions, gl.DYNAMIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, sideTextureIndices, gl.DYNAMIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.bufferData(gl.ARRAY_BUFFER, sideBiomeColor, gl.DYNAMIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - gl.bufferData(gl.ARRAY_BUFFER, sideIndexes, gl.DYNAMIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - VAO = gl.createVertexArray(); - let VBO = gl.createBuffer(); - // let VBO_sides = gl.createBuffer(); - //EBO = gl.createBuffer(); - - gl.bindVertexArray(VAO); - gl.bindBuffer(gl.ARRAY_BUFFER, VBO) - // gl.bindBuffer(gl.ARRAY_BUFFER, VBO_sides) - gl.bufferData(gl.ARRAY_BUFFER, SideMesh, gl.STATIC_DRAW) - - gl.vertexAttribPointer(0, 3, gl.FLOAT, false, 5 * 4, 0) - gl.enableVertexAttribArray(0) - - gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 5 * 4, 3 * 4) - gl.enableVertexAttribArray(1) - - gl.enableVertexAttribArray(2); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - gl.vertexAttribPointer(2, 1, gl.FLOAT, false, 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(2, 1); - - gl.enableVertexAttribArray(3); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - gl.vertexAttribPointer(3, 3, gl.FLOAT, false, 3 * 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(3, 1); - - gl.enableVertexAttribArray(4); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.vertexAttribPointer(4, 1, gl.FLOAT, false, 4 * 1, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(4, 1); - - gl.enableVertexAttribArray(6); - gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - gl.vertexAttribPointer(6, 3, gl.FLOAT, false, 3 * 4, 0); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - gl.vertexAttribDivisor(6, 1); - - updateCubes = (startIndex, forceUpdate) => { - // up2 - const newSides = allSides.slice(startIndex, lastNotUpdatedArrSize ? startIndex + lastNotUpdatedArrSize : undefined) - newSides.sort((a, b) => { - if (!a || !b) return 0 - const getScore = (b: BlockFaceType) => b.isTransparent ? 1 : 0 - return getScore(a[3]) - getScore(b[3]) - }) - globalThis.allSidesSize = allSides.length - sidePositions = new Float32Array(newSides.length * 3) - sideTextureIndices = new Float32Array(newSides.length * 1); - sideIndexes = new Float32Array(newSides.length * 1); - sideBiomeColor = new Float32Array(newSides.length * 3); - for (let i = 0; i < newSides.length * 3; i += 3) { - const newSide = newSides[i / 3]; - if (!newSide) continue - sidePositions[i] = newSide[0] - sidePositions[i + 1] = newSide[1] - sidePositions[i + 2] = newSide[2] - const block = newSide[3] as BlockFaceType - if (block.tint) { - const [r, g, b] = block.tint - sideBiomeColor[i] = r - sideBiomeColor[i + 1] = g - sideBiomeColor[i + 2] = b - } else { - sideBiomeColor[i] = 1 - sideBiomeColor[i + 1] = 1 - sideBiomeColor[i + 2] = 1 - } - sideTextureIndices[i / 3] = block.textureIndex - sideIndexes[i / 3] = block.face - } - - - // startIndex = 0 // TODO! - console.log('startIndex', startIndex, sidePositions.length, allSides.length) - const prepareBuffersUpdate = allSides.length > NumberOfCube || globalThis.testUpdate - globalThis.testUpdate = false - if (prepareBuffersUpdate) { - NumberOfCube += 1_000_000 - updateCubes(0, true) - return - } - globalThis.NumberOfCube = NumberOfCube - - const supplyData = (data, step) => { - if (forceUpdate) { - globalThis.updatedBufferSize = NumberOfCube - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * step), gl.STATIC_DRAW); - } - gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4 * step, data); // update buffer content - const error = gl.getError() - if (error) throw new Error("SUBDATA ERROR") - gl.bindBuffer(gl.ARRAY_BUFFER, null); - } - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - supplyData(sidePositions, 3) - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - supplyData(sideTextureIndices, 1) - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceBiomeColor); - supplyData(sideBiomeColor, 3) - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceCubeSide); - supplyData(sideIndexes, 1) - - allSidesAdded = allSides.length - needsSidesUpdate = true - lastNotUpdatedArrSize = undefined - } - - globalThis.updateCubes = updateCubes - globalThis.resetHalfScene = () => { - for (let i = 0; i < allSides.length / 2; i++) { - allSides[i] = undefined - } - lastNotUpdatedIndex = 0 - lastNotUpdatedArrSize = allSides.length / 2 - updateCubes(0) - } - const cleanupFirstChunks = () => { - allSides = [] - gl.bindBuffer(gl.ARRAY_BUFFER, instanceVBO); - // empty the buffer - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * 3), gl.STATIC_DRAW); // todo - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.ARRAY_BUFFER, instanceTextureID); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(NumberOfCube * 3), gl.STATIC_DRAW); // todo - // gl.bufferSubData(gl.ARRAY_BUFFER, startIndex * 4, cubeTextureIndices); // update buffer content - gl.bindBuffer(gl.ARRAY_BUFFER, null); - } - - fullReset = () => { - cleanupFirstChunks() - lastNotUpdatedIndex = undefined - lastNotUpdatedArrSize = undefined - } - - - - //gl.bindBuffer(gl.ARRAY_BUFFER, null); - //gl.bindVertexArray(null) - - // viewer.world.updateTexturesData() - // await new Promise(resolve => { - // // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) - // // viewer.world.material.map!.image.onload = () => { - // // console.log(this.material.map!.image) - // // resolve() - // // } - // viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) - // }) - // const names = Object.keys(viewer.world.downloadedBlockStatesData) - - let texture1 = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture1); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); // set texture wrapping to GL_REPEAT (default wrapping method) - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, textureWidth, textureHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, textureBitmap); - - gl.useProgram(program) - - gl.uniform1i(gl.getUniformLocation(program, "texture1"), 0); - gl.uniform1i(gl.getUniformLocation(program, "texture2"), 1); - - - gl.enable(gl.DEPTH_TEST) - gl.frontFace(gl.CCW) - gl.enable(gl.CULL_FACE) - gl.enable(gl.BLEND) - gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); - - - //gl.generateMipmap() - //gl.enable(gl) - //gl.clearColor(0, 0, 0, 1) - //gl.clear(gl.COLOR_BUFFER_BIT) - camera.up = new THREE.Vector3(0, 1, 0) - - let ViewUniform = gl.getUniformLocation(program, "view") - let ProjectionUniform = gl.getUniformLocation(program, "projection") - let TickUniform = gl.getUniformLocation(program, "tick") - - gl.cullFace(gl.FRONT) - - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, texture1); - - gl.bindVertexArray(VAO) - gl.useProgram(program) - updateSize(gl.canvas.width, gl.canvas.height) - const renderLoop = (performance) => { - requestAnimationFrame(renderLoop) - if (!rendering && !needsSidesUpdate) return - // gl.canvas.width = window.innerWidth * window.devicePixelRatio - // gl.canvas.height = window.innerHeight * window.devicePixelRatio - if (newWidth || newHeight) { - gl.canvas.width = newWidth ?? gl.canvas.width - gl.canvas.height = newHeight ?? gl.canvas.height - newWidth = undefined - newHeight = undefined - updateSize(gl.canvas.width, gl.canvas.height) - - gl.viewport(0, 0, gl.canvas.width, gl.canvas.height) - } - - - gl.clearColor(0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1); - gl.clear(gl.COLOR_BUFFER_BIT) - gl.clear(gl.DEPTH_BUFFER_BIT) - - - tweenJs.update() - camera.updateMatrix() - gl.uniformMatrix4fv(ViewUniform, false, camera.matrix.invert().elements); - gl.uniformMatrix4fv(ProjectionUniform, false, camera.projectionMatrix.elements); - gl.uniform1i(TickUniform, animationTick); - - if (!globalThis.stopRendering) { - gl.drawArraysInstanced(gl.TRIANGLE_STRIP, 0, 4, (isPlayground ? NumberOfCube * 6 : allSidesAdded)); - needsSidesUpdate = false - } - - renderedFrames++ - } - requestAnimationFrame(renderLoop) - - // gl.deleteVertexArray(VAO); - // gl.deleteBuffer(VBO) - // gl.deleteBuffer(EBO) - // gl.deleteProgram(program) - - return canvas -} - -let fullReset - -const createProgram = (gl: WebGL2RenderingContext, vertexShader: string, fragmentShader: string) => { - const createShader = (gl: WebGL2RenderingContext, type: number, source: string) => { - const shaderName = type === gl.VERTEX_SHADER ? 'vertex' : 'fragment' - const shader = gl.createShader(type)! - gl.shaderSource(shader, source) - gl.compileShader(shader) - - const success = gl.getShaderParameter(shader, gl.COMPILE_STATUS) - if (!success) { - const info = gl.getShaderInfoLog(shader) - gl.deleteShader(shader) - throw new Error(`Shader ${shaderName} compile error: ` + info) - } - return shader - } - - - - const program = gl.createProgram()! - gl.attachShader(program, createShader(gl, gl.VERTEX_SHADER, vertexShader)!) - gl.attachShader(program, createShader(gl, gl.FRAGMENT_SHADER, fragmentShader)!) - gl.linkProgram(program) - const linkSuccess = gl.getProgramParameter(program, gl.LINK_STATUS) - if (!linkSuccess) { - const info = gl.getProgramInfoLog(program) - gl.deleteProgram(program) - throw new Error('Program link error: ' + info) - } - return program -} - -let started = false -let newWidth: number | undefined -let newHeight: number | undefined -let autoTickUpdate = undefined as number | undefined -onmessage = function (e) { - if (!started) { - started = true - initWebglRenderer(e.data.canvas, e.data.imageBlob, e.data.isPlayground, e.data.FragShaderOverride) - return - } - if (e.data.type === 'startRender') { - rendering = true - } - if (e.data.type === 'stopRender') { - rendering = false - } - if (e.data.type === 'resize') { - newWidth = e.data.newWidth - newHeight = e.data.newHeight - } - if (e.data.type === 'addBlocksSection') { - const currentLength = allSides.length; - // in: object - name, out: [x, y, z, name] - const newData = Object.entries(e.data.data.blocks).flatMap(([key, value]) => { - const [x, y, z] = key.split(',').map(Number) - const block = value as BlockType - return block.sides.map((side) => { - return [x, y, z, side] as [number, number, number, BlockFaceType] - }) - }) - // find freeIndexes if possible - const freeArea = freeArrayIndexes.find(([startIndex, endIndex]) => endIndex - startIndex >= newData.length) - if (freeArea) { - const [startIndex, endIndex] = freeArea - allSides.splice(startIndex, newData.length, ...newData) - lastNotUpdatedIndex ??= startIndex - const freeAreaIndex = freeArrayIndexes.indexOf(freeArea) - freeArrayIndexes[freeAreaIndex] = [startIndex + newData.length, endIndex] - if (freeArrayIndexes[freeAreaIndex][0] >= freeArrayIndexes[freeAreaIndex][1]) { - freeArrayIndexes.splice(freeAreaIndex, 1) - // todo merge - } - lastNotUpdatedArrSize = newData.length - console.log('using free area', freeArea) - } - - chunksArrIndexes[e.data.key] = [currentLength, currentLength + newData.length] - allSides.push(...newData) - lastNotUpdatedIndex ??= currentLength - // updateCubes?.(currentLength) - } - if (e.data.type === 'addBlocksSectionDone') { - updateCubesWhenAvailable(lastNotUpdatedIndex) - lastNotUpdatedIndex = undefined - lastNotUpdatedArrSize = undefined - } - if (e.data.type === 'removeBlocksSection') { - // fill data with 0 - const [startIndex, endIndex] = chunksArrIndexes[e.data.key] - for (let i = startIndex; i < endIndex; i++) { - allSides[i] = undefined - } - lastNotUpdatedArrSize = endIndex - startIndex - updateCubes(startIndex) - - // freeArrayIndexes.push([startIndex, endIndex]) - - // // merge freeArrayIndexes TODO - // if (freeArrayIndexes.at(-1)[0] === freeArrayIndexes.at(-2)?.[1]) { - // const [startIndex, endIndex] = freeArrayIndexes.pop()! - // const [startIndex2, endIndex2] = freeArrayIndexes.pop()! - // freeArrayIndexes.push([startIndex2, endIndex]) - // } - } - if (e.data.type === 'camera') { - camera.rotation.set(e.data.camera.rotation.x, e.data.camera.rotation.y, e.data.camera.rotation.z, 'ZYX') - // camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) - if (camera.position.x === 0 && camera.position.y === 0 && camera.position.z === 0) { - // initial camera position - camera.position.set(e.data.camera.position.x, e.data.camera.position.y, e.data.camera.position.z) - } else { - new tweenJs.Tween(camera.position).to({ x: e.data.camera.position.x, y: e.data.camera.position.y, z: e.data.camera.position.z }, 50).start() - } - } - if (e.data.type === 'animationTick') { - if (e.data.frames <= 0) { - autoTickUpdate = undefined - animationTick = 0 - return - } - if (e.data.tick === -1) { - autoTickUpdate = e.data.frames - } else { - autoTickUpdate = undefined - animationTick = e.data.tick % 20 // todo update automatically in worker - } - } - if (e.data.type === 'fullReset') { - fullReset() - } - if (e.data.type === 'exportData') { - const exported = exportData(); - postMessage({ type: 'exportData', data: exported }, undefined, [exported.sides.buffer]) - } - if (e.data.type === 'loadFixture') { - // allSides = e.data.json.map(([x, y, z, face, textureIndex]) => { - // return [x, y, z, { face, textureIndex }] as [number, number, number, BlockFaceType] - // }) - const dataSize = e.data.json.length / 5 - for (let i = 0; i < e.data.json.length; i += 5) { - allSides.push([e.data.json[i], e.data.json[i + 1], e.data.json[i + 2], { face: e.data.json[i + 3], textureIndex: e.data.json[i + 4] }]) - } - updateCubesWhenAvailable(0) - } -} - -globalThis.testDuplicates = () => { - const duplicates = allSides.filter((value, index, self) => self.indexOf(value) !== index) - console.log('duplicates', duplicates) -} - -const exportData = () => { - // Calculate the total length of the final array - const totalLength = allSides.length * 5; - - // Create a new Int16Array with the total length - const flatData = new Int16Array(totalLength); - - // Fill the flatData array - for (let i = 0; i < allSides.length; i++) { - const [x, y, z, side] = allSides[i]; - flatData.set([x, y, z, side.face, side.textureIndex], i * 5); - } - - return { sides: flatData }; -} - -setInterval(() => { - if (autoTickUpdate) { - animationTick = (animationTick + 1) % autoTickUpdate; - } -}, 1000 / 20) diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index 384a071ed..6bd2bc4c3 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -96,7 +96,16 @@ class WebgpuRendererWorker { this.verticesBuffer = verticesBuffer new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) verticesBuffer.unmap() - let ModelMatrix = new THREE.Matrix4() + + let NumberOfCubes = 3 + //Todo: make this dynamic + const ModelMatrix = new Float32Array([ + 0, 1, 0, + 1, 0, 0, + 0, 0, 1 + ]) + + const InstancedModelBuffer = device.createBuffer({ size: 4 * 4 * 4, @@ -104,7 +113,7 @@ class WebgpuRendererWorker { mappedAtCreation: true, }) this.InstancedModelBuffer = InstancedModelBuffer - new Float32Array(InstancedModelBuffer.getMappedRange()).set(ModelMatrix.elements) + new Float32Array(InstancedModelBuffer.getMappedRange()).set(ModelMatrix) InstancedModelBuffer.unmap() //device.StepM const vertexCode = VertShader @@ -135,13 +144,13 @@ class WebgpuRendererWorker { ], }, { - arrayStride: 4 * 4 * 4, + arrayStride: 3 * 4, attributes: [ { // ModelMatrix shaderLocation: 2, offset: 0, - format: 'float32x4', + format: 'float32x3', } ], stepMode: 'instance', @@ -300,7 +309,7 @@ class WebgpuRendererWorker { passEncoder.setBindGroup(0, uniformBindGroup) passEncoder.setVertexBuffer(0, verticesBuffer) passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) - passEncoder.draw(cubeVertexCount, 1) + passEncoder.draw(cubeVertexCount, 3) passEncoder.end() device.queue.submit([commandEncoder.finish()]) @@ -337,7 +346,7 @@ export const workerProxyType = createWorkerProxy({ newHeight = newHeight updateSize(newWidth, newHeight) }, - addBlocksSection (data, key) { + addBlocksSection (data: { blocks: Record }, key: string) { const currentLength = allSides.length // in: object - name, out: [x, y, z, name] const newData = Object.entries(data.blocks).flatMap(([key, value]) => { From bbe2a6bef1276a785d111a74a8761876cbb3cb0f Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 01:32:19 +0300 Subject: [PATCH 092/303] blocks adding --- prismarine-viewer/examples/CubeDef.ts | 50 ++++++++++++++ prismarine-viewer/examples/cube.tsx | 51 -------------- prismarine-viewer/examples/playground.ts | 37 +++++++++- .../examples/webgpuRendererWorker.ts | 68 +++++++++++-------- 4 files changed, 127 insertions(+), 79 deletions(-) create mode 100644 prismarine-viewer/examples/CubeDef.ts delete mode 100644 prismarine-viewer/examples/cube.tsx diff --git a/prismarine-viewer/examples/CubeDef.ts b/prismarine-viewer/examples/CubeDef.ts new file mode 100644 index 000000000..0e38f341d --- /dev/null +++ b/prismarine-viewer/examples/CubeDef.ts @@ -0,0 +1,50 @@ +export const cubeVertexSize = 4 * 10 // Byte size of one cube vertex. +export const cubePositionOffset = 0 +export const cubeColorOffset = 4 * 4 // Byte offset of cube vertex color attribute. +export const cubeUVOffset = 4 * 8 +export const cubeVertexCount = 36 + +//@ts-format-ignore-region +export const cubeVertexArray = new Float32Array([ + -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // bottom-let + // ront ace + -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 1.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, 1.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 1.0, 1.0,// top-right + -0.5, -0.5, 0.5, 0.0, 0.0, 1.0,// bottom-let + -0.5, 0.5, 0.5, 0.0, 1.0, 1.0,// top-let + // Let ace + -0.5, 0.5, 0.5, 1.0, 0.0, 2.0,// top-right + -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let + -0.5, 0.5, -0.5, 1.0, 1.0, 2.0,// top-let + -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let + -0.5, 0.5, 0.5, 1.0, 0.0, 2.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, 2.0,// bottom-right + // Right ace + 0.5, 0.5, 0.5, 1.0, 0.0, 3.0,// top-let + 0.5, 0.5, -0.5, 1.0, 1.0, 3.0,// top-right + 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right + 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right + 0.5, -0.5, 0.5, 0.0, 0.0, 3.0,// bottom-let + 0.5, 0.5, 0.5, 1.0, 0.0, 3.0, // top-let + // Bottom ace + -0.5, -0.5, -0.5, 0.0, 1.0, 4.0,// top-right + 0.5, -0.5, 0.5, 1.0, 0.0, 4.0,// bottom-let + 0.5, -0.5, -0.5, 1.0, 1.0, 4.0,// top-let + 0.5, -0.5, 0.5, 1.0, 0.0, 4.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 1.0, 4.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, 4.0, // bottom-right + // Top ace + -0.5, 0.5, -0.5, 0.0, 1.0, 5.0,// top-let + 0.5, 0.5, -0.5, 1.0, 1.0, 5.0,// top-right + 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right + 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right + -0.5, 0.5, 0.5, 0.0, 0.0, 5.0,// bottom-let + -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let˚ +]); diff --git a/prismarine-viewer/examples/cube.tsx b/prismarine-viewer/examples/cube.tsx deleted file mode 100644 index f2a591821..000000000 --- a/prismarine-viewer/examples/cube.tsx +++ /dev/null @@ -1,51 +0,0 @@ -export const cubeVertexSize = 4 * 10 // Byte size of one cube vertex. -export const cubePositionOffset = 0 -export const cubeColorOffset = 4 * 4 // Byte offset of cube vertex color attribute. -export const cubeUVOffset = 4 * 8 -export const cubeVertexCount = 36 - -//@ts-format-ignore-region -export const cubeVertexArray = new Float32Array([ - // float4 position, float4 color, float2 uv, - 1, -1, 1, 1, 1, 0, 1, 1, 0, 1, - -1, -1, 1, 1, 0, 0, 1, 1, 1, 1, - -1, -1, -1, 1, 0, 0, 0, 1, 1, 0, - 1, -1, -1, 1, 1, 0, 0, 1, 0, 0, - 1, -1, 1, 1, 1, 0, 1, 1, 0, 1, - -1, -1, -1, 1, 0, 0, 0, 1, 1, 0, - - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, -1, 1, 1, 1, 0, 1, 1, 1, 1, - 1, -1, -1, 1, 1, 0, 0, 1, 1, 0, - 1, 1, -1, 1, 1, 1, 0, 1, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, -1, -1, 1, 1, 0, 0, 1, 1, 0, - - -1, 1, 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, -1, 1, 1, 1, 0, 1, 1, 0, - -1, 1, -1, 1, 0, 1, 0, 1, 0, 0, - -1, 1, 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, -1, 1, 1, 1, 0, 1, 1, 0, - - -1, -1, 1, 1, 0, 0, 1, 1, 0, 1, - -1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, - -1, -1, -1, 1, 0, 0, 0, 1, 0, 0, - -1, -1, 1, 1, 0, 0, 1, 1, 0, 1, - -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, - - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - -1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - -1, -1, 1, 1, 0, 0, 1, 1, 1, 0, - -1, -1, 1, 1, 0, 0, 1, 1, 1, 0, - 1, -1, 1, 1, 1, 0, 1, 1, 0, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - - 1, -1, -1, 1, 1, 0, 0, 1, 0, 1, - -1, -1, -1, 1, 0, 0, 0, 1, 1, 1, - -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, - 1, 1, -1, 1, 1, 1, 0, 1, 0, 0, - 1, -1, -1, 1, 1, 0, 0, 1, 0, 1, - -1, 1, -1, 1, 0, 1, 0, 1, 1, 0, - ]); diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 0c3f97e21..c011244fe 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -14,7 +14,7 @@ import { TWEEN_DURATION } from '../viewer/lib/entities' import Entity from '../viewer/lib/entity/Entity' // import * as Mathgl from 'math.gl' import { findTextureInBlockStates } from '../../src/playerWindows' -import { initWebgpuRenderer, loadFixtureSides, setAnimationTick } from './webgpuRendererMain' +import { initWebgpuRenderer, loadFixtureSides, setAnimationTick, webgpuChannel } from './webgpuRendererMain' import { renderToDom } from '@zardoy/react-util' globalThis.THREE = THREE @@ -23,6 +23,7 @@ import { OrbitControls } from 'three/addons/controls/OrbitControls.js' import { renderPlayground } from './TouchControls2' import { WorldRendererWebgpu } from '../viewer/lib/worldrendererWebgpu' import { TextureAnimation } from './TextureAnimation' +import { BlockType } from './shared' const gui = new GUI() @@ -186,6 +187,12 @@ async function main () { } direction.applyQuaternion(viewer.camera.quaternion) direction.y = 0 + + if (pressedKeys.has('ShiftLeft')) { + direction.y *= 2 + direction.x *= 2 + direction.z *= 2 + } // Add the vector to the camera's position to move the camera viewer.camera.position.add(direction) } @@ -246,6 +253,34 @@ async function main () { viewer.camera.position.set(pos[0], pos[1], pos[2]) } + let blocks: Record = {} + let i = 0 + for (let x = 0; x < 100; x++) { + blocks = {} + for (let i = 0; i < 10000; i++) { + const max = 1000 + const pos = new Vec3(Math.floor(Math.random() * max), Math.floor(Math.random() * max), Math.floor(Math.random() * max)) + const getFace = (face: number) => { + return { + face, + textureIndex: Math.floor(Math.random() * 512) + } + } + blocks[`${pos.x},${pos.y},${pos.z}`] = { + sides: [ + getFace(0), + getFace(1), + getFace(2), + getFace(3), + getFace(4), + getFace(5) + ], + } + } + webgpuChannel.addBlocksSection({ blocks }, `0,0,${i++}`) + } + + return // Create viewer diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index 6bd2bc4c3..9ff0f0eed 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -2,7 +2,7 @@ import * as THREE from 'three' import { BlockFaceType, BlockType } from './shared' import * as tweenJs from '@tweenjs/tween.js' -import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './cube' +import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './CubeDef' //@ts-ignore import VertShader from './Cube.vert.wgsl' //@ts-ignore @@ -17,19 +17,10 @@ let chunksArrIndexes = {} let freeArrayIndexes = [] as [number, number][] let rendering = true let sidePositions -let updateCubes: (startIndex: any, forceUpdate?) => void let lastNotUpdatedIndex let lastNotUpdatedArrSize let animationTick = 0 -const updateCubesWhenAvailable = (pos) => { - if (updateCubes) { - updateCubes(pos) - } else { - setTimeout(updateCubesWhenAvailable, 100) - } -} - const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) globalThis.camera = camera @@ -47,6 +38,10 @@ const updateSize = (width, height) => { class WebgpuRendererWorker { + static NUMBER_OF_CUBES = 1_000_000 + + ready = false + device: GPUDevice renderPassDescriptor: GPURenderPassDescriptor uniformBindGroup: GPUBindGroup @@ -88,6 +83,7 @@ class WebgpuRendererWorker { alphaMode: 'premultiplied', }) + const verticesBuffer = device.createBuffer({ size: cubeVertexArray.byteLength, usage: GPUBufferUsage.VERTEX, @@ -97,24 +93,17 @@ class WebgpuRendererWorker { new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) verticesBuffer.unmap() - let NumberOfCubes = 3 - //Todo: make this dynamic - const ModelMatrix = new Float32Array([ - 0, 1, 0, - 1, 0, 0, - 0, 0, 1 - ]) - const InstancedModelBuffer = device.createBuffer({ - size: 4 * 4 * 4, - usage: GPUBufferUsage.VERTEX, + + this.InstancedModelBuffer = device.createBuffer({ + size: WebgpuRendererWorker.NUMBER_OF_CUBES * 4 * 4, + usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, mappedAtCreation: true, }) - this.InstancedModelBuffer = InstancedModelBuffer - new Float32Array(InstancedModelBuffer.getMappedRange()).set(ModelMatrix) - InstancedModelBuffer.unmap() + + //device.StepM const vertexCode = VertShader const fragmentCode = FragShader @@ -181,7 +170,7 @@ class WebgpuRendererWorker { }, primitive: { topology: 'triangle-list', - //cullMode: 'back', + cullMode: 'back', }, depthStencil: { @@ -267,10 +256,28 @@ class WebgpuRendererWorker { } this.loop() + this.ready = true return canvas } + updateSides (start) { + const positions = [] as number[] + for (let i = 0; i < allSides.length / 6; i++) { + const side = allSides[i * 6]! + positions.push(...[side[0], side[1], side[2]]) + } + + //Todo: make this dynamic + const ModelMatrix = new Float32Array(positions) + + + + + new Float32Array(this.InstancedModelBuffer.getMappedRange()).set(ModelMatrix) + this.InstancedModelBuffer.unmap() + } + lastCall = performance.now() logged = false @@ -309,7 +316,7 @@ class WebgpuRendererWorker { passEncoder.setBindGroup(0, uniformBindGroup) passEncoder.setVertexBuffer(0, verticesBuffer) passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) - passEncoder.draw(cubeVertexCount, 3) + passEncoder.draw(cubeVertexCount, WebgpuRendererWorker.NUMBER_OF_CUBES) passEncoder.end() device.queue.submit([commandEncoder.finish()]) @@ -325,6 +332,13 @@ let fullReset let webglRendererWorker: WebgpuRendererWorker | undefined +const updateCubesWhenAvailable = (pos) => { + if (webglRendererWorker?.ready) { + webglRendererWorker.updateSides(pos) + } else { + setTimeout(updateCubesWhenAvailable, 100) + } +} let started = false let newWidth: number | undefined @@ -375,7 +389,7 @@ export const workerProxyType = createWorkerProxy({ chunksArrIndexes[key] = [currentLength, currentLength + newData.length] allSides.push(...newData) lastNotUpdatedIndex ??= currentLength - // updateCubes?.(currentLength) + updateCubesWhenAvailable(currentLength) }, addBlocksSectionDone () { updateCubesWhenAvailable(lastNotUpdatedIndex) @@ -389,7 +403,7 @@ export const workerProxyType = createWorkerProxy({ allSides[i] = undefined } lastNotUpdatedArrSize = endIndex - startIndex - updateCubes(startIndex) + updateCubesWhenAvailable(startIndex) // freeArrayIndexes.push([startIndex, endIndex]) From 560d5fb5e3ab8c254be1735fe8d3f4ff0ddab7ca Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 02:02:50 +0300 Subject: [PATCH 093/303] up cube Co-authored-by: Ilya --- prismarine-viewer/examples/CubeDef.ts | 123 ++++++++++++------ prismarine-viewer/examples/playground.ts | 6 +- .../examples/webgpuRendererWorker.ts | 7 +- 3 files changed, 92 insertions(+), 44 deletions(-) diff --git a/prismarine-viewer/examples/CubeDef.ts b/prismarine-viewer/examples/CubeDef.ts index 0e38f341d..d41f92518 100644 --- a/prismarine-viewer/examples/CubeDef.ts +++ b/prismarine-viewer/examples/CubeDef.ts @@ -1,50 +1,95 @@ -export const cubeVertexSize = 4 * 10 // Byte size of one cube vertex. +export const cubeVertexSize = 4 * 5 // Byte size of one cube vertex. export const cubePositionOffset = 0 -export const cubeColorOffset = 4 * 4 // Byte offset of cube vertex color attribute. -export const cubeUVOffset = 4 * 8 +//export const cubeColorOffset = 4 * 3 // Byte offset of cube vertex color attribute. +export const cubeUVOffset = 4 * 3 export const cubeVertexCount = 36 //@ts-format-ignore-region export const cubeVertexArray = new Float32Array([ - -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // Bottom-let - 0.5, -0.5, -0.5, 1.0, 0.0, 0.0, // bottom-right - 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right - 0.5, 0.5, -0.5, 1.0, 1.0, 0.0, // top-right - -0.5, 0.5, -0.5, 0.0, 1.0, 0.0, // top-let - -0.5, -0.5, -0.5, 0.0, 0.0, 0.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let // ront ace - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0, // bottom-let - 0.5, 0.5, 0.5, 1.0, 1.0, 1.0, // top-right - 0.5, -0.5, 0.5, 1.0, 0.0, 1.0, // bottom-right - 0.5, 0.5, 0.5, 1.0, 1.0, 1.0,// top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 1.0,// bottom-let - -0.5, 0.5, 0.5, 0.0, 1.0, 1.0,// top-let + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, 0.5, 0.0, 1.0, // top-let // Let ace - -0.5, 0.5, 0.5, 1.0, 0.0, 2.0,// top-right - -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let - -0.5, 0.5, -0.5, 1.0, 1.0, 2.0,// top-let - -0.5, -0.5, -0.5, 0.0, 1.0, 2.0,// bottom-let - -0.5, 0.5, 0.5, 1.0, 0.0, 2.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 2.0,// bottom-right + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, -0.5, 1.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right // Right ace - 0.5, 0.5, 0.5, 1.0, 0.0, 3.0,// top-let - 0.5, 0.5, -0.5, 1.0, 1.0, 3.0,// top-right - 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right - 0.5, -0.5, -0.5, 0.0, 1.0, 3.0,// bottom-right - 0.5, -0.5, 0.5, 0.0, 0.0, 3.0,// bottom-let - 0.5, 0.5, 0.5, 1.0, 0.0, 3.0, // top-let + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let // Bottom ace - -0.5, -0.5, -0.5, 0.0, 1.0, 4.0,// top-right - 0.5, -0.5, 0.5, 1.0, 0.0, 4.0,// bottom-let - 0.5, -0.5, -0.5, 1.0, 1.0, 4.0,// top-let - 0.5, -0.5, 0.5, 1.0, 0.0, 4.0, // bottom-let - -0.5, -0.5, -0.5, 0.0, 1.0, 4.0, // top-right - -0.5, -0.5, 0.5, 0.0, 0.0, 4.0, // bottom-right + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + 0.5, -0.5, -0.5, 1.0, 1.0, // top-let + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right // Top ace - -0.5, 0.5, -0.5, 0.0, 1.0, 5.0,// top-let - 0.5, 0.5, -0.5, 1.0, 1.0, 5.0,// top-right - 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right - 0.5, 0.5, 0.5, 1.0, 0.0, 5.0,// bottom-right - -0.5, 0.5, 0.5, 0.0, 0.0, 5.0,// bottom-let - -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let˚ + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + -0.5, 0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, -0.5, 0.0, 1.0// top-let˚ +]); + + +export const cubeVertexArraySub = new Float32Array([ + -0.5, -0.5, -0.5, 0.0, 0.0, // Bottom-let + 0.5, -0.5, -0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 0.0, // bottom-let + // ront ace + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, 0.5, 0.0, 1.0, // top-let + // Let ace + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, -0.5, 1.0, 1.0, // top-let + -0.5, -0.5, -0.5, 0.0, 1.0, // bottom-let + -0.5, 0.5, 0.5, 1.0, 0.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Right ace + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, -0.5, 0.0, 1.0, // bottom-right + 0.5, -0.5, 0.5, 0.0, 0.0, // bottom-let + 0.5, 0.5, 0.5, 1.0, 0.0, // top-let + // Bottom ace + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + 0.5, -0.5, -0.5, 1.0, 1.0, // top-let + 0.5, -0.5, 0.5, 1.0, 0.0, // bottom-let + -0.5, -0.5, -0.5, 0.0, 1.0, // top-right + -0.5, -0.5, 0.5, 0.0, 0.0, // bottom-right + // Top ace + -0.5, 0.5, -0.5, 0.0, 1.0, // top-let + 0.5, 0.5, -0.5, 1.0, 1.0, // top-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + 0.5, 0.5, 0.5, 1.0, 0.0, // bottom-right + -0.5, 0.5, 0.5, 0.0, 0.0, // bottom-let + -0.5, 0.5, -0.5, 0.0, 1.0, 5.0// top-let˚ ]); diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index c011244fe..f9c729f5a 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -255,10 +255,10 @@ async function main () { let blocks: Record = {} let i = 0 - for (let x = 0; x < 100; x++) { + for (let x = 0; x < 1; x++) { blocks = {} - for (let i = 0; i < 10000; i++) { - const max = 1000 + for (let i = 0; i < 1000; i++) { + const max = 100 const pos = new Vec3(Math.floor(Math.random() * max), Math.floor(Math.random() * max), Math.floor(Math.random() * max)) const getFace = (face: number) => { return { diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index 9ff0f0eed..b5731dc34 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -122,7 +122,7 @@ class WebgpuRendererWorker { // position shaderLocation: 0, offset: cubePositionOffset, - format: 'float32x4', + format: 'float32x3', }, { // uv @@ -170,7 +170,7 @@ class WebgpuRendererWorker { }, primitive: { topology: 'triangle-list', - cullMode: 'back', + cullMode: 'front', }, depthStencil: { @@ -255,6 +255,9 @@ class WebgpuRendererWorker { }, } + + // always last! + rendering = false this.loop() this.ready = true From 6f0e238409cb47455692ad182143cc4c7395bdba Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 03:15:54 +0300 Subject: [PATCH 094/303] reduce size Co-authored-by: Ilya --- prismarine-viewer/examples/webgpuRendererWorker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index b5731dc34..f77e8239e 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -38,7 +38,7 @@ const updateSize = (width, height) => { class WebgpuRendererWorker { - static NUMBER_OF_CUBES = 1_000_000 + NUMBER_OF_CUBES = 1000 ready = false From 6d375d83e9566ae02cd73e86402233f6a8241566 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 03:17:57 +0300 Subject: [PATCH 095/303] Refactor shader code for cube rendering --- prismarine-viewer/examples/Cube.frag.wgsl | 1 - prismarine-viewer/examples/Cube.vert.wgsl | 11 +--- .../examples/webgpuRendererWorker.ts | 51 ++++++++++++------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index 0d936ae7c..87074904d 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -4,7 +4,6 @@ @fragment fn main( @location(0) fragUV: vec2f, - @location(1) fragPosition: vec4f ) -> @location(0) vec4f { return textureSample(myTexture, mySampler, fragUV/64); } diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index bce33581f..713b32a08 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -1,28 +1,21 @@ struct Uniforms { - modelViewProjectionMatrix : mat4x4f, - //modelViewProjectionMatrix : array, - //ProjectionMatrix : mat4x4f, - // ViewMatrix: mat4x4f + ViewProjectionMatrix : mat4x4f, } @binding(0) @group(0) var uniforms : Uniforms; struct VertexOutput { @builtin(position) Position : vec4f, @location(0) fragUV : vec2f, - @location(1) fragPosition: vec4f, } @vertex fn main( - //@builtin(instance_index) instanceIdx : u32, @location(0) position : vec4f, @location(1) uv : vec2f, @location(2) ModelMatrix : vec3f, ) -> VertexOutput { var output : VertexOutput; - output.Position = uniforms.modelViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); - //output.Position = uniforms.modelViewProjectionMatrix[instanceIdx] * position; + output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); output.fragUV = uv; - output.fragPosition = 0.5 * (position + vec4(1.0, 1.0, 1.0, 1.0)); return output; } diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index f77e8239e..e3f3b1c1b 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -95,10 +95,8 @@ class WebgpuRendererWorker { - - this.InstancedModelBuffer = device.createBuffer({ - size: WebgpuRendererWorker.NUMBER_OF_CUBES * 4 * 4, + size: this.NUMBER_OF_CUBES * 4 * 4, usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, mappedAtCreation: true, }) @@ -143,7 +141,20 @@ class WebgpuRendererWorker { } ], stepMode: 'instance', - } + }, + // { + // arrayStride: 1 * 4, + // attributes: [ + // { + // // ModelMatrix + // shaderLocation: 3, + // offset: 0, + // format: 'float32x1', + // } + // ], + // stepMode: 'instance', + // } + ], }, fragment: { @@ -260,11 +271,11 @@ class WebgpuRendererWorker { rendering = false this.loop() this.ready = true - return canvas } updateSides (start) { + rendering = true const positions = [] as number[] for (let i = 0; i < allSides.length / 6; i++) { const side = allSides[i * 6]! @@ -276,9 +287,9 @@ class WebgpuRendererWorker { - new Float32Array(this.InstancedModelBuffer.getMappedRange()).set(ModelMatrix) this.InstancedModelBuffer.unmap() + // this.NUMBER_OF_CUBES = positions.length } @@ -295,31 +306,35 @@ class WebgpuRendererWorker { const now = Date.now() tweenJs.update() - const modelViewProjectionMat4 = new THREE.Matrix4() + const ViewProjectionMat4 = new THREE.Matrix4() camera.updateMatrix() const projectionMatrix = camera.projectionMatrix - modelViewProjectionMat4.multiplyMatrices(projectionMatrix, camera.matrix.invert()) - const modelViewProjection = new Float32Array(modelViewProjectionMat4.elements) - // globalThis.modelViewProjection = modelViewProjection + ViewProjectionMat4.multiplyMatrices(projectionMatrix, camera.matrix.invert()) + const ViewProjection = new Float32Array(ViewProjectionMat4.elements) + // globalThis.ViewProjection = ViewProjection device.queue.writeBuffer( uniformBuffer, 0, - modelViewProjection.buffer, - modelViewProjection.byteOffset, - modelViewProjection.byteLength + ViewProjection.buffer, + ViewProjection.byteOffset, + ViewProjection.byteLength ) + + + renderPassDescriptor.colorAttachments[0].view = ctx .getCurrentTexture() .createView() const commandEncoder = device.createCommandEncoder() - const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor) - + const passEncoder = commandEncoder.beginRenderPass(this.renderPassDescriptor) passEncoder.setPipeline(pipeline) - passEncoder.setBindGroup(0, uniformBindGroup) + passEncoder.setBindGroup(0, this.uniformBindGroup) passEncoder.setVertexBuffer(0, verticesBuffer) passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) - passEncoder.draw(cubeVertexCount, WebgpuRendererWorker.NUMBER_OF_CUBES) + + + passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES) passEncoder.end() device.queue.submit([commandEncoder.finish()]) @@ -390,7 +405,7 @@ export const workerProxyType = createWorkerProxy({ } chunksArrIndexes[key] = [currentLength, currentLength + newData.length] - allSides.push(...newData) + allSides.splice(currentLength, 0, ...newData) lastNotUpdatedIndex ??= currentLength updateCubesWhenAvailable(currentLength) }, From 1c05804398b9e5d9534d92b431bcd58a6f7dbd42 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 03:40:31 +0300 Subject: [PATCH 096/303] fix build --- package.json | 2 +- prismarine-viewer/viewer/lib/worldrendererCommon.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 933f71014..a6a9db661 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "storybook": "storybook dev -p 6006", "build-storybook": "storybook build && node scripts/build.js moveStorybookFiles", "start-experiments": "vite --config experiments/vite.config.ts --host", - "watch-other-workers": "echo NOT IMPLEMENTED", + "watch-other-workers": "node buildWorkers.mjs -w", "watch-mesher": "node prismarine-viewer/buildMesherWorker.mjs -w", "run-playground": "run-p watch-mesher watch-other-workers playground-server watch-playground", "run-all": "run-p start run-playground", diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index f9f39127c..05fb6f4e7 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -4,7 +4,7 @@ import { loadJSON } from './utils' import { loadTexture } from './utils.web' import { EventEmitter } from 'events' import mcDataRaw from 'minecraft-data/data.js' // handled correctly in esbuild plugin -import { dynamicMcDataFiles } from '../../buildWorkerConfig.mjs' +import { dynamicMcDataFiles } from '../../buildMesherConfig.mjs' import { toMajor } from './version.js' import { chunkPos } from './simpleUtils' import { defaultMesherConfig } from './mesher/shared' From 02a84b83abae55a2a521c203940597f5e6a556f8 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 03:41:00 +0300 Subject: [PATCH 097/303] add textures --- prismarine-viewer/examples/Cube.frag.wgsl | 3 +- prismarine-viewer/examples/Cube.vert.wgsl | 3 ++ .../examples/webgpuRendererWorker.ts | 41 +++++++++++++------ 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index 87074904d..1974feca3 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -4,6 +4,7 @@ @fragment fn main( @location(0) fragUV: vec2f, + @location(1) TextueIndex: f32 ) -> @location(0) vec4f { - return textureSample(myTexture, mySampler, fragUV/64); + return textureSample(myTexture, mySampler, fragUV/64.0 + vec2f(TextueIndex%32,TextueIndex/32.0 )/32.0); } diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index 713b32a08..7898c88f8 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -6,6 +6,7 @@ struct Uniforms { struct VertexOutput { @builtin(position) Position : vec4f, @location(0) fragUV : vec2f, + @location(1) TextueIndex: f32 } @vertex @@ -13,9 +14,11 @@ fn main( @location(0) position : vec4f, @location(1) uv : vec2f, @location(2) ModelMatrix : vec3f, + @location(3) TextureIndex : f32 ) -> VertexOutput { var output : VertexOutput; output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); output.fragUV = uv; + output.TextueIndex = TextureIndex; return output; } diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index e3f3b1c1b..f066cbb9f 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -52,6 +52,7 @@ class WebgpuRendererWorker { verticesBuffer: GPUBuffer InstancedModelBuffer: GPUBuffer pipeline: GPURenderPipeline + InstancedTextureIndexBuffer: GPUBuffer constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { this.init() @@ -96,7 +97,13 @@ class WebgpuRendererWorker { this.InstancedModelBuffer = device.createBuffer({ - size: this.NUMBER_OF_CUBES * 4 * 4, + size: this.NUMBER_OF_CUBES * 4 * 3, + usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, + mappedAtCreation: true, + }) + + this.InstancedTextureIndexBuffer = device.createBuffer({ + size: this.NUMBER_OF_CUBES * 4 * 1, usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, mappedAtCreation: true, }) @@ -142,18 +149,18 @@ class WebgpuRendererWorker { ], stepMode: 'instance', }, - // { - // arrayStride: 1 * 4, - // attributes: [ - // { - // // ModelMatrix - // shaderLocation: 3, - // offset: 0, - // format: 'float32x1', - // } - // ], - // stepMode: 'instance', - // } + { + arrayStride: 1 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 3, + offset: 0, + format: 'float32', + } + ], + stepMode: 'instance', + } ], }, @@ -277,9 +284,11 @@ class WebgpuRendererWorker { updateSides (start) { rendering = true const positions = [] as number[] + let textureIndexes = [] as number[] for (let i = 0; i < allSides.length / 6; i++) { const side = allSides[i * 6]! positions.push(...[side[0], side[1], side[2]]) + textureIndexes.push(side[3].textureIndex) } //Todo: make this dynamic @@ -289,6 +298,11 @@ class WebgpuRendererWorker { new Float32Array(this.InstancedModelBuffer.getMappedRange()).set(ModelMatrix) this.InstancedModelBuffer.unmap() + + // same index with length = allSides.length / 6 + new Float32Array(this.InstancedTextureIndexBuffer.getMappedRange()).set(new Float32Array(textureIndexes)) + this.InstancedTextureIndexBuffer.unmap() + // this.NUMBER_OF_CUBES = positions.length } @@ -332,6 +346,7 @@ class WebgpuRendererWorker { passEncoder.setBindGroup(0, this.uniformBindGroup) passEncoder.setVertexBuffer(0, verticesBuffer) passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) + passEncoder.setVertexBuffer(2, this.InstancedTextureIndexBuffer) passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES) From 5c2be2e14798dc32b71b7bd1985681ceeb3c2ee2 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Sat, 25 May 2024 04:22:24 +0300 Subject: [PATCH 098/303] add textures, colors Co-authored-by: Ilya --- prismarine-viewer/examples/Cube.frag.wgsl | 5 +-- prismarine-viewer/examples/Cube.vert.wgsl | 7 ++-- prismarine-viewer/examples/playground.ts | 5 ++- prismarine-viewer/examples/shared.ts | 4 +-- .../examples/webgpuRendererWorker.ts | 36 ++++++++++++++++--- prismarine-viewer/viewer/lib/mesher/models.ts | 26 +++++++++++--- 6 files changed, 65 insertions(+), 18 deletions(-) diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index 1974feca3..211ad0772 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -4,7 +4,8 @@ @fragment fn main( @location(0) fragUV: vec2f, - @location(1) TextueIndex: f32 + @location(1) @interpolate(flat) TextueIndex: f32, + @location(2) @interpolate(flat) ColorBlend : vec3f ) -> @location(0) vec4f { - return textureSample(myTexture, mySampler, fragUV/64.0 + vec2f(TextueIndex%32,TextueIndex/32.0 )/32.0); + return textureSample(myTexture, mySampler, fragUV/64.0 + vec2f(trunc(TextueIndex/32.0),trunc(TextueIndex%32) )/32.0) * vec4f(ColorBlend,1.0); } diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index 7898c88f8..97d733305 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -6,7 +6,8 @@ struct Uniforms { struct VertexOutput { @builtin(position) Position : vec4f, @location(0) fragUV : vec2f, - @location(1) TextueIndex: f32 + @location(1) @interpolate(flat) TextueIndex: f32, + @location(2) @interpolate(flat) ColorBlend : vec3f } @vertex @@ -14,11 +15,13 @@ fn main( @location(0) position : vec4f, @location(1) uv : vec2f, @location(2) ModelMatrix : vec3f, - @location(3) TextureIndex : f32 + @location(3) TextureIndex : f32, + @location(4) ColorBlend : vec3f ) -> VertexOutput { var output : VertexOutput; output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); output.fragUV = uv; output.TextueIndex = TextureIndex; + output.ColorBlend = ColorBlend; return output; } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index fb82342e6..43e4e079f 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -12,7 +12,6 @@ import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import { EntityMesh } from '../viewer/lib/entity/EntityMesh' // import * as Mathgl from 'math.gl' -import { findTextureInBlockStates } from '../../src/playerWindows' import { initWebgpuRenderer, loadFixtureSides, setAnimationTick, webgpuChannel } from './webgpuRendererMain' import { renderToDom } from '@zardoy/react-util' @@ -261,12 +260,12 @@ async function main () { const pos = new Vec3(Math.floor(Math.random() * max), Math.floor(Math.random() * max), Math.floor(Math.random() * max)) const getFace = (face: number) => { return { - face, + side: face, textureIndex: Math.floor(Math.random() * 512) } } blocks[`${pos.x},${pos.y},${pos.z}`] = { - sides: [ + faces: [ getFace(0), getFace(1), getFace(2), diff --git a/prismarine-viewer/examples/shared.ts b/prismarine-viewer/examples/shared.ts index 318396fae..4ef9b417a 100644 --- a/prismarine-viewer/examples/shared.ts +++ b/prismarine-viewer/examples/shared.ts @@ -1,5 +1,5 @@ export type BlockFaceType = { - face: number + side: number textureIndex: number textureName?: string tint?: [number, number, number] @@ -7,5 +7,5 @@ export type BlockFaceType = { } export type BlockType = { - sides: BlockFaceType[] + faces: BlockFaceType[] } diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index f066cbb9f..fb244370c 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -53,6 +53,7 @@ class WebgpuRendererWorker { InstancedModelBuffer: GPUBuffer pipeline: GPURenderPipeline InstancedTextureIndexBuffer: GPUBuffer + InstancedColorBuffer: GPUBuffer constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { this.init() @@ -108,6 +109,12 @@ class WebgpuRendererWorker { mappedAtCreation: true, }) + this.InstancedColorBuffer = device.createBuffer({ + size: this.NUMBER_OF_CUBES * 4 * 3, + usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, + mappedAtCreation: true, + }) + //device.StepM const vertexCode = VertShader @@ -160,6 +167,18 @@ class WebgpuRendererWorker { } ], stepMode: 'instance', + }, + { + arrayStride: 3 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 4, + offset: 0, + format: 'float32x3', + } + ], + stepMode: 'instance', } ], @@ -217,7 +236,8 @@ class WebgpuRendererWorker { { cubeTexture = device.createTexture({ size: [textureBitmap.width, textureBitmap.height, 1], - format: 'rgba8unorm', + //format: 'rgba8unorm', + format: 'rgb10a2unorm', usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | @@ -259,7 +279,7 @@ class WebgpuRendererWorker { colorAttachments: [ { view: undefined as any, // Assigned later - clearValue: [0.5, 0.5, 0.5, 1.0], + clearValue: [0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1.0], loadOp: 'clear', storeOp: 'store', }, @@ -285,10 +305,12 @@ class WebgpuRendererWorker { rendering = true const positions = [] as number[] let textureIndexes = [] as number[] + let colors = [] as number[] for (let i = 0; i < allSides.length / 6; i++) { const side = allSides[i * 6]! positions.push(...[side[0], side[1], side[2]]) textureIndexes.push(side[3].textureIndex) + colors.push(1, 1, 1) } //Todo: make this dynamic @@ -303,6 +325,9 @@ class WebgpuRendererWorker { new Float32Array(this.InstancedTextureIndexBuffer.getMappedRange()).set(new Float32Array(textureIndexes)) this.InstancedTextureIndexBuffer.unmap() + new Float32Array(this.InstancedColorBuffer.getMappedRange()).set(new Float32Array(colors)) + this.InstancedColorBuffer.unmap() + // this.NUMBER_OF_CUBES = positions.length } @@ -347,6 +372,7 @@ class WebgpuRendererWorker { passEncoder.setVertexBuffer(0, verticesBuffer) passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) passEncoder.setVertexBuffer(2, this.InstancedTextureIndexBuffer) + passEncoder.setVertexBuffer(3, this.InstancedColorBuffer) passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES) @@ -399,7 +425,7 @@ export const workerProxyType = createWorkerProxy({ const newData = Object.entries(data.blocks).flatMap(([key, value]) => { const [x, y, z] = key.split(',').map(Number) const block = value as BlockType - return block.sides.map((side) => { + return block.faces.map((side) => { return [x, y, z, side] as [number, number, number, BlockFaceType] }) }) @@ -482,7 +508,7 @@ export const workerProxyType = createWorkerProxy({ // }) const dataSize = json.length / 5 for (let i = 0; i < json.length; i += 5) { - allSides.push([json[i], json[i + 1], json[i + 2], { face: json[i + 3], textureIndex: json[i + 4] }]) + allSides.push([json[i], json[i + 1], json[i + 2], { side: json[i + 3], textureIndex: json[i + 4] }]) } updateCubesWhenAvailable(0) }, @@ -505,7 +531,7 @@ const exportData = () => { const sideData = allSides[i] if (!sideData) continue const [x, y, z, side] = sideData - flatData.set([x, y, z, side.face, side.textureIndex], i * 5) + flatData.set([x, y, z, side.side, side.textureIndex], i * 5) } return { sides: flatData } diff --git a/prismarine-viewer/viewer/lib/mesher/models.ts b/prismarine-viewer/viewer/lib/mesher/models.ts index bfb96d114..16fe7d414 100644 --- a/prismarine-viewer/viewer/lib/mesher/models.ts +++ b/prismarine-viewer/viewer/lib/mesher/models.ts @@ -2,6 +2,7 @@ import { Vec3 } from 'vec3' import type { BlockStatesOutput } from '../../prepare/modelsBuilder' import { World } from './world' import { Block } from 'prismarine-block' +import { BlockType } from '../../../examples/shared' const tints: any = {} let blockStates: BlockStatesOutput @@ -17,6 +18,19 @@ for (const key of Object.keys(tintsData)) { tints[key] = prepareTints(tintsData[key]) } +type TestTileData = { + block: string + faces: { + face: string + neighbor: string + light?: number + }[] +} + +type Tiles = { + [blockPos: string]: BlockType & TestTileData +} + function prepareTints (tints) { const map = new Map() const defaultValue = tintToGl(tints.default) @@ -171,11 +185,12 @@ function renderLiquid (world, cursor, texture, type, biome, water, attr) { } if (needTiles) { - attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= { + const tiles = attr.tiles as Tiles + tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= { block: 'water', faces: [], } - attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ + tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ face, neighbor: `${neighborPos.x},${neighborPos.y},${neighborPos.z}`, // texture: eFace.texture.name, @@ -410,12 +425,15 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr } if (needTiles) { - attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= { + const tiles = attr.tiles as Tiles + tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= { block: block.name, faces: [], } - attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ + tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ face, + side: eFace.texture.side, + textureIndex: 0, neighbor: `${neighborPos.x},${neighborPos.y},${neighborPos.z}`, light: baseLight // texture: eFace.texture.name, From ae4618b1d858c46a3e4eb64644bb662187cfd253 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Tue, 25 Jun 2024 02:42:34 +0300 Subject: [PATCH 099/303] fix basic world opening, wip export tiles Co-authored-by: Ilya --- prismarine-viewer/examples/Cube.frag.wgsl | 4 +- prismarine-viewer/examples/playground.ts | 2 +- .../examples/webgpuRendererMain.ts | 15 +-- .../examples/webgpuRendererWorker.ts | 59 +++++++----- prismarine-viewer/viewer/lib/mesher/mesher.ts | 5 +- prismarine-viewer/viewer/lib/mesher/models.ts | 94 ++++++++++++++++--- prismarine-viewer/viewer/lib/mesher/shared.ts | 23 ++++- prismarine-viewer/viewer/lib/viewer.ts | 18 ++-- .../viewer/lib/worldrendererCommon.ts | 2 +- .../viewer/lib/worldrendererThree.ts | 2 +- .../viewer/lib/worldrendererWebgpu.ts | 12 ++- src/index.ts | 8 +- src/react/PauseScreen.tsx | 9 +- 13 files changed, 186 insertions(+), 67 deletions(-) diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index 211ad0772..7ed5985d7 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -4,8 +4,8 @@ @fragment fn main( @location(0) fragUV: vec2f, - @location(1) @interpolate(flat) TextueIndex: f32, - @location(2) @interpolate(flat) ColorBlend : vec3f + @location(1) @interpolate(flat) TextueIndex: f32, + @location(2) @interpolate(flat) ColorBlend: vec3f ) -> @location(0) vec4f { return textureSample(myTexture, mySampler, fragUV/64.0 + vec2f(trunc(TextueIndex/32.0),trunc(TextueIndex%32) )/32.0) * vec4f(ColorBlend,1.0); } diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index 43e4e079f..de710b1d4 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -275,7 +275,7 @@ async function main () { ], } } - webgpuChannel.addBlocksSection({ blocks }, `0,0,${i++}`) + webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) } diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index 9c5649df5..87bc043e4 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -4,6 +4,7 @@ import { options } from '../../src/optionsStorage' import { addNewStat } from './newStats' import type { workerProxyType } from './webgpuRendererWorker' import { useWorkerProxy } from './workerProxy' +import { MesherGeometryOutput } from '../viewer/lib/mesher/shared' let worker: Worker @@ -32,8 +33,8 @@ if (typeof customEvents !== 'undefined') { let isWaitingToUpload = false -export const addBlocksSection = (key, data) => { - webgpuChannel.addBlocksSection(data, key) +export const addBlocksSection = (key, data: MesherGeometryOutput) => { + webgpuChannel.addBlocksSection(data.tiles, key) if (playground && !isWaitingToUpload) { isWaitingToUpload = true // viewer.waitForChunksToRender().then(() => { @@ -65,7 +66,7 @@ export const removeBlocksSection = (key) => { } let playground = false -export const initWebgpuRenderer = async (version: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { +export const initWebgpuRenderer = async (texturesVersion: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { playground = actuallyPlayground await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) @@ -75,7 +76,7 @@ export const initWebgpuRenderer = async (version: string, postRender = () => { } // } viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) }) - const imageBlob = await fetch(`./textures/${version}.png`).then((res) => res.blob()) + const imageBlob = await fetch(`./textures/${texturesVersion}.png`).then((res) => res.blob()) const canvas = document.createElement('canvas') canvas.width = window.innerWidth * window.devicePixelRatio canvas.height = window.innerHeight * window.devicePixelRatio @@ -135,8 +136,8 @@ export const setAnimationTick = (tick: number, frames?: number) => { webgpuChannel.animationTick(tick, frames) } -globalThis.exportFixture = () => { - worker.postMessage({ type: 'exportData' }) +export const exportLoadedTiles = () => { + webgpuChannel.exportData() const controller = new AbortController() worker.addEventListener('message', async (e) => { const receivedData = e.data.data @@ -158,7 +159,7 @@ globalThis.exportFixture = () => { // split into two chunks const objectURL = URL.createObjectURL(new Blob([receivedData.sides.buffer], { type: 'application/octet-stream' })) a.href = objectURL - a.download = 'fixture.bin' + a.download = 'dumped-chunks-tiles.bin' a.click() URL.revokeObjectURL(objectURL) } finally { diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index fb244370c..bc21eb648 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -38,7 +38,7 @@ const updateSize = (width, height) => { class WebgpuRendererWorker { - NUMBER_OF_CUBES = 1000 + NUMBER_OF_CUBES = 100_000 ready = false @@ -54,6 +54,7 @@ class WebgpuRendererWorker { pipeline: GPURenderPipeline InstancedTextureIndexBuffer: GPUBuffer InstancedColorBuffer: GPUBuffer + notRenderedAdditions = 0 constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { this.init() @@ -99,20 +100,17 @@ class WebgpuRendererWorker { this.InstancedModelBuffer = device.createBuffer({ size: this.NUMBER_OF_CUBES * 4 * 3, - usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, - mappedAtCreation: true, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, }) this.InstancedTextureIndexBuffer = device.createBuffer({ size: this.NUMBER_OF_CUBES * 4 * 1, - usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, - mappedAtCreation: true, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, }) this.InstancedColorBuffer = device.createBuffer({ size: this.NUMBER_OF_CUBES * 4 * 3, - usage: GPUBufferUsage.VERTEX || GPUBufferUsage.MAP_WRITE, - mappedAtCreation: true, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, }) @@ -206,6 +204,7 @@ class WebgpuRendererWorker { ], }, primitive: { + // topology: 'triangle-strip', topology: 'triangle-list', cullMode: 'front', @@ -301,6 +300,12 @@ class WebgpuRendererWorker { return canvas } + removeOne () { + + } + + realNumberOfCubes = 0 + updateSides (start) { rendering = true const positions = [] as number[] @@ -308,27 +313,28 @@ class WebgpuRendererWorker { let colors = [] as number[] for (let i = 0; i < allSides.length / 6; i++) { const side = allSides[i * 6]! + if (!side) continue positions.push(...[side[0], side[1], side[2]]) textureIndexes.push(side[3].textureIndex) colors.push(1, 1, 1) } - //Todo: make this dynamic - const ModelMatrix = new Float32Array(positions) - - + this.realNumberOfCubes = positions.length + if (positions.length > this.NUMBER_OF_CUBES) { + // this.NUMBER_OF_CUBES = positions.length + 1000 + } + + const setModelBuffer = async (modelBuffer: GPUBuffer, data: Float32Array) => { + this.device.queue.writeBuffer(modelBuffer, 0, data/* , 0, 16 */) + } - new Float32Array(this.InstancedModelBuffer.getMappedRange()).set(ModelMatrix) - this.InstancedModelBuffer.unmap() + setModelBuffer(this.InstancedModelBuffer, new Float32Array(positions)) - // same index with length = allSides.length / 6 - new Float32Array(this.InstancedTextureIndexBuffer.getMappedRange()).set(new Float32Array(textureIndexes)) - this.InstancedTextureIndexBuffer.unmap() + setModelBuffer(this.InstancedTextureIndexBuffer, new Float32Array(textureIndexes)) - new Float32Array(this.InstancedColorBuffer.getMappedRange()).set(new Float32Array(colors)) - this.InstancedColorBuffer.unmap() + setModelBuffer(this.InstancedColorBuffer, new Float32Array(colors)) - // this.NUMBER_OF_CUBES = positions.length + this.notRenderedAdditions++ } @@ -381,9 +387,8 @@ class WebgpuRendererWorker { device.queue.submit([commandEncoder.finish()]) renderedFrames++ - if (rendering) { - requestAnimationFrame(() => this.loop()) - } + requestAnimationFrame(() => this.loop()) + this.notRenderedAdditions = 0 } } @@ -407,6 +412,7 @@ export const workerProxyType = createWorkerProxy({ canvas (canvas, imageBlob, isPlayground, FragShaderOverride) { started = true webglRendererWorker = new WebgpuRendererWorker(canvas, imageBlob, isPlayground, FragShaderOverride) + globalThis.webglRendererWorker = webglRendererWorker }, startRender () { rendering = true @@ -419,10 +425,10 @@ export const workerProxyType = createWorkerProxy({ newHeight = newHeight updateSize(newWidth, newHeight) }, - addBlocksSection (data: { blocks: Record }, key: string) { + addBlocksSection (tiles: Record, key: string) { const currentLength = allSides.length // in: object - name, out: [x, y, z, name] - const newData = Object.entries(data.blocks).flatMap(([key, value]) => { + const newData = Object.entries(tiles).flatMap(([key, value]) => { const [x, y, z] = key.split(',').map(Number) const block = value as BlockType return block.faces.map((side) => { @@ -448,7 +454,9 @@ export const workerProxyType = createWorkerProxy({ chunksArrIndexes[key] = [currentLength, currentLength + newData.length] allSides.splice(currentLength, 0, ...newData) lastNotUpdatedIndex ??= currentLength - updateCubesWhenAvailable(currentLength) + if (webglRendererWorker && webglRendererWorker.notRenderedAdditions < 5) { + updateCubesWhenAvailable(currentLength) + } }, addBlocksSectionDone () { updateCubesWhenAvailable(lastNotUpdatedIndex) @@ -456,6 +464,7 @@ export const workerProxyType = createWorkerProxy({ lastNotUpdatedArrSize = undefined }, removeBlocksSection (key) { + return // fill data with 0 const [startIndex, endIndex] = chunksArrIndexes[key] for (let i = startIndex; i < endIndex; i++) { diff --git a/prismarine-viewer/viewer/lib/mesher/mesher.ts b/prismarine-viewer/viewer/lib/mesher/mesher.ts index 9933c89b3..1fd771d7c 100644 --- a/prismarine-viewer/viewer/lib/mesher/mesher.ts +++ b/prismarine-viewer/viewer/lib/mesher/mesher.ts @@ -56,7 +56,8 @@ self.onmessage = ({ data }) => { } if (data.type === 'mesherData') { - setBlockStatesData(data.json) + // todo + setBlockStatesData(data.json, world.config.outputFormat === 'webgpu') blockStatesReady = true } else if (data.type === 'dirty') { const loc = new Vec3(data.x, data.y, data.z) @@ -91,7 +92,7 @@ setInterval(() => { const chunk = world.getColumn(x, z) if (chunk?.getSection(new Vec3(x, y, z))) { const geometry = getSectionGeometry(x, y, z, world) - const transferable = [geometry.positions.buffer, geometry.normals.buffer, geometry.colors.buffer, geometry.uvs.buffer] + const transferable = [geometry.positions?.buffer, geometry.normals?.buffer, geometry.colors?.buffer, geometry.uvs?.buffer].filter(Boolean) //@ts-ignore postMessage({ type: 'geometry', key, geometry }, transferable) } else { diff --git a/prismarine-viewer/viewer/lib/mesher/models.ts b/prismarine-viewer/viewer/lib/mesher/models.ts index 16fe7d414..1d7fd70a0 100644 --- a/prismarine-viewer/viewer/lib/mesher/models.ts +++ b/prismarine-viewer/viewer/lib/mesher/models.ts @@ -3,6 +3,7 @@ import type { BlockStatesOutput } from '../../prepare/modelsBuilder' import { World } from './world' import { Block } from 'prismarine-block' import { BlockType } from '../../../examples/shared' +import { MesherGeometryOutput } from './shared' const tints: any = {} let blockStates: BlockStatesOutput @@ -138,6 +139,67 @@ const everyArray = (array, callback) => { return array.every(callback) } +let textureName = undefined +let tint +const getTextureIndexResult = (biome, block, face: string, world: World): number => { + const facesOrTexture = findTextureInBlockStates(block.name); + if (!facesOrTexture) return 0 // todo + let result + if ('u' in facesOrTexture) { + result = facesOrTexture + } else { + result = facesOrTexture?.[face]?.texture + const tintindex = facesOrTexture?.[face]?.tintindex + if (tintindex === 0) { + if (block.name === 'redstone_wire') { + tint = tints.redstone[`${block.getProperties().power}`] + } else if (block.name === 'birch_leaves' || + block.name === 'spruce_leaves' || + block.name === 'lily_pad') { + tint = tints.constant[block.name] + } else if (block.name.includes('leaves') || block.name === 'vine') { + tint = tints.foliage[biome] + } else { + tint = tints.grass[biome] + } + } + } + if (!result) return 0 // todo + if (result.textureName) { + textureName = result.textureName + } + return uvToTextureIndex(result.u, result.v, world) - (result.su < 0 ? 1 : 0) - (result.sv < 0 ? 1 : 0) +} +function uvToTextureIndex (u, v, world: World) { + const textureSize = world.config.textureSize + const textureWidth = textureSize + const textureHeight = textureSize + const tileSize = 16; + // Convert UV coordinates to pixel coordinates + let x = u * textureWidth; + let y = v * textureHeight; + + // Convert pixel coordinates to tile index + const tileX = Math.floor(x / tileSize); + const tileY = Math.floor(y / tileSize); + + // Calculate texture index + const textureIndex = tileY * (textureWidth / tileSize) + tileX; + + return textureIndex; +} + +const findTextureInBlockStates = (name): any => { + const vars = blockStates[name]?.variants + if (!vars) return blockStates[name]?.multipart?.[0]?.apply?.[0]?.model?.elements?.[0]?.faces?.south?.texture + let firstVar = Object.values(vars)[0] as any + if (Array.isArray(firstVar)) firstVar = firstVar[0] + if (!firstVar) return + const [element] = firstVar.model?.elements + if (!element) return firstVar.model?.textures?.particle + if (!element/* || !(element?.from.every(a => a === 0) && element?.to.every(a => a === 16)) */) return + return element.faces +} const isCube = (block) => { if (!block || block.transparent) return false @@ -286,7 +348,7 @@ function buildRotationMatrix (axis, degree) { let needRecompute = false -function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr, globalMatrix, globalShift, block: Block, biome) { +function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr: MesherGeometryOutput, globalMatrix, globalShift, block: Block, biome) { const position = cursor // const key = `${position.x},${position.y},${position.z}` // if (!globalThis.allowedBlocks.includes(key)) return @@ -433,11 +495,12 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ face, side: eFace.texture.side, - textureIndex: 0, + textureIndex: getTextureIndexResult(biome, block, face, world), neighbor: `${neighborPos.x},${neighborPos.y},${neighborPos.z}`, - light: baseLight - // texture: eFace.texture.name, - }) + light: baseLight, + //@ts-ignore debug prop + texture: textureName, + } satisfies BlockType['faces'][number] & TestTileData['faces'][number] as any) } if (doAO && aos[0] + aos[3] >= aos[1] + aos[2]) { @@ -457,7 +520,7 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr export function getSectionGeometry (sx, sy, sz, world: World) { let delayedRender = [] as (() => void)[] - const attr = { + const attr: MesherGeometryOutput = { sx: sx + 8, sy: sy + 8, sz: sz + 8, @@ -473,7 +536,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { tiles: {}, // todo this can be removed here signs: {} - } as Record + } const cursor = new Vec3(0, 0, 0) for (cursor.y = sy; cursor.y < sy + 16; cursor.y++) { @@ -552,7 +615,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { delayedRender = [] let ndx = attr.positions.length / 3 - for (let i = 0; i < attr.t_positions.length / 12; i++) { + for (let i = 0; i < attr.t_positions!.length / 12; i++) { attr.indices.push( ndx, ndx + 1, ndx + 2, ndx + 2, ndx + 1, ndx + 3, @@ -563,10 +626,10 @@ export function getSectionGeometry (sx, sy, sz, world: World) { ndx += 4 } - attr.positions.push(...attr.t_positions) - attr.normals.push(...attr.t_normals) - attr.colors.push(...attr.t_colors) - attr.uvs.push(...attr.t_uvs) + attr.positions.push(...attr.t_positions!) + attr.normals.push(...attr.t_normals!) + attr.colors.push(...attr.t_colors!) + attr.uvs.push(...attr.t_uvs!) delete attr.t_positions delete attr.t_normals @@ -578,6 +641,13 @@ export function getSectionGeometry (sx, sy, sz, world: World) { attr.colors = new Float32Array(attr.colors) as any attr.uvs = new Float32Array(attr.uvs) as any + if (needTiles) { + delete attr.positions + delete attr.normals + delete attr.colors + delete attr.uvs + } + return attr } diff --git a/prismarine-viewer/viewer/lib/mesher/shared.ts b/prismarine-viewer/viewer/lib/mesher/shared.ts index 36c319b17..75b801446 100644 --- a/prismarine-viewer/viewer/lib/mesher/shared.ts +++ b/prismarine-viewer/viewer/lib/mesher/shared.ts @@ -1,10 +1,31 @@ +import { BlockType } from '../../../examples/shared' + export const defaultMesherConfig = { version: '', enableLighting: true, skyLight: 15, smoothLighting: true, - outputFormat: 'threeJs' as 'threeJs' | 'webgl', + outputFormat: 'threeJs' as 'threeJs' | 'webgpu', textureSize: 1024, // for testing } export type MesherConfig = typeof defaultMesherConfig + +export type MesherGeometryOutput = { + sx: number, + sy: number, + sz: number, + // resulting: float32array + positions: any, + normals: any, + colors: any, + uvs: any, + t_positions?: number[], + t_normals?: number[], + t_colors?: number[], + t_uvs?: number[], + + indices: number[], + tiles: Record, + signs: Record, +} diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 584522816..45f3f6c40 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -20,11 +20,12 @@ export class Viewer { domElement: HTMLCanvasElement playerHeight = 1.62 isSneaking = false - threeJsWorld: WorldRendererThree + // threeJsWorld: WorldRendererThree cameraObjectOverride?: THREE.Object3D // for xr audioListener: THREE.AudioListener renderingUntilNoUpdates = false processEntityOverrides = (e, overrides) => overrides + webgpuWorld: WorldRendererWebgpu // get camera () { // return this.world.camera @@ -40,7 +41,8 @@ export class Viewer { this.scene = new THREE.Scene() this.scene.matrixAutoUpdate = false // for perf - this.threeJsWorld = new WorldRendererThree(this.scene, this.renderer, worldConfig) + // this.threeJsWorld = new WorldRendererThree(this.scene, this.renderer, worldConfig) + this.webgpuWorld = new WorldRendererWebgpu(worldConfig) this.setWorld() this.resetScene() this.entities = new Entities(this.scene) @@ -50,7 +52,7 @@ export class Viewer { } setWorld () { - this.world = this.threeJsWorld + this.world = this.webgpuWorld } resetScene () { @@ -165,7 +167,7 @@ export class Viewer { }) // todo remove and use other architecture instead so data flow is clear emitter.on('blockEntities', (blockEntities) => { - if (this.world instanceof WorldRendererThree) this.world.blockEntities = blockEntities + if (this.world instanceof WorldRendererThree) (this.world as WorldRendererThree).blockEntities = blockEntities }) emitter.on('unloadChunk', ({ x, z }) => { @@ -197,7 +199,7 @@ export class Viewer { }) emitter.on('updateLight', ({ pos }) => { - if (this.world instanceof WorldRendererThree) this.world.updateLight(pos.x, pos.z) + if (this.world instanceof WorldRendererThree) (this.world as WorldRendererThree).updateLight(pos.x, pos.z) }) emitter.on('time', (timeOfDay) => { @@ -216,12 +218,16 @@ export class Viewer { if (this.world.mesherConfig.skyLight === skyLight) return this.world.mesherConfig.skyLight = skyLight - ; (this.world as WorldRendererThree).rerenderAllChunks?.() + if (this.world instanceof WorldRendererThree) { + (this.world as WorldRendererThree).rerenderAllChunks?.() + } }) emitter.emit('listening') } + loadChunksFixture () { } + render () { // if (this.composer) { // this.renderPass.camera = this.camera diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index 05fb6f4e7..b342e6d77 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -56,7 +56,7 @@ export abstract class WorldRendererCommon mesherConfig = defaultMesherConfig camera: THREE.PerspectiveCamera - abstract outputFormat: 'threeJs' | 'webgl' + abstract outputFormat: 'threeJs' | 'webgpu' constructor(public config: WorldRendererConfig) { // this.initWorkers(1) // preload script on page load diff --git a/prismarine-viewer/viewer/lib/worldrendererThree.ts b/prismarine-viewer/viewer/lib/worldrendererThree.ts index 76baf4b40..236ff7e8d 100644 --- a/prismarine-viewer/viewer/lib/worldrendererThree.ts +++ b/prismarine-viewer/viewer/lib/worldrendererThree.ts @@ -9,7 +9,7 @@ import { chunkPos, sectionPos } from './simpleUtils' function mod (x, n) { return ((x % n) + n) % n } -import { WorldRendererCommon } from './worldrendererCommon' +import { WorldRendererCommon, WorldRendererConfig } from './worldrendererCommon' import * as tweenJs from '@tweenjs/tween.js' import { BloomPass, RenderPass, UnrealBloomPass, EffectComposer, WaterPass, GlitchPass } from 'three-stdlib' diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts index 036b34452..7bdc4140b 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts @@ -4,6 +4,7 @@ import { addBlocksSection, removeBlocksSection, webgpuChannel } from '../../exam import type { WebglData } from '../prepare/webglData' import { loadJSON } from './utils.web' import { WorldRendererCommon } from './worldrendererCommon' +import { MesherGeometryOutput } from './mesher/shared' export class WorldRendererWebgpu extends WorldRendererCommon { outputFormat = 'webgpu' as const @@ -12,8 +13,8 @@ export class WorldRendererWebgpu extends WorldRendererCommon { stopBlockUpdate = false lastChunkDistance = 0 - constructor(numWorkers = 4) { - super(numWorkers) + constructor(config) { + super(config) this.renderUpdateEmitter.on('update', () => { const loadedChunks = Object.keys(this.finishedChunks).length @@ -43,8 +44,8 @@ export class WorldRendererWebgpu extends WorldRendererCommon { webgpuChannel.addBlocksSectionDone() } - handleWorkerMessage (data: any): void { - if (data.type === 'geometry' && Object.keys(data.geometry.blocks).length) { + handleWorkerMessage (data: { geometry: MesherGeometryOutput, type, key }): void { + if (data.type === 'geometry' && Object.keys(data.geometry.tiles).length) { const chunkCoords = data.key.split(',').map(Number) as [number, number, number] if (/* !this.loadedChunks[chunkCoords[0] + ',' + chunkCoords[2]] || */ !this.active) return @@ -57,6 +58,9 @@ export class WorldRendererWebgpu extends WorldRendererCommon { } } + updateCamera (pos: Vec3 | null, yaw: number, pitch: number): void { } + render (): void { } + chunksReset () { webgpuChannel.fullReset() } diff --git a/src/index.ts b/src/index.ts index 4c731eff4..962f50b8e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -93,6 +93,7 @@ import { ConnectOptions } from './connect' import { subscribe } from 'valtio' import { initWebgpuRenderer } from 'prismarine-viewer/examples/webgpuRendererMain' import { addNewStat } from 'prismarine-viewer/examples/newStats' +import { getVersion } from 'prismarine-viewer/viewer/lib/version' // import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' window.debug = debug @@ -375,14 +376,13 @@ async function connect (connectOptions: ConnectOptions) { viewer.setVersion(version) } - serverOptions.version = '1.14.4' + // serverOptions.version = '1.18.1' const downloadVersion = connectOptions.botVersion || (singleplayer ? serverOptions.version : undefined) if (downloadVersion) { await downloadMcData(downloadVersion) } - await initWebgpuRenderer(downloadVersion, () => { - postRenderFrameFn() - viewer.update() + await initWebgpuRenderer(getVersion(downloadVersion), () => { + renderWrapper.postRender() }) addNewStat('loaded-chunks') diff --git a/src/react/PauseScreen.tsx b/src/react/PauseScreen.tsx index 0d63df5db..198e8d8af 100644 --- a/src/react/PauseScreen.tsx +++ b/src/react/PauseScreen.tsx @@ -3,6 +3,7 @@ import { useEffect } from 'react' import { useSnapshot } from 'valtio' import { usedServerPathsV1 } from 'flying-squid/dist/lib/modules/world' import { openURL } from 'prismarine-viewer/viewer/lib/simpleUtils' +import { exportLoadedTiles } from 'prismarine-viewer/examples/webgpuRendererMain' import { activeModalStack, showModal, @@ -95,10 +96,16 @@ export default () => { if (fsStateSnap.inMemorySave || !singleplayer) { return showOptionsModal('World actions...', []) } - const action = await showOptionsModal('World actions...', ['Save to browser memory']) + const action = await showOptionsModal('World actions...', [ + ...!fsStateSnap.inMemorySave && singleplayer ? ['Save to browser memory'] : [], + 'Dump loaded chunks' + ]) if (action === 'Save to browser memory') { await saveToBrowserMemory() } + if (action === 'Dump loaded chunks') { + exportLoadedTiles() + } } if (!isModalActive) return null From 2ea730e9d16ac6b4207253d0579c8c3ad093d843 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Jul 2024 02:29:26 +0300 Subject: [PATCH 100/303] huge work by ilya. again. --- experiments/texture-render.html | 55 ++++++++----------- prismarine-viewer/examples/Cube.frag.wgsl | 7 ++- prismarine-viewer/examples/Cube.vert.wgsl | 2 +- prismarine-viewer/examples/playground.ts | 43 ++++++++++++--- .../examples/webgpuRendererWorker.ts | 12 ++-- prismarine-viewer/playground.html | 1 + 6 files changed, 73 insertions(+), 47 deletions(-) diff --git a/experiments/texture-render.html b/experiments/texture-render.html index 2a2716bde..25cc984bc 100644 --- a/experiments/texture-render.html +++ b/experiments/texture-render.html @@ -10,39 +10,21 @@ diff --git a/prismarine-viewer/examples/Cube.frag.wgsl b/prismarine-viewer/examples/Cube.frag.wgsl index 7ed5985d7..c7f040826 100644 --- a/prismarine-viewer/examples/Cube.frag.wgsl +++ b/prismarine-viewer/examples/Cube.frag.wgsl @@ -4,8 +4,11 @@ @fragment fn main( @location(0) fragUV: vec2f, - @location(1) @interpolate(flat) TextueIndex: f32, + @location(1) @interpolate(flat) TextureIndex: f32, @location(2) @interpolate(flat) ColorBlend: vec3f ) -> @location(0) vec4f { - return textureSample(myTexture, mySampler, fragUV/64.0 + vec2f(trunc(TextueIndex/32.0),trunc(TextueIndex%32) )/32.0) * vec4f(ColorBlend,1.0); + let textureSize: vec2 = vec2(textureDimensions(myTexture)); + let tileSize: vec2 = vec2(16.0f,16.0f); + let tilesPerTexture: vec2 = vec2(textureSize)/tileSize; + return textureSample(myTexture, mySampler, fragUV/tilesPerTexture + vec2f(trunc(TextureIndex%tilesPerTexture.y),trunc(TextureIndex/tilesPerTexture.x) )/tilesPerTexture) * vec4f(ColorBlend,1.0); } diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index 97d733305..162c4fd70 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -19,7 +19,7 @@ fn main( @location(4) ColorBlend : vec3f ) -> VertexOutput { var output : VertexOutput; - output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0)); + output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0) + vec4f(0.5, 0.0, 0.5, 0.0)); output.fragUV = uv; output.TextueIndex = TextureIndex; output.ColorBlend = ColorBlend; diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index de710b1d4..b92ab72ab 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -159,7 +159,7 @@ async function main () { await initWebgpuRenderer(version, () => { }, !enableControls && !fixture, true) const simpleControls = () => { - let pressedKeys = new Set() + let pressedKeys = new Set() const loop = () => { // Create a vector that points in the direction the camera is looking let direction = new THREE.Vector3(0, 0, 0) @@ -206,6 +206,11 @@ async function main () { } window.addEventListener('keydown', keys) window.addEventListener('keyup', keys) + window.addEventListener('blur', (e) => { + for (const key of pressedKeys) { + keys(new KeyboardEvent('keyup', { code: key })) + } + }) // mouse const mouse = { x: 0, y: 0 } @@ -253,11 +258,34 @@ async function main () { let blocks: Record = {} let i = 0 - for (let x = 0; x < 1; x++) { - blocks = {} - for (let i = 0; i < 1000; i++) { - const max = 100 - const pos = new Vec3(Math.floor(Math.random() * max), Math.floor(Math.random() * max), Math.floor(Math.random() * max)) + // for (let x = 0; x < 1; x++) { + // blocks = {} + // for (let i = 0; i < 1000; i++) { + // const max = 100 + // const pos = new Vec3(Math.floor(Math.random() * max), Math.floor(Math.random() * max), Math.floor(Math.random() * max)) + // const getFace = (face: number) => { + // return { + // side: face, + // textureIndex: Math.floor(Math.random() * 512) + // } + // } + // blocks[`${pos.x},${pos.y},${pos.z}`] = { + // faces: [ + // getFace(0), + // getFace(1), + // getFace(2), + // getFace(3), + // getFace(4), + // getFace(5) + // ], + // } + // } + // webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) + // } + // make platform + for (let x = 0; x < 1000; x++) { + for (let z = 0; z < 1000; z++) { + const pos = new Vec3(x, 0, z) const getFace = (face: number) => { return { side: face, @@ -275,9 +303,8 @@ async function main () { ], } } - webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) } - + webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) return diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index bc21eb648..fbce71dcf 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -38,7 +38,7 @@ const updateSize = (width, height) => { class WebgpuRendererWorker { - NUMBER_OF_CUBES = 100_000 + NUMBER_OF_CUBES = 1_000_000 ready = false @@ -323,7 +323,7 @@ class WebgpuRendererWorker { if (positions.length > this.NUMBER_OF_CUBES) { // this.NUMBER_OF_CUBES = positions.length + 1000 } - + const setModelBuffer = async (modelBuffer: GPUBuffer, data: Float32Array) => { this.device.queue.writeBuffer(modelBuffer, 0, data/* , 0, 16 */) } @@ -452,11 +452,15 @@ export const workerProxyType = createWorkerProxy({ } chunksArrIndexes[key] = [currentLength, currentLength + newData.length] - allSides.splice(currentLength, 0, ...newData) + let i = 0 + while (i < newData.length) { + i += 1024 + allSides.splice(currentLength + i, 0, ...newData.slice(i, i + 1024)) + } lastNotUpdatedIndex ??= currentLength if (webglRendererWorker && webglRendererWorker.notRenderedAdditions < 5) { updateCubesWhenAvailable(currentLength) - } + } }, addBlocksSectionDone () { updateCubesWhenAvailable(lastNotUpdatedIndex) diff --git a/prismarine-viewer/playground.html b/prismarine-viewer/playground.html index c3902f40d..2c3b5ddc5 100644 --- a/prismarine-viewer/playground.html +++ b/prismarine-viewer/playground.html @@ -7,6 +7,7 @@ html { overflow: hidden; background: black; + user-select: none; } html, body { From c9b1a9e8c31de66aaa03a212f97022f7fd154d86 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 10 Jul 2024 23:53:08 +0300 Subject: [PATCH 101/303] refactor webgpu renderer Co-authored-by: Ilya --- pnpm-lock.yaml | 64 ++- prismarine-viewer/examples/playground.ts | 4 +- prismarine-viewer/examples/webgpuRenderer.ts | 388 +++++++++++++++++ .../examples/webgpuRendererWorker.ts | 408 ++---------------- tsconfig.json | 1 - 5 files changed, 467 insertions(+), 398 deletions(-) create mode 100644 prismarine-viewer/examples/webgpuRenderer.ts diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6d677dc91..f73c8bb21 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4682,6 +4682,9 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -4904,6 +4907,15 @@ packages: debug: optional: true + follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} @@ -7178,6 +7190,10 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-middleware@0.15.0: + resolution: {integrity: sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==} + engines: {node: '>=0.8.0'} + psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -10414,7 +10430,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.2 - '@types/node': 20.8.0 + '@types/node': 20.12.8 '@types/yargs': 17.0.28 chalk: 4.1.2 @@ -11918,11 +11934,11 @@ snapshots: '@types/cors@2.8.15': dependencies: - '@types/node': 20.8.0 + '@types/node': 20.12.8 '@types/cross-spawn@6.0.3': dependencies: - '@types/node': 20.8.10 + '@types/node': 20.12.8 '@types/debug@4.1.12': dependencies: @@ -11971,7 +11987,7 @@ snapshots: '@types/graceful-fs@4.1.7': dependencies: - '@types/node': 20.11.19 + '@types/node': 20.12.8 '@types/http-cache-semantics@4.0.2': {} @@ -12066,12 +12082,12 @@ snapshots: '@types/readable-stream@4.0.10': dependencies: - '@types/node': 20.11.19 + '@types/node': 20.12.8 safe-buffer: 5.1.2 '@types/resolve@1.17.1': dependencies: - '@types/node': 20.8.10 + '@types/node': 20.12.8 '@types/sat@0.0.31': {} @@ -12082,7 +12098,7 @@ snapshots: '@types/send@0.17.2': dependencies: '@types/mime': 1.3.3 - '@types/node': 20.8.10 + '@types/node': 20.12.8 '@types/serve-static@1.15.3': dependencies: @@ -14463,6 +14479,16 @@ snapshots: etag@1.8.1: {} + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + event-target-shim@5.0.1: {} eventemitter2@6.4.7: {} @@ -14761,6 +14787,10 @@ snapshots: optionalDependencies: debug: 4.3.4(supports-color@8.1.1) + follow-redirects@1.15.6(debug@4.3.4): + optionalDependencies: + debug: 4.3.4(supports-color@8.1.1) + for-each@0.3.3: dependencies: is-callable: 1.2.7 @@ -15651,7 +15681,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.7 - '@types/node': 20.8.0 + '@types/node': 20.12.8 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -15668,7 +15698,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.0 + '@types/node': 20.12.8 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -15676,13 +15706,13 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 20.8.10 + '@types/node': 20.12.8 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@29.7.0: dependencies: - '@types/node': 20.11.19 + '@types/node': 20.12.8 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16402,7 +16432,7 @@ snapshots: minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13): dependencies: - '@types/readable-stream': 4.0.12 + '@types/readable-stream': 4.0.10 aes-js: 3.1.2 buffer-equal: 1.0.1 debug: 4.3.4(supports-color@8.1.1) @@ -16413,7 +16443,7 @@ snapshots: minecraft-folder-path: 1.2.0 node-fetch: 2.7.0(encoding@0.1.13) node-rsa: 0.4.2 - prismarine-auth: 2.4.2(encoding@0.1.13) + prismarine-auth: 2.4.1(encoding@0.1.13) prismarine-chat: 1.10.1 prismarine-nbt: 2.5.0 prismarine-realms: 1.3.2(encoding@0.1.13) @@ -17244,7 +17274,7 @@ snapshots: '@azure/msal-node': 2.6.3 '@xboxreplay/xboxlive-auth': 3.3.3(debug@4.3.4) debug: 4.3.4(supports-color@8.1.1) - jose: 4.15.4 + jose: 4.15.5 node-fetch: 2.7.0(encoding@0.1.13) smart-buffer: 4.2.0 uuid-1345: 1.0.2 @@ -17300,7 +17330,7 @@ snapshots: prismarine-entity@2.3.1: dependencies: - prismarine-chat: 1.9.1 + prismarine-chat: 1.10.1 prismarine-item: 1.14.0 prismarine-registry: 1.7.0 vec3: 0.1.8 @@ -17508,6 +17538,8 @@ snapshots: proxy-from-env@1.1.0: {} + proxy-middleware@0.15.0: {} + psl@1.9.0: {} public-encrypt@4.0.3: @@ -19280,7 +19312,7 @@ snapshots: postcss: 8.4.31 rollup: 3.29.4 optionalDependencies: - '@types/node': 20.11.19 + '@types/node': 20.12.8 fsevents: 2.3.3 terser: 5.19.2 diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index b92ab72ab..b828ac569 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -283,8 +283,8 @@ async function main () { // webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) // } // make platform - for (let x = 0; x < 1000; x++) { - for (let z = 0; z < 1000; z++) { + for (let x = 0; x < 100; x++) { + for (let z = 0; z < 100; z++) { const pos = new Vec3(x, 0, z) const getFace = (face: number) => { return { diff --git a/prismarine-viewer/examples/webgpuRenderer.ts b/prismarine-viewer/examples/webgpuRenderer.ts new file mode 100644 index 000000000..bb35da887 --- /dev/null +++ b/prismarine-viewer/examples/webgpuRenderer.ts @@ -0,0 +1,388 @@ +import * as THREE from 'three'; +import { BlockFaceType } from './shared'; +import * as tweenJs from '@tweenjs/tween.js'; +import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './CubeDef'; +import VertShader from './Cube.vert.wgsl'; +import FragShader from './Cube.frag.wgsl'; +import { updateSize, allSides } from './webgpuRendererWorker'; + +export class WebgpuRenderer { + rendering = true + NUMBER_OF_CUBES = 100000; + renderedFrames = 0 + + ready = false; + + device: GPUDevice; + renderPassDescriptor: GPURenderPassDescriptor; + uniformBindGroup: GPUBindGroup; + UniformBuffer: GPUBuffer; + ViewUniformBuffer: GPUBuffer; + ProjectionUniformBuffer: GPUBuffer; + ctx: GPUCanvasContext; + verticesBuffer: GPUBuffer; + InstancedModelBuffer: GPUBuffer; + pipeline: GPURenderPipeline; + InstancedTextureIndexBuffer: GPUBuffer; + InstancedColorBuffer: GPUBuffer; + notRenderedAdditions = 0; + + constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public camera: THREE.PerspectiveCamera, public FragShaderOverride?) { + this.init(); + } + + async init () { + const { canvas, imageBlob, isPlayground, FragShaderOverride } = this; + + updateSize(canvas.width, canvas.height); + // export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { + // isPlayground = false + // blockStates = blockStatesJson + const textureBitmap = await createImageBitmap(imageBlob); + const textureWidth = textureBitmap.width; + const textureHeight = textureBitmap.height; + + const adapter = await navigator.gpu.requestAdapter(); + if (!adapter) throw new Error('WebGPU not supported'); + this.device = await adapter.requestDevice(); + const { device } = this; + + const ctx = this.ctx = canvas.getContext('webgpu')!; + + const presentationFormat = navigator.gpu.getPreferredCanvasFormat(); + + ctx.configure({ + device, + format: presentationFormat, + alphaMode: 'premultiplied', + }); + + + const verticesBuffer = device.createBuffer({ + size: cubeVertexArray.byteLength, + usage: GPUBufferUsage.VERTEX, + mappedAtCreation: true, + }); + this.verticesBuffer = verticesBuffer; + new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray); + verticesBuffer.unmap(); + + + + this.InstancedModelBuffer = device.createBuffer({ + size: this.NUMBER_OF_CUBES * 4 * 3, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, + }); + + this.InstancedTextureIndexBuffer = device.createBuffer({ + size: this.NUMBER_OF_CUBES * 4 * 1, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, + }); + + this.InstancedColorBuffer = device.createBuffer({ + size: this.NUMBER_OF_CUBES * 4 * 3, + usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, + }); + + + //device.StepM + const vertexCode = VertShader; + const fragmentCode = FragShader; + + const pipeline = device.createRenderPipeline({ + layout: 'auto', + vertex: { + module: device.createShaderModule({ + code: vertexCode, + }), + buffers: [ + { + arrayStride: cubeVertexSize, + attributes: [ + { + // position + shaderLocation: 0, + offset: cubePositionOffset, + format: 'float32x3', + }, + { + // uv + shaderLocation: 1, + offset: cubeUVOffset, + format: 'float32x2', + }, + ], + }, + { + arrayStride: 3 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 2, + offset: 0, + format: 'float32x3', + } + ], + stepMode: 'instance', + }, + { + arrayStride: 1 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 3, + offset: 0, + format: 'float32', + } + ], + stepMode: 'instance', + }, + { + arrayStride: 3 * 4, + attributes: [ + { + // ModelMatrix + shaderLocation: 4, + offset: 0, + format: 'float32x3', + } + ], + stepMode: 'instance', + } + ], + }, + fragment: { + module: device.createShaderModule({ + code: fragmentCode, + }), + targets: [ + { + format: presentationFormat, + blend: { + color: { + srcFactor: 'src-alpha', + dstFactor: 'one-minus-src-alpha', + operation: 'add', + }, + alpha: { + srcFactor: 'src-alpha', + dstFactor: 'one-minus-src-alpha', + operation: 'add', + } + }, + }, + ], + }, + primitive: { + // topology: 'triangle-strip', + topology: 'triangle-list', + cullMode: 'front', + }, + depthStencil: { + depthWriteEnabled: true, + depthCompare: 'less', + format: 'depth24plus', + }, + }); + this.pipeline = pipeline; + + // const cullInstanceModule = this.device.createShaderModule({ + // label: 'Cull Instances', + // code: CULLING_SHADER, + // }); + + // device.createComputePipelineAsync({ + // label: "Cull Instances", + // layout: device.createPipelineLayout({ + // bindGroupLayouts: [ + // this.frameBindGroupLayout, + // culledInstanceBindGroupLayout, + // ] + // }), + // compute: { + // module: cullInstanceModule, + // entryPoint: 'computeMain', + // } + // }).then((pipeline) => { + // this.cullInstancesPipeline = pipeline; + // }); + + const depthTexture = device.createTexture({ + size: [canvas.width, canvas.height], + format: 'depth24plus', + usage: GPUTextureUsage.RENDER_ATTACHMENT, + }); + + const uniformBufferSize = 4 * (4 * 4); // 4x4 matrix + this.UniformBuffer = device.createBuffer({ + size: uniformBufferSize, + usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, + }); + + // Fetch the image and upload it into a GPUTexture. + let cubeTexture: GPUTexture; + { + cubeTexture = device.createTexture({ + size: [textureBitmap.width, textureBitmap.height, 1], + //format: 'rgba8unorm', + format: 'rgb10a2unorm', + usage: GPUTextureUsage.TEXTURE_BINDING | + GPUTextureUsage.COPY_DST | + GPUTextureUsage.RENDER_ATTACHMENT, + }); + device.queue.copyExternalImageToTexture( + { source: textureBitmap }, + { texture: cubeTexture }, + [textureBitmap.width, textureBitmap.height] + ); + } + + const sampler = device.createSampler({ + magFilter: 'nearest', + minFilter: 'nearest', + }); + + this.uniformBindGroup = device.createBindGroup({ + layout: pipeline.getBindGroupLayout(0), + entries: [ + { + binding: 0, + resource: { + buffer: this.UniformBuffer, + }, + }, + { + binding: 1, + resource: sampler, + }, + { + binding: 2, + resource: cubeTexture.createView(), + }, + ], + }); + + this.renderPassDescriptor = { + colorAttachments: [ + { + view: undefined as any, // Assigned later + clearValue: [0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1], + loadOp: 'clear', + storeOp: 'store', + }, + ], + depthStencilAttachment: { + view: depthTexture.createView(), + + depthClearValue: 1, + depthLoadOp: 'clear', + depthStoreOp: 'store', + }, + }; + + + // always last! + this.rendering = false; + this.loop(); + this.ready = true; + return canvas; + } + + removeOne () { + } + + realNumberOfCubes = 0; + + updateSides (start = 0) { + this.rendering = true; + const positions = [] as number[]; + let textureIndexes = [] as number[]; + let colors = [] as number[]; + const blocksPerFace = {} as Record; + for (const side of allSides.slice(start)) { + if (!side) continue; + const [x, y, z] = side.slice(0, 3); + const key = `${x},${y},${z}`; + if (blocksPerFace[key]) continue; + blocksPerFace[key] = side[3]; + } + for (const key in blocksPerFace) { + const side = key.split(',').map(Number); + positions.push(...[side[0], side[1], side[2]]); + const face = blocksPerFace[key]; + textureIndexes.push(face.textureIndex); + colors.push(1, 1, 1); + } + + this.realNumberOfCubes = positions.length; + if (positions.length > this.NUMBER_OF_CUBES) { + this.NUMBER_OF_CUBES = positions.length + 1000; + } + + const setModelBuffer = async (modelBuffer: GPUBuffer, data: Float32Array) => { + this.device.queue.writeBuffer(modelBuffer, 0, data /* , 0, 16 */); + }; + + setModelBuffer(this.InstancedModelBuffer, new Float32Array(positions)); + + setModelBuffer(this.InstancedTextureIndexBuffer, new Float32Array(textureIndexes)); + + setModelBuffer(this.InstancedColorBuffer, new Float32Array(colors)); + + this.notRenderedAdditions++; + } + + + lastCall = performance.now(); + logged = false; + loop () { + if (!this.rendering) { + requestAnimationFrame(() => this.loop()); + return; + } + + const { device, UniformBuffer: uniformBuffer, renderPassDescriptor, uniformBindGroup, pipeline, ctx, verticesBuffer } = this; + + const now = Date.now(); + tweenJs.update(); + + const ViewProjectionMat4 = new THREE.Matrix4(); + this.camera.updateMatrix(); + const projectionMatrix = this.camera.projectionMatrix; + ViewProjectionMat4.multiplyMatrices(projectionMatrix, this.camera.matrix.invert()); + const ViewProjection = new Float32Array(ViewProjectionMat4.elements); + // globalThis.ViewProjection = ViewProjection + device.queue.writeBuffer( + uniformBuffer, + 0, + ViewProjection.buffer, + ViewProjection.byteOffset, + ViewProjection.byteLength + ); + + + + renderPassDescriptor.colorAttachments[0].view = ctx + .getCurrentTexture() + .createView(); + + const commandEncoder = device.createCommandEncoder(); + const passEncoder = commandEncoder.beginRenderPass(this.renderPassDescriptor); + passEncoder.setPipeline(pipeline); + passEncoder.setBindGroup(0, this.uniformBindGroup); + passEncoder.setVertexBuffer(0, verticesBuffer); + passEncoder.setVertexBuffer(1, this.InstancedModelBuffer); + passEncoder.setVertexBuffer(2, this.InstancedTextureIndexBuffer); + passEncoder.setVertexBuffer(3, this.InstancedColorBuffer); + + + passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES); + + passEncoder.end(); + device.queue.submit([commandEncoder.finish()]); + + this.renderedFrames++; + requestAnimationFrame(() => this.loop()); + this.notRenderedAdditions = 0; + } +} diff --git a/prismarine-viewer/examples/webgpuRendererWorker.ts b/prismarine-viewer/examples/webgpuRendererWorker.ts index fbce71dcf..b44959bc4 100644 --- a/prismarine-viewer/examples/webgpuRendererWorker.ts +++ b/prismarine-viewer/examples/webgpuRendererWorker.ts @@ -2,20 +2,18 @@ import * as THREE from 'three' import { BlockFaceType, BlockType } from './shared' import * as tweenJs from '@tweenjs/tween.js' -import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './CubeDef' //@ts-ignore -import VertShader from './Cube.vert.wgsl' //@ts-ignore -import FragShader from './Cube.frag.wgsl' import { createWorkerProxy } from './workerProxy' +import { WebgpuRenderer } from './webgpuRenderer' -let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] +export let allSides = [] as ([number, number, number, BlockFaceType] | undefined)[] +globalThis.allSides = allSides let allSidesAdded = 0 let needsSidesUpdate = false let chunksArrIndexes = {} let freeArrayIndexes = [] as [number, number][] -let rendering = true let sidePositions let lastNotUpdatedIndex let lastNotUpdatedArrSize @@ -24,381 +22,26 @@ let animationTick = 0 const camera = new THREE.PerspectiveCamera(75, 1 / 1, 0.1, 1000) globalThis.camera = camera -let renderedFrames = 0 +let webgpuRenderer: WebgpuRenderer | undefined + setInterval(() => { + if (!webgpuRenderer) return // console.log('FPS:', renderedFrames) - postMessage({ type: 'fps', fps: renderedFrames }) - renderedFrames = 0 + postMessage({ type: 'fps', fps: webgpuRenderer.renderedFrames }) + webgpuRenderer.renderedFrames = 0 }, 1000) -const updateSize = (width, height) => { +export const updateSize = (width, height) => { camera.aspect = width / height camera.updateProjectionMatrix() } -class WebgpuRendererWorker { - NUMBER_OF_CUBES = 1_000_000 - - ready = false - - device: GPUDevice - renderPassDescriptor: GPURenderPassDescriptor - uniformBindGroup: GPUBindGroup - UniformBuffer: GPUBuffer - ViewUniformBuffer: GPUBuffer - ProjectionUniformBuffer: GPUBuffer - ctx: GPUCanvasContext - verticesBuffer: GPUBuffer - InstancedModelBuffer: GPUBuffer - pipeline: GPURenderPipeline - InstancedTextureIndexBuffer: GPUBuffer - InstancedColorBuffer: GPUBuffer - notRenderedAdditions = 0 - - constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public FragShaderOverride?) { - this.init() - } - - async init () { - const { canvas, imageBlob, isPlayground, FragShaderOverride } = this - - updateSize(canvas.width, canvas.height) - // export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { - // isPlayground = false - // blockStates = blockStatesJson - const textureBitmap = await createImageBitmap(imageBlob) - const textureWidth = textureBitmap.width - const textureHeight = textureBitmap.height - - const adapter = await navigator.gpu.requestAdapter() - if (!adapter) throw new Error('WebGPU not supported') - this.device = await adapter.requestDevice() - const { device } = this - - const ctx = this.ctx = canvas.getContext('webgpu')! - - const presentationFormat = navigator.gpu.getPreferredCanvasFormat() - - ctx.configure({ - device, - format: presentationFormat, - alphaMode: 'premultiplied', - }) - - - const verticesBuffer = device.createBuffer({ - size: cubeVertexArray.byteLength, - usage: GPUBufferUsage.VERTEX, - mappedAtCreation: true, - }) - this.verticesBuffer = verticesBuffer - new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray) - verticesBuffer.unmap() - - - - this.InstancedModelBuffer = device.createBuffer({ - size: this.NUMBER_OF_CUBES * 4 * 3, - usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, - }) - - this.InstancedTextureIndexBuffer = device.createBuffer({ - size: this.NUMBER_OF_CUBES * 4 * 1, - usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, - }) - - this.InstancedColorBuffer = device.createBuffer({ - size: this.NUMBER_OF_CUBES * 4 * 3, - usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, - }) - - - //device.StepM - const vertexCode = VertShader - const fragmentCode = FragShader - - const pipeline = device.createRenderPipeline({ - layout: 'auto', - vertex: { - module: device.createShaderModule({ - code: vertexCode, - }), - buffers: [ - { - arrayStride: cubeVertexSize, - attributes: [ - { - // position - shaderLocation: 0, - offset: cubePositionOffset, - format: 'float32x3', - }, - { - // uv - shaderLocation: 1, - offset: cubeUVOffset, - format: 'float32x2', - }, - ], - }, - { - arrayStride: 3 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 2, - offset: 0, - format: 'float32x3', - } - ], - stepMode: 'instance', - }, - { - arrayStride: 1 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 3, - offset: 0, - format: 'float32', - } - ], - stepMode: 'instance', - }, - { - arrayStride: 3 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 4, - offset: 0, - format: 'float32x3', - } - ], - stepMode: 'instance', - } - - ], - }, - fragment: { - module: device.createShaderModule({ - code: fragmentCode, - }), - targets: [ - { - format: presentationFormat, - blend: { - color: { - srcFactor: 'src-alpha', - dstFactor: 'one-minus-src-alpha', - operation: 'add', - }, - alpha: { - srcFactor: 'src-alpha', - dstFactor: 'one-minus-src-alpha', - operation: 'add', - } - }, - }, - ], - }, - primitive: { - // topology: 'triangle-strip', - topology: 'triangle-list', - cullMode: 'front', - - }, - depthStencil: { - depthWriteEnabled: true, - depthCompare: 'less', - format: 'depth24plus', - }, - - }) - this.pipeline = pipeline - - const depthTexture = device.createTexture({ - size: [canvas.width, canvas.height], - format: 'depth24plus', - usage: GPUTextureUsage.RENDER_ATTACHMENT, - }) - - const uniformBufferSize = 4 * (4 * 4) // 4x4 matrix - this.UniformBuffer = device.createBuffer({ - size: uniformBufferSize, - usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST, - }) - - // Fetch the image and upload it into a GPUTexture. - let cubeTexture: GPUTexture - { - cubeTexture = device.createTexture({ - size: [textureBitmap.width, textureBitmap.height, 1], - //format: 'rgba8unorm', - format: 'rgb10a2unorm', - usage: - GPUTextureUsage.TEXTURE_BINDING | - GPUTextureUsage.COPY_DST | - GPUTextureUsage.RENDER_ATTACHMENT, - }) - device.queue.copyExternalImageToTexture( - { source: textureBitmap }, - { texture: cubeTexture }, - [textureBitmap.width, textureBitmap.height] - ) - } - - const sampler = device.createSampler({ - magFilter: 'nearest', - minFilter: 'nearest', - }) - - this.uniformBindGroup = device.createBindGroup({ - layout: pipeline.getBindGroupLayout(0), - entries: [ - { - binding: 0, - resource: { - buffer: this.UniformBuffer, - }, - }, - { - binding: 1, - resource: sampler, - }, - { - binding: 2, - resource: cubeTexture.createView(), - }, - ], - }) - - this.renderPassDescriptor = { - colorAttachments: [ - { - view: undefined as any, // Assigned later - clearValue: [0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1.0], - loadOp: 'clear', - storeOp: 'store', - }, - ], - depthStencilAttachment: { - view: depthTexture.createView(), - - depthClearValue: 1.0, - depthLoadOp: 'clear', - depthStoreOp: 'store', - }, - } - - - // always last! - rendering = false - this.loop() - this.ready = true - return canvas - } - - removeOne () { - - } - - realNumberOfCubes = 0 - - updateSides (start) { - rendering = true - const positions = [] as number[] - let textureIndexes = [] as number[] - let colors = [] as number[] - for (let i = 0; i < allSides.length / 6; i++) { - const side = allSides[i * 6]! - if (!side) continue - positions.push(...[side[0], side[1], side[2]]) - textureIndexes.push(side[3].textureIndex) - colors.push(1, 1, 1) - } - - this.realNumberOfCubes = positions.length - if (positions.length > this.NUMBER_OF_CUBES) { - // this.NUMBER_OF_CUBES = positions.length + 1000 - } - - const setModelBuffer = async (modelBuffer: GPUBuffer, data: Float32Array) => { - this.device.queue.writeBuffer(modelBuffer, 0, data/* , 0, 16 */) - } - - setModelBuffer(this.InstancedModelBuffer, new Float32Array(positions)) - - setModelBuffer(this.InstancedTextureIndexBuffer, new Float32Array(textureIndexes)) - - setModelBuffer(this.InstancedColorBuffer, new Float32Array(colors)) - - this.notRenderedAdditions++ - } - - - lastCall = performance.now() - logged = false - loop () { - if (!rendering) { - requestAnimationFrame(() => this.loop()) - return - } - - const { device, UniformBuffer: uniformBuffer, renderPassDescriptor, uniformBindGroup, pipeline, ctx, verticesBuffer } = this - - const now = Date.now() - tweenJs.update() - - const ViewProjectionMat4 = new THREE.Matrix4() - camera.updateMatrix() - const projectionMatrix = camera.projectionMatrix - ViewProjectionMat4.multiplyMatrices(projectionMatrix, camera.matrix.invert()) - const ViewProjection = new Float32Array(ViewProjectionMat4.elements) - // globalThis.ViewProjection = ViewProjection - device.queue.writeBuffer( - uniformBuffer, - 0, - ViewProjection.buffer, - ViewProjection.byteOffset, - ViewProjection.byteLength - ) - - - - renderPassDescriptor.colorAttachments[0].view = ctx - .getCurrentTexture() - .createView() - - const commandEncoder = device.createCommandEncoder() - const passEncoder = commandEncoder.beginRenderPass(this.renderPassDescriptor) - passEncoder.setPipeline(pipeline) - passEncoder.setBindGroup(0, this.uniformBindGroup) - passEncoder.setVertexBuffer(0, verticesBuffer) - passEncoder.setVertexBuffer(1, this.InstancedModelBuffer) - passEncoder.setVertexBuffer(2, this.InstancedTextureIndexBuffer) - passEncoder.setVertexBuffer(3, this.InstancedColorBuffer) - - - passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES) - - passEncoder.end() - device.queue.submit([commandEncoder.finish()]) - - renderedFrames++ - requestAnimationFrame(() => this.loop()) - this.notRenderedAdditions = 0 - } -} - let fullReset -let webglRendererWorker: WebgpuRendererWorker | undefined - const updateCubesWhenAvailable = (pos) => { - if (webglRendererWorker?.ready) { - webglRendererWorker.updateSides(pos) + if (webgpuRenderer?.ready) { + webgpuRenderer.updateSides(pos) } else { setTimeout(updateCubesWhenAvailable, 100) } @@ -411,14 +54,16 @@ let autoTickUpdate = undefined as number | undefined export const workerProxyType = createWorkerProxy({ canvas (canvas, imageBlob, isPlayground, FragShaderOverride) { started = true - webglRendererWorker = new WebgpuRendererWorker(canvas, imageBlob, isPlayground, FragShaderOverride) - globalThis.webglRendererWorker = webglRendererWorker + webgpuRenderer = new WebgpuRenderer(canvas, imageBlob, isPlayground, camera, FragShaderOverride) + globalThis.webglRendererWorker = webgpuRenderer }, startRender () { - rendering = true + if (!webgpuRenderer) return + webgpuRenderer.rendering = true }, stopRender () { - rendering = false + if (!webgpuRenderer) return + webgpuRenderer.rendering = false }, resize (newWidth, newHeight) { newWidth = newWidth @@ -452,15 +97,15 @@ export const workerProxyType = createWorkerProxy({ } chunksArrIndexes[key] = [currentLength, currentLength + newData.length] - let i = 0 + let i = 0; while (i < newData.length) { - i += 1024 - allSides.splice(currentLength + i, 0, ...newData.slice(i, i + 1024)) + allSides.splice(currentLength + i, 0, ...newData.slice(i, i + 1024)); + i += 1024; } lastNotUpdatedIndex ??= currentLength - if (webglRendererWorker && webglRendererWorker.notRenderedAdditions < 5) { - updateCubesWhenAvailable(currentLength) - } + // if (webglRendererWorker && webglRendererWorker.notRenderedAdditions < 5) { + updateCubesWhenAvailable(currentLength) + // } }, addBlocksSectionDone () { updateCubesWhenAvailable(lastNotUpdatedIndex) @@ -487,7 +132,12 @@ export const workerProxyType = createWorkerProxy({ // } }, camera (newCam) { - camera.rotation.set(newCam.rotation.x, newCam.rotation.y, newCam.rotation.z, 'ZYX') + if (webgpuRenderer?.isPlayground) { + camera.rotation.order = 'ZYX' + new tweenJs.Tween(camera.rotation).to({ x: newCam.rotation.x, y: newCam.rotation.y, z: newCam.rotation.z }, 50).start() + } else { + camera.rotation.set(newCam.rotation.x, newCam.rotation.y, newCam.rotation.z, 'ZYX') + } if (newCam.position.x === 0 && newCam.position.y === 0 && newCam.position.z === 0) { // initial camera position camera.position.set(newCam.position.x, newCam.position.y, newCam.position.z) diff --git a/tsconfig.json b/tsconfig.json index 59424cbee..f7827cc27 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,7 +17,6 @@ "skipLibCheck": true, "strictBindCallApply": true, "experimentalDecorators": true, - "strictBindCallApply": true, // this the only options that allows smooth transition from js to ts (by not dropping types from js files) // however might need to consider includeing *only needed libraries* instead of using this "maxNodeModuleJsDepth": 1, From 16d4f5db19b062e75b8be8328ca4a7df339019b3 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 19 Jul 2024 01:08:36 +0300 Subject: [PATCH 102/303] fix build Co-authored-by: Ilya --- prismarine-viewer/examples/webgpuRendererMain.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index 87bc043e4..f30d90278 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -1,6 +1,5 @@ import { generateSpiralMatrix } from 'flying-squid/dist/utils' import { Viewer } from '../viewer/lib/viewer' -import { options } from '../../src/optionsStorage' import { addNewStat } from './newStats' import type { workerProxyType } from './webgpuRendererWorker' import { useWorkerProxy } from './workerProxy' @@ -19,7 +18,7 @@ declare const customEvents declare const bot if (typeof customEvents !== 'undefined') { customEvents.on('gameLoaded', () => { - const chunksExpected = generateSpiralMatrix(options.renderDistance) + const chunksExpected = generateSpiralMatrix(globalThis.options.renderDistance) let received = 0 bot.on('chunkColumnLoad', (data) => { received++ From 8e7d7b9cb6a37d78990a6a3d73a62810f25964c7 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Fri, 19 Jul 2024 01:40:09 +0300 Subject: [PATCH 103/303] wip compute pipeline: indirect draw --- prismarine-viewer/examples/Compute.wgsl | 47 +++ prismarine-viewer/examples/Cube.vert.wgsl | 38 +- prismarine-viewer/examples/webgpuRenderer.ts | 344 ++++++++++++------ .../examples/webgpuRendererMain.ts | 3 + 4 files changed, 303 insertions(+), 129 deletions(-) create mode 100644 prismarine-viewer/examples/Compute.wgsl diff --git a/prismarine-viewer/examples/Compute.wgsl b/prismarine-viewer/examples/Compute.wgsl new file mode 100644 index 000000000..44a305c01 --- /dev/null +++ b/prismarine-viewer/examples/Compute.wgsl @@ -0,0 +1,47 @@ +struct Cube { + position: vec3, + textureIndex: f32, + colorBlend: vec3, +} + +struct Uniforms { + ViewProjectionMatrix: mat4x4, +} + +struct IndirectDrawParams { + vertexCount: u32, + instanceCount: atomic, + firstVertex: u32, + firstInstance: u32, +} + +@group(1) @binding(0) var uniforms: Uniforms; +@group(1) @binding(1) var cubes: array; +@group(1) @binding(2) var visibleCubes: array; // Changed to @binding(4) +@group(1) @binding(3) var drawParams: array; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) global_id: vec3) { + let index = global_id.x; + if (index >= arrayLength(&cubes)) { + return; + } + + let cube = cubes[index]; + + // Transform cube position to clip space + let clipPos = uniforms.ViewProjectionMatrix * vec4(cube.position, 1.0); + + // Perform sphere-based occlusion test + let ndcPos = clipPos.xyz / clipPos.w; + let sphereRadius = 1.0 / clipPos.w; //Radius of fixed size for cubes + + // Check if sphere is within view frustum and not completely behind near plane + if (abs(ndcPos.x) - sphereRadius <= 1.0 && + abs(ndcPos.y) - sphereRadius <= 1.0 && + ndcPos.z - sphereRadius <= 1.0 && + ndcPos.z + sphereRadius >= -1.0) { + let visibleIndex = atomicAdd(&drawParams[index].instanceCount, 1u); + visibleCubes[visibleIndex] = cube; + } +} diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index 162c4fd70..fe8484bb2 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -1,27 +1,35 @@ struct Uniforms { - ViewProjectionMatrix : mat4x4f, + ViewProjectionMatrix: mat4x4, +} + +struct Cube { + position: vec3, + textureIndex: f32, + colorBlend: vec3, } -@binding(0) @group(0) var uniforms : Uniforms; struct VertexOutput { - @builtin(position) Position : vec4f, - @location(0) fragUV : vec2f, - @location(1) @interpolate(flat) TextueIndex: f32, - @location(2) @interpolate(flat) ColorBlend : vec3f + @builtin(position) Position: vec4, + @location(0) fragUV: vec2, + @location(1) @interpolate(flat) TextureIndex: f32, + @location(2) @interpolate(flat) ColorBlend: vec3 } +@group(1) @binding(0) var uniforms: Uniforms; +@group(1) @binding(2) var visibleCubes: array; + @vertex fn main( - @location(0) position : vec4f, - @location(1) uv : vec2f, - @location(2) ModelMatrix : vec3f, - @location(3) TextureIndex : f32, - @location(4) ColorBlend : vec3f + @builtin(instance_index) instanceIndex: u32, + @location(0) position: vec4, + @location(1) uv: vec2 ) -> VertexOutput { - var output : VertexOutput; - output.Position = uniforms.ViewProjectionMatrix * (position +vec4f(ModelMatrix, 0.0) + vec4f(0.5, 0.0, 0.5, 0.0)); + let cube = visibleCubes[instanceIndex]; + + var output: VertexOutput; + output.Position = uniforms.ViewProjectionMatrix * (position + vec4(cube.position, 0.0) + vec4(0.5, 0.0, 0.5, 0.0)); output.fragUV = uv; - output.TextueIndex = TextureIndex; - output.ColorBlend = ColorBlend; + output.TextureIndex = cube.textureIndex; + output.ColorBlend = cube.colorBlend; return output; } diff --git a/prismarine-viewer/examples/webgpuRenderer.ts b/prismarine-viewer/examples/webgpuRenderer.ts index bb35da887..54cbc152e 100644 --- a/prismarine-viewer/examples/webgpuRenderer.ts +++ b/prismarine-viewer/examples/webgpuRenderer.ts @@ -4,6 +4,7 @@ import * as tweenJs from '@tweenjs/tween.js'; import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './CubeDef'; import VertShader from './Cube.vert.wgsl'; import FragShader from './Cube.frag.wgsl'; +import ComputeShader from './Compute.wgsl'; import { updateSize, allSides } from './webgpuRendererWorker'; export class WebgpuRenderer { @@ -27,6 +28,14 @@ export class WebgpuRenderer { InstancedColorBuffer: GPUBuffer; notRenderedAdditions = 0; + // Add these properties to the WebgpuRenderer class + computePipeline: GPUComputePipeline; + indirectDrawBuffer: GPUBuffer; + cubesBuffer: GPUBuffer; + visibleCubesBuffer: GPUBuffer; + computeBindGroup: GPUBindGroup; + computeBindGroupLayout: GPUBindGroupLayout; + constructor(public canvas: HTMLCanvasElement, public imageBlob: ImageBitmapSource, public isPlayground: boolean, public camera: THREE.PerspectiveCamera, public FragShaderOverride?) { this.init(); } @@ -35,9 +44,6 @@ export class WebgpuRenderer { const { canvas, imageBlob, isPlayground, FragShaderOverride } = this; updateSize(canvas.width, canvas.height); - // export const initWebglRenderer = async (canvas: HTMLCanvasElement, imageBlob: ImageBitmapSource, isPlayground: boolean, FragShaderOverride?) => { - // isPlayground = false - // blockStates = blockStatesJson const textureBitmap = await createImageBitmap(imageBlob); const textureWidth = textureBitmap.width; const textureHeight = textureBitmap.height; @@ -57,7 +63,6 @@ export class WebgpuRenderer { alphaMode: 'premultiplied', }); - const verticesBuffer = device.createBuffer({ size: cubeVertexArray.byteLength, usage: GPUBufferUsage.VERTEX, @@ -67,8 +72,6 @@ export class WebgpuRenderer { new Float32Array(verticesBuffer.getMappedRange()).set(cubeVertexArray); verticesBuffer.unmap(); - - this.InstancedModelBuffer = device.createBuffer({ size: this.NUMBER_OF_CUBES * 4 * 3, usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, @@ -84,76 +87,67 @@ export class WebgpuRenderer { usage: GPUBufferUsage.VERTEX | GPUBufferUsage.COPY_DST, }); - - //device.StepM - const vertexCode = VertShader; - const fragmentCode = FragShader; - const pipeline = device.createRenderPipeline({ + label: 'mainPipeline', layout: 'auto', vertex: { module: device.createShaderModule({ - code: vertexCode, + code: VertShader, }), buffers: [ { arrayStride: cubeVertexSize, attributes: [ { - // position shaderLocation: 0, offset: cubePositionOffset, format: 'float32x3', }, { - // uv shaderLocation: 1, offset: cubeUVOffset, format: 'float32x2', }, ], }, - { - arrayStride: 3 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 2, - offset: 0, - format: 'float32x3', - } - ], - stepMode: 'instance', - }, - { - arrayStride: 1 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 3, - offset: 0, - format: 'float32', - } - ], - stepMode: 'instance', - }, - { - arrayStride: 3 * 4, - attributes: [ - { - // ModelMatrix - shaderLocation: 4, - offset: 0, - format: 'float32x3', - } - ], - stepMode: 'instance', - } + // { + // arrayStride: 3 * 4, + // attributes: [ + // { + // shaderLocation: 2, + // offset: 0, + // format: 'float32x3', + // }, + // ], + // stepMode: 'instance', + // }, + // { + // arrayStride: 1 * 4, + // attributes: [ + // { + // shaderLocation: 3, + // offset: 0, + // format: 'float32', + // }, + // ], + // stepMode: 'instance', + // }, + // { + // arrayStride: 3 * 4, + // attributes: [ + // { + // shaderLocation: 4, + // offset: 0, + // format: 'float32x3', + // }, + // ], + // stepMode: 'instance', + // }, ], }, fragment: { module: device.createShaderModule({ - code: fragmentCode, + code: FragShader, }), targets: [ { @@ -168,13 +162,13 @@ export class WebgpuRenderer { srcFactor: 'src-alpha', dstFactor: 'one-minus-src-alpha', operation: 'add', - } + }, }, }, ], }, + primitive: { - // topology: 'triangle-strip', topology: 'triangle-list', cullMode: 'front', }, @@ -186,27 +180,6 @@ export class WebgpuRenderer { }); this.pipeline = pipeline; - // const cullInstanceModule = this.device.createShaderModule({ - // label: 'Cull Instances', - // code: CULLING_SHADER, - // }); - - // device.createComputePipelineAsync({ - // label: "Cull Instances", - // layout: device.createPipelineLayout({ - // bindGroupLayouts: [ - // this.frameBindGroupLayout, - // culledInstanceBindGroupLayout, - // ] - // }), - // compute: { - // module: cullInstanceModule, - // entryPoint: 'computeMain', - // } - // }).then((pipeline) => { - // this.cullInstancesPipeline = pipeline; - // }); - const depthTexture = device.createTexture({ size: [canvas.width, canvas.height], format: 'depth24plus', @@ -224,11 +197,8 @@ export class WebgpuRenderer { { cubeTexture = device.createTexture({ size: [textureBitmap.width, textureBitmap.height, 1], - //format: 'rgba8unorm', format: 'rgb10a2unorm', - usage: GPUTextureUsage.TEXTURE_BINDING | - GPUTextureUsage.COPY_DST | - GPUTextureUsage.RENDER_ATTACHMENT, + usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT, }); device.queue.copyExternalImageToTexture( { source: textureBitmap }, @@ -242,8 +212,98 @@ export class WebgpuRenderer { minFilter: 'nearest', }); + this.renderPassDescriptor = { + label: 'MainRenderPassDescriptor', + colorAttachments: [ + { + view: undefined as any, // Assigned later + clearValue: [0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1], + loadOp: 'clear', + storeOp: 'store', + }, + ], + depthStencilAttachment: { + view: depthTexture.createView(), + depthClearValue: 1, + depthLoadOp: 'clear', + depthStoreOp: 'store', + }, + }; + + // Create compute pipeline + const computeShaderModule = device.createShaderModule({ + code: ComputeShader, + label: 'Culled Instance', + }); + + const computeBindGroupLayout = device.createBindGroupLayout({ + label: 'computeBindGroupLayout', + entries: [ + { binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'uniform' } }, + { binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'read-only-storage' } }, + { binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'storage' } }, + { binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'storage' } }, + ], + }); + const anotherLayout = device.createBindGroupLayout({ + label: 'anotherLayout', + entries: [ + ], + }); + + const computePipelineLayout = device.createPipelineLayout({ + label: 'computePipelineLayout', + bindGroupLayouts: [anotherLayout, computeBindGroupLayout], + + }) + + this.computePipeline = device.createComputePipeline({ + label: 'Culled Instance', + layout: computePipelineLayout, + // layout: 'auto', + compute: { + module: computeShaderModule, + entryPoint: 'main', + }, + }); + + // Create buffers for compute shader and indirect drawing + this.cubesBuffer = device.createBuffer({ + label: 'cubesBuffer', + size: this.NUMBER_OF_CUBES * 32, // 8 floats per cube + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST, + }); + + this.visibleCubesBuffer = device.createBuffer({ + label: 'visibleCubesBuffer', + size: this.NUMBER_OF_CUBES * 32, + usage: GPUBufferUsage.STORAGE | GPUBufferUsage.VERTEX, + }); + + this.indirectDrawBuffer = device.createBuffer({ + label: 'indirectDrawBuffer', + size: 16, // 4 uint32 values + usage: GPUBufferUsage.INDIRECT | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST, + }); + + // Initialize indirect draw parameters + const indirectDrawParams = new Uint32Array([cubeVertexCount, 0, 0, 0]); + device.queue.writeBuffer(this.indirectDrawBuffer, 0, indirectDrawParams); + + const vertexBindGroupLayout = device.createBindGroupLayout({ + label: 'vertexBindGroupLayout', + entries: [ + { binding: 0, visibility: GPUShaderStage.VERTEX, buffer: { type: 'uniform' } }, + { binding: 2, visibility: GPUShaderStage.VERTEX, buffer: { type: 'read-only-storage' } } // Read-only storage + ] + }); + + + // Create bind group for render pass this.uniformBindGroup = device.createBindGroup({ - layout: pipeline.getBindGroupLayout(0), + label: 'uniformBindGroups', + layout: vertexBindGroupLayout, + // layout: pipeline.getBindGroupLayout(0), entries: [ { binding: 0, @@ -251,45 +311,85 @@ export class WebgpuRenderer { buffer: this.UniformBuffer, }, }, + // { + // binding: 1, + // resource: sampler, + // }, + { + binding: 2, + resource: cubeTexture.createView(), + }, + ], + }); + + // Create bind group for compute shader + this.computeBindGroupLayout = device.createBindGroupLayout({ + label: 'computeBindGroupLayout', + entries: [ + { + binding: 0, + visibility: GPUShaderStage.COMPUTE, + buffer: { + type: 'uniform', + }, + }, { binding: 1, - resource: sampler, + visibility: GPUShaderStage.COMPUTE, + buffer: { + type: 'storage', + }, }, { binding: 2, - resource: cubeTexture.createView(), + visibility: GPUShaderStage.COMPUTE, + buffer: { + type: 'read-only-storage', + }, + }, + { + binding: 3, + visibility: GPUShaderStage.COMPUTE, + buffer: { + type: 'storage', + }, }, ], }); - this.renderPassDescriptor = { - colorAttachments: [ + this.computeBindGroup = device.createBindGroup({ + layout: this.computeBindGroupLayout, + //layout: pipeline.getBindGroupLayout(1), + label: 'computeBindGroup', + entries: [ { - view: undefined as any, // Assigned later - clearValue: [0.6784313725490196, 0.8470588235294118, 0.9019607843137255, 1], - loadOp: 'clear', - storeOp: 'store', + binding: 0, + resource: { buffer: this.UniformBuffer }, + }, + { + binding: 1, + resource: { buffer: this.cubesBuffer }, + }, + { + binding: 2, + resource: { buffer: this.visibleCubesBuffer }, + }, + { + binding: 3, + resource: { buffer: this.indirectDrawBuffer }, }, ], - depthStencilAttachment: { - view: depthTexture.createView(), - - depthClearValue: 1, - depthLoadOp: 'clear', - depthStoreOp: 'store', - }, - }; - + }) // always last! this.rendering = false; + console.log('init finish') this.loop(); this.ready = true; return canvas; } - removeOne () { - } + removeOne () { } realNumberOfCubes = 0; @@ -319,20 +419,28 @@ export class WebgpuRenderer { this.NUMBER_OF_CUBES = positions.length + 1000; } - const setModelBuffer = async (modelBuffer: GPUBuffer, data: Float32Array) => { - this.device.queue.writeBuffer(modelBuffer, 0, data /* , 0, 16 */); - }; - - setModelBuffer(this.InstancedModelBuffer, new Float32Array(positions)); + const cubeData = new Float32Array(this.NUMBER_OF_CUBES * 8); + for (let i = 0; i < positions.length / 3; i++) { + const offset = i * 8; + cubeData[offset] = positions[i * 3]; + cubeData[offset + 1] = positions[i * 3 + 1]; + cubeData[offset + 2] = positions[i * 3 + 2]; + cubeData[offset + 3] = textureIndexes[i]; + cubeData[offset + 4] = colors[i * 3]; + cubeData[offset + 5] = colors[i * 3 + 1]; + cubeData[offset + 6] = colors[i * 3 + 2]; + cubeData[offset + 7] = 0.5; // Sphere radius + } - setModelBuffer(this.InstancedTextureIndexBuffer, new Float32Array(textureIndexes)); + this.device.queue.writeBuffer(this.cubesBuffer, 0, cubeData); - setModelBuffer(this.InstancedColorBuffer, new Float32Array(colors)); + // Reset indirect draw parameters + const indirectDrawParams = new Uint32Array([cubeVertexCount, 0, 0, 0]); + this.device.queue.writeBuffer(this.indirectDrawBuffer, 0, indirectDrawParams); this.notRenderedAdditions++; } - lastCall = performance.now(); logged = false; loop () { @@ -351,7 +459,6 @@ export class WebgpuRenderer { const projectionMatrix = this.camera.projectionMatrix; ViewProjectionMat4.multiplyMatrices(projectionMatrix, this.camera.matrix.invert()); const ViewProjection = new Float32Array(ViewProjectionMat4.elements); - // globalThis.ViewProjection = ViewProjection device.queue.writeBuffer( uniformBuffer, 0, @@ -360,23 +467,32 @@ export class WebgpuRenderer { ViewProjection.byteLength ); - - renderPassDescriptor.colorAttachments[0].view = ctx .getCurrentTexture() .createView(); const commandEncoder = device.createCommandEncoder(); + commandEncoder.label = "ComputePassEncoder" + // Compute pass for occlusion culling + const computePass = commandEncoder.beginComputePass(); + computePass.label = "ComputePass" + computePass.setPipeline(this.computePipeline); + computePass.setBindGroup(0, this.uniformBindGroup); + computePass.setBindGroup(1, this.computeBindGroup); + computePass.dispatchWorkgroups(Math.ceil(this.NUMBER_OF_CUBES / 64)); + computePass.end(); + + // Render pass const passEncoder = commandEncoder.beginRenderPass(this.renderPassDescriptor); + passEncoder.label = "RenderPass" passEncoder.setPipeline(pipeline); passEncoder.setBindGroup(0, this.uniformBindGroup); + passEncoder.setBindGroup(1, this.computeBindGroup); passEncoder.setVertexBuffer(0, verticesBuffer); - passEncoder.setVertexBuffer(1, this.InstancedModelBuffer); - passEncoder.setVertexBuffer(2, this.InstancedTextureIndexBuffer); - passEncoder.setVertexBuffer(3, this.InstancedColorBuffer); - + passEncoder.setVertexBuffer(1, verticesBuffer); - passEncoder.draw(cubeVertexCount, this.NUMBER_OF_CUBES); + // Use indirect drawing + passEncoder.drawIndirect(this.indirectDrawBuffer, 0); passEncoder.end(); device.queue.submit([commandEncoder.finish()]); diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index f30d90278..7be13dfed 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -32,7 +32,10 @@ if (typeof customEvents !== 'undefined') { let isWaitingToUpload = false +globalThis.tiles = {} export const addBlocksSection = (key, data: MesherGeometryOutput) => { + if (globalThis.tiles[key]) return + globalThis.tiles[key] = data.tiles webgpuChannel.addBlocksSection(data.tiles, key) if (playground && !isWaitingToUpload) { isWaitingToUpload = true From de8e3dea692df959fa34ac0543a90bf0151d7558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 31 Jul 2024 02:43:40 +0300 Subject: [PATCH 104/303] Working compute shader --- prismarine-viewer/examples/Compute.wgsl | 8 +- prismarine-viewer/examples/Cube.vert.wgsl | 10 +- prismarine-viewer/examples/webgpuRenderer.ts | 134 ++++++++++--------- 3 files changed, 77 insertions(+), 75 deletions(-) diff --git a/prismarine-viewer/examples/Compute.wgsl b/prismarine-viewer/examples/Compute.wgsl index 44a305c01..4b1a5016f 100644 --- a/prismarine-viewer/examples/Compute.wgsl +++ b/prismarine-viewer/examples/Compute.wgsl @@ -15,10 +15,10 @@ struct IndirectDrawParams { firstInstance: u32, } -@group(1) @binding(0) var uniforms: Uniforms; -@group(1) @binding(1) var cubes: array; -@group(1) @binding(2) var visibleCubes: array; // Changed to @binding(4) -@group(1) @binding(3) var drawParams: array; +@group(0) @binding(0) var uniforms: Uniforms; +@group(0) @binding(1) var cubes: array; +@group(0) @binding(2) var visibleCubes: array; // Changed to @binding(4) +@group(0) @binding(3) var drawParams: array; @compute @workgroup_size(64) fn main(@builtin(global_invocation_id) global_id: vec3) { diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index fe8484bb2..fa368210f 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -9,14 +9,14 @@ struct Cube { } struct VertexOutput { - @builtin(position) Position: vec4, - @location(0) fragUV: vec2, + @builtin(position) Position: vec4f, + @location(0) fragUV: vec2f, @location(1) @interpolate(flat) TextureIndex: f32, - @location(2) @interpolate(flat) ColorBlend: vec3 + @location(2) @interpolate(flat) ColorBlend: vec3f } -@group(1) @binding(0) var uniforms: Uniforms; -@group(1) @binding(2) var visibleCubes: array; +@group(0) @binding(0) var uniforms: Uniforms; +@group(0) @binding(3) var visibleCubes: array; @vertex fn main( diff --git a/prismarine-viewer/examples/webgpuRenderer.ts b/prismarine-viewer/examples/webgpuRenderer.ts index 54cbc152e..edf6a0654 100644 --- a/prismarine-viewer/examples/webgpuRenderer.ts +++ b/prismarine-viewer/examples/webgpuRenderer.ts @@ -245,15 +245,10 @@ export class WebgpuRenderer { { binding: 3, visibility: GPUShaderStage.COMPUTE, buffer: { type: 'storage' } }, ], }); - const anotherLayout = device.createBindGroupLayout({ - label: 'anotherLayout', - entries: [ - ], - }); const computePipelineLayout = device.createPipelineLayout({ label: 'computePipelineLayout', - bindGroupLayouts: [anotherLayout, computeBindGroupLayout], + bindGroupLayouts: [computeBindGroupLayout], }) @@ -290,20 +285,20 @@ export class WebgpuRenderer { const indirectDrawParams = new Uint32Array([cubeVertexCount, 0, 0, 0]); device.queue.writeBuffer(this.indirectDrawBuffer, 0, indirectDrawParams); - const vertexBindGroupLayout = device.createBindGroupLayout({ - label: 'vertexBindGroupLayout', - entries: [ - { binding: 0, visibility: GPUShaderStage.VERTEX, buffer: { type: 'uniform' } }, - { binding: 2, visibility: GPUShaderStage.VERTEX, buffer: { type: 'read-only-storage' } } // Read-only storage - ] - }); + // const vertexBindGroupLayout = device.createBindGroupLayout({ + // label: 'vertexBindGroupLayout', + // entries: [ + // { binding: 0, visibility: GPUShaderStage.VERTEX, buffer: { type: 'uniform' } }, + // { binding: 2, visibility: GPUShaderStage.VERTEX, buffer: { type: 'read-only-storage' } } // Read-only storage + // ] + // }); // Create bind group for render pass this.uniformBindGroup = device.createBindGroup({ label: 'uniformBindGroups', - layout: vertexBindGroupLayout, - // layout: pipeline.getBindGroupLayout(0), + //layout: vertexBindGroupLayout, + layout: pipeline.getBindGroupLayout(0), entries: [ { binding: 0, @@ -311,55 +306,62 @@ export class WebgpuRenderer { buffer: this.UniformBuffer, }, }, - // { - // binding: 1, - // resource: sampler, - // }, - { - binding: 2, - resource: cubeTexture.createView(), - }, - ], - }); - - // Create bind group for compute shader - this.computeBindGroupLayout = device.createBindGroupLayout({ - label: 'computeBindGroupLayout', - entries: [ - { - binding: 0, - visibility: GPUShaderStage.COMPUTE, - buffer: { - type: 'uniform', - }, - }, { binding: 1, - visibility: GPUShaderStage.COMPUTE, - buffer: { - type: 'storage', - }, + resource: sampler, }, { binding: 2, - visibility: GPUShaderStage.COMPUTE, - buffer: { - type: 'read-only-storage', - }, + resource: cubeTexture.createView(), }, { binding: 3, - visibility: GPUShaderStage.COMPUTE, - buffer: { - type: 'storage', - }, - }, + resource: { + buffer:this.visibleCubesBuffer + } + + } ], }); + // // Create bind group for compute shader + // this.computeBindGroupLayout = device.createBindGroupLayout({ + // label: 'computeBindGroupLayout', + // entries: [ + // { + // binding: 0, + // visibility: GPUShaderStage.COMPUTE, + // buffer: { + // type: 'uniform', + // }, + // }, + // { + // binding: 1, + // visibility: GPUShaderStage.COMPUTE, + // buffer: { + // type: 'storage', + // }, + // }, + // { + // binding: 2, + // visibility: GPUShaderStage.COMPUTE, + // buffer: { + // type: '', + // }, + // }, + // { + // binding: 3, + // visibility: GPUShaderStage.COMPUTE, + // buffer: { + // type: 'storage', + // }, + // }, + // ], + // }); + this.computeBindGroup = device.createBindGroup({ - layout: this.computeBindGroupLayout, - //layout: pipeline.getBindGroupLayout(1), + //layout: this.computeBindGroupLayout, + layout: this.computePipeline.getBindGroupLayout(0), label: 'computeBindGroup', entries: [ { @@ -471,30 +473,30 @@ export class WebgpuRenderer { .getCurrentTexture() .createView(); - const commandEncoder = device.createCommandEncoder(); - commandEncoder.label = "ComputePassEncoder" + let commandEncoder = device.createCommandEncoder(); // Compute pass for occlusion culling + commandEncoder.label = "Main Comand Encoder" const computePass = commandEncoder.beginComputePass(); computePass.label = "ComputePass" computePass.setPipeline(this.computePipeline); - computePass.setBindGroup(0, this.uniformBindGroup); - computePass.setBindGroup(1, this.computeBindGroup); + //computePass.setBindGroup(0, this.uniformBindGroup); + computePass.setBindGroup(0, this.computeBindGroup); computePass.dispatchWorkgroups(Math.ceil(this.NUMBER_OF_CUBES / 64)); computePass.end(); - + device.queue.submit([commandEncoder.finish()]); + commandEncoder = device.createCommandEncoder(); + //device.queue.submit([commandEncoder.finish()]); // Render pass - const passEncoder = commandEncoder.beginRenderPass(this.renderPassDescriptor); - passEncoder.label = "RenderPass" - passEncoder.setPipeline(pipeline); - passEncoder.setBindGroup(0, this.uniformBindGroup); - passEncoder.setBindGroup(1, this.computeBindGroup); - passEncoder.setVertexBuffer(0, verticesBuffer); - passEncoder.setVertexBuffer(1, verticesBuffer); + const renderPass = commandEncoder.beginRenderPass(this.renderPassDescriptor); + renderPass.label = "RenderPass" + renderPass.setPipeline(pipeline); + renderPass.setBindGroup(0, this.uniformBindGroup); + renderPass.setVertexBuffer(0, verticesBuffer); // Use indirect drawing - passEncoder.drawIndirect(this.indirectDrawBuffer, 0); + renderPass.drawIndirect(this.indirectDrawBuffer, 0); - passEncoder.end(); + renderPass.end(); device.queue.submit([commandEncoder.finish()]); this.renderedFrames++; From e62b4d8cdada676df8949234ba331536337f74f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=91=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Wed, 31 Jul 2024 04:06:33 +0300 Subject: [PATCH 105/303] Passtrough of cubes --- prismarine-viewer/examples/Compute.wgsl | 47 -------------- prismarine-viewer/examples/Cube.comp.wgsl | 68 ++++++++++++++++++++ prismarine-viewer/examples/Cube.vert.wgsl | 6 +- prismarine-viewer/examples/playground.ts | 4 +- prismarine-viewer/examples/webgpuRenderer.ts | 9 ++- 5 files changed, 80 insertions(+), 54 deletions(-) delete mode 100644 prismarine-viewer/examples/Compute.wgsl create mode 100644 prismarine-viewer/examples/Cube.comp.wgsl diff --git a/prismarine-viewer/examples/Compute.wgsl b/prismarine-viewer/examples/Compute.wgsl deleted file mode 100644 index 4b1a5016f..000000000 --- a/prismarine-viewer/examples/Compute.wgsl +++ /dev/null @@ -1,47 +0,0 @@ -struct Cube { - position: vec3, - textureIndex: f32, - colorBlend: vec3, -} - -struct Uniforms { - ViewProjectionMatrix: mat4x4, -} - -struct IndirectDrawParams { - vertexCount: u32, - instanceCount: atomic, - firstVertex: u32, - firstInstance: u32, -} - -@group(0) @binding(0) var uniforms: Uniforms; -@group(0) @binding(1) var cubes: array; -@group(0) @binding(2) var visibleCubes: array; // Changed to @binding(4) -@group(0) @binding(3) var drawParams: array; - -@compute @workgroup_size(64) -fn main(@builtin(global_invocation_id) global_id: vec3) { - let index = global_id.x; - if (index >= arrayLength(&cubes)) { - return; - } - - let cube = cubes[index]; - - // Transform cube position to clip space - let clipPos = uniforms.ViewProjectionMatrix * vec4(cube.position, 1.0); - - // Perform sphere-based occlusion test - let ndcPos = clipPos.xyz / clipPos.w; - let sphereRadius = 1.0 / clipPos.w; //Radius of fixed size for cubes - - // Check if sphere is within view frustum and not completely behind near plane - if (abs(ndcPos.x) - sphereRadius <= 1.0 && - abs(ndcPos.y) - sphereRadius <= 1.0 && - ndcPos.z - sphereRadius <= 1.0 && - ndcPos.z + sphereRadius >= -1.0) { - let visibleIndex = atomicAdd(&drawParams[index].instanceCount, 1u); - visibleCubes[visibleIndex] = cube; - } -} diff --git a/prismarine-viewer/examples/Cube.comp.wgsl b/prismarine-viewer/examples/Cube.comp.wgsl new file mode 100644 index 000000000..0ecc46b57 --- /dev/null +++ b/prismarine-viewer/examples/Cube.comp.wgsl @@ -0,0 +1,68 @@ +struct Cube { + position: vec3f, + textureIndex: f32, + colorBlend: vec3f, +} + +struct Uniforms { + ViewProjectionMatrix: mat4x4, +} + +struct IndirectDrawParams { + vertexCount: u32, + instanceCount: atomic, + firstVertex: u32, + firstInstance: u32, +} + +@group(0) @binding(0) var uniforms: Uniforms; +@group(0) @binding(1) var cubes: array; +@group(0) @binding(2) var visibleCubes: array; // Changed to @binding(4) +@group(0) @binding(3) var drawParams: IndirectDrawParams; + +@compute @workgroup_size(64) +fn main(@builtin(global_invocation_id) global_id: vec3) { + let index = global_id.x; + if (index >= arrayLength(&cubes)) { + return; + } + + let cube = cubes[index]; + + // Transform cube position to clip space + let clipPos = vec4(cube.position, 1.0) * uniforms.ViewProjectionMatrix ; + + // Perform sphere-based occlusion test + //let screen_position = clipPos; + //let sphereRadius = 1.0 / clipPos.w; //Radius of fixed size for cubes + let screen_position = clipPos.xyz; + // screen_position.x = screen_position.x / screen_position.w; + // screen_position.y = screen_position.y / screen_position.w; + // // screen_position.z = screen_position.z / screen_position.w; + // screen_position.x = clipPos.x / clipPos.w; + // screen_position.y = clipPos.y / clipPos.w; + // screen_position.z = clipPos.z / clipPos.w; + +// if (screen_position.x < -1 || 1 < screen_position.x) { +// return; +// } +// // continue; +// if (screen_position.y < -1 || 1 < screen_position.y) { +// return; +// } + //continue; +// if (screen_position.z < -1 || 1 < screen_position.z) { +// return; +// } + //continue; + // if (screen_position.z < -1 || 1 < screen_position.z) { + // return; + + // } + + //Check if sphere is within view frustum and not completely behind near plane + //if (clipPos.x < 1.0 &&clipPos.x > 0.0 && clipPos.y < 1.0 && clipPos.y > 0.0) { + let visibleIndex = atomicAdd(&drawParams.instanceCount, 1); + visibleCubes[visibleIndex] = cube; + //} +} diff --git a/prismarine-viewer/examples/Cube.vert.wgsl b/prismarine-viewer/examples/Cube.vert.wgsl index fa368210f..cbd7b2b0e 100644 --- a/prismarine-viewer/examples/Cube.vert.wgsl +++ b/prismarine-viewer/examples/Cube.vert.wgsl @@ -3,9 +3,9 @@ struct Uniforms { } struct Cube { - position: vec3, + position: vec3f, textureIndex: f32, - colorBlend: vec3, + colorBlend: vec3f, } struct VertexOutput { @@ -25,7 +25,7 @@ fn main( @location(1) uv: vec2 ) -> VertexOutput { let cube = visibleCubes[instanceIndex]; - + //cube.position.x = instance_index * 2; var output: VertexOutput; output.Position = uniforms.ViewProjectionMatrix * (position + vec4(cube.position, 0.0) + vec4(0.5, 0.0, 0.5, 0.0)); output.fragUV = uv; diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index b828ac569..bf55bb3c6 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -283,8 +283,8 @@ async function main () { // webgpuChannel.addBlocksSection(blocks, `0,0,${i++}`) // } // make platform - for (let x = 0; x < 100; x++) { - for (let z = 0; z < 100; z++) { + for (let x = 0; x < 10; x++) { + for (let z = 0; z < 10; z++) { const pos = new Vec3(x, 0, z) const getFace = (face: number) => { return { diff --git a/prismarine-viewer/examples/webgpuRenderer.ts b/prismarine-viewer/examples/webgpuRenderer.ts index edf6a0654..77dbb1cb8 100644 --- a/prismarine-viewer/examples/webgpuRenderer.ts +++ b/prismarine-viewer/examples/webgpuRenderer.ts @@ -4,12 +4,12 @@ import * as tweenJs from '@tweenjs/tween.js'; import { cubePositionOffset, cubeUVOffset, cubeVertexArray, cubeVertexCount, cubeVertexSize } from './CubeDef'; import VertShader from './Cube.vert.wgsl'; import FragShader from './Cube.frag.wgsl'; -import ComputeShader from './Compute.wgsl'; +import ComputeShader from './Cube.comp.wgsl'; import { updateSize, allSides } from './webgpuRendererWorker'; export class WebgpuRenderer { rendering = true - NUMBER_OF_CUBES = 100000; + NUMBER_OF_CUBES = 300; renderedFrames = 0 ready = false; @@ -469,6 +469,11 @@ export class WebgpuRenderer { ViewProjection.byteLength ); + // const EmptyVisibleCubes = new Float32Array([36, 0, 0, 0]) ; + + // device.queue.writeBuffer( + // this.indirectDrawBuffer, 0, EmptyVisibleCubes); + renderPassDescriptor.colorAttachments[0].view = ctx .getCurrentTexture() .createView(); From 2dfd17939f3c40487b682effe3cb9c86eeb188f8 Mon Sep 17 00:00:00 2001 From: Vitaly Turovsky Date: Wed, 31 Jul 2024 03:56:15 +0300 Subject: [PATCH 106/303] Merge remote-tracking branch 'origin/next' into webgpu-true-fresh --- .eslintignore | 3 + .eslintrc.json | 1 + .vscode/launch.json | 4 +- Dockerfile | 34 +- Dockerfile.proxy | 11 + README.MD | 65 +- README.NPM.MD | 2 +- .../background/panorama_0.png | Bin .../background/panorama_1.png | Bin .../background/panorama_2.png | Bin .../background/panorama_3.png | Bin .../background/panorama_4.png | Bin .../background/panorama_5.png | Bin assets/destroy_stage_0.png | Bin 0 -> 102 bytes assets/destroy_stage_1.png | Bin 0 -> 115 bytes assets/destroy_stage_2.png | Bin 0 -> 123 bytes assets/destroy_stage_3.png | Bin 0 -> 145 bytes assets/destroy_stage_4.png | Bin 0 -> 155 bytes assets/destroy_stage_5.png | Bin 0 -> 169 bytes assets/destroy_stage_6.png | Bin 0 -> 177 bytes assets/destroy_stage_7.png | Bin 0 -> 190 bytes assets/destroy_stage_8.png | Bin 0 -> 211 bytes assets/destroy_stage_9.png | Bin 0 -> 218 bytes assets/{extra-textures => }/edition.png | Bin assets/{extra-textures => }/gui.png | Bin assets/invsprite.png | Bin 2845482 -> 0 bytes buildWorkers.mjs | 5 +- docs-assets/handled-packets.md | 169 ++ esbuild.mjs | 140 -- experiments/texture-render.html | 69 - index.html | 42 +- package.json | 40 +- package.npm.json | 8 +- ...mineflayer-item-map-downloader@1.2.0.patch | 16 + pnpm-lock.yaml | 1916 ++++++++++++++--- prismarine-viewer/buildMesherWorker.mjs | 6 +- prismarine-viewer/esbuild.mjs | 7 +- prismarine-viewer/examples/examples/index.ts | 1 + .../examples/examples/rotation.ts | 9 + prismarine-viewer/examples/examples/type.ts | 6 + prismarine-viewer/examples/playground.ts | 82 +- .../examples/webgpuRendererMain.ts | 8 +- prismarine-viewer/index.d.ts | 38 - prismarine-viewer/index.js | 1 - prismarine-viewer/jest-puppeteer.config.js | 5 - prismarine-viewer/jest.config.js | 4 - prismarine-viewer/package.json | 8 +- prismarine-viewer/tsconfig.json | 11 - prismarine-viewer/viewer/lib/entities.js | 37 +- .../viewer/lib/entity/EntityMesh.js | 13 +- prismarine-viewer/viewer/lib/mesher/mesher.ts | 17 +- prismarine-viewer/viewer/lib/mesher/models.ts | 307 +-- .../viewer/lib/mesher/modelsGeometryCommon.ts | 142 ++ prismarine-viewer/viewer/lib/mesher/shared.ts | 1 + .../viewer/lib/mesher/standaloneRenderer.ts | 273 +++ .../viewer/lib/mesher/test/mesherTester.ts | 5 +- .../viewer/lib/mesher/test/tests.test.ts | 110 +- prismarine-viewer/viewer/lib/mesher/world.ts | 6 +- prismarine-viewer/viewer/lib/version.js | 30 - prismarine-viewer/viewer/lib/viewer.ts | 35 +- .../viewer/lib/worldDataEmitter.ts | 9 +- .../viewer/lib/worldrendererCommon.ts | 120 +- .../viewer/lib/worldrendererWebgpu.ts | 11 +- prismarine-viewer/viewer/prepare/atlas.ts | 144 -- .../viewer/prepare/genItemsAtlas.ts | 148 -- .../viewer/prepare/generateTextures.ts | 60 - .../viewer/prepare/missing_texture.png | Bin 339 -> 0 bytes .../viewer/prepare/modelsBuilder.ts | 259 --- .../viewer/prepare/moreGeneratedBlocks.ts | 421 ---- .../viewer/prepare/postinstall.ts | 12 - prismarine-viewer/viewer/prepare/utils.ts | 14 + .../viewer/supportedVersions.json | 1 - prismarine-viewer/webpack.config.js | 88 - rsbuild.config.ts | 189 ++ scripts/build.js | 35 +- scripts/buildNpmReact.ts | 8 +- scripts/dockerPrepare.mjs | 12 + scripts/esbuildPlugins.mjs | 347 +-- scripts/gen-texturepack-files.mjs | 52 - scripts/genShims.ts | 43 + scripts/generateMoreCollisionShapes.mjs | 209 -- scripts/optimizeBlockCollisions.ts | 1 + scripts/test-texturepack-files.mjs | 16 - scripts/updateHandledPackets.mjs | 60 + server.js | 30 +- src/basicSounds.ts | 4 +- src/browserfs.ts | 6 +- src/controls.ts | 56 +- src/devReload.ts | 35 +- src/downloadAndOpenFile.ts | 4 +- src/dragndrop.ts | 2 + src/globalState.ts | 8 +- src/globals.d.ts | 4 +- src/index.ts | 105 +- src/inventoryWindows.ts | 196 +- src/loadSave.ts | 1 + src/localServerMultiplayer.ts | 2 +- src/optionsGuiScheme.tsx | 31 +- src/optionsStorage.ts | 4 + src/panorama.ts | 11 +- src/react/AddServerOrConnect.tsx | 47 +- src/react/ArmorBar.stories.tsx | 2 +- src/react/Book.module.css | 605 ++++++ src/react/Book.module.css.d.ts | 38 + src/react/Book.stories.tsx | 25 + src/react/Book.tsx | 322 +++ src/react/BookProvider.tsx | 110 + src/react/BossBarOverlay.css | 4 +- src/react/ButtonAppProvider.tsx | 3 +- src/react/ChatProvider.tsx | 4 +- src/react/DebugOverlay.module.css.d.ts | 11 + src/react/DebugOverlay.tsx | 4 +- src/react/DiscordButton.tsx | 74 + src/react/DiveTransition.module.css.d.ts | 8 + src/react/GamepadUiCursor.module.css.d.ts | 7 + src/react/HotbarRenderApp.tsx | 4 +- src/react/Keybinding.tsx | 56 + src/react/KeybindingsScreen.module.css.d.ts | 27 + src/react/KeybindingsScreen.tsx | 48 +- src/react/KeybindingsScreenProvider.tsx | 30 +- src/react/MainMenu.tsx | 81 +- src/react/MainMenuRenderApp.tsx | 63 +- src/react/MessageFormatted.tsx | 4 +- src/react/MessageFormattedString.stories.tsx | 5 +- src/react/MessageFormattedString.tsx | 16 +- src/react/MobileTopButtons.module.css | 2 +- src/react/MobileTopButtons.module.css.d.ts | 14 + src/react/PauseScreen.module.css.d.ts | 10 + src/react/PauseScreen.tsx | 13 +- src/react/PlayerListOverlayProvider.tsx | 14 +- src/react/SelectOption.tsx | 18 +- src/react/SharedHudVars.tsx | 19 +- src/react/Singleplayer.tsx | 2 +- src/react/SingleplayerProvider.tsx | 1 + src/react/XPBar.module.css | 4 +- src/react/XPBar.module.css.d.ts | 12 + src/react/XPBar.tsx | 7 +- src/react/appStatus.module.css.d.ts | 10 + src/react/book_icons/book-half.webp | Bin 0 -> 5110 bytes src/react/book_icons/book.webp | Bin 0 -> 10158 bytes src/react/book_icons/next-click.webp | Bin 0 -> 1800 bytes src/react/book_icons/next.webp | Bin 0 -> 1268 bytes src/react/book_icons/notebook.webp | Bin 0 -> 5956 bytes src/react/book_icons/prev-click.webp | Bin 0 -> 1866 bytes src/react/book_icons/prev.webp | Bin 0 -> 1298 bytes src/react/book_icons/title.webp | Bin 0 -> 3392 bytes src/react/button.module.css.d.ts | 8 + src/react/createWorld.module.css.d.ts | 10 + src/react/effectsImages.ts | 66 +- src/react/globals.d.ts | 23 + src/react/input.module.css.d.ts | 8 + src/react/mainMenu.module.css | 14 +- src/react/mainMenu.module.css.d.ts | 26 + src/react/singleplayer.module.css | 4 +- src/react/singleplayer.module.css.d.ts | 29 + src/react/slider.module.css.d.ts | 13 + src/reactUi.tsx | 2 + src/resourcePack.ts | 345 +++ src/resourcesSource.ts | 23 + src/serviceWorker.ts | 14 +- src/shims.js | 3 - src/{ => shims}/crypto.js | 0 src/{ => shims}/dns.js | 0 src/shims/empty.ts | 1 + src/shims/fs.js | 3 + src/{ => shims}/perf_hooks_replacement.js | 0 src/{ => shims}/yggdrasilReplacement.ts | 0 src/soundSystem.ts | 55 +- src/styles.css | 12 +- src/texturePack.ts | 278 --- src/utils.ts | 3 +- src/vr.ts | 1 + src/water.ts | 1 + src/worldInteractions.ts | 61 +- tsconfig.json | 2 +- 175 files changed, 5415 insertions(+), 3759 deletions(-) create mode 100644 Dockerfile.proxy rename assets/{extra-textures => }/background/panorama_0.png (100%) rename assets/{extra-textures => }/background/panorama_1.png (100%) rename assets/{extra-textures => }/background/panorama_2.png (100%) rename assets/{extra-textures => }/background/panorama_3.png (100%) rename assets/{extra-textures => }/background/panorama_4.png (100%) rename assets/{extra-textures => }/background/panorama_5.png (100%) create mode 100644 assets/destroy_stage_0.png create mode 100644 assets/destroy_stage_1.png create mode 100644 assets/destroy_stage_2.png create mode 100644 assets/destroy_stage_3.png create mode 100644 assets/destroy_stage_4.png create mode 100644 assets/destroy_stage_5.png create mode 100644 assets/destroy_stage_6.png create mode 100644 assets/destroy_stage_7.png create mode 100644 assets/destroy_stage_8.png create mode 100644 assets/destroy_stage_9.png rename assets/{extra-textures => }/edition.png (100%) rename assets/{extra-textures => }/gui.png (100%) delete mode 100644 assets/invsprite.png create mode 100644 docs-assets/handled-packets.md delete mode 100644 esbuild.mjs delete mode 100644 experiments/texture-render.html create mode 100644 patches/mineflayer-item-map-downloader@1.2.0.patch create mode 100644 prismarine-viewer/examples/examples/index.ts create mode 100644 prismarine-viewer/examples/examples/rotation.ts create mode 100644 prismarine-viewer/examples/examples/type.ts delete mode 100644 prismarine-viewer/index.d.ts delete mode 100644 prismarine-viewer/jest-puppeteer.config.js delete mode 100644 prismarine-viewer/jest.config.js delete mode 100644 prismarine-viewer/tsconfig.json create mode 100644 prismarine-viewer/viewer/lib/mesher/modelsGeometryCommon.ts create mode 100644 prismarine-viewer/viewer/lib/mesher/standaloneRenderer.ts delete mode 100644 prismarine-viewer/viewer/lib/version.js delete mode 100644 prismarine-viewer/viewer/prepare/atlas.ts delete mode 100644 prismarine-viewer/viewer/prepare/genItemsAtlas.ts delete mode 100644 prismarine-viewer/viewer/prepare/generateTextures.ts delete mode 100644 prismarine-viewer/viewer/prepare/missing_texture.png delete mode 100644 prismarine-viewer/viewer/prepare/modelsBuilder.ts delete mode 100644 prismarine-viewer/viewer/prepare/moreGeneratedBlocks.ts delete mode 100644 prismarine-viewer/viewer/prepare/postinstall.ts delete mode 100644 prismarine-viewer/viewer/supportedVersions.json delete mode 100644 prismarine-viewer/webpack.config.js create mode 100644 rsbuild.config.ts create mode 100644 scripts/dockerPrepare.mjs delete mode 100644 scripts/gen-texturepack-files.mjs create mode 100644 scripts/genShims.ts delete mode 100644 scripts/generateMoreCollisionShapes.mjs delete mode 100644 scripts/test-texturepack-files.mjs create mode 100644 scripts/updateHandledPackets.mjs create mode 100644 src/react/Book.module.css create mode 100644 src/react/Book.module.css.d.ts create mode 100644 src/react/Book.stories.tsx create mode 100644 src/react/Book.tsx create mode 100644 src/react/BookProvider.tsx create mode 100644 src/react/DebugOverlay.module.css.d.ts create mode 100644 src/react/DiscordButton.tsx create mode 100644 src/react/DiveTransition.module.css.d.ts create mode 100644 src/react/GamepadUiCursor.module.css.d.ts create mode 100644 src/react/Keybinding.tsx create mode 100644 src/react/KeybindingsScreen.module.css.d.ts create mode 100644 src/react/MobileTopButtons.module.css.d.ts create mode 100644 src/react/PauseScreen.module.css.d.ts create mode 100644 src/react/XPBar.module.css.d.ts create mode 100644 src/react/appStatus.module.css.d.ts create mode 100644 src/react/book_icons/book-half.webp create mode 100644 src/react/book_icons/book.webp create mode 100644 src/react/book_icons/next-click.webp create mode 100644 src/react/book_icons/next.webp create mode 100644 src/react/book_icons/notebook.webp create mode 100644 src/react/book_icons/prev-click.webp create mode 100644 src/react/book_icons/prev.webp create mode 100644 src/react/book_icons/title.webp create mode 100644 src/react/button.module.css.d.ts create mode 100644 src/react/createWorld.module.css.d.ts create mode 100644 src/react/input.module.css.d.ts create mode 100644 src/react/mainMenu.module.css.d.ts create mode 100644 src/react/singleplayer.module.css.d.ts create mode 100644 src/react/slider.module.css.d.ts create mode 100644 src/resourcePack.ts create mode 100644 src/resourcesSource.ts delete mode 100644 src/shims.js rename src/{ => shims}/crypto.js (100%) rename src/{ => shims}/dns.js (100%) create mode 100644 src/shims/empty.ts create mode 100644 src/shims/fs.js rename src/{ => shims}/perf_hooks_replacement.js (100%) rename src/{ => shims}/yggdrasilReplacement.ts (100%) delete mode 100644 src/texturePack.ts diff --git a/.eslintignore b/.eslintignore index 3c3629e64..1e851aa25 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,4 @@ node_modules +rsbuild.config.ts +*.module.css.d.ts +generated diff --git a/.eslintrc.json b/.eslintrc.json index a91015d2e..c9fa60e24 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,6 +7,7 @@ "rules": { "space-infix-ops": "error", "no-multi-spaces": "error", + "no-trailing-spaces": "error", "space-before-function-paren": "error", "space-in-parens": [ "error", diff --git a/.vscode/launch.json b/.vscode/launch.json index 6bbd4198e..b0621b880 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -29,7 +29,7 @@ "type": "chrome", "name": "Launch Chrome", "request": "launch", - "url": "http://localhost:8080/", + "url": "http://localhost:3000/", "pathMapping": { "/": "${workspaceFolder}/dist" }, @@ -50,7 +50,7 @@ "name": "Attach Firefox", "request": "attach", // comment if using webpack - "url": "http://localhost:8080/", + "url": "http://localhost:3000/", "webRoot": "${workspaceFolder}/", "skipFiles": [ // "/**/*vendors*" diff --git a/Dockerfile b/Dockerfile index 086240b5f..2e43ad8aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,34 @@ -FROM node:18-alpine +# ---- Build Stage ---- +FROM node:18-alpine AS build # Without git installing the npm packages fails RUN apk add git -RUN mkdir /app WORKDIR /app COPY . /app -# install python and other dependencies -RUN apk add python3 make g++ cairo-dev pango-dev jpeg-dev giflib-dev librsvg-dev # install pnpm RUN npm i -g pnpm@9.0.4 -RUN pnpm install -# only for prod -RUN pnpm run build -# --- -EXPOSE 8080 -# uncomment for development +# TODO need flat --no-root-optional +RUN node ./scripts/dockerPrepare.mjs +RUN pnpm i + +# TODO for development # EXPOSE 9090 # VOLUME /app/src # VOLUME /app/prismarine-viewer # ENTRYPOINT ["pnpm", "run", "run-all"] + # only for prod -ENTRYPOINT ["npm", "run", "prod-start"] +RUN pnpm run build + +# ---- Run Stage ---- +FROM node:18-alpine +RUN apk add git +WORKDIR /app +# Copy build artifacts from the build stage +COPY --from=build /app/dist /app/dist +COPY server.js /app/server.js +# Install express +RUN npm i -g pnpm@9.0.4 +RUN npm init -yp +RUN pnpm i express github:zardoy/prismarinejs-net-browserify compression cors +EXPOSE 8080 +ENTRYPOINT ["node", "server.js", "--prod"] diff --git a/Dockerfile.proxy b/Dockerfile.proxy new file mode 100644 index 000000000..746eef724 --- /dev/null +++ b/Dockerfile.proxy @@ -0,0 +1,11 @@ +# ---- Run Stage ---- +FROM node:18-alpine +RUN apk add git +WORKDIR /app +COPY server.js /app/server.js +# Install server dependencies +RUN npm i -g pnpm@9.0.4 +RUN npm init -yp +RUN pnpm i express github:zardoy/prismarinejs-net-browserify compression cors +EXPOSE 8080 +ENTRYPOINT ["node", "server.js"] diff --git a/README.MD b/README.MD index 9a4ba24a4..b1bc1296f 100644 --- a/README.MD +++ b/README.MD @@ -16,7 +16,7 @@ You can try this out at [mcraft.fun](https://mcraft.fun/), [pcm.gg](https://pcm. - Works offline - Play with friends over internet! (P2P is powered by Peer.js discovery servers) - First-class touch (mobile) & controller support -- Resource pack support +- FULL Resource pack support: Custom GUI, all textures & custom models! Server resource packs are also supported. - Builtin JEI with recipes & guides for every item (also replaces creative inventory) - even even more! @@ -42,7 +42,28 @@ Whatever offline mode you used (zip, folder, just single player), you can always You can play almost on any Java server, vanilla servers are fully supported. See the [Mineflayer](https://github.com/PrismarineJS/mineflayer) repo for the list of supported versions (should support majority of versions). There is a builtin proxy, but you can also host your one! Just clone the repo, run `pnpm i` (following CONTRIBUTING.MD) and run `pnpm prod-start`, then you can specify `http://localhost:8080` in the proxy field. -MS account authentication will be supported soon. + +Proxy servers are used to connect to Minecraft servers which use TCP protocol. When you connect connect to a server with a proxy, websocket connection is created between you (browser client) and the proxy server located in Europe, then the proxy connects to the Minecraft server and sends the data to the client (you) without any packet deserialization to avoid any additional delays. That said all the Minecraft protocol packets are processed by the client, right in your browser. + +```mermaid +graph LR + A[Web App - Client] --> C[Proxy Server] + C --> B[Minecraft Server] + style A fill:#f9d,stroke:#333,stroke-width:2px + style B fill:#fc0,stroke:#333,stroke-width:2px + style C fill:#fff,stroke:#333,stroke-width:2px +``` + +So if the server is located in Europe and you are connecting from Europe, you will have ~40ms ping (~180ms with residential proxy version), however if you are in the US and connecting to the server located in US, you will have >200ms ping, which is the worst case scenario. + +Again, the proxy server is not a part of the client, it is a separate service that you can host yourself. + +### Docker Files + +- [Main Dockerfile](./Dockerfile) - for production build & offline/private usage. Includes full web-app + proxy server for connecting to Minecraft servers. +- [Proxy Dockerfile](./Dockerfile.proxy) - for proxy server only - that one you would be able to specify in the proxy field on the client (`docker build . -f Dockerfile.proxy -t minecraft-web-proxy`) + +In case of using docker, you don't have to follow preparation steps from CONTRIBUTING.MD, like installing Node.js, pnpm, etc. ### Rendering @@ -53,19 +74,13 @@ MS account authentication will be supported soon. - Supports resource packs - Doesn't support occlusion culling - - -### Things that are not planned yet - -- Mods, plugins (basically JARs) support, shaders - since they all are related to specific game pipelines - ### Advanced Settings There are many many settings, that are not exposed in the UI yet. You can find or change them by opening the browser console and typing `options`. You can also change them by typing `options. = `. ### Console -To open the console, press `F12`, or if you are on mobile, you can type `#debug` in the URL (browser address bar), it wont't reload the page, but you will see a button to open the console. This way you can change advanced settings and see all errors or warnings. Also this way you can access global variables (described below). +To open the console, press `F12`, or if you are on mobile, you can type `#dev` in the URL (browser address bar), it wont't reload the page, but you will see a button to open the console. This way you can change advanced settings and see all errors or warnings. Also this way you can access global variables (described below). ### Development & Debugging @@ -107,19 +122,29 @@ world chunks have a *yellow* border, hostile mobs have a *red* outline, passive Press `Y` to set query parameters to url of your current game state. -- `?ip=` - Display connect screen to the server on load -- `?username=` - Set the username for server -- `?proxy=` - Set the proxy server address to use for server -- `?version=` - Set the version for server -- `?lockConnect=true` - Disable cancel / save buttons, useful for integrates iframes +There are some parameters you can set in the url to archive some specific behaviors: + +Server specific: + +- `?ip=` - Display connect screen to the server on load with predefined server ip. `:` is optional and can be added to the ip. +- `?name=` - Set the server name for saving to the server list +- `?version=` - Set the version for the server +- `?proxy=` - Set the proxy server address to use for the server +- `?username=` - Set the username for the server +- `?lockConnect=true` - Only works then `ip` parameter is set. Disables cancel/save buttons and all inputs in the connect screen already set as parameters. Useful for integrates iframes. - `?reconnect=true` - Reconnect to the server on page reloads. Available in **dev mode only** and very useful on server testing. + +Single player specific: + - `?loadSave=` - Load the save on load with the specified folder name (not title) - `?singleplayer=1` - Create empty world on load. Nothing will be saved -- `?noSave=true` - Disable auto save on unload / disconnect / export. Only manual save with `/save` command will work - - +- `?version=` - Set the version for the singleplayer world (when used with `?singleplayer=1`) +- `?noSave=true` - Disable auto save on unload / disconnect / export whenever a world is loaded. Only manual save with `/save` command will work. - `?map=` - Load the map from ZIP. You can use any url, but it must be CORS enabled. -- `?setting=:` - Set the and lock the setting on load. You can set multiple settings by separating them with `&` e.g. `?setting=autoParkour:true&setting=renderDistance:4` + +General: + +- `?setting=:` - Set and lock the setting on load. You can set multiple settings by separating them with `&` e.g. `?setting=autoParkour:true&setting=renderDistance:4` ### Notable Things that Power this Project @@ -131,6 +156,10 @@ Press `Y` to set query parameters to url of your current game state. - [Peer.js](https://peerjs.com/) - P2P networking (when you open to wan) - [Three.js](https://threejs.org/) - Helping in 3D rendering +### Things that are not planned yet + +- Mods, plugins (basically JARs) support, shaders - since they all are related to specific game pipelines + ### Alternatives - [https://github.com/ClassiCube/ClassiCube](ClassiCube - Better C# Rewrite) [DEMO](https://www.classicube.net/server/play/?warned=true) diff --git a/README.NPM.MD b/README.NPM.MD index c44492c68..9c4bf17f0 100644 --- a/README.NPM.MD +++ b/README.NPM.MD @@ -1,6 +1,6 @@ # Minecraft React -Minecraft UI components for React. +Minecraft UI components for React extracted from [mcraft.fun](https://mcraft.fun) project. ```bash pnpm i minecraft-react diff --git a/assets/extra-textures/background/panorama_0.png b/assets/background/panorama_0.png similarity index 100% rename from assets/extra-textures/background/panorama_0.png rename to assets/background/panorama_0.png diff --git a/assets/extra-textures/background/panorama_1.png b/assets/background/panorama_1.png similarity index 100% rename from assets/extra-textures/background/panorama_1.png rename to assets/background/panorama_1.png diff --git a/assets/extra-textures/background/panorama_2.png b/assets/background/panorama_2.png similarity index 100% rename from assets/extra-textures/background/panorama_2.png rename to assets/background/panorama_2.png diff --git a/assets/extra-textures/background/panorama_3.png b/assets/background/panorama_3.png similarity index 100% rename from assets/extra-textures/background/panorama_3.png rename to assets/background/panorama_3.png diff --git a/assets/extra-textures/background/panorama_4.png b/assets/background/panorama_4.png similarity index 100% rename from assets/extra-textures/background/panorama_4.png rename to assets/background/panorama_4.png diff --git a/assets/extra-textures/background/panorama_5.png b/assets/background/panorama_5.png similarity index 100% rename from assets/extra-textures/background/panorama_5.png rename to assets/background/panorama_5.png diff --git a/assets/destroy_stage_0.png b/assets/destroy_stage_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f65b7ede8059cd0ea3556dfd227dae3cc94e56e6 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`x}GkMAr-fhfBgS%udF&F@k+zN zyoR-F-`02W%&@KgR`1j%@P+Bbgo_z6Z-Ba9wf{B_xVJwAsFA_b)z4*}Q$iB}0Tm-_ literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_1.png b/assets/destroy_stage_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c91596175f6affa76e89d8bc8ae68d47f2001b5 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`R-P`7Ar-fhfBgS%udF&F@e0Eo zwi~x@{gaPiPCGyEuY4MZ-Qf>yjAsM{e9IJsK5;oRf4FHkOK4>Z1H%#KuiH-^y1pN1 O3WKMspUXO@geCyTuqXQf literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_2.png b/assets/destroy_stage_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dadd6b058a05db7434c5d13d08c3ef4abceac0e5 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`PM$7~Ar-fhfBgS%udF&FQ9?Q) zJNtKifh5DDWMh%#jGNQXw`DV2RIuZiEYe}%ydhJ?N{pkGHJ4Z6NzI}|2`o=o8Frb! VI~r`&e;Q~SgQu&X%Q~loCICB*CZ_-Z literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_3.png b/assets/destroy_stage_3.png new file mode 100644 index 0000000000000000000000000000000000000000..52a40b65980cf4cea4fd17104503619b2513d833 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`5uPrNAr-fhfBgS%udF&Fu|PT@ zJNx(i9A<}E>F4M9&SY%4VZqCw=@iCM#OcFxH#7psY07l^#%HGgkk@5~;*Ud32_`~a qoVO$!v@dj+F@!JR-MGhrhmFC_?s<7>TdpP04hBzGKbLh*2~7Y1KrPt- literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_4.png b/assets/destroy_stage_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e37c88a2c56df860a774d2bc3609cbe1913d7355 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`NuDl_Ar-gw20L;cFyJZTKkfbb zMvoi|=RzL$YK|>IM`wtHe*L2gTe~DWM4f D1ba1K literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_5.png b/assets/destroy_stage_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9590d2f78d6f257ac786dde8067787e753458641 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`1)eUBAr-f_PLAesP~>pQOy%i3oYdGjFtIDvwNM5=mnXoO))-^SvBwdsv?A zyXY4Zx=rAv#;QDBMp0X-ohB1yXZ23-Ym}^DNm!=Kc;-YdgYl=A#<8|f@4hg8d`Wz7 S2~!BrZU#?RKbLh*2~7Yg5Is%+ literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_6.png b/assets/destroy_stage_6.png new file mode 100644 index 0000000000000000000000000000000000000000..fb00ade54631ae02978bfb3fe8f8d5b61218b295 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6`n4RAr`$$Cpq#lC~`1=P297k z|Lr^vsUXgE?EDh4r&?T#_Ro2$r`+Vvz~JNIvVl3O!HGfOfXsrqpObwTtc+?X4hoKR zm}`CfVn`Xw((s8<(G81NpI8%p!1G21{}%75WqaARK3$iyn5gWa{>kLjs{UAUUz4JO aVmqdFN2{Y(|J(|61B0ilpUXO@geCy;8a}}Q literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_7.png b/assets/destroy_stage_7.png new file mode 100644 index 0000000000000000000000000000000000000000..0b40c78914707a9250134048c0c94786701ca1dc GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`t)4E9Ar-flPWBXPFyLVMm{_UV zfAkb1_iaVZuLl&lZ4Fe!1dq=*$m=moI+otB`*=^wn}%ze>MD(EJ~0NIn(0vy>&?Hy zDMB>cH{@+dz&q*5lh@q}Op6Lv>rIIkauAptBD!63h4-ocr_PHeUhUt;YHB34Qtk@t oi(^MNFYOGu6T0P(PyRLaEp6+{S^rjM03F2O>FVdQ&MBb@0FEk1A^-pY literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_8.png b/assets/destroy_stage_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c0bf1decebbe2ee1c91984ea7b08cd733158ab92 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vpiiKLn?0dPD literal 0 HcmV?d00001 diff --git a/assets/destroy_stage_9.png b/assets/destroy_stage_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e3185f82f2982b4a12e6519b4d61e44dd8441a44 GIT binary patch literal 218 zcmV<0044v4P)J(R>Hq)$ literal 0 HcmV?d00001 diff --git a/assets/extra-textures/edition.png b/assets/edition.png similarity index 100% rename from assets/extra-textures/edition.png rename to assets/edition.png diff --git a/assets/extra-textures/gui.png b/assets/gui.png similarity index 100% rename from assets/extra-textures/gui.png rename to assets/gui.png diff --git a/assets/invsprite.png b/assets/invsprite.png deleted file mode 100644 index d3022e5eb34ff8008438022a6ea1302018147842..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2845482 zcmV*`Kq004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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

e3yJ_KBq%vP9?v1%@8FR2y?5T;pH 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

Ik7h|qUnAGUYmdIL1P6%|X&VdKV5Tz1QO6oIJ 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 z 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%0A(hl!Gz-H$f*J8KrHI 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

CrB4{eHIcyKLZPsZ97dQcTDCTZv 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

`Om`YpciG{K8l^G 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±#rgo@5buZQ@NX>p}gehO@qH7#X~AP>>}xgE+Y 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

-)+FGAN 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�FR}EDT7g<$f^V_NJ3t<~C7@Z(L2(3DHe~hDdH< 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%0AnN6?g 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

RaPP=b~Ry_~hEtTT&t!W36Vz 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໼Lpf%RVv#YKf)YD<^_|9bz;FddI#_7NQA1VAaagb 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�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

pXBPWr?jL+q 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ȹbwHR5 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%0DO8-J)jo#o(VfJkd(al!tCud|xGL{? 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%0AYGeTuOtRv0fyED7RFTL>TB{P84d%43`5Eg2 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

&nhys~?9o$&(7(+;nZ?CU0u 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 z zKcdut55DwK`{jSoA+b#LF=b29cevg95qB#svQn2k$+4zHUg@9@p)aV(%9NDC293s& zh7yH%Oh{wosnB2}TCvg!#5Wfxr^X#dgyM~V$q~r@RgemO8D2m;cW`w)vtQ7%p+MVjh#oN|Ml`$MWUN*|I%`wT^$xglxHPnvyY0{i?54-D6ZjU$O0qSv9sc72geX zH>0}r518+Fej33V&p3Ixpb~n67PVT9tZ*cWrBo`Rm7-d!(rmUF404hr!4q5km3s~s zgc~+33@A-)FoIEvdUupsrfKvvwH(r5NWG@fPsmh48WtBB--Zf<&>?6=p**?v*pRT) zl==#p8PF@WU=eGN8{JV#c}(+DqA8riiK9?LaGvs@ipLF=oR}gWB%qza^i!&X5gPq5 zR5u|v-9sLakrbtLjEb9p7ch%Z`*@oOPt5-%SB})~KAzehcfdk5BKX+PB2LFs?{}2s z$xg)9Dcpd8gPC>@9Wsg`nt!{SQ7u*3z9VP(@;bfD;Z%i8D}HcYPjL_tfcM|LK>Fj{!zUSW7z=LZQ_C^4Tj2IN?SBJMu9C-%KOOx@Dvyh{C=9cX-ZAq zG{y20$K}Mcj+0F{Z(?>+N2zsM?sV@{Lla`zpy=2Y#fruT8(UWeK^Cwi%t#6Gno?+>e2qVJ zGQkpbbSCZz+8g0tcmG+5Ch;j|H_%0|3iJVFoLMno3|cf+S+rL%fE6@)w+!2IKC)L3 zVbiUkrObQ=kj&M-2Z9VURlGr|lth~t$vr5D_y{Z}Dh8Jd6R5bw?*`<>kl6`l&1wpj zvMoJ|bXXGA)yr6xoPbxBfvyumppXjQFWkK>S{Rs=c2bYnFSZmraG>a#D$R6)pdh1+ zN61A$+=B7%X@#oPxTQKyt}S|Wj8cfDOH`^ zPi8*f@$&zS`02S?I7U84h1c&4rRB`61n~KHaWA|hY>DV$*TcrA*WUw{447!FBQ%0A z$Fpc%8iqMAO^Zcn$~L8=2P-I)F)Ju4x(3yHJf1|j34~Ne-<2rFkDXx9byi@2aL+N6 z$k-RJ`fP(~^Z3`1nub|#$fZ3UBUd7dDYa$NFtF5noxi-s^-tDEH^}a0IQb`i1ota= zsX;p(dKG!ETaNr!H=~Qf6g;guc#73>d7C3x+P%Z_ol)T@bj#2ks8ZDL4fWbCL_}U( zr=$v+Us>DR(h!9l)uCEdlW5UY3*oye0Vqe8=Aa=IU>79;pv>E@C$LkEkggYz^j9%s_kJtf!bSA4zUn>j<~sE-Y3C9 zldhCXOft-N^R=yW;aYH3CYkYt?)v25*B6Y)lY;VYE#xAVikoUKubvHHN(9c&EnV=7ZB{`*XXK^j=+xTuoSqzHPZkR2)7`DA)d z-7XJy7?!DrY}Hb_WUGlan3`qLsZ5-j%Z>eqp45KG)1vV>@6yvbA_LlTzjzt2x_wkO zqGmqsU>SsDsT)W-`LIaz!Ps}bE#LnD_tQqj>*~1uiM=S%Wp%F(W!sHx*AA)7WY@00 zoMIi$`aDjb&wo|^73f7koE(BjlFh_e8Fl<-?Sr4=Xw7bZ@mChDx8{1f8U!ZW&xp3Q z&i2wyk8Ea$1gP+2_rf!xoM+2dyX1>P@@o=3b3ae-Y$m^@tM^|Efq;^uXW1eQevct# zGh{Iv03+%-ac5Z$NwV@IaO%16E0f${J?ec8qPc%WN1n>1oe)%s+*n4464SjG2|j$6 zO;C5{cHN@r=NooqlimHIv&`|&?RV;;PQUKEdBG8auHEx?bG$sZ8dVAdRSov~NgwD2 zOin=7TvLz&TSgEBxe@8uH_?_0+~{KbK{4gN35%yu54l3wL zcoG%u&I7MXw~`AVTzU4oE-I2OD3IW%%^9^BQ@mYPEb{PjyY|o!Y=&3K!CUxh6(b{s zkj4{WGi&5R_I{%%EqpH47h{N|Ty%ex4!id`$2kPiC6bkU=>NPAoM#OqZn|2*7I?IA zm7PcaC>gt}Uxc}y5{-J&L_#)!c~H9r9Q+zfUOZ_f1nlyyiBz~#AT4yhl9O;e^2N`t zrY-95DNU~C@0%Z|UrG}*R(ww55tM)?Lj)t3WzPa$#!4iJ**|xNKbMEUP_i|Q%Mi&z zTAM2P^*sU;dGF(o>8t>q(iR~af>{;YI)w<`Z^Ns_I^YAZgij3aPd*qAE>^$3q%$>} z;xV+Huh%)>BAkD0SGoC|%8m@Cpq(iPpa_^jl$%2F9rC;MKao8*f0M?`jL_ioCN_DdtebhpQVRpD;K{|D0gka-6qntNt;rJJ zy5F7|seXH<+^L+(X{Y{%t0LHE z;ttaXewILQ*t^Z$$69!A_BLQPY;YStQaCzLSiuL?8BmPX&M>F#^4I5J7kEi1sovPM z_7&9#&#r=?=$BqljT>V*`j7I+Wj1zvN7~aaCzZ1z|6YBUcyX5GzOli`vNN-`?*IP7)u7ZpLOgMm`nPYwi4BwZ?IirqA2 znSvWnF(MQlauCkIHmVOeQYS;Dh#h-7S~?nn3GRsaeRwRH4jf$y5QxQvRfV<+Cdx_mDHl}dHkHKPbm97;Z_T0&I0ao4S& z+8>1hv!ev)Se2o7A|t2-uHJkjNCju${Le51DIP5WB%W8+NSr@o*b{@;Bx>0ii? zI6}^mwYK;FI-hk$s??y9&n0ywY7Y;Zkf4}L63|(D)tIZFw3+y{enb8ClNBUDeLr;I z#F8W8aGbY6$z{R;bidD0bZQ)5S} zK5k*zNM=)o}|n%qVI{*J`QUgo?8E2GL>w-Zx_xrYkjZydMxP>5ZjF%4h8*T!pr08qo~%$O8xh5&Zr64UrnW1K zx2ks=q*8AHRVQdY-kb!(s7A<-dFvvGxGwsqg^^vZ4OHiWgQIk&u1~EA7Y7`Nz)V9B z%m(7$8r%@FGVFnzX^^bF4jPXo!$P>~>v=3_WNZwHh0l(=d*AjN1jkj=lk$sG%ek~?*v&M?J0~hSpAf5Z<+ARSgJ_D# z3Hq89j$Po2>HORy&*IY~G+^Rmae7@v5jgeLT@jH_#xKoj$U5VYweb=1#O%9pN9sEl z_P%X8w$thhsw-VFeWq%PGUF=UA@PVc$}9B*kv_pt6(yI2T4%T1eUCYxJO|>Fr?(RF zy*#>{n4gkn`_jo{h+DNh)huZL5dO#F>4ZUF@bvgDD1^xU8~wMH4I$L`j|Ue53Ysvf z;XMlFa4w;qh%|ai10~?YOkx!Cb2Di$jS6NA^hzvoA;aQJam?|&^Y$;-3Q=)aepw$o z7<~zwcU02sv$<7|a2WpIKdc<7A*TQTrvQ4N1Q^E=ziZo-X~vyDeH3MW=#FOcy3_yt z!n4TJRBnm?jf1daW0P)d5&HIp#d;K1Gj=%i|NaUL&sTRuC!xoT=u#eo{wKspHqk4s=E!oSAxlxKLn9SM67_Q->y56G%(N! z*pDp(E)Ai-UR{evx5L1g1)mDCz&4(bt^c53m9$_hF(6w0Mkn;xUeA#*Babt}hOcji z+h85kOiTZTxx;t8%D1J$%1oRutK9z`r6nD@Gz4cRQZX>oizD@r^3n|ZI?$VKHh5MB z@O-DKA~MDnQN&iJd?IuX8Q=#PLJ-NPz$nwI(^+F7lEoQ88AZB$!T_3EFB|(#FEo5FOA;B8wR0Z<=$`{- zGZ1^HWhlXY(QmIOK~;0(;GV!2Z0P@?oRE3z6{CE8-ROjUhG{EB|1o#+gHs!o27YN4 z@~mjG%BhV=qh??LlvlBBrifi3*$*Cj2Ko=~7fIl96t7EEJpIgM&{2w|` zKzcEn;{*6!I!{|R?p5&rF{_idX zlL*PgpL+>Uy@#1Gkk1$~*P)gY=AhDJr`NS+hZ5X@gn?vA;L!?JlpqB>Wq|#V2@=4` z>(+8}yGip;sQd4+^q5Tr836v~RA7i&e>%^fLH>ke4QMR{M!_?%<+t3#lCVAHui(FF zOuAzZ@@K2y0=tX^OPI}Zsz4ijV<%YnN92g?&X^;yDauv8hc_h?*~iVra^1@n)h^VA z?bQ=2L6$_1zv`NKxR<|;WHmDhKd39l6f-QF2N1rkXnGDKKaJ!xIblxYB{9{#hDMeH z1|1pjBDVBDuk4Q}VMXekM7%(a_YM&sU^q!n^r%QYcYbdTFmOIz9G!se0KoDTfC@Ch ztwQ#_>`cV9Bazvk2Z{+Hl_eTpykt_Z=jL8a47vKS-Q*dcGucV79 zJtFeqn!{GAkLZqN(eSrjmaa$}!Rx$@J*($Eg4(R}Xp!Wj`xN+UPmsM&BfAK!$M=XV zG6R&Fsgc}2Mz39ZOK>#MQJ1?<5WE6adfxJw5mNLg zMQ{D|E^zQN^d0B^k6~6C?c-Bx2R;|UNyz^Yk@2dLnATCPona&goq*Fh#!3nOcbA-0 z5*VpN|Caq{Cp|0CqCYu3`J=h(nK{0{Yd5yT@Xz8J%s%c;5nJ`!xycQ84?+m$70L(P zd?QA>_tO)`!3zi6F9KXb5p{-|d5njXDl4Q8e54C5 zVh)_eI3ac)Pn3}EkM1HrS5BbYK}8Rv9!N~mlHZB&qRUL3G>(eTpnJM{&fjh=VZ+6g zG!-PIO6@Dt>|tr`;Qq8bi2!704|Dn-K9Jl+WbL`z`{0)7*y2P5+D;|78T_G>$=U~u z{-p_vm9gwB?GoH49Rr_PqXUP;?7M>n_dw=PIzp@TO9+Rb%E!|Gkga~Fux9}WU`7Sm ztp#y_L0-W}U>0yy)vQ1S;4lgdJda@Q{Y=D(uw;F-dYA@M<7$VJXP%f<2@m$D6Ms2| zV7MS~5aALiWHQzAsY_!aOgh@kvtqV4J`52953X}q`CH*Ez^v*cD(jnw;B-xqx}$mkV%`IT{0URgRx{dyx?qp!zJMQt=8`1$5V)vIn6;G2dp zUkUta8!WMZ55c~MrrtvtJ|Mw5k3mGD07rUJ8!+VoxFiq?i}FW#&@6+t?3^BgDt4c; z3~C5x0R1yav3D?7>vN!fRV7)iufLvVztyaS{V_Y`x1JtNWHC-Cx0lfK`fRF%-5WV0 zWr+$utuoRWJIudQ^)o_g2-=OQsOP`$nW0U1;g`1yz!K^+e^9KSh5G5CG=vPqloyt3 z4ujpVmlI{X;6CHs7hcQC`#^D!5)$$-_BAbPpbuE-h5=c`M2|(D4||}=6DzBoTb+Th zPGBwv2D38azVEp>PUr`;UqTE}&Hc{k23ckPZ8sQaf$6cem2S%g-O|9Ed57`X;7OEVGb--v& z&^34jk@R(#Yz*jpXeAne3sM3X7J=Ol12RBN5Wq0~2tXPE=@=&@8_p^d@*iLcg{T~r ze;B(cst5!Gy6n3B?IjNVWsx!0PuRe%AgnD4Z12;~XTXnV~Op&d+4| zLqIns9Wb&ae+1oW`Td8)7Xz>h^5(g9W-~30GV>uQe`%I+;YJcPh zD#yttz;sAeww3<$e0v(HWi4ZPFzl(4ks{Y;D%79d+7WqxNRAT(5$D@8?#9V zL*W-(*H*lxlRzqBhHMjbVlU$TI8Qc8oQqx5{*f3-Z5dqlzY%WIUe4)!&H^qwlvBZA z7)WviVsNkzGR}Vl{>%t)TIY0}Q|XyL^e!-}lxEcv-dv!A{jd)qBrxzS5eja|=|`NZ z8W&RUA9m!$@Its|$rqzQr^kzEp+Mt3P$HbeTb-B}kgMsqMT%-pLgAaIz_VP%wh+t; z?Xm8Mw=*jQhAI3k|%wE0Wb(=L&y0H?B??#=JwkRQw z`rwqIee}Epd(k|y1va3p`B6L$gf2q`aRDgw@gDqe(r{yWQN&>eJoho9k0x*O4xb7j z6Tm>;Krr&&7oezoW0ZLSU+b=gEK_zU?7(9NV94_wi2oK?OFDwOxO*y~tO%q(B*0Qr9KWE#)lEuky$xio}J ziXwQ+9(;v82K?2M=7`;CDI-pY=T#1|J*5ILMPx!dvj5m6lgR|=o`pe?%6dBi(21hw z#GmvdX6c`?UB)~1uJC2>rLwmsEj99*RmtoeJS5}3lum)hJ^uc^>J9~@v({N_@MMnO<=}$V;FwbdOaDEe z^dY{x+N5q0_EvDgO|BXunWITtB4S`b7D(U&wxPh9a>jx7_pImr6c`%-`9Bh0AYf0S zNJz*re_D0#9|!tE7;vU3u8NE~Mj-Au=s4!Wn`i##CrH7MDX%cj{ffx%{~?$xK7FQm z?|&()jfmU>x~(>uIhfi2h791%41n5M-BB6&N5_o#>kSut=a!|xcfzsT9ZA?^_rpI` zZU56eV$^D05;NhMWEB#>I&)Y@MW65z++B3hS~n3(FiNF|6gWoS7l~1XUOjwA({H|L zHq?L96q|z+0*cs7hO1)uf$cpzU%>v^YQh~Oh$mDw|dm<=V&YN3x@nM@JfK^XDit>}C+F%ik+1)(7M$rMplZ7JB8gm0hRXEqQjy}@E*wpU?q4kB-XM0ypxioVSzxuin}MAxzmI7M z!zU*VyM$Qf^grT1ik@WI&y>GHHU&%Wnjv)BqtwEr`Y~wTMYlR*I0-8c8|qGwLmd~L zU$OTWqs)rOAu#ucM05T^c!=SfyZaC}y9At}vhLO9o6Dt(NQ#6&AOWX3q{#g{)g$6h z6Y%6<(xCDoen=V+AvdGH@QT1`TXxncyHF`7vndWZatU{B53}8q_ynV#G4Z`f&mjf;ntv`P2bH z+vw-jVzytXqzVx3ds}#o=Sp-DGSshx*6^oGk*8Y(6aY1nr%M9&N8ZvnwA>Y1b{dce?rJ2KhjE00_Z}>-3foNXhwB9^hkHY1JCk498#73p;iJZAyp2)Z-+i7 zLO+WWq7ipZ&>CPzzwS9gI1&SQsmp0Gp69{y2}Dlx|2y#s`V>Ci0};gm2$w?Xd;o&p z6sBTO{3pMUcjgcTNV*<*PRr_;XCoj@9EOlcGl5{iQp#f|aQFh{bO=<_vCTw&SH1oH z0M%;ZRjwa6UdEX5(^CH>1esZohBZ>O4)YEcf{(O%Ti9pz%a!>k>OS-mBCO%xi>8dW z?4FyZ^$c?MhK+FP%B;#2Iu~AN3ijk$22jnR?!FbbZ2D>njvz)ZfQ8du;*Ww=r1lx$ z12Kj1@1m(?&qK<4`V)ZTrU$#sFy)wxGrB4@ zIx0DI=PS+EtHEbQ$>FRxafjj!7c$r3*Mbis@BAd6&heX(%Wi+TbIz_SlY5>wf;vwN zMm7c8MOJ|KY{B-^_jdaQ3ey+Cr;1h;r|F;9fV|3bDX!<^Sz&?*$CB)JxWvih3a^zW zo1i>q*SvYN8~&LA>;QNWnwFUE8R?${#9EaQ4!4fX#qAHP;wVP&n-lgHTzTewYHBNG z?avN9NBbBu4n;oK{iBd3?xd*KU5{?XgkZ!?m2Jl5cvcq*TT*e^yRLwfcLr&fOiTa) z2fxf^Jw6-YLswZLJnD}~XZpf5Aqu@0&KK^2$0a`}fE-a(#}7U#Oc*?@wDxF~pda$- zvS0qyTB~T#42F$l6?>0cEZ4E=72bzjZgAnUv!LYCee9s6-ePbE6E7X&-yv(E>tws1 z{dx|5haJSt1d*b_7x0U;SkY-Jcir=xMT-YjK|ul$htHEfi)e0VW1R6Sd^AYZ_W$hy zjr*N@D2JF4CYU9|(P$2-RAqUVAA~@a;|}{A7&_(e0c{ge(XjxXZW0BrztR^vki~6K z;WcNb-#6x5g`KvZ=J2yy0e4_k^{DchvkSgGs9ap9cn!Wl=OVb91}BMf^j!CVi>W@~ zmiz11cX*QXtN2d^$%Uue^-V)>^L*9*q7#F5pH-oN$GVGMW&i8Q3k7b1OP*gPuALG6 z29LwUWraPu_fWCCs=XuaWLP1Bo+5g|@}BBn+_oYZ!Oq#dG>e@5pKq%MWV|kV5(|9C zpZ)CE>)hI8a<_3aJCWNq$^H^=`qnmYoD&C|u{|b+^GLs5_7I1laoF^@EWH_p*xN-D zyCX5eqg2;G6}hyV!RNfk?>^x2q_kxaLN?xn2#v*9!mJj5-1uEXHcIrX@FIL;x$w@o zH7vS%ncc#jb}6fM-{cjPJ9eG1EK*OxQvILNx0xfL}Rao$`;}0W;T_{~JUXIC)Q!Q!YvvctwFPVV@(-CP zg&8xRYj@iPb~CDq4CIGyjnLxo+EU7X4v(P)zKLX|xGMf$tQOgijvGyZP9tBv=jQ!) zPT(cq781tuMa6O!hXapR;X4nlE$nC83+$2@J!X~?WBD6fTJ6Sp4h#kzB^;p}ENo0X zRTHUVG$}iZzq6vk6mBitmr_gc`?n*^lz|zev@AwtN5w(_DCmOW;*a5P1Y~*hDc`-_ zEl{0PR$h%66_ZhkB89U!!g~&dXI|40PlJ-=&4m^dg@J}rVwk@2F>@>$3od)P)L%rS_oJbCPh zJ2e-LvJZ!yzdC!cU4Zhty!kE)EB6$Owh({pL>r(TLt%n15s?8-8eBsKy7C*Qq?nCBJJ_OLi#_HtDMAl=69r(j^w3Q z(;E4I-W7db3JVwIaX&Q`i!@s4@MVfz;^WkyMaLfT(`z3zcVJA7vtIyNhmRBM2`UkL zorO?vPWt%Tgfdckn5L~#l6@JU`H(riF9mL?p)6LMNBfPNi2Lf}G^&IbGo>YE6N;3! z>99shZu}7|Pm(E_p`@lof3a9X`XfgMiK(bD#+#zt{e_F)dgYT~R$(DINAy&~0jgcY zrS$wCfm{+%O-Cli(;75-T{91CqBAcuqGm_TKC2C@eV*Pnucv6VXUAmxR-)Y-@E;y4 zrnAbA#K9lv@sI6`HqHe0kEh8xamBO%g+C`2`e0BcRtV=`7BqIUfj$(gekF~`_WdU$ z+Z)y}7&|UOh4Ma`BD9ZGk7KQH=wb+aN8}SpHLj8yyhk@XrIBN=*?$6Ofbk4P`|Uze zm-#=!0TL+dj_%k~9a>KSqS*iJ&`F-%n-&VJSm!SV|MILq_m~e4>o9cv6GY|`UtC)PE^?A}UuwrTY!-UuJ&ce=ZWwg-4)yDjPlKY@*K7fnH^q>f3p?UV;9WyN(;pl@_a;_t|S zBY`5|?WZ({)JLl!R7^EgGS9yx87Vr?;#MI6c0KezX1`Ul>wO-aHpITfTU%nZo6WVn z1{TOWYs}yOl1?7e+J)pLYMVEOK$L3&wj#lw@%ClGFg<30b7Q?A^dgM6EL5|-vj6r*&4dJ zb|2u$i%O8UeFS{}Ra_#v*K*EV+MddoB0K(O-vS;d9~Co<;KwjsPnrE3L3yP%L=GMI zF|5u#6xBVx2HVR#@X>xyXgI4UL=qh|l-Ya{-E3ha29~c3rs3MdVzz zUH~q$gFUjHpKhAt!e-8)F}Y1H_n}xV{(~1FTKB8$TdQ`TqDMQK%jYbu<}fzs%4yYS zr(h<4b2n1*;P6gf6pJ&?_M-U166NU&oS=Ah#>cL#l)aT@pv>)wZztgN0zjRUY4G1L ztFaiX03k^=cE))_XET%}^ZN=<>J=8-{(f^&%Yd&o0OFq+pPnGWYp5`PM*oH&*5|_^ z6v4*0>%RH;LBrYiVl`THNNoD9cM{c^y6q#B55HtW5xAt4SV)})^K(Fg?}NzehLo8Q zMyzg@*W<5QcXBo$f?#l|1Z(%7NC{T#50&afj6nHIJ!AJMnBQy~F67^YA15muF#*KqC}MikOt zZJ9vs&0>GUAL%v~CJwSYPZ$0x4>7+Qn2@Jp(B4`-TOe3xhjuzgBSJ+FOvbsq>lb&8!(j~{i zz>oFbX}cRt|5TRr-9HvArS4Zd zG4hl-ZDq>8zmf$L_fpIG2ygP#cOLL$@}MdI>GXTeljOGMC*ondenFZ{clHErT0Tf% zAr2i@G{%Wr?m8%#OuT)(&zTWk&UuCiB1xQ3R8#4(!ClE?eHc$Y%`tIET$!zpkeQW6 znFEbtCigXW#n)Rs#O=HxMpv7V?rfXv{chk=KMgt%ULZ|ML9YBtsQJ52XQ5qSC+n3G zBk~AT7R#0oIjQ8I-(QEF$D3s71pj*u7drl@6IV+mpx0lF(ex$_Z%!h!Z)o3%8ibB6 zSU$+ejC=&@*FAfkc^DtItV*bMH^2zuMVnrzC0vSqvdQ5|Jm3E5aMIIy2Ce>Mv%?4) zcl~}zGSW5}kL}oR4E97Eh#?TT`A~R2_f1pa@o=X3Tf|9yM`@o`(q6_Hw%-q3c7e6# zFX(jH-3E$bflKB*yYq5miVJ;#QDF>Az1Yr>a>N>S^Yg&_Y1j1|L=B-R}e`=cQ~^0 z(;Yi0)~Nc;(9hpK^z=pBPu;vLJ>Nz)1RrFv>K<(^0ZQpAt@$tqnY-7$&X!lJejfnv zu|v*m2>jvt6fn$C8uMAJGD*Sh2|5eCd-}3|g{s3j$GH8p=1%t2s_l$68?Okl(|YyS z{}lZ~Yx$o+q)Ak)XzL!3em_~`An@N+Mi#`L9r#~}bCr3K+%1c}tieehU{g?HHGd;e4 zD^sxb5rgxH9CkCA4zFa#PesqkpPvJ>X_EWxbez8LO|}JK92xh%wEf-48j!3nayh~n zr;pa>Bmnc~K&KnfEVWZxJIK2x&a{l6R$M@{rDv~U>-Z7J$Y8r?Wd5;XHa7beA`2~- zL^GRX{yiR5>|c*GkER&n{@I_&LMf_6kC*;$S8qwkN6cL!l%`fZ!o_~ed>vNgm(+GL zd9QDydw--UpvhC-mg#?%C%6jXq z62D%1SaHT;i;sMGN!ko!X|aYvIfH{bS?v4=3X#=S`73r_k}Dd;C=`szPoQe+EtzL} zR1SkN;h?C8o62!)9VrP3-3~i*z1CuE*&AD3+Wx73Ff7g?wO? za-Gyq@itpA26ZfkNz$U$iMayKvO?9h={_BAJw=XJV>&>*{*`q<$tg` zgybQpxrKOz(RhTL=gF&ohw}=PNA>plT(JcM-wOLPG8vU{C))|x`H%m;B6p(0lui3e zh%!N&G9T5{l2w?P$_^T6S}O`OW-nJW7>RJ7qbe)l8D0qcV_-WiDA^~T^sSx-JK6^X z0l$93+56R>;Ya22%N&Qp6=!D?YlL;-!ol5q0wp@rC6)qPK`2w07EJVJK*D&;I!bbK zOk}w&o3%8XmX*;#BYZy;BuSw&lM{X_NUyQ4l80KbC`ur-mRmL~D%P4gNZ-6+LR7n| z)$qH_B1?-zMu-|~_S57ShTe4v{F1@t5hRlQjkm^Gr5^d}@4!TPf~V?)0`}uwu@rXJ zv{{s|Q>2=TZn@#a?9#pnDm2p|^A}ax@%Q-UuacH=*^|PFS`PU%E1leF~h?Ul}u#5601qNzC490|*baRnlk z@GOeG-Tsmy+_i@NGAZ6FD~VwDk|Bj_aZzZtuCh71c)oHg9`C?oAF#_9VratKMRtp> zoJVt!GKPtZ)8Slw#jkAFS-=04Lto~YVj@>95v%BROKI?;bhMsR64+g2GVrBFU%>JaU;DD$I5x6TZ%Cw2A zvlZf1b+a|P)oTlPu`30|^46Hw=gSB5L&PFLV{roNx^mIox&cD2}#Y+=+| zT2(C~`iXBK5)TMo>67X!*Cho&OE^?UoQK~NFT_griTRB37i){{Dn&a9{Q#(qcILyx z5SS_N$DU)IfXClcxr5yl1rG{taFA^zDhgeY=*(*qbrAUpZ%P>n1T4y-@WW4}AAFd}kXF2O~^Jb1(8!I#K@l4Dnb^YE~+3{H3d zkb3E`n@L!`C$|ir`7{Hyu2eb6jT3uTGpPO3h*!#-S$*aEbN zKcNKd3wbnpv#5d6y9UcI+^&|baV(@9P0bcNUsG?Sz0^d`;R%pfb#)JxEV*=Cbzj#t z!rr*N*DL~_dCecE-fP{xS?T>c5KA|Nk}7Y#u=+(a9OEjCJf9q^J76;L{DJ*Lf5*?0 zUb51-@ROa{)TLxQ4~XZdv~tD<0V|~f^p^y@wrcNd7tqMk>(Kb$B#pL?T#1*4QkZY; ziB3=MFCTdJFmpdJPo8ch7uTA#5)C#TNAXKERq~X2DR~?`{}58)l`c`A|EM5Rg*V&Sa*@%`lEXfE%cC09+y6-Y%5K6(7O!PKUlQ>*gO`rsXP zA*fK|v6^d`P4UoCBQBy#oqhIc=kMO3igE0oEo&UpNyJD}QlXU|FY0L9iMTvm*8GsWKkXI-BlK_0OHz8RKS`$&Z( zarjS5tE9g76{~h^t_K>zIhOOtx6^ufa1g_iph+nR1Kw0_McCkRz2~HP!PFaP(^EO~ zN|vEvAT5Kgh9Pi2ra8_CTh$`KI;6|mZJElIiNKm4Q-$zSDR)77;%hp%y0il zI0jDxl6k7}Ckdnf0LeZ$>MJsm3W6EzqIRFe_G6JCShtk6jFaY)pyZY#9;xkzz&kYn z;>5OebRznT09quD1la$>Tdd;5-Dbwc52~6gad<|Dq;cnIgW^OopRx8{RU{i<8h}bg zQT?z6VRtUYSMfi~=d;pfuSVWqk6Yf?^f=#EkGE z>{oc4jQ{nKW$z`_sQfkFKh1j)OTuBz%AS6ZCX$QVpT(sp^CnjDogu7ck)$pbO;PlH zS%Yu5<@Yav#Q28jJ+$0t3A}pv)i5Q>w6bGaa=rtud}A#2xb-}?Tv2K#+7;^|Y(D40 zU|kN=cdx(CxkkMe08e5G3wg-VIr3SV(z+qY@LGs)_|xz>>rQdHM)dpjKO1jkgqw-W zeZVQ)XJ(^h>NW8?)@li6H7&m+B4hvZ1wBlu*PI9=J5e0nxJH;^57|@kJyw9KV~?wr zl5hnk!Ar^=J7y!1X7ZL0O|RFZnjYb|_2%*IJ?MA`Sw-M2RLV6?U_K`iG4~H;DgYz7 zRjq_F{kN}-EKkNBKF^gBW~zMM8^Kyu4HP0WKK(q#fyQOFvt*~jK>nH!=1;VX;^MDO zre%T>*~8^9|MvZnA+p&MP%~my8pm*BXsiGY*wyAx(L~8Zqe>(xNVzS1Yl~BJFIKGrg?BG^_s= zR2P&{%gkYuwd(}g{Y$6o1%)d>2gW@hLD}f*n|HPGfuKPW(wJvdJ57{ z8DyDehy&{vd`GwnGpC<1@A*!)&@Ygf5C6#7RRyB~j=pG*(q2hDn86j$7kNVLI)^nO);fP! zqp8G~t17ls;24XPj@o4h_{|fBVVj!gPmn^O;mThy8&4qW`S~`oTXbipngo`ok^3LB ze|Pmu)A39V!@qm&lXK73S9y$;AyK+h)Xs;`X0!^Y&!q3?{qSk+Is-N@lN@Z6%kjKo zX%?DgWeTV52G=l%d!P$KoPRcPa*6+pXfQ75C>X&;`^vApIY-hn6OB397zQ@;pUx>nI0Jsjp z#$S5>6eW>9Gos*ZT;iZnwquX5kTrpDHN{1&zZ=27`KE(=MWzPWh=!sQM`S^)dvcdO7Rxy5J%H725KZ1N2lN}aTaic@|H@p}V z$yPcK(Y-DDCSxzaPf3WV>>por6dCdeP9H(?3}&y_hhG&1c7 zrxsXijDmZZAErwXKKx{XNoRtU?#XL1P6S&iQsXnCfcqn?mReVO#7H1m7?U$;DE96@><$TqLKtbwSxC8!v~| z#D4Z#g&u0%C{C?E5IDYXbdVRC+2brR)A2~I!QM{0yeeRdco#PodjkCx^QuRl(#6#^ z69j&`(9`_l!oPRdjN=^dJXpmYdauwRzj)O{4A9na>3OpKfz(M8y?3srW~YL04hW(g z7Y}F?AuI9HV^?U#lr53NhvYT>f0(S)*drJ8Zrq{mSv^J4&%va+Ccz}1rdd>0Nv2?o z%r+j{28epjT@h1vV^LF~%a;X%v7Lxvm~EnqY?sO8wpJG?(~|F!>q?xzuK#`gtY*er z32c|O(5*?1KY{203MrlZ>4(ES=qXF?O6vu)0-DoXC4|IUr6!q5&?o*69DyE-uvTKD zUo^vNq*2S=|Grk^DhtgjZ4`}kqBx-#T9U{Pdvw)2v(>!r?+ z(y3mJeht4x2loF`+&6+khY!6Ig~~W(C(w2Tv!W5J-0lka-`+?srBYFIs%Y~QNu;66 zYt{qFlV7da8R!e0>SUjK*HxOpPdI;tthRn4ap7-`C|OZ8$7jF7@0er=MRyf1+ETXc z%KeBvHtM_C31AHQhOc8mN(`lOTyCKNtzdt`<+KsN{TbHo>>DL9_;bxqZ_2GwJC1PR zcksVBYQ38^S99Zmmh<k=<4@Ef%f#6bW*e@{1kY}6l;`)0C)PN-yL$IqX>KF9a-@@ zv>?#tqGM?*Bdp*>0kh&%Rm|azxIH!+jD09I7y2AJc#MCQUaDwNzEW`2urYs|Cgw5R zmuaovxJBWmHTD;W$@)_Py_Qc>N(RYcYW^pyTx{1&4*@&hz+pY?a857QJ;vkbG^X)^ z>Fr}$vY`a!U@(@o;TK+Go-sWm5`MqIn&H%CCdC*Y&i9u>wZ}^^43XWSPr9jLlQ`0s z918`8)wlz*mA~c~!u|;xjMMMUPKq$HI9R^Q>W@w1Md3>iH%TWo;TxhogKLotvDAMq zw-mh=WJ#-OeLuJcJPVb-UCPdi^yJVmt(&!N9X+2QX{A$f zzc#)t$~tx;$1(UE*TT+vh#mt%5hZzm(uTj7kZSc_0BGp~)CS@c_IS9e*vU3`NPp{; z9r^9(8KsQwXEAK3Hmc1l;bDGA(}d?*0v+rBxncSUC(YX(snp1OmIQo3EzwbpX(!k; zIiLDHlo^&Eo`2tt_KhsLqte1YgP?_1mzuUCAJ_El%-qjdk{a_dT}&S#?|yI6wt8vx zn{f1!!LBL~wt8rmWartB0^Cg@EzMML^8PUmA*q>iI7PeC+S4%TOUmcV9*pRgpLUky zUi+^GQq-%us8TS*Jl^TPv*4s&B6l7!7E^Jv+2hN8K;t7R$Na$VN8%$UAjux^{{Lg_ zEu-4{qHj^$onnPTad&qp6nA%Pi@SSpEACE9ixn?WoZ#+W9D)=L5L}X*-@Ere-hJQR z82iH+87C*%>ugzjtvTl!$F$KM`}-J(oGzgw2pLzL3WH-Ak-XZ`b#=nE2pH_X|I!16 zxQg-_YCoc;#+l%^;&9yTA#0fUvujlo0A=V55$ruNK0;o}l$_~rKNp8u72!Y?aAfvz zg5P7kSE(>i`APv3ILBDKM8QR(;)vdt3?cI(nU8zGzG5KDetHQRe^9L19ih#^6bHxE z**|UJGNk4!Q~W@%a^Q2{m%o%8nI_jEMfcN9k=sMsM%*26($2XtU-?aon4wi!`J2_=xf{0X0VSFK z#581rJ?wPyFx%N3veJ(4 zkPMnHH55Am54?1QUgoo}-t&k^DmnwfY1L-x+DBDCRXK#dqc}=uv-5pv#Cy z|3PGu#RO?md#iIg(f1U}1%?webs}2cW0-k&<%ycU}Gum;C3`kZ<)!)4blr z$EEvg(+qF1@S?&3QW86$vy6@wpWbUy@aqn?PbPUFL$@Ep@^&QXpJD&RU~b@^;?3v6hR130WbWX{2?nIB9TrCO|P2kc)&ATybwCxMVX9}0V3yc`7(l5HsfC6np~{!UovriPra(SL|*YJp;vgAIA>x~ z9z~E|1pTe(?IN*J+#^LH#97LNv#j}w#gP#6n~!dJn-NxE;#AzPwBx_#_Be@orFBF5 z`wZmG2}FdSTzxIklx5wq(C;jB6!qhi^}_4372lZ$E(sZwnKPi|9JVcu74WFnyaQY5 zcrGm$sgV`yUKpjD?MQQXCoqKT&XAuYk#g!_Os)v#+w`F1&ZmWu#i>hgq{>ShOsTPa z62hx8=SreJc;@F{462i8i~Z$CaGT*Bi>#5KFQb1PgV*ABc0Bc4S7rH0<^b7HgXX6% zs$KhBkF=9XbzS@6+chE&ItG0qw>1nR3d+-nx6gQL3$13X70QoSDfL!i4aa0)@%blN zOzqXsF@y3EzfV1%r@0%T&A9UVV$~z8lTFXRTyO&8myHo=B-eqrpJGVc2Fw**;DD&U zn`G1zJ}+sU!p6XE+Qnw^FiidhL7XQmM7Qvw6{?@Uj2k`zuzF=#I&8=@rr2nv^Ku!< zu(C310@6}KNB(z}ZbpTN=*La@ZKOS=C*26G%(E_6vP^VBaMeaw3uQ$r8Y~x!zq3NQ zrNW)DJh|5J{JqLf7mR=HkxX!r)zGywy=4H0Nsh6w*_uC>ck3-P#n~FL;1yDgyH%-d z7Py&(L+E;RA($UZI7k-!YP$Ws7GlKGAhLsZRH&XfoUflziJ9|y8LRq$PAGLxW67j! zb$d=DVS}R3`15SLiL72w!+coUX=VR5ya~@xz@JxxI1)a5#74ixfG?J8@7(_*Q^!R zztq&#Xq8ucZcWrAj|xMm$<3gfU>#8VbNo?~Er7%F&JPSn2hjC6pqjSY3fjzaAst2? zwIxPoL9jex1^A$U|9imH${lD^Fmb;G&8XvOl2gy z==GEs80@?{Q*0z_<;+&UCCOeT4!bbmnpDqeS9~bW~au9 zK)BLZ--OI6zcaK|wo=TdFEXWex;!1M-%;CQHrP=|WOM#yMf^B4mV3V%_QznP z1_-aAz;mNJ`F(MI*ophT&;dnI4=ZN5%=ev%!9n_)W4`8Iv}%HC1$P^Z=~zMC~B@)=c3IJexRj<##8Y->9peb447*dzBS+O8xp00yumbCdQ-bP6IOuyeA!ccv#Z_cH0f%(V~S^qIg!QyCRT~jBZtW=#u zKnO!nmY3D**9BqdHRoYh=X#y8aLg#@-c`pNxW}-%6wsW%7+Y=m#BE_n&CMfL9aoNi z7AX#QHikTa)R8-QQB?=OO{ zXD*t&slB!4KWn=Q&n!QdGPL8#X*+rjPdu8fHI8CQ2*{bor@+Okkm25_{jt?P7+4v7 zVI?UC{>SAVf1cl{r=x1~UV%_`+#+WzTA$&3*G!q$NZp!|*ypEs0&M9mhJ80FW<+%& zotm!ETx$5zH^!c~14At$zb3~rmSqo`U^HJ~3kW`(rHecCY0<-XXoH=Tk$W6ocyCB- z0?Y!=N&ac`mAu|Ip5)}4AeyQtrrKbGiD&~SzZAb~MEbS#AQ1f%(KgwHnP8%+k+4xQClWzimdR5GS6<2=n9ec|hNNXE)0Rq~f`^1-uQF!I1GoVUP?TQ$kMC^Sb!e29@f#tPX9kE)Ujq14Ccy@whu)3wW} zR;O(Neayk2 z2j)N~p^!N8DQReY+w%y$|81+~@l>wsfobMGiSm#oEm6`Vyajo}uF`9}2TK)8jTcxx zG<=zZH46u?Ml7B^mCW!kdTkt&O%I8uUN!S(G721Yl)G<`N) z^i|q1;`$00id|*^Puz+wus=$`o;@^!@#u;TVUO5Kd;b4uB#3zrie`+9Z>67GX#PyQ z_cCuk*wwt#Xz~b7M56u0XR2|9ULQ;uSvsX!@~kKyH6j5%z>)U{L2`~>rO$oHO#2_M zkE9}2Q!{4Te7K|`@BKs1SE$1jAFBO;S#M|RCI1n|^@*22)+b6~dG*hgByS%FEiFdd zrW+j2pQzsF^zwN7FD_VwMMq#;J_Vk`u-h%_N%P=>q zaHsSzJ|dZ2ZrFh&yY{1J=;>ad3&mf{Xu*M7a`65-asSrI#0P@DG`kd6Rbjg4c~|+G z7hf^g_q%uPX>z~+0eHz@1 z(e;n1wQo5tr&_zCII*AGmiAH3GgWEseGR?t$-2_p4RTsv{(8ZW*dZl15~K;~D_xho z6L+tm#F^0j&CKOb6WPQBf>?%p0yA!shw%)=Td%__1R3ryMM*^c0~f$=iM#uht(VXO zxb8u`TTe!)9~tHJUp1Tntbsu*PJHQm%tZZ+u4gw3)%l3$Er>@mIw$ndcme_~xh{u` zFxozhDq2Lb+Zwe{q%+@35Bo@5yGt>tjKzP^#ZXUU1bPDb{GN5)ncQ%n8ThL!C z^UFe;o}3@jno2`Q*|%=!QWNZ?Z}S*1B@Uvw5rlWlXP%Sb!~aG&cvj%%u_C1_eI9JL zS*~1@YIc>)^f&;q^d*O~KAtN|W7~0VJ)Rw00cJv`6l*iEdZ4Y~PcFbc14_+dMgs21 z%>Me9-A5d_mxyc{`U0sD4jz>t5r-XZlY`#-L8F^6@uGx~`Jl=uQup-$&CHK4#Qx7- z)Gcb;+aI%epvTB=Wetd@D=w1=%i@{W%$G9*p|HH(>)jIR(DT?DbNu#)TW;I)O9V=0 zlQ-nr@0x~AK*@mOz}=6wJ^QL9-53>e8j`P*YQ1C#qR@vUW4DL6cqS=02h56ttHF9R zFoKm%>k*U!D87wJA!nfperC6KO3}|C7RezFoAU{H^5~~g1;a(!oSlNIA7@qoshmDJ zrXK8TnJn?$#32_?zhik<-d$&t^+c@og_PVGk*-NvJljot0u)1H?oB(34}WU{zgD$n ztQU9qj=^T4)i*k>U^D?UPE`VzfKZ6C-tw;cjA=3C{tTP@ceX)S>lF+nwZnl92pqb) zhjIJg#=4w;8xh`m;?p<-?;2zfH>VSI+qwDS`T_c?jab&Z4nEGnUF~P7tCXA-7;u+n z(qV5~3a-bp{0TB<>KUf+!np@4x%>lc$y*jEc{uE(@V;-jC`_7)qM7*&;7qZ9fptO; zTPjI6j*3%$@Y`SYV7qR>wwx1GauStd+3M&Blsxn=g0w#Rkm#>rjOkYR7GoQ?+9ypT zb~B9K{%emo=2OgO8WvOHPx#z(@ORx+J1Cb75&Z8*Wp%bXP%+M6_C6ywb8}GPbh0vL>=4eJv?1*tWpXkmrW@k)n*jgj$-(;c=Np|2R7R zbqGZnX}S1YrUWVY8zsEw^jUp8iD@=dG7^FlZJ}sN|5EKi4Euz_Qt0ndG&6-%l82pi zad$vge{X&W&gD!#bB&1(CkTp+AvCac+u z4WKqye0s6zP_r}~+P~#V94(fBa@!cq-;Z(Lp5Kl90`sPxRdBB+l-z?l(I3?=S|`&J{eevY0O7y zy7aq0PSZ>tggRO-K&Z!Q@#szZvA$@r^ogc(|CV(}?$Y2cd0mKL6SL_?n@i7JwkrL* zLK6t1p+=dZLGV!6fRAoS3dDXMix-S!}wmQbM5cA2*=+e)!*&dI2izgIq zTq|D8(RCGR&>1%Nosip+(Vom*giYo2s_sZ4kfIfKsq`?yF(>8Rl{5i@eJIW`v;Vn> z=w?|yx~=&c$pU8mwQlg#dUlmFJ5Hn!*Wqt!t2Fqb2If%Tx$5XZ^R}Lz`cn0;)dDT& z>DBa+^jX_Kz@3w{bA0-TF+_50M=~P}^EWJ~30%lqH_Rh;@bm8zpgCWt{f{^hfZ&Cw zUqhWio8$$|cmZ})vXL-MGNP)E5E_6Yc;d$*)EJ)Y4fOWt`DZHzH2-~Ker z@8!ykhUV4nCHC;ylnPCccqom5pBkO$qsfl>#G6O+Od9hmKCgMuv1SP86pJrTo2@DT zp|DpY2Vs3MIEY4}#j3_^%j>dv#oSqLWhj5Oii6h$x%8o~F$l+X%F0&x9iVffxyWD~EEP;&&m?Js;EoxmfF-!i&Vse`_F_5=z-|r*nF=S1CyX z__|Y4(GC3}6J4FsbvHi!0}jO2pBiZ|5o|V z0y(z=D<1ircI+dQuB?NX*+T`sh}03-ho*sn;*@@^xi9PHg#pd`vr^t+00=TIt#NlG zS8l-d*RpV<6#Aco78f6L_DuP_fX%q@C1>AC0@tBT)Z#f}go@_*z9YpX^J4yWLEcRp z28(rj{dW7|+g%b&m__HC{+AN+ulYJbU0@2~85j+GnrdB7n%n1Em063qYsV{2R}>sIWU7DC(r{fIiSqBPsxzAcJPi+jnWl49!@ zd^~ATwDs;ZjJk)`QB%iea;l|lLvsv{{_d=Ze~RCD=CFAn4770LBXWutBj(vLJEV2D z&DX{5tyws!q{M;cdq^dn5Hk7v_Suosml4|w zWwiHfc}1OH0;p_>22?{fZZvU_%1#dvB&J@roddMOJ&g#GLCDBpGVLxW!79(|xNzW#~ z$hp)U_*gof%ntP^uS6+CO=l4}lGZvZc9!USgx|GT**q(OjbVq^I>`Tx;f#P(98c#t z5nwhj&Yd2w5fT|^rfn1Wazkd2#=)`6rSk_^g()LG0-pm$Nyf5BlQM-PdApP^8Ho~k zyKN_K2jlo}N8IAyzoIcefD(Xc2eN3ct7;6Mq7NwVMR8kqXpgU&q))J7T!UE=_TR!z z^PRnZH+1E}P605BDpKyw4~P2=rqi(d5F2u_05C12VW*c-J`**6o2LF&xXsN$q6LEv zGY#c1u5@GthX3x14+}z@KfbWT3qW6MumA`J#bz3O{s?c`#&unLj4{%w$RVU60TagL z?e9Je?Upf=VKR-Q*RTE|F;4rx+o`hA--!P{c-*GT(g>#%`0*++mJ}XsyMa@Q+HjSX zWb*&H{r~>z|DWp;ZR6t%^Z)aR64uA%71&bgQep6TUS)5~ia8!>+cP&OxA5R!ySktB155qiw+$wr@*Iuf-;I`-fHHEA!;lJz3jG6UR4j(sO*t0Nz;RfuJ3`H9!vE7|G8xW4r4!^J$f2ZjN{hQyVNWfROc5gvru}@#+qQHg zJi--m#u^@90{mw*cnekd!ghCD-ZxJ^`*~gs=!uiB9S1A;JoKghf1Vf>452I$_%vF@ zT$Hf4+Tg%1GNWqoWFs$OA(k6xadkvSodFhqZWd&kDib!^9~6AYfVwjE2KQ0H2Fk4u8eZ(X(E{taXWtH6c z3y!5(3Q9ipa&DUmr1WLe8K;-6rBM9GYH#S`3%JOxLiigT3*jK;iga^QNE;r!fI*=! z-J^@=ZCDTD2K25~nrp`A>9}Hj?@6Bo?DcV4-_ZQlEB<`@YSFTVR}vxJ$h|sXO}yui z=SVy1L1Rit%{%Bbe((-5tojaS(JDUB@#mj3wp7Si3hEB@sL=7#5)#m}({!%(X=B%* zVz1dI(6!hEX}f#RB=GzGbx}~BQ_|Hj*n%G6zVnrW^aOEB9PLf;1^UQ+XV+AA1_wv- z7-^gH^D^a9s}5qr|Ga1uzJqi(DVHF$}zvcIt zp^tmOPR5@^N-P8(Sa>`~l>&QMejB&=38Q9}4H~Gl2XE35xp)@p-5Nu39YoQh73B$- z?Q0yw@4Xx#@==-dIy~dAg%`-Zxn}As=T2v{9VD@Bbc&4TU%eN?KG3(kyDq5)QDroa zJXmGB{vuD2q!QHcmf>XlLRD&;h+p9mIEtsS1Zl3ZHA2T2fpwVw8mQVE+~m;gB0@0w zpD9GhbH*|uRJ~Hi{D9X+8Xl3;{qRKuJ?QRYluW30Y7sJS*!`$LzkgKRu|-94LbpX% zz}zWv>nss~J&X`bhsOF5#fX1d!J|gX4m)0`W!+H_WOfI7op}2Q%WBeS{6NA#QHy@U z(z2K18uGR%a1;*3WuPncIWZ{UTfyYGjm<+j-GJ6Gz73O&Xcb9M?r zKRKBZ8els(2?Ho;qjbC&YuH2c6lsqCy*X z-TIsl*UZ2^j&V!#dtNxxs|GQD#Tghg_8r6y1-mTVyy=wc^fJD6>zQa5(vq9x#Yl#0 zt6ASf%E`~><`#%5X)l@Wb+u%`;jBzwM*O&50d&ai8(9byMZWonh5mc-m240Qq>>FA z8+*}b>SU>!vuyC}?99U$wg5QgTGqfuz}X~sdmaRAl|H{LR~)GU4Lzm*Ff7h^L5VMr zL#c^B?lD}Vnl|YAuZaV1`1LU_Q)4Ce<0?TzWR}5S>%dQW(2oJLk<{LU;FVfaJ2(ap zLzMs%FZ^^hMM~90xO7stvVO$DZ_?7>*vI`7eeW z&cfj0%;*=P1sQX>50kB-y@;*BeOK$n{^_E~v8F2aB9T|V*eL`bdV_a-%drsp_ z|KHUys**|Ok}FJ9t!x(&fgTYny;t8#c(dAa6=4RUGyN z9x3J#x*94#tS*n%<{Y%5JSuEN5Y#iyH)Kd`v!6q#c zHr@z-1`HB{A|88DG)$^+*ToX-f}HB2YZG0S4Xx_&-|HpK1KRI2mTLOR6c z=LurN1dM(4yL1x-7+9K5g%CgeE@pNJmy7@Y6O82u45mV~Fy5mz`i+c6MB;(R>t6mw zJ!@4nBMYJTfA2{NFOy1Y9+-*b3B!ZMlHzb|ilrAST}0KZyr^(*fL)!?0wPgw*Ay)|9f>Fi@@~bMmZ5e-5-(}k(=#EDw#Sy8 zzAc#Jm<2)vRB9S(bkh%g_@QAUpKcc&Q z5HCWuV+)AdAh33R+hG?sKfH4HWBj^Nnc;AHI=bxnRPNwi5dE?E@y`sLZ=0_4bj>E5 z2x3Kezf|g11}6XE$L6vYHFDVwV=}w&GWY*E{lld?eCn&||GVlw_-@m!0&VN{2kg+Q z^L_iE(Ywbo;#MBsN>OW1T*<`sP1uFJ?$g4$3k1&nkbW9VEBnWAK& z>~SBJ<8X0EkZh9qit7-&Q3k3w*y3KMz|zm@paA{IIk?lS(EXH8}mOD4$MLB=&Pl zB#p~9Ejwb^|8X53^D;h1criLgkkL9^Jo-`N$PFUnrP(y_13Md~)8TBhi z8>7zeOa)UaPUTPdVeV;tjfIAN{uBH;jM@4oIZ*PGhm7!HacHc~Gz%xM1^z$#QcCu& zO_>+UfPa!g)w)6h^7v@>ti{OnY7Z+Uy7d%r@Z6QWeQ3hD4MM1g3JiX5#+4CljJ&K zvxV!-l9r*Uvp&FKKG|S9G~(1uy>Gv z>HCQL=U1=uh;|KSZWOi>Ae~pT#l*tAoG}-P5|Z}&_Kk!+92N=49c-ou6oZubL#4<6 z5C^uK2QyV+a^W_=1Cf8@BI-w=Q(Ki_h1XZuCSRFN-)t*=Z$g(AXN?gmt*^Z+@A+lk zT4x>OHppNriGMc{?E3qB({dB+(x7ILG0>pyWL3FKIqM6nrztpY}P=6pJC zS9^y5t0U~0jR&pgGlv+~*EbHi6tE>N4x}rHr?VBJu+fmiwPW#p z`h}PLj8l-(XF3(?-1hW!HC&DEMk1_~9r9)nzn;QgN1m);FQv?Rc~_~1-G&HKcM;6_ zahL1$p);H|F49+a#xS?np#&(&EBg~*>ju`fUQ%*@YiZf@IQ3QCXS4_$=%?cuhoVNz z4TI$DM*gTne|Vo87!_gIwf7Fm9j=U3K;V(heR^6k?B1j5)HN9JMZYykPP=vtgo1Bc z%wo53fd8WwoMn>yW{zBF;_b z7gDtT#;bwdd|hnepMVfKuAl8Bv-ltFJX|0RvR=ugA#oKo5cY#0me8yh1$iX= z_{XVo&&n&cm!&}l+wqqdsyRnjz%)fJt8~|mia;N%eVzOJ+v8iisph=` zOW2;$k%y<}b({k_F)=X$PV7M0_Ng_3gntTzT2xu#7m5gYOtV#GrwJTPiM&%^_rT?a zS{QPo?C(f4D}jfgP9>fOa0EOyFb2F?4Lr!2I^dQD1>lDe zfY^d>>B-jpT}HZzcG6Y3c*DG=MbX2!LylDyU!Gx)B`{uoP_kbaNLzBmp`yr^u77pa z$imd?QTl3-IOV~swfo#9rL8UG!mEUzaCfIKlD_tt6&OHP5Z4(nhnmvQ|EaptW02(s<-YMUW7U0c4DudQ%|APvX|lCE>X251qSF?!i5D$8gRDvDM?9f5|$a z@_P;8*Id-*#<5s-@1%D=eUSzd*UI=zI6~Jg^}v-wZ*0JG_YcsC|KY&&Z{EKXs?f8P zxX_qJekR!@Xp5JYChrQM>Gtp7v$W5Uhp6RO3Ml`y2r{Ad>(i~s(Q3Qb5n;~t`sRi2 za^b*_z+}jb^tLOD)oqw10AbIw9FPXvf9i{+%&_cQ;6D6ntJ~<_hf0>~b&<=CI1ShU zse3Stb%SZ3r}yu2UVY`&GF^i1`3Pe-u9gF~{it)NMZP(7>v}L?27|9@KJBgkwicYr zjKmJHEeuE9w{4c+d>Z6D%&(n1c>dd}=`(VLF@1#4yH^|p{>GAW`I?7cb~rm?B~L6L zwM3jzNj5E5PWYKDj8?_rfdfXReXEsG|7^`h$#-k5oL;(nr4fucXWkjjVq&p@uwU`O`y zTfXY~93zi!2;rM*cyZn)R64bvQpYS~YajDN1cnNCCNtCshztGAbgy?l<~w&;Gw7KQ zpO*WlmDBC8Y*%9naH8(@a_n^}wlMi`f42Ith5Rk~Jy+_a9d(>`_>T2Yz{wgB*TB&yfG%v)Qw^0orSo_+R30t2$r(0CPy!6SqOKtMKap8 zXmp|}Vh&Q{FHl5M9LBfJGNvZ=xo`=8y$gueRbf!4)!}0=_GRJ4FLMf0-;K z)64bec<#?3otBgZ5ZMG}M|!y10>nI6O?2lQW(GY_bSWw(EFPJxa!U7W1ve*J-PCLr zL%W0YVgiT$;=xYY9)}&6FxD$#;%C&Oo!;P>`Wp3iCdc7&_$1*DegUc1B=t4r_JdGb zFOEa7Fo3Ax7ws#19;0jM23KSbhZ2SSk!^!>kmZV?NQaD*C;hZ?wZK`N0@tFIk6JC zUx!Y=8&nd%djHESVm*n@L|{H^yMAkei<{jJvMg-&M+^c7ZGZj6^<^Ijdj%uAU$h@l z`y5*8=M_#KIX12UAcs?m|AJNrsAKXxu7=1y**b6cylSO7MhS&iNdMy!`X1zeK<9I@x{ zLtI0^k?3P)hQ~B#_x;c$Y`M0b@09w!4V{${3X+C?y5e)27VUZ71aJNG;<$VG&k!S% zZF>pqp?h5$vmarXcNs&L+XS*F#&$(MgEL+;l73ge1N9aVsUZ){Mrz5-(yw`yYz3OD zaG@0?J`YrFTrWiaA?)CPA>eloFloOrLG_G`R{coimwuONd9}Zi3lpK%futplf@@JPdxjCv*2}a7&97*;CML;rp%p8f8@XBLAi{ySHSD*QtKH(!wMk%XN&5?!i zZNF7)J3!d^-)^PhjiO-~3#4`|>lG$C4@9}H^hlq0N(z2d{9s!Sq>uz-4hTzYyKvp8 zq9DYH)U>r+g6$Ag`^JG%kj?T|Z;Ud=g zf!`Xx60lIN7ROk+1SGJyG|k+TC-oX0YSgz&IqtZ*w$fdPqX+wSLi?4c{~TcLlwTvo z3W%k%(PdY^acB6j<IIypU+<(gRO zM}_j#`_Rx&tYt--TMJKdQu7bfc1dS7_otG+@5A;v8 z(CV8p6LnRU` z#NyMQ&PTazG!qaI(*3=EKOr6t5AlfA{q$sHv{FtRIwCBoKoC5S#7x0lB&sy~<|(}S z3?{*%qCN04NMKe0NiOl|F1m7PImeziaXlKF=bO+g-VDdd9#ai`-r4_$j9~e&tiP-> z&b@uBhS+x5JO%f3xnV2#H9|A>o5wXEBG=axSl76U{>2^a7o4|ZD_CsVxljv`S^<^< zKEgZ}VQ^;MUIbOf!~_X$l6yRJQueJ@d0)3jtl^PE6l)@J(UC_uuBamB11d8(a_ z?bx$gd?WHr$Hwm6(cGWGkKk9;7!!}bf~FK-C8tHt^@3G!(2$7|RtCaciPd=K2G;QS zQrWOz#Ejwbz4!H-3Ia19++^e%cF4=~VGkDvlVsAEdWN;d0%5qPE8#5NkL`zGH(I)z zYTEq7_IA|SLHE^>_=X@D2ivTpk0)xcGn2$dCv1nd!7dhwTo~P5+{+)y-X_$SMqzK~ z3{fqbe@28**Lu5eb1JSsGyWYTa^DaP_SxYw2_9WGRb!aZ_MPSx63RA)p}*q%;;~Uv zo0%@nH)`^ALECi1efE@y_~|kbgPTji55Y#`;r9Y%;U7sIk7YAla)Sejk$1WcLrbEr zW9_!!1(#v}Iw!r6vKTvfJzF`Md9yPU2F>OUtKk)9Y{lP+IdxjxS*1TJ;WOvqe z>n)>stthxPHzFRK8;D>|mb3Eaeem3Tkvi-MVdF3Kci!gkk2PJFO7!OIonk=QfM;Z! z%Mbq3svQ1+D2{(tzH^NUp(^>p+%0*4e?#5jhSq zIU$*kHia#A+hqT&v9|}E(U(ySzBIOs^NnrW^fH$WVFn*@`3q6|A}00K3;BNjaKUV;EWDKYJ0;qCZxp^`AHnu@ zH7o)v==!JOVupl5&a0`&gRHyVN01Vj#8!}4(XH4S7X}sZ zd&R9cUvWAdbFdMZ--*U;b@8@Mr`de|E}T+1|BhzFTHfGu3mD>DW>Rr$Z>qr*@HA!&KnD-E zfw=1-Xu|VBe1^*ppjAg9QK|vg#3i9WEXkj$OjG4M(nigbsEF5Zrb1zLaxev(eo5BL z5p9@Wk?W#+J3}V?k|%NV-=nE}Eu+B&=o)&pnlzbLH$}5@Z#m(3LMgh9&F5hT1b7vn zC~)y0U-`2p7eF)c3j33yqdKvjsuDo2qeLl!>horl1GXnwm-&Rj?S8tzvlBUjvt==nd6cDf_Q6g zV@~)Xd?lAdAC9(S|elqetCR2RYd@ z#sA>lE$+=|&{2w&i^U|%yHG?z!g-tZ@O@@N4~*}Pld*;f`@za}C?YX9mEj_^4x3@G zM3)Q@(RHo_!oJ7DZYShXvpTwl1_9CwTX>ZF_E*eMqAqgg(Df>}NBbt78!U}MEf)Fo z)R17KFmdIBeWX`&K^7HH4{)~A(C*&Qpt!j7Oy`j>-yul_H@-5d> z%p(GckSmN^|4hKtfufNiOH}P5$4$k}Y!qBnk~CxBoW`MPnhk#_8{oF1D4{k8Uw8@B z^Sv8VUBg91th4-bnc@F9%TI+%)*E$E?({5!X0Lm^KSXeTbYG8X_Eo7sCaHpsIMbeM zhOEpz{?A>0!Z*r+OhL}Ss^?EKsLfRiCh}(1`9D!#x5l~ z`>@641?t%lwG$zw58C*>bUkz4-qXO3D$J=TZ0k7!e_tRD2B#WWY%jQG^9mvN!k>ST zvL|-kE3Re_uxlj`Z<)iG8$JVF7elCr9X#X!zG>V$mjFPBq_AUbx?BQ+ZKhP%a;}ij zD3wyYvXD62n)^HpQwPU_(V}O0@EG&YC}R5f0rBs7AsNit2z_*Ybi$n{Y69qpYOI61 zU2+0V&~?qfx^~hBlsR&L`t#Ay%oMnKFfFRyp5WJ>+M*+bwtWI}dY1=Wh=<}A9uen2 zb6T2rBFLmO_0*2i#j#&5hyhtThLAk)Yp+<K{qM9idw24#0SC`x8ejb!BFweN!65~&8wR)bAW^CkY$J@*9(yQeg08KPVn}J zo38x>0D@~MrndxC`94-)tfI%OJp{-;q|}mj+L&D8im&kQQV==Sp57w_bp#pU8Dd} z^Lxl{kJye55HQRq8gb*4%&kS@sddJ;JKcZRt0bOYDD30o4+u?C zTkjFjs|6MPzH8vR5Xjz2-Oy+~#ZLW5Adduly`?e6>8FvtUdfAtXH7U6HG$jRdAOWC z*R||5M5cdKQYTu$jXmBEi-s_Cvpyj7-h$n1$aMRaiOM4$<2V{{9bDRP2Yoidt~%VB zxP|&rHGjJ-C+o)H-<{a*SkucSlLW=TF%V?*OSXHN9)LWf-D@zqA+H6Do1br}uo zSnDF!e2kn-z)45|HR6Z77vzM#im&6SZ=7mWaD0VM_?|U#KCeKcw_mZ0cE)EEPFw5( zz~Juu7Kk~|2#>r)2<)f{;M^+=4DAgZ+W378+f9yKUeTAh|42he8+;-zNnCW4Hxo!( z`rRWeZA9vjwek*LC1cCwC-r^Dg2TjH+=p>PZlNECu#JNp&t*#_R#tAn!NeR2996%b ztWq+AdX?wTjR|-e7uLnncHcFVVDQ)-057RDe%;X3wbkv~D%t z=zU(Q*;i%>$j3z;&$Y3Nj6%@bd1oc=p)Hx#LK*hw=6pU8uJ$J}6{1$jTL!Ge=+N## ztVEV`U(8ZfSuV|QL^JrI!Ga{H*su8vf5{GU+K^8L8G_rFX!E(uC*5|2Q=80jFU`(4 zC3d6Cjy;z24L_+fA!cs%zpoGB{pZ>JYt6veraZHj)N%L&AZ}9$X}9M-sDUDU1O^2m ziik9!6OIfg74#uFtrR66+u%&*7UZF3)|&dIW7Jq|qOyv#f!|wXT6P}Q69*4g@gEUc zzMhb|sP?y2^S0aD#4E9aFIeJq@H@$-s@?I=ZbM_bSkj&{Ri!cA^woCbdn6xj+v%|GF;A4p&p(A#5WK^?bGz>>c^e|KIxOaR6C!l0 zbE$~7shm@lz_PJyHl=ji-XDABh+@5*$(4>OgPaGv`ihiai;Ihyd?jR&qGQbsEn~^e zo@-&l6^Gd+M=oE|Czv3I9N;`9`{_UQv>Q)dUfSWchUQt4Q5hwbnWAso_tRA;C$ssU zT01w-NnxV4!v{H*c)gMr9{4-60%1cc;RW!x{OipEu93~XwEyJ}Aq;xfG@~Hjc3bO~ z6n9zY*X>jVGttj0F1F|p2n2gfzazO?(*>N?2{{A>Tz>*b@_cLB)ti-LhNB(_|+e{eIrMP0<%gK8b;_QsD@q_^yUF?JSFakatL z#ytdg_dsxWcL;95-QC^2u||Wtg@oV|oW|YVJ-9o4`@8F(-N`@cwR%$BgLB?fXIDLY z8^2OXJ1Sk~_1h|&%O^9L=6sm@&XeCCn(lO6~p@?Ns8ApBZ%11Q>F>do=1d z$R2LCjo`S8{&@>Ap zc5r*=lsVRdpc09@`)$^jy-!C&XKy4vDks8|zM~jHz%!1XhrGXRp@V4=8Si%-KM z+00ZVj^(4}%EEOGlL2&=_*DEab#D zlBJL#xdwULjWYc=_Y!6MF-9CINl2KV4`U9mzt;C1K4&dLZCF6^x*uj3Qg>bX0I@q5 zcII|$7F6i22x?eb+!R^U2`QRijcJuY=5Q`RPX8_o3SXnD{)0pvd%qu;^Zrz0j~~kL zzlayz#|k-Yt?=(dxbQ=Y$->6elrpa0mvCs{xW$p@Ii$@1aaz%qWmI1#DOpU@Kz{}P|U!s;f_A+FV3~XVDm5hN!3oF34W!mFMLRkRKSnWrINnn%HbF*3yaPX5j|3T{DgM1pgZ9cxpIz&m7*TKFS3%+@G5=<$zSar+&DEEbmSd5CyqeJV>FgrKv^$Vt5my$qu0a=kb*&ouz_|5EwHgqEUtAl3WWA}hp~8cQwCz_9Kq7}kJ}`p@=FBk~T0@xTO%;67UYAd!8K_m7_H zb#%_!gxWglpU!ELj;PO+q;weJlARctRg7N;eZo7R*aypIPY1SG^Fs&J|COANbQM8B zBQ2=thCWs+Q~d6!fr5C#)tsN*c?gXT8O?X9{|01E5sdL^R>kC}Q9RLWV4#(wDzS1g zxvjayzolrVaMj8kwZo+vhIls7B)Nd((&cG)*YEx|B)qA;ojK%0ZSbeHT|gk` zr6I*m#)B@%dN81tX5v^1bOke+kQj{T=vtIQb@0$cv$Dm9uJyrebvS@i8?R-<3kh`> z-H}AsN^CnMW%ZjZ=wT(0zvV)I{_+qp&{M%z%qWkpjMF9`@v`Um>UfN>4(|0XyJXya zZNcY6YUns3H&VFq&*Gz`Y~!J3Ry6jYjGA zT>ni&_S2h@sQ^Np{HJA6S@oRewFq4=u|vjLT?xm~t@g`)g3*wQ&WpXn6VksQq=+@; zyP@6pO!HpEp>t#HAkMty_`Rx&d$251dr)bt?yIj*JH3nS;bmqpFVmYn5%2zxylrLG!@) zp&D?szBh64e7>)-!+_m6JZZUtjn^&x(|)b`l%)ad0=2NqY_aN3PtgNB5ozOM?Mf5QKvBmD5# z{r^%oyg{^klHeOc0j*ufsUU>Ze)w<9CT{apc(P>8DZK);uFxw$(E}fD_LZN!R@}iiq`PId8tbD z1qXMW7ydx;1|JwpDL=g?1tW0pEwK7S8@<*LIUig*$0Kau)7<8QuU@A!+4DbM;>Uj^ z{sF(%aFQIkdi&y>+vP$M&MtKupp5;lgX>I90k>x)HkK|1xVT-H%kz1Aw4Vd81a%&L zdznOSI~U*N9_VKd@*m%nu?#;B`^l-PI(C@J`x#D@askwbv*uLx9ovmVdqGFYQnSMk zkM_pkv;(Z^x5P`gBXBBf^uEI!lhL!Al5nlhKu+Sx1eExvQXqbU&^Wm2L;izg%zA@JHDEzY@Fo&o76_y_x-zq~b)S`|KT@n>nznG* zsDo{s$}xIXSFjT(D&;D2JSaN-$qZy9%rpojm9F7Gn%7{!`gG-D;C0@lNj3iH7u}OJ z_6zpk9R}NXf#i7FaDMapV83ir8;zg+PK7iExsn>iPKU@XaUu9qn^r_Ux)n`ucR;%8 z7daE13`0=U@mg6@z}9gn|;)pjV3Dj4DH z?EHx>J;TEoP@h}DLVo~1YuljbXrvfAL1jbVmd6&8F<|nlN*_o9Ky3g5*y_YZv3Q%5 z>Kdf$MEJ;J20J3B*dJlcMirSIf zT=Y0Z!ht9QHQ&1O+~%+8*)(zAB!b&iSfI>8YO|K>@|w?-uKZ&%9#+^&um5rVHrkDN z@eijvcu0Z2tvsd$kv%k^yG(E|=>qDKj*Wc}(&?xSAfF(Dw&UV>D4%_5a(O@sqR=*U z7NL%jFKzYc^$>aY(yIni(Irov|N3LsBm8z4D$6lGQh6|Vd3l+I%3i<4Nm|P1%$yvx zr=|Pd5gT)GXz20DmqvyI^YC**avQK|2~71onbgcMqU+Ti4K-?x$1K617ktZ#ME3h_ zApx}AW_}q}&Y~Bn*5UqDN-jy`2 zPPw(tHzhQGn;|{ZrUC$&84*8z8!(As` zS8Xex{{+4JL9w(SQ~i5hFC%anV{X~bHTUt!BA^!ZI$LIXmCtMwwu8BwqUK!}1EfGk zc$pY5Yc0-O=GR3!aD3;Da~C}X%N4IF{2gC(4E)VI7vCF!&ikF0zJiQVOEDG_0Niie z_@ZwRyK_;j*T$geExizmCX%~I+1CTbUc1SK&9AWBE@~rY%r#%CJngE3x<7wz^xD*r z2Na$}Mw$T6T(s2VBb3)6m+7pVn5ljW&R#%ik+ccV3W(R0YCE;dr??bg66}s%KHBt6U=a*w89L1P#2Z) zWzWo1&lXvAe0g#*X;nW|@#B$_ou0?d&MArEud61wky&F3r6X+tFSN+XTzq}Dv=<*j za3vc4C7CL(Sz}~?DaCec0rR7va2Tr2YOaI%lg7>}VNR%sz; z>gmu9Ep;{pdleI+BC=c$hAUsH$1!*GP>N{`5vJ@AcPbGibvXDN`{zk|J8K;hMj3Hw zPA}KlTk*_0qS~1#ArFRnJVVFHO8QAzq^4SL2}wnXvo8_6Y#hZtY|?7gSql|91M)Jm z(ROhkACtjAi-qL@ntM-KWD~>raxYB3*wQ%PdS`p;*~)a2$6(mFY--EizF16&VO`!? zO1V_&)Dn_*OA+h?Jb~{(Y3cCkdT4^^10FeVM(WjRKz?u%wQk~!(j!-*sS{2~EL+$g zOmRD|;h8Eo6jF+(uw=bEqmh2(~o$Pt1A%!7}T9@XN;qvZrXr_CJxyQ4+dO z9mIVp)EPzE#q5&TK3XvFxZ%3Ld^OZm+wqK07Q`lk^e#DjG4I9wJv#@7c zRLp0)6RH6!C6b{StD10SPdM6vdwC_l7Jhf;C@s-cemU~Am%vcIbWkgwSEKUD+^Q0F zE$(HS@dpu>%Ul8~CO4SVh2P(PS05C&>md7}Va|lv2;a2PW%J7y^vDf2>-ES>;hGib z{b>*trp=q{vRV=0E_w75!7Z{zn>iiRoC&&dw)(5e;jTOY6HRjjuedoQEEBrA@raZ| zbJ|@!sm5p`%V|B^wz>mVZU@o7i9JTLMzf!43R7vbgDmBL4yK@I36Gw2kp!e}N-dv{ zA)t4}Kfwf$T@$@B+c;Jf#!b0bCnvWD)}2mD)ax(_&}wB|=yde|@bHUN^!}i%Lb94< zH=+?vW>g9MtA~U`35=8@qdpJZh&BiLt6V{6(rOA%-F7YZU&tr_C~N9SIzHO0hxY>K zlj+-dSHzLQ7C!R(#oXj2UgE^_7c*0+g0g3Z0;WR+2p=hE6%dhWS@1vvY;zztj^P1J zb2o|WjO0~e5wN;oquoP4pu(`M8v%7fE)J!%kzoFpA>ruo^!A{qET zYJw_yx_1!Fme%gjxjgJ*{Kr%qUp@>aOQ$47ArLS5U2J@qcD`J$qy*Y z4%-&~HG?1ygPLhoIpx|IyMR>Ac{)&OhF=lhc;h>*6m3g>Y9w=syf|2+n9rSDiQ^PQ zz*$P0Wxu4A@lGxp0fmmoY>cFr*p{75$+bW|GIrB_im|aRMh4L{YLDuZE4S-6tN6+@#WN%^uv0D6B-HsTB(R$oy4WuUN%^pDQ)~iLE z+i-oE&uOO%6;^^xikE*Jin)gkPJG{+G^)L^Tb4_BrF5SXmYBSB$TMmNrhRD>xSm~Q zB@ZMq(zA^;lePnoI<0GpSLu++>>`Ri9U?%G#~Wu83ZGQHZ7vr19hda`FT5;vK0di} zF@o}Kq7)b-xFNpDEqWt-1Nm0?rbbxVvh2JB1Ut8S@mbU&i@#?N}YOD>2Ba-r* z7m`=);)M3-Z$4Q40km}8!*W*NIj?E$k(%I9zbn@yKh`Pd+Z~`8Aw-Ps`=f`p9M|uTbE|g7tbMqRSR}c?0t=Oqyf3HC z&LyL6zxCVVCbszIgDG(sh#RbSxH<(Cn0ra11RHE5N3gj8WuTAx4JYZI z>u&HXDiz@^ULu9&S0g?^R=wk%wwr5}Nh^7=YTh^NOt|i^V_j4A)g>!-#R!nLM6MHj zzK^Hs)ea&cBqO8Bp2=5ujrdVY^TMLwR3^=1T0?tNMqF#sFBaafB9LN|_!xX*aKpDD zPl+YT>wvTb>CetT{Xg|m%xgm#tpb?+YRTW*K@OvM8ngzT+9@dx zI=8`p1v2Y~O;ML2e5aAA9IRn6Uk?OqWz0XbzKrrFNbp}*sYn=1e(LVvsyjVQ0uq9B zi^_Ek4RnNz3i$>4q~@+cIvo)l;h%Unl{k^~S-Ybg^I|q!;sNJFA~TX7uX46|x{veY zNx~1yT_#p}g_lcR^NQQv&g2AygyK?smmRlI1f-+`{6mmcgcl?iR?6J`R#LZNO2H{h zt2YRvIb}!}cG`StGOKd6fyzRcBIV~*^0slqo9vf!{tIE-- z=jo!URn7M%#=JT@_1A0HAyPyL+H1776&>1zAO>*F#7p1Uy5`+-<4pE@3;$eog+aAs z94uTtir;kwpX=_h(SDCEDk$uS7Wr|%o*Q%t(SetYGudT=AgIm7!tM1l_$>>nreo)O zxb3;MXXwpt!TV({1G?x%Yl*|MitGA~G+GqpqQmMpOhJ-H2YEv~m8sPSN5PQc>WMX^ z;u!HV!q5B<41=B+b?H3$ylox_-`g7Ah$5Yicf-z#cb#W|i?K*+%})KA3_t6)Zs4Xz z5&!Yj-ktjAGjy7XpD-~3&d-tG8r_#i>weYipg}=Sf1EMuvIGr0`)gl(RN6&P5LQe! zhJrnvrU)P7kFf6~_A(29h(2MA)GdSFpor|bdVGsLRfVkJZD>F&+0p^DG4_*4fu{*c z@l60TWG5yy0fwmOd00C$PfNNIl>XLaObfFu|BDNYfK(FhGNjQko_(X`eOS`lr}2LZ zsy6}oqa>6XyIz!%FELLa^d`QBtqBZ_Ey`rgV;q}c##j|7olV6!>%lv4eSq*pQgzIzp@nM~% zB8^lnhB=ltuTURx!_7&7E1ibU&ldxj8kMQh6R+V&MxaDdBL*d-Z&MRDEjqObT97huAx5ReIV?4-BZb$kJ%*#_)@~No-72?w(Y_W~#Nz0E6bfBIoIS zZ;`3TtJbV)tZ>J8Ev`sLe-kM`<5$vm?^;B$l`TsBG@a-<^WlWuyUA%D=)5yeyjp^H z%3>pZiN;6z9BYLEbNtP}uhWl==3ZA;!puh%BQVlN291&(`K5Yp#8pNJ60-62zP-X3 zS$)JP<0E`8&djFMN7qct?gpelZ~7nKX;#Xpo}(3Sd(k2USpr09^#LQ#%j zIg(Ox-S6}U&q8QQ&%AH^(Um!aR9PaKGShM~$k6aMnz-RwBPP7l)ej#+vtM)I)VL6& z6b-JpB>dj-)PM*WD7(mu%81j+i(w#yTRILrPvU7$i>{DB(0Y!@tZN8knXZ{f{Ek$m z1kHXT0escx4mFa^Ua7fWF`0_wQa9#AA-@=z3)q9NXSm*rYeJpmelj6*WXT^VEU=xs z{T_$C-zH)W(--|kIp0scaZ?3C+^Ll~6i{Iiknx7OXjj`jRhfE;q&SMvOc{D{Wc}!3 z;;c3_Gh7p^wvQE3AIR3j2RDR3cvyQ3zvGbCg4BtA;N^a5r<=TTo$sQHt5xS zgY##OA(BPb4q=uFh{C)IqI9HKWgt+pL)C2w4vAsuQIu}PONpZ>Nvj*laY-ueCFmJ?qw zm$4ZeY{gO%Lkrtgs`qWC6x8Rznub(YO=<_&o+CnI-<3*+n%J(YDJ6U}3=ds&$o}iAsKQEDp;?0Wdah?FP=o@_Dzii-ol?;!ku>Ax&1-h>FCpz0d-Zk^ z_hgRfodILj^dJouY;US2TFFqP+Q)G$IL3FUyX#4YF>{Fv^uC3m^J^_G@=gM~;C5Zq zht^8D#%|{;RS^h8%_FBemGkl3_{;Idc8w-{nAPPr2;8+}mfb(ECyy z`YUyPX8UNa%ABp9qTs#|{!InjB^#`j;G*Z!mcuv`_y5xa%8cv-uAP+~)W={Kj! z%Lp-;2!PJ@-CMUgBj~##VhA|xvie>csZ+|u~#WA-Ju4CSTMQb`R#5Kegb=ACo<;p)>+Qo`(s?I z@QU#fq3z2y&Xh2S0j~)2OS; zV>iXr4g!VKj6Lxn zMu_b=P$th_7zHmnYRC_X{%%>{#$^rQ5qH}JSFvK3ZhyM;5jFdB*t~{S?{$n4MmN78 zYraw4BxiHmBa77#_t`rL^2p0z9!fZYS1Wa=sk@-nIV`O)6y?+S^O_ zLm;gD@u%$>y}#?K@Chw=jjr9}>t4IoPb@4orcxamnva`Ld#@hd#icVu2?%%zqy9CF zZSN21x?ED&5N`{kcKyX!cyW4RY{!V}cqo}(F(LD0a|2(m%IjQ7L87ysy; zkr8iB-eBtJi zMIO%l>&0N2!Jb-{H+T^rnar>9fzNY(yZ%Gs>;!8ac}kI?&yr|TQ;+_Dr+$By-_RDH-tok$y4-@ zDC%ISF(vlda#CLl;z(tTW;ITUBv&z8TOa_Epx1%fn4e_i-!E14wrSiM<8|Q!`tsSd zFs@?x_~0dMy3j`NdeN_4Itm+s&cYg_g(MW&IbxfxYe5oNM`B2Fmwx314x zi~DPrA6%&eW+LE*bbpdZT=M5OsJDvhPyhU+ILx$NuZkWAj-<(VE?d05*FCOFWw}tT6@vu%%RT%Zt5NWh1|WZA0vc^j7(!_)XwYHM>hW z!`6-)ovb0QKXW45CPFm@H}N1odgKNHB$tMlQ)?K@&vw0RXj5p=;Fk`S>oH83@jQQf ziBbRkh^AcNaI#NI?Mwm^QR3$7M7%V0CtrOP@(b@#Xq}(eL}$H zcTJX`uj5Pz9ThPWfH-``XcV|w1$vEU+%Vg3`a-)mUAhZFTVRI}4lDV|GoQa@;Bxj}3~=!Y|Uy!<>>Z9rg?IX+I&6Vq7S@kv1u+o+%_T`Nt?7JV@e~A%kbm zPYxlohyjO%`s~LQ>MEUD^0uPdSwuzvb`BRfVCEC%IK)~3&z4cMh-yrodoAE> zu2u|LKnzDdENj;)03668He~rkMH+yo{At>zBL7xhI8T>SY{`?**;9|dJx|rAnU}t< zBXo|hj9 z_smymA7eT!l{HDqxLp4s1B;efgoB}q@LExYn|#9+NK>(n?FLK7s><&la>V#0p*_@2 zIHAj_C5yu@4qdzbS*vZ`e#b_1Hd85z>KC!#3Ut(B$R8J1?liUxS;pYO#oJ`Wg?x7} zAJ3FS$ggLRuEg5<6!G1j|x;Y6AAq%76xYpCz`;SE$0bGY(g3lLrjnQ^t zm%=!J=3pgn6ysF0jfLwLdBlc)WkrL*#kbJF;4G-W)OB;Oo&HEJD)+$x^?&E`%qz&m zz=Z2bin_&*3dnDROPKG&ixdL7}(?5xrAjLjO4UjAZX^^$E8!vm z&8379UgI5CQ2Pj-GeB3HpgJ0epXHEcaDGyLMG6#kn_j+cVC0Oa>Ve-tzTq`A?oI zzZ)}KZB3Wsr}Tqd7Zgq+F!2#MOUA}!Zk5}?-kU9U-*D%TG!q31^#GEQ5HYW_iN;)= zW@KECCzEqgyvtk3RPM?X{u>&7XhNp(WMu-S8l^UgcV8f~$RD5H0I{}@!5rIDB&U^d zjL1vyQw7{e7C3}{iUI!h@G%Gt*kHP6MdXS?AC>gSrMI{g$jT&Te!eizS z+QO};8I==+p$XotxM%r!s`M|2q^>mVeaF)kD)vyZP)&E9gUr*;OJbT zl4tPbXO<`%hvnAvShjCbrj%^KGXYf74s`h=57+07hChC5MRF7KVwP?PjRG#fOWj}% z80BV%EeTVZnEXoq@RImhaduV=_Q4?@?6mnDrj%d$PD81j8r93ZEUieK=3@`+-(6v% z&G1~QVY3Jmgbcx;eHzEx5k^ip9)}Gj+|%79G)P&Nr!T1Ghwfufj7V$ARl~`j++xTO z7)r)V=FxLT?`!gMO~hTPEH`)BuYXWuVCZ4+GLr46a2`p(T@=gwz8F4TKe#nyvnVs>|-w;~m&v?gNha@ayb zHgCkZh-t}I%MyN};D-)tDuJG8@ab4Y{;x84Cw*Tgy|b&>$L{#`fM1?P4$EBf7^;d> zeJ`ZLo6A%0cTxH;ZR;VIE@zlyHc?m$k)Bj}5hA=!n=b=7lpQ`}?z`N8OfSWJ*$~s{?WW1?{Tg=l>PKl1vYXku(`=?lh+| zaQV=IGa2e9GgsS&kdi1pgw{d`s$6vQ-g6Jh&*$D- z-yhcCO*T7x%gZgo3A=78b;2IGZeX-zGupbQc7<8Xaf4kE3EVte^UYP+A>4C9JkJIJ~U zvY<{|`v~mj{O;r<48H6k!5(IIO&0bq$sfNGOl^-+yym>YI&?cGK)vn8 z8}kwo%8GuVh4o};o!V5IJDd_&jLy*Ki48;K_FJSM_1A+rYVmLV-GPa{P6La^#=VJ* zSWddMYmcUH|Bd2duENRRdZ0u;u9GfrE|Yvf)L!y6|E*?fdKO@U1!*?1vEKus9)gWZq4f4*Ez*6p2^@Ymy({rzoeI}qIVk5Pq}>dQCdQ| zfW&4!x~kz?giS`7%t^_g@Exy?Iuaqej{;0=v{xxim>1JQt$~YM*yK+)9#VntHQkaR4Xgh zdOb+|$bjVo@jYALlY2Lin%~a_TB6^Mz9FBAu1xd1hVG^Pw!q16X!_4P;g2_!hZ zhOOAZ{{##9NtJW-zDUp^e;V-%jQw|P#h-2uRKqgEGO1A-Hdhzf+8Q>?q)4nxtk%}j zNzEIrv5JlR{+F#%CBwB0i7o{Jo3lOWNKliHkylLTYi#o)HlRJ2g<*y}b|zG%6I{lP zls)t3+ZMi8_hLc1&ys1sY7P~{EwTA>>x`3^D|^2;=6`uo!%H>DhVVK#vw zGQV8sAbW-&>KC5J7zv#m?w49Vrjb4=H_=!}irE-PE^Q0ESDw;BxU_03Ihsa?t;J2v z&7S#Vt4}0-IPg(3Ghyh2q&jT4>EA@e1c_KqzrdaX?nS)(Z|2ssDRm2Wo&FXf&!FWk znxoxGt9xggRfNZ#N0Y|b5mPEMP{_~6zhGpO8 z8dN>8)#B{_ggO+pjD-zbm8az)2=A+ECRpOZ#*xCViR@ugYRJYDE*zZsI?YZOi{>F@ znKDB$^PI zCn}KX4b-0{3vUXoOk7flKp}C6FCpizh?~halJ1kUWG#o>x%tub#xrnXZzljN zF&Ll%4)lLny$jAsxW4$M2B+c#1Kh!-E0xa_vi+%R0+qCbJ)Cs}P>k=u7>vgR>Bu*L z{0&x$s-8Cs1m&3B$_OJ-a5K0Lb1{@-DeH{c zJRtBIOzOr9IUu?%Z*APDh%%KZ71<6Fh?f%L3dlvIq4&WzOyCr z0L@5ZEp+`E(|qwa829p{{^0QWkbZN-gur^GII^isONN(t`v+?hp;6`bUea&ec~e%Y+3}oEOJ8|YgWrXd;#Tmu70)8HBt^aT z_TY^%;=7^<1`<#)>1;&k?f>0+hSnX_-@N(ohqKk?$<}kqMhNK^7EMX3?^^IFp8C$%r8=3SN0`@H0M48t26{ zH7Sftr8!&@MYCrV0}-5f{S8c8EJqD_t~somFynT zTCEMlM|hP#mq8*C9|L3;9}Iqf65MBZJ2>j@xrqfX6o6mOey1Xua>+?s{{){d<4Pt=i}rGag+gOk!MjHo0fjqT+11Y2 z^DnXNM{bC-m{bl+%~H;*k+_L7CZtS0otSg&-;bA5Z~2#C{p630J@&`i1#l*_1%-#M z$Sh6r^|>NTMTv4Tjp||JE4lnds-%jn8%x`TwgP4@!G!8{M07p?hSnI~#o!oH z37?LRl}l|VWjpQJ&j(iv-=!Vy)x~MQ=YOlzMyG$H7G|OAo+W|P(8IH2reXi3Oq`dP z<|!_bkJ0M-<%D7dD%1*VGzD6vol*z-Qv6BWIsS@MSuAP?IK#rnt49gH`b_*I6w{2qc{s?Y5>`QhQ zW8|db06hSRu;D;y6bj~%(MCMd|Beo2Aee_rC)jva@V#JN4!xhbGt?;#%R?6d0Y zMwjK#_+zwrYWH4cMjDwY_J^6C%DFIxS&#KdeR(}d0rMnzU?h-is8}*rl0dBNcdnw6 zQbi9yTI-P;D-QP>?@NsW;Hw%OrGiXVqUv8Nnu+*}8i3#r?yAxrBm%a4+9pR#-o5;f z!0gWr`wuC8dR}#)5*aceSu71R+6peA0^;yWPVJo%q1=STDL=-1+*?Dw&o{|#pk?a( zVtf>QzvZm#{>yL;-JS7*DV}vi8goHbX(a%D10CJ6kyHAB%53^3-*?fnQX%kJ8jp}! zkpu8dcIdAwJoadA<3MmZ8uZyNI4>fO>QL#TWEH$A^Ya{XA68A@=Vyqw+*!aV13x6G zrJB7G5Tc|?*i^U`r+O~B4(DF8J0IO&-<0PlkBi>^(uZ_5t(upQ;|d6-f1XPqY;F8a z+DVmJ0z9lqXfRBqYnPUH?n9y5w+rJ@MJXqMa{?QVgI{AmE|@9jQg2tjd(SPs<~Ong z5tm>Fx_zQ#*I!$KD#LSdXBJq2`X|;|lKM$~kY|!G-JUJKrE(ogjY^t(z-P0VL9xBb zghfj_<^0|Ek7CaPi#-*PYnzJ}oU)R06qrAg*>%ae=&In-^-YOHR~#UDf**xG!8b5u z^q$MF$IKf1$oq>)Ql4}k=NI$8mk}q;?8QUL+Q7G50C+a|BUdZ?948hk27cyyNO2kt z&w#A)eGNavve6lw4WIp2$)Id{1jty;se&mOV3UzNw6TYK`5flUynNz-iCleB=nxlg zn7w!aTN}7YG67zy0Ul2Jv!YinEJDXS5<#jNz1~5p<$4G9!od5U-EYY-PGpT|kC4>; zn=bBu{Wv6a|L8O$FbE3r&#Wkz7nFkrO2 z$jiUBAK>nwQ*Y&d487suVyuZ{ie9l1vg=FJ@Fy1jS=~@wT%ax4UbE@{67MVV&=rw7Hd%g1Oeo=4p*={0j># z7@JHU1IwQ3Gy9I-66Hy_RafRzr6mBo?Z5wPwbtIk&V{Ldh|NV;2PK(}z&^K2wLdJrM9bCQ=M&W8L!H6D< z?amWK)?0JTB=}HmCeEZ@TLPRalC~Tc@bF`t!g>uP|3O>VREgOrXuW5T1}g1KMwiGA zmG(n`!1lE$Q__5+^X6;VJn<>}qN-cuig=FhUSRIo89?5$TaBm=BBI<(j~Tc19==B? z$tT+n|5G-8lA--{lJY}`fQFFF()J{p7BB9fqB`o9+K1?vBWA?Lr>r!yO)B@(LB>9X zS=2ZvJ$j{B(j}!-X$*ELSe1{c9f=i0%) z(<}T71_0|;&hL62O@NCts*zWsnNPFmxYeG$l78*f8gDES)le7cfoE>`WOLoh?4FCs%1*9+PO&C~%lB5CPw=pqkdBjaJcgx$}F^>MiDW_EGXk3)$A zD9}Nnd>DwkVk9xJuK!Y=yvLU5d zu8O*^sml!T{y&xYFuHN!LuvzGM90lWsHcQbS)&N{2}IkrgIykFW?=v3!1Q(s<$Dh{ zFn`vo4?i{?D-TqYQtMaDQ~___A|@Z{AyEQ<9L4mb(-(JKM_TKhMEMSN2YP0{zOIV; z#(e@IU-%EJhxOtv{iacP&<_sIzq+c>!y_62VqIyQvRvh%cE1R=eK@u6Si$oB>yn)u zy{~OQ;JMvw@C?Xh^wHkx!a5>R3AA(LZw2p~GVOj#4~SI-x-T@>!A^l2eXa|-dcLBx zY_?-@?nH}rhy~>gik|I!ZuWX7MpV*!ZfLu=6?vkh|DMjDOS87Zps)k`ljY?g)YF^Q z5L~$Kb$Sj$5`F4@e6-6Cx_k_B#$P`8yY+t2=@vBQyE(#Bs8K0C6y-Zr5zJmuaGO5G zKY;RM-S#ts!T`qQ>%27LBG{Q?QsDG!Jp04>zaWTqHhvpDod*kGJXc2p4j5&8@! z1wfEHd7h2>Tfwd8$=u)J4O1d(W&rO$;p!`oS!2jp^g3QcN3Wxqg z`F@S(~$4$0|AdVoFvs!A-ZQf6?{!rd#G6O*2>Qg87SZF$2uS!{@`^cqZ+;E-5PYBZ9d6Q zga9r}x$f_uilV0{xbpp98fq}zXkeB2FDel!%D);kGjw`!Nh+^2T2V`xpHM1Z6S4Oe zhe#KVDu_IWPrVoTor0f5yGP31kO+QJ1nj1RuZW-DE?*vNQG1AueKHPs26m#!!rBm= zeLe`I?8D$uLaEUW6=b$E)||>_#k(Hn?1O%O)9Ze`s`%~{K6l1LZI@#G@v*`O`_+*) z9j+KV_rS_`y92eG@8{#r$&t`NfKizg0V1OmXPTVRVZgI-*8_3e<#{Xw)fy6dj?E%W zJ^wAw^*wyz{Y9wzX@C`2R}s!I*hd?mLh;qOJwiyy6-*nxSR+7E=R&DhNszrHQEW|N zk2Rv(>Q$0p3H!GHaNj)_1BwTqsf_E5e9|!r`)+ZNeGljOwg?D5mLzjHjpE3E@AYnI zOEI6+T}KZ1cTn3LPN%SFm z`m5tvb5cE9c8losmqMlF(fBl`^YBt;02u^7gZxIEJvPYirV+mn&*o<#S_T|wBZNU% zrB63GM&KaU?{j{`V8}L%f@W%GMKu+bmDM8=UC&SBC)F_z+{>qFdkSJ$PNb5jCzkkY zlg-zv6-$`61M&j9PlgkMq7S^uj@Dy`o)*;@RC)#>SMsQ?@R!f~Q%CzB9WO~Lb>#`B zkk`P7E?hPS5t(+Uv`6p~Yf#DU?LX0=WNr%*Oj%o4gSXS1lT`|Q<2o;G(Itqzp(PaL z)(aA4SJ#>px>Xv3V3ZKM;UD+cW`F?j>lWg6d5+V+f@gC;$J+rb@6mcLJ2ctr^3ZqZ z4q;q!zmX&7{{as{@V=UfaK;&D7=UvQ5#fp}u0T~;yLNWx|2YqPkeM0Jc*S4RmIe}t0IUghVJwvjzWwP5y2FE1VK=rrxz0-@&8_xvXjANk@O_oy})PM$N)v114^3O zL1KwRP=mq(s9>(3`Yr7JFG7nfII?=Li6SV1Mgt@L2^3BU0Se3Ta{xqliYYo-JFWL9 zpn`}X!BbfCH@{Bmm$Dbb&3NlqOdZiY0z?bxYf->uh*vaL6a<{_qGGsEkx67Abau7~ z{SJq-k}S5-FplDJlo;-}X8d(S8P!metpg3lni*aKxf!@fH5c2aDOpsSRYs{9dF6;^ zOcjpMQrd$Bo96I+vvw#WWCA#d26YPpbqgF4nFzmmCc^r`g4l52fZ$-WGF7>I#rltX z3C#48{^@_;lNbGOGBRC7Cab}10-eNTIP(;`jTnY!eLN8%Y7XRt*d)pzXa^U^D6~WF z*39jE${L*8Mj((8$YVrn_E!+0%rgS>fAjN_uS0AbVoF1E8tlNaV@}4Jj=1*LtE$e) zTJ04WdJ#gP2mEDq!EY{E0p9yv#^3!KRqtJ(Yp*3^u9z7)N|1<%LsSTaM8+{g?jd%@ z?gg1%J~mg;`~7#ezV~Gf>}&y$2t*!z*6$JO-hDCUZGZoI6LGxZ&2JTeFMsM^P1N{* zr=NwXql_NajFFKMG8JyU`Fa$=e8l+erv!fWt6wz{;b9MZ7yw(gY{AU<+Sk5jX13o< zfIm9(`PQro&UoY*5RI#@`ZWP#$&zJ=Q+{>XFHlvMFFqK>v3SYio&9JSk2>RYP~o!6 zE<>E~{73$=g=XM0-}~&0R_2@j<3rYUp!Kt*21S6sd+{q~b;U;k7vYo>PDZ2g{13g^ z%nUUc2*O9tdE-5t-Xxs`34%J|g!>&uCK;1sQz;q66Uq7YH8;}H;W_^_k6buvgO$fw zWHK-K;np3qdOyy7*waj6Bb5Y2`NJpvJ`J=#@1fpfHm=)*L`6wRgb9#EmMqC_-{NHjXz+o;cpe~o3KVBKx& zXjBD1`})uCk#(|i?P^4XpMO8~9zOPok2jlzM5w9);vAp+kN-lQ@`C3*7w;N;^M8NA zpr7K6FM0+8ggAi}_+L9A1PNb1j@xO{=%f>2q+ijl*amB-@vjRk#D`}gSM#jtXp@z+#A>5;~w`o132fLa{ySiY83z<{_uwZ zc=V$mo%a2W8%;#G^wLXzBm2rl*;QH@>8FPVyPktb#o=8Qarp<1= z|C1LBz$KTy%(4us08N1pzv+Rfj`4P0*4%O$S#@#U--fo5D`B5(T}34y!53nwM@En$JUU=DGoV! zIo=w4`n>%+kDPw`=_VpvaKQxt+;GDU0BqQ>VVCdgUH{8o_Okx?E=dr*`nrp7XLgZP` zPRRckzVHQu*<%7c{_&6B1&Lp?CKdjMhKBlup}8mmeCu1^5`fDtyUeB+AYS^?mttm| zamE?F!hor@nc8;yU9P`fH2_QrW&{$wPB9=dUHm*J5DiQnK~g4YW@O@UbtN)krSQAZ z5!jn#(O&h(qfYyk!TpWGXSk?1gn$uDcB!B_QJg5z48ahWGO|#4RMYpWD5?$&@=y@F z<&3Yl>muIKr-E0K1i6DJY5)L$07*naRG?YuA4dRq7=+ zBC-p@b#Li;&UG!ht_9f$aT_h01RojlQ*@<`lH+ae-ovF|P7D<$U~DE<2ctO@(nf7H z!@7o0O)$s~I?|*Fqcf78wrFVYI4K3~m=R->(gqMbSR|UKsZ;p4hEd&&_fs@u8`ULg z{oe!HCq=df+*-(Y0Fw|)a2-t6fu{3=(w?((xaJweKt`3up2JX8y!ZWc{&W^_`k#`f zjFU;5%sf>rW^{c$dU+51?frfCeX`$+j;AS;sEm`vHsKy@$=*Hr^?sU$(JUO`hpRS` z9Lq8)*TAxj%#2_m38aSvV9)t=+O7##&m)Gwg3*ywiCeG`OgZ=5uNlD8pZ=7+x*5-U%(E@4 za?W_`1KW+A)+i>wj2>*{e}%-iq%yb5n+18=H&aI2*8hi^n)28 zLT~-I4_QY8r#b1sYNK`xm`*p9X!#>t11# zIjN5vSiE2XV(^61PfvSlt!t2d_-#f^2b4x-eDIt%%<5u$^^2ckxpl}RR5;%8A3ZIA z$6DqmIQfL*uvjrT(xMw2Up()8rfh(3U6hcWSH19TD>S`;DlK^LC%!%_pYM!?^K8LX zo6#yTTp9OWIz*KVal^Q6Yz^_l?GrN^=j?|)#WFv@v!3!aG^7Hc5!k$bV@jxd34i@E zaXt5m`aKj)0O9DPjwc9IdLy35qmO;Om9EQ$SMQxV?;oD?R4a=qjymZmD(4wmFi0S< zWa$FL3BGQ*SigP~0pZBwjz#N=W5Wt=Zrn&SG{`KsqHOWwZ~tgcH=`H6^d-a)ne3J( z2DhzQ3BYkj9=%V$=lCV_%*@!ZW+iQepb;}T`|PJ6(fH&i|C1>2xFdUP6pay=S%aN0>n%1+kc*z2VZ=}8?6)vw{L<<=~shIVL&hH&pR#ze&6>3r66UZVc<4h;wKao|=X~(pY-(lPx@ILJ#>BQA zc!c{r;3Srf89x`Ri+aD=^?%!{3+^+ApGtJdxE`(E*;Z`z>3 zyWbLNu$AXN`Dm)RjMn#VrL^Vz_@}?7oB=iey`M=;3zK)7$t0Itxs_m0kiZxhp&{_D zw+V%9;ki#fk`R_L^1U@ogo9YMZZn-ZMC4xiyi*hM|DjhwzKt!LSJJXBw_TRBCyqPg zabO2i{lhOI?tfyoJM#atAO8qYoH&BQnssY&R?-<;O+l9zKIKFU6ntuy=YRKJ_Gdox zndY41zd!eR0>e8AtYeydLx5v5$SM0bF_ImFYR{q2BeU z`R_0MH)g%@C-~0i-%Bo@FMji((J6JnB)8 z?kA@+Y0Y@{!%nu**x}%jVY*sy$|)x?kq;%{Rh6r*yow0?Q4jh5?0*~1IR5zKX5~5` z|MO3?EX(D*)oa z@5jU@aW|=x&uNH8>{S-QOT=dh?Tj%Hv)QloIXVoJxJof>~rb z5u)YVWT8uRjyQ{z$b%-wSk#Fu1RB8n?i7>c3sPbsXT$vPn4rGf|Ypf zQW*p-@!8xXz6qgGg7#V=becHR-bd57aSF}uB(7+X$4G_ZT-tA<8AimR1c6RAfW(X` z5u8AYL+f>57Kj#b!Dz)U;(zv_!4_*RnH6c%@o zGdb(y2XllhXL~baTj4N)93e;`Ly-_rgUKTGoJa9!nEQEO&?(t2aOn61#gMYSXt8Ce zNij4CC>_@%Rx{TGTDqeo7<4B+u9EsJl2~ZlLuAFo1jVqht;pFt*gywcm^Y@h0e&;_v-cEJ1>YxU&L$o0>N)8By@mra1)>t zMD<7}5YlrX9wbDX2GLECS%(76OntZ09f{$PwY zJ{TUQE9s5w$QiKp`08L98u79NvaMvSq@@lQ1Nj`fL*?1+NWLD5Z6Fg2(xI?2xgx1T z)`U2~Y-~mS1k$L1IO}N;_s=9E4lJVh8kCs(h~|MVnIs*gAVMWgBoo>U65SxoPzRyc zPv2+eOb1{jX?!5yqhcmR8K7$wL36rR08?{w{xOm!3r3*FB8n+LnZ+$*Ug)Hj7j<-8 zM%0W*Ks7NV@0hOj7{fYil>8q1LhJP>B6v$I><|p6DQ(M~q4>VA{+zBo0VSf=P4_%x zmta|E>{4N5w24U0{f;{Zi^4nJ@eYeI@`g9;8L58Gna{R{FS!3PCm=B~3=G(^ zadVo74I2>^PCxw&0Jdz|-0yi(RW7^i*N6(smM&%boL+X-(P|#-U4=lE;YnhyX_{TnOqo`fbHY)FSe6O*IcNczWqkEJKcuZg zGhTm>nm1qvO|^N@ycP#fOmRXsh!f-bYJ%;Vu_M6ti4ONyY%kN1sp(^W10gJTwHp^!~Rq zsX5R5tG}U>4f4PfPsSmfbkd24D2o=(!>MEGqQx|Pm%=qrj4N-rl{`isc+8===$P!b zQO!B@pydS3c?{7y*#JMeecv+3)CUbw*xaN)1l+@t&a>1Uo{ zjt(}t0Sn_i>_Nu>kuRV3GklhD^(rs0mBWu!n+pQ=>1RFKoYmvUaUOQ^F#vq|>p#Q0 z*&DyJb~{WINGGBV$KdD)xi_Z9b|Bu^c=PRy$G}m~e*w#;COH2c?__>=?x$k?+8YJn zrceF5t!XJIz4FzJjVx!w36H>yM>d_el3_pd1Z34EciqE!)2BaSYg+KYb6&-ck>zYY z;s241Rjm8Qjm#?z*gC7%z2c!K+q&TffB62lv1Ksl*0rlpjLEIr5rd(H3sak9mRgvI zHYWv{*;@a-#_t=1crX|I z~A37%EqlL8KmTvUtLJ1!VwQViMBLA3&Jd{`yTS$JNzv>_#hC+nzd^{h3l`q7O}{i z-|-PLI=uM#e~9Vai*Ih&upu!-U;lEm5c$tfe-$5%CqCnq1cZP4>I<r^4~glD`Qb?~3(T>^8Ujc~?UkF`ML`!yru#v89kEafXEaL_@A?9#fh zzwz8hJ=BKUW1MjCL0Fb?zsEj-iDHoZo_G==%ed^ zi%T!P6z3dgpM5r}%HYT_hB7fZL5#-sty>`m&V0f%adi09zke{Hq4&`G`_cL5nixFc z$$vy-KDOuqR3Q@G6?^Q-&vqWTvxK~AqVTE;VlnkN_xjr{;w=(IFbfC<(TJMphp|o& zB8sS`{wOolVxpzn|6K%XdT)&p(3)x=W3@|luHTE~l1+<(Cggd|fJY*E1fr}Xi zsOc`L6hKc@Omx@2kKPMf_waz3CAWs@y~O*3IE9G1binUv3s@9X9Ae4-(R_td#rs6d zj=kPNi3E*={XoE76{)gx2co2f8hiH`$R(j)RaIe`GT~xhBVaaqoz!})i-0523{#12 z6{b)%V(g}Cu9Hi(Nt&9|VjLXyMBHnyB7lzQf>4E$sCy#d-WoW>VZfgAb5l#{TBKpA{V0k1k1JG(L$9kFvfPp*t9v92%k(++@8~068~0I z46IEi0#+fC5Rt6#Nf9W22>@)}x&>8b!^VxcX(AxY zmL=r>nrp7v`FRW+4s|d(Z;0rO7oPqCE49mKFZldkJq=&~tlqR9RH=x#nhL#N8>w@YYTSJDEttTfd81?o3r6SF4`Cpp+`4Kt zr5F*#p&W7WVTcd>$w%K|7LpdhKpFYyIe)kBProTK7@0=Sc*LowqdwNb!uj)d`PKys zhY>PPJpR4}b6k1tb(AzPDG=HJ0>GK`hi&=f1P@v;%!=^|9+VG|4+U;&ci7TUu9-CQ z$tnJ9$uh>Wj1R9}jpiB0m(ki;!Oc}?|93sp!~`I6`~!{$VEwxFsi^1b;*-RhiUyI0 zI7b9-yz$1=79lAyjFK2FW)Zs!f4o0<<6F>>O4??WCV zWw%QRfvHYOr(5#)74vOU9RGX!<~`nzQ;uI@86}F4Q8Ir}$YRd&W%Ch9qNJimjuE4< zcH=gJq{5Mj^6=y4nMot956$`cEc-wAVkh#s35z>;=t+mB{rj6gqf5cnt4o2MVt9ui zb_8)2d%<@i|GSO8IV-8aBZpONUsfj_u#8p`>^Kc2@(I_zc|O%w}j(g@FF%e8w}2$M^}XX`7pe69G*PTd{&1~JUoj`|AzyBmAXaj_Azcn$HjL5Y z^oRdFO@lAL?<8>BIQP64GRfim!P)<4Rah}=_u+k?OuhA&-|!l1$s})m!vk@;nfsh@ z0v*?6biu(4hQ*xmu-6gFj0-OdGrAAG-sk1Zmm7dYA=kitR*WK<^0s$=n96dly5<^U zH2(e5UqrfwFP^x;dHuM?U1f)?|_u%SQ0zJo=1BQ^gh%jVQ3GMrh|M{@-bb z*?@FeanLByD^GgtBj{R_|N8V-$Ta6iKlpLoi~mRyQP!-Ro%itt=O@4U(@#6rKzYl% zJ`4=7Y{?Q-9rrorXv~a54mkwxJsUUf8}slv|L>tTQg%3T#d2~nF23S&#)>8zm;8bW zDL^wsb|U|u|J>(IR50|Nig)e%ku;9C_$`P~nWnJ)Nix zHf`C0i154@y$mGsv5)_|iDax_yLxWUK@UB~@-WUJONR+k@V*cJ3uSEKMDa1O@lMv? z9WoPjio}rA=gq(etgcwcB=e1_BvijHX=R#Jh&7w;kD2;3D!^%ukBUmp|CQL;U%yjm z!#U|E|9AZU>BWs6dY_mN789D;d++XPA@)4GdoNyx5Nf0});&MH-V+hoBii53+j{=J z(P~Jy7I+LoRyo3cB&4Dlr9`}DR2t~!Irzw=XhPm&T?DXt-5^*@h^X6-!eawRWufmT zp(=?)QZpF@1%XNoQ%8uyR>3NgYD9znfm`oOcWCuz(5SCCn;3>G0*8q zcbPymELhUJh$-PqRrgqT_@^~4QuiRKCUHJU=)8c5pC%l5_cgyN>riDSQIfS0&S7Gd zOcAxJtwqc9S$dz@AXC>LL!A8wTdq_Aifh&vhIpXA&Y=@s zwugeH6O-6b#zr3~vy3gxCPXM*fiZWg#7!Beh#kxiQ_y6=WW|tpI%S6#jrJVBuN$_V z!a7)JQpB8j6D6eu7LOZV9pf&L4-|OKU=A26M~rV~w1UHS?7%aR$!H*s`BTP0V*wct zES{>^_`k5d1>$%kVxY*mB_Z*&CBcp^;45G)%Fei3K8>SZ}Iz|F!gixw(o# z8wc71MyV{vG*6$-fR-<0v>&_ao60Wn~; zC^)(^ciGoyc~8rCDS}5_a+&Em#l%7Fd^Wv6*<%9q+YVxKi7H|@X@$(zzMJPnUy@5z zufL2KA=56EDT)zm$E=-a-?>|V%{YeA#$*(4IWgAYuU+^-@fJTk`AVsi3XnV z;+>o%S#>q(T6mYp=U9y;vm@LSV<(7Rm@-3^C=_8&}SWUEFNPm%sdF z%d(84k3O0#%UG~5`R6WNG(rgRt|zhgWKE-5n5F*S+7V0IgrYo@jQbwB%m$KQc0cs$=`stptl4dGHDVR^EC$ zA=~$Z;0X_V2tHSSa>*sA!G-ac=~7*K$S=R>l0-q4l*9y#JivGV?X&y!)cx=?=hmvX zSeYp=eC~5lRkm#1TDu-35wu%ZCAIa(J@RxiafIMeCoEYoA5&r8==^k$`OsU5CA$N=JUCMMeW z2v=Tn3vC(Tn-}dL()7qhHS#|?%)+uu7E8K0TwP5uT*7@?4Gwh<9hhS4P>YXm+Cm!$ z4H$Mp6hp;vzsgxV%ebwa+Uw7eWy*H#^cU@A{HXQ`2LS~xo({NLA;vRb@hXO5n@|7CJIQ^bA^T`tebX%<4j%$R8$9T7 zPog7^fB)iF_P8ESJAQ>VnPh%TanfMC)5Q$Bm8WBH{ViKC^9&3-vRddgS4XHE&Sgw= zx_C)1$U=lxBLm5~&l0TCAy%!Qn3cD1&*wZ$tjBCezvuajyY$>|*+ao4*7mluJpRc? zgG9b~-bK^K-!^CCZ`zQM{70R7j1`t~_`#!eHRJquzKwN*^EmzWuV>3ZK}D=vALE=H zKpuVS5jMa$4}0L@IE1f$`yx8A$+c@ba!=46A9czR){=1^deY%!;_fj1ci;9g>$GxC zebZksRwY*4Y@R~SJoPAR+IAj(@?mtcjQ@D&+gUxjkf)vd-;~zi8&CgJWISNkUnR4d z{Lj_;?;-xzTyxDHk^jd%?r~;jY}v8}Gvm@rFWuwwykyA|1NIs5+uQj0uM?8?xCb9% zxr1d(M#x-?=fCpXG=R^1@WBk&DuR`Xg)~Pw*rOkMxHaP#4}Z{+5IsM+=n6_5J+z`QLxlh6LX8R*1HmJVHliZyz}8w4*Jz z9X$L&N1<{kFMQ>9u?&8B&C>ul<6&>W2ggO12AR#|zsCeP^T9`2j&j(F5e(%;fAlm; z8|0IpKbOiJHB5`BA#wKekJC>(%36$b>WM3eF5@%jT}W3)S-pD4Ju?4~dhn4ppyQl& z;-RPtU-{NAC}Y93t4e{AKX}%2%tZO(7r&Sad%CNw`^@+MBdy6er=EBiq7DA!IZvmw zVQyT#5yWxGK?mbw=p*O*9zNw$5{cqK9Zoa;>HQxPfcMwm^@T5d!9;}n-~axoDwqE{ zX`fwu(Iph2%heZOP=iOa6RTIR?ytYh9ETl}v;aQyi4RgS#Pj~-Wkk(;Pz*>9G@IQx z%ykq{E2n_{`USMw=m4@8vn`P9Y$N5u%~dr{vQT13)!Vdiy9ON$)#>Tdr2+ zl++L2L$|2CtN#y30Q6pfJ;Z&d|7sFE+*wW3yDkLuo-)%~h13!2wgBhcozUtcszNlY z83DESLJYfnuDe@CsR)o52}!K0rskRv&G7ppLzO#14CM7BhT3yn0yuGaZ)6Du-+48& zFyDP~F_&S|>o*p>8X}O9Q0YPh3l+``qSQ!vVjn~YRi*^M$H=~Dv6OBe5_eF!23QG} zq4>lAsPDCf0GcI*ZXKXYlTwGMZ2ytZh3yVY+r|o=Vkmgp1(Z&i6s7Hik>&tR3(T7U z?<>ZD?GA?2QCMWOgr=5M5zOm8t$%>bWr%6g`Vg1It7;|y5_?yV)as{El4FRsh}8Rl zqA5`ac2#E3yMF#OA;~5YRfiKWDoi6Wt1x!X*Er-r;Zrd~$85oigsW z03m{!VId|>fjhj81O&?Za|WrIC@vkY?=qa;!KtIy$A}1(CRKl@8Ko#0ffxdrb7WI7&l&_VV%A{N<@oH*nGlW+8oM}Yq=Qp5 zOcWmt!4b{SydYqNy0{rFL!A*dONVW0EtF`erTr{3@L~3Pz@2p|YziO8$?4GRdGlIO z$tbYtuJFS-7#{*nqGnV&%3L!K`Ur_`M`IhY`D9+0->&d@7EXp5^$E=DMDpmF)stTj zd9pSQ>map2aO> zOr}?4P)6Hf8>9Pk?swlk~9_6Dc+4T zVNELSFkuH{3Kl$FTTaF0H4;C&(eM)#+J)$eT2M&~KTUICuA?bkvN%;ge+4Cuz|Qqw zx@C03dKy*`LoM1ni|6p%wvojNkVt8ROvWtTi*f}jhOZQF%b6<%MAJf4= z8HS$&CPty-WN~tr^@k~$Dpd^qqwZX-zlKgxNC!jl(xf8=r8U@F&5Qn>{PL$hW(C%_ zHn{etn^6nga^p=Y*@-FPayTqTsFB}JyNksVu|!>8w|X5u)*@;l@Xj~Corv<`PkrWI zo&KMD?zv`W9CutoI2SHlh^Vn(-cX`A#|o#i>*3LK*M~`_FUb036BSIDKW{Mr*Ie^; zMC6Wc0M_eQN#b@Vo_HbvSN{5P)H#0q!ylm{-1nGc>eQ>(PmshYuDt3hoKqGoNaHM9 zy0lhl_o)Xx8cvd3UD$^M@SFebV^%si^^^zWEV5$364WWTZCD4I^DpmxKPJj4|L>t# zk0M_8g^LKMJ>n6TmytKV_|Nxi{>@UVy=BLCGF9fch5=*y_8p+Y$@f1VCqndPUGy+8 zW8uODM1h-cxeZgt)tCO7Mu1=Z`7A_pdutfJa zVe8g0Dk(VkTR)=G5zf2ly8XJ|N6#O!Mcpp*x`D;O$;BYe*x~Z3%Ve(Hu+38f-f08y}D~ja1loguzAxMRDs1y z7D9|{+q@l%!qrz^gGuDtTW-RrSh8dhLacQTlI4m;;poHei;%1!qk2}aylt-vLMG{% ziY{PctX;nWfTfETqfS}2bSb8qMD0x3xNZZAqrD>?!iVO~$7#m(*W5^E%E0`g)FZK% zYkuvj)kNVA$bYBPG0QR@^_a(ES(b#pL~wP|ZxRuUTzktc<}9+}po7y3dLSYFz2CQX z)oR=2@T@rm!%0r18LxiVzmOAn&#PWeD|T5pe?AV!RHs9Sip7hT)5se9^=n=YG4j6m zy$^}TYhU#m8exjRyZ&aHp+X{5F6UKmeg_>bIQ;PY5P@4)uOzDSna_OgPLt!Pk@cIm zrTsz*f<>CmfmFqIN-)nTcnXBPG_RPnbT8CR;gQW2*in`~2%Uz7WU{(qcXP$Db z6^wD}iHBlleB(P8)3FxUuIUP_=i6`on6)KG)F^_dT6vAEpKauUHuqV+fDq^Lm2Y1} zn~ba1A@@Y`v-|j8`|c&Qt>Ef40t4ewrygSs*}+3jIvk0CbH9Bt z9qY~idOrN*KT9$|w_Q7{$p4( z^XF9BeE&*hHj~iPPdmyQHo;+whfz1m4}N+DK5OxlUysXd zEA8L;`k&-J%N7vg0>1jKi|NLKYgUI{)_)Z}D0E{*rdcA*%>okMTmPq>a2V=@FP(QG z!8N${_T)Zv)+1hGF$8{cMU=Tn{?B;uF;?h~wEqz}@4LUEV@L9Dub_Kfk*#39;vQc6f=4;=$h_>Zix5i`_ ztHByPB!=1&Py700v$Ovlidf*hZ~vS!7F@HY6zFouAqShW{|un#KJru>ttNQjii602 z3x9nTlf?j^zv|{a{=N$@yf9e-n$R-Omp}GFT6ngNk5M}1>z7_XtMmWpQ;x9)+c@=s zho|fBt-sYBfes)3*N;zgMpV|XpS$%JWrRyW zDWZfJP#n<&r+Hr)^G>T_dBhX&QYFSn5AoNXeJ(u}{M|A(%#18^wIe{BRuNM~l1N66 z!LhFhSm_dN$XTTDfrbULXyo1#RmmfSx(D35o-9PVcP>g&ai2lus~Lq*SzUOl{naJ0 zNrZ&vI5A?JUTM^RQ6*UNvzKVhKn$Kh(XXlkH47#=tC-YlMU@~KmFz##FkE^@%8Ee` z4XE{1b49bf?D~e}3cN0m>vEDsF(t$(N%^LY!twR>uIGIGH zB*vJo+Xg75wHL^z5@I#0;|Iwo_j3FQvm!!RNE;{JdM!2R#s*$n^l10<$CsE|)oMYm*=T|-WRl!EX}{A39V=?) zM=CxYG?i}tnpwW?-PfN9R9euEEjkq39rGf_c$et?bi1zUxgx ze24-udemiebpI#&%!5(~>FT_ic`T4nF zJFdUp^~)UT-u2dBlo6_W{Z;$1{<2+=AAv`lb!Iw*|L6y(!L`?1L$t{K?sp6-MyE4@ zN{(tP9bh|Cs02c&5+YWsgWqu7H6W4G&wMx*9gjKlQPw+127#wN|0VaTvcQv{{A2-m z``h1cBEs2cpIskh6?HH&TA;31J)0)#u*-p>PX2>2FK)kVe%NUR}7$PAZuq<-up@*j@KvI(b&F`I$IAz}aQJfeH=C_h?3)9*Mk@rw*il*7V=n{K()#Nfyyk4Wmpha9}i z_ussA6T>0$fP>Ez@t|zuu2PlwsQS0*AW9a zBKJS$2t)&GHg6@6v3b*uB<@qUH^p8ttS+=zUsz2MB1;y`$7$jkRhF@C>m=P7h$)`= z*fUK+m+r(mun7)XG77Y~_=@WZGQ@Rj+QME)&28DXeZMG)cQ*bdmtT*U7T4_M_}jLQ z&4?0t#wkZyZf%w?83Ji>-ghsi3OU!Tsdho0)~vsNZq)uyJ<D5%yL!Rzlb7A}TyI%j7U3Qu5ymdR<0iONrX9Mv5_rHJl?*n%B{QrOU z-aE{)qqzJ3RQEaOhDn=urQKDQKshJCC`-s-FvfsHv=Igq{4=~xnBa&F#*t_PFJKf9 zQ6P{6A_y=j=ePW@m1n?ygf^UG=SR z&6_um5CTs;@dP0R`uqE*w3XnQryQ(F7-8|k$aepYYi=S)r{;O%=+FJn-A_)7{-1N& z^EC4Vyx@d`K?`oU@lKrWi@T{xe2cw z`?FR5e}3;%)3W|!?Vp$~uKvO86hU}srH(^BtX;Eldf3)aJXEWu!KueCMUsrmuKERS zJBt;o`z5AiW^Vs2hO4f-jTTiN+`;?bX%oJ9@!|-P2mB-g(A)0+)z{xnu7(F!gmIbY z)vG6&@zxmFTi4$}tidCg?Lhxu`@)m777Etfc_WFjeDBViu_zzo0OCu76usRFm>DW%0ypGa4Dz@f~(W58e~3!HQsv zq3zpf*?&E;S*#g0kulsDOMyhza5bp+q*i#YlL2)4JjO`3iM3O*6ZmSRryo^ZBjCM` zX3jdy{u3HoJ?iZ!%YP?|-Z_l7W&gJ}{=c=!R)=TIP}aoEsA|dnI>BswQvwbh&HSgq zVS-{2f(V5~F4+#XRP4zvB*tRYQ4K=kJ*o4t$GP}2BD{wYH!S%mH-Z5#h$*`)h~grJ zdfAJdlKnNVN1~Rr5K=e!JY*F+BO?ZRa|0u(0c$AQZd8xV1TtSSqZQv#wT^a@lOlKlYtx8) zkWls(jq71VMr+M{IsYOnVqKV&tuk%Q%l0F!k@#I_10qUB@y0OrRg0N3Kbj5OafS|pMwChbn(E26 z$+?W}SDTxRVQtY$5`qt8J|~b-n1lv(M$#_8ME>^R$wE%%4VlF5yD=E4<$)PLFTTGi zLLgB`iYIYRQgvhkc#jp0odC9-zp3DSPB1A(9cUXvL1F@EtAw4u&#-f5k&j3#LRbLs_agmXTJyikaskGQ!99?><;0bpM(RR zNdqf6SS65>YlgFRX2SUdsM5r^Ce~PTVz+}9HD==SzoYTJT>ke&{}YK>|01p8O4m>(k)#-_ z|3Rt*Q=`zCTmSL)uR^ZXGV?k^$RpdrXbVX)+SJHxZ<+a@dHY+C5^)f<9lrl#?+;Uf z#(AdwtCsd}YB_J(HldML8BFWZr!pzVKht07DO%J*fh~C+thKaN@YXUc$@J(SIck(Z zMw=@B+0s9);Y@F7|MyJ)Mpx*uN0$SEm;LS{g20Q%oN!V~zj1b?X4b=Kd|HDhn6R8x0_!uzvme(Q<%J-}Vp;A?(}`{Ph<< zrERO6cG_uJ?>S)Zd@@xCKEiud@S@!E(0zC@{pZXhaf%?I zfj7SF6?lY){@`{sUiju0FWbFnK<+VB!;{OOLPVHzCIP+z{ zNiddU&p$`4!d*Z5$+*wG^Cv$OfPq#^g9Ofh>4oFS1lO)wJ?{P6Fc522!>YAfSI65g z{%wLu`NWmq!PyG`=VPCut7!4BfAVe&j`zRw?KF}qmtXTkoJmRu8f@4UvtRoyU5Yh^ zC!TnMjKIJC)%!}4uz)v)fo2;ghBaFTw%ZQ$)(2Jzz)-8HRVg^`n8hTTvv_{IJee^; zJg2TCYqa3Y7NthRUDSsW;nq7Ip^yp>uiSaf zLrB0ZFfIJTT>ocQOMZR zr0J5gPd->PX|ikz9|Dw^UE$cpnGJV&phQ|t;ztW9e)Tw zta+s}%Cu)`1$hKGji>R=dhsD}+g%UR4iz3- z(Vh|H$yui!wzcM;8b81B4%*cC#r?zMYp$PT`X8LbTA1B8e-w$Kdk_TMzW&#E@adUB z{yf9}-Ls6gPF(*dJ^qP@YTdTjXF(k&H7@>k@I0E!KbnV!l8#A zig$jrgWFW?f8<=4`t|?ax4#?X9mZO!&avh{Ka724P#sOQE$;5_lHe}E9fG?B2<{Tx z5AIHaySux)1b4R(AhC=m!rQ83NO=r|J{K)(un~rq2*1cvp2i z>`>z6FT#ziB!sZ9v0!Mr2`_Byvh6eqkp$D=v?p;kB{9>b(Cj8xeD8ty z{B)DQ!kK&;V;&saEs~x7^dNv8%gq@|8n-Vkm(1Xa@<%z1j8oJzUT|ANr z#lVPdBF`1%(JeB@vgy0T*FI!D=ijP(27Yx_>rKx>V_00O@>_?y`3>m*tZ7)bqs#E{ zY&fDUGO+9?k#V8}P!hF6sp;>4=-atuD%M3*Lo$!2l>v@99iS7c;sD~uZ~lQ-N~ z(5i?T_Wg$fuR|U!n|6U=Ewx35$3Wanxz*o;SBAMl-E%rr!MYU*AL1o{Qxa`J^Csr>d1$#=O)(no(&A(M?Q`x0SnCGb zJ^f9!5}ZdeJH7p;J52SNmaZ&T5_hvLJvpgSXrkC!3LIMbM>6Kk#~YKa1TRY|9yCXF zXFdMpZ1vR7h91}EqA{GwmbGa_qbi%X^^{mE4CVQgQ7Qla9l}~=1^#SfnrV@&C9eq2 z@x}i7KucsI75&`s4b7)ic1k5+2dMY1nS@g!+lc#jROw$nf9hJlx+2!dcNbxAFnNWt z;NMp{+LW6ouf9;NFbH+a8mpMhf5O!J#HLmDMwBvKDjTa=JyG-y4g$GAdc$!zrVSe~ zCH4<2pTG0mRLfDuPM^;GI9)y?%^@-O-cU42;6z@fqh|~nC4zvZjSO#)pBZNVINKS4 zx92+GdaD>|S=ad`2I^yVfn9TH*8l;+_J@hX)~Pp;Nh$LtlwWMRltqR{(Cc?1rx_}X zU*OCUbEX*d3w&HZ6!7Sl7B_&i4`b9F&ufIE_s9c2>4(X69u*?qn7tey?MaWiERdQ+ zl4OWkv+0-xw38expjTss^PazR8h4z) z;h^;f>{RISp`-o5(y7sxL5fM8Y^D9UZ~sWp@yIy2Y{xRqpjRZMI@@UZLFJ0Ij};D^ z#xjWqQ8?g3 zL_$Kxp8(ePyzF>AqmXpc6>UxPELEVd{PUy0P|ag~1({kPf@Ih-yHh^!6N&m)9U6^- zMNL|Cef_Mach@P^Ko%%x-zh_UTv$Vbqp5r_Sy2OcaWrb^_mOJlCl;eFu^7|Q7<@Q; z!S|tbnxgGMDGM+qF|m66@7I1{)1@n}!&PE{VQt+KNpQQ-1In_M|Jm>APjm-!;LF1b zCe`|H@hCN0E!fWc@y|G!4+$Pk_S}DBcwpXy%TZcF^w^7; zt<$o3M-LhOU#<^d+P7V|I&Q(2%5taQtv`Hai@X0TzyW^-HyvdKPCH8V%wLaN`BN1M zr>s8RdyZ8i+8ad(K4z5CnY|u+IhQ)NH<632jhl3XIH6x2s`m&kHx4l`boj%#RYde~ z9UHs@YhFLDJlc~Jn}E-%?;lAX*1A( zYe-c?wnSmn%A0H~`^Q4hE%swZ@=g~hxn4Z(=O^eyqEJkX));>1{#3Lm^rKO>#ttkO z+nVY*M>=fxG8V)IJs)0KZ@!i`jtmmn82LUueq@w~E#aqz(QnsO@_~h$ z5{Mw1a)FGKuUZV(e!ANJkG8Ld`~`NmtFns&3RV*=w4WT4oKPk|DG}y5Eqf>3iR`Jw z*%lhAIJ<>OAr@$em)bpf`|~7R(+y^m7@xzDIyPvIIv^gk4zQM2ul$*ZmNzQU;r7!a z(rRW^S~s}QRt#@*=hk#s!gn!>OG`}sA&CZnSQ~Cw+>t~mN@@%G@Xs!j%wE?RcXxBL)A#$_9 zR7U-tPy9u$USiy$OYhg(W*awcf$~}NXc)25lH%GZ#c1@OJ9*)d|1xCq0ngX-zj32n znw2GqE!6^wncK`pUC|O!c+%x4yUKf9WEh=Ss_+|UGML5;D181FB1Q6Pq`=Ec0sdk~ z7M}fqpC|nGzEh7a{P8z}^vB?h2^jdxB(yBZ@F?IKTsy^3ueC8*Yymup^E$imXv;A$X7|GnMmW?tgFlXVy2fb@x!Zv=Fj z+us<|o?uVW;aNWCwKWGAbU{(X5Ka1yu3Bpni{9XWXizi6&-P9d9rCl+qP~mf3766` zOShl*u=HI1HHGe`;Tg!HF=YvIMety)SFbd1Ur`9-qFQyf+8sa zN-IbwpeIG>4&b=h-s!yqMN|W2zi+5c?xAD7AMaqve?`t_i=;A<>*l3^V=|ZZhUw2S*@X@cP`Gp>Gl@W3b!-8SgL5=nT!y!Ww3TfSudnR*m>0R zunbhAMGJg4)*-xqS*sUqH1u^ju8gc)G5wkIjir4T$dM37DB7Ds#rw2#ExtUm>Kdpt z@Qhn8CVO(CdY4^JNzlpD=Z0txBm-Uk-k}sj54~uvKrD=O{^rJgsor+)u@rdK`_du+ zN(u1g+??XC>&y&^L)5)8&OZ?O)dAAv2Ss?`njeXsFAwv47UX6TWEZ%iN*d5!+m%zgJ~!QP$4Kr2gkrZ3nAGbG%`|XYSXhPJ9RJi2M|6&iTI!UaaV)QALqUj zigiA+2@{L;1Ej5BofZ7Kzq`Fz>`DT=D&i#Sct~ouP(gng;ck4A;StY4z z_JYaj2HXO`&b^nbmx18H_v><?2T5u2U+c@`;?1g= zWK(RX)o|rDXb{YD&uW8mer^#Mm(*l8Ok}0E5B46 zYX%7c5%{w>Xr!Hm4_BSL&-nTa|26&GiIGR32Q0)Q0Qxm3F&l#fD6D$p8R4rX(m$~=Fs3?GFUGpRNkNM5g9t-dJ6tjOE^ z?8;9%!Q!!2_u~zYlVO#bvZC{}`F2cQqWlfUa1kZi!h*@Y)pJiS`VfOL*X98qj@C|qjV zzX^+>H~xO$#VKI9pMc0z(RjanJ?&}*e9{KwHq8k5hUp`paZ-@W@9ldHQoVo4o@g5` zZ0*ofKHj7=<^I)_t^dhzVJ-|bGnXHJ?}hMiO`JC=wCmo8671Fcj;ZFF=Y63r&9VmG zw?^W`b&NadaRb1f@`NmfQ378GE0|79Tx6%=dM~a z|K!A~Rt@fi$BDQtiNQvb&J^!B%HO_L;X}F3$VC%5exiPbGZ2kr`sTLh;rH;39dLi% zLZ7Fm{JBRej<|Qbl%fti8__Eu&@~f$Z{nV! zGYnP#1*{d<=6!bh%UhuXTxeoib2r=mO`7R<41P6|#^Kf;_%lreEyhMZ&#f>x>I6H* zi48dR_;;~+>l>6%%CK^gtxIx)rkR8a+#c#I9gEv&%f;M(NTX&tCt%P43bOf2g%ZA= zhlTQf&{a)NJSE{Ua$T%WT%nnigM}jhi#*T zz_M#?(i7|!cn$;Q1U{I1`qxSDY_VCIaKdgZ&(vVHBO4-a;>Eu^5Hn*))F_!C!|AY_ z0ydzoY5UczBJ?euPo6F%zfP|io1HjOlsp+y=6tJU@sgyZJ04fJ;P-L+y~1YgMMkGo zh2pAw`+SdpXmn{_JAb|GMXuh<*Up98F>q08Y}|Q5%#?AqGScAMjKd!vopu8^yw>%q ziDxxbpqWqT{qO} zY#sPJD4^Lbe-HQ->11MZH|o%jag>)BpWB}}*D!V4?dji<=CLO`_{M~}*T<}eeEV%}eSAJh7Y;VxGVfwGaxmRKwHQhsgC*JtZU_tF(4d-#G= zCG7wHmOBghc(dQoX<6={C?GR((_V$dj9cn9LSDlup!XDxd1}J(Pc=)oA1nir zcGI|ay6tZ+d_Uz`Z=T=6olw=(w>aG0=gMney;Ho0iyep5$AX#EBvLQKQ8(1&$N&AC zB$AWlTYA)ZRH;!=Mhy#nY*XLrj1U_bfg&YCYYp4Vh^NIdHir2)9}6 z76^E0d&J!Z49bvWDH`HxEvESM2kuJmfqxucn*q!1Kth{f%XZ~Ukg7i<9{l`qZ|~vM z$4L_z)uuXiXI~wx1pHL_+-1P--1&!Ob=6B4EWi3~c2w8r?<_iZ89=t(4Yb|Y=XSVL z3gi~3@wUKxbnZTMb_0pf;*l!FtOOw=H-=`*D3Neyr^qsFVD(dO449jECrW>^;V9vg z_>5VbgcBIg4cx*d`l##~%am18$%c)cki)*{2_bzQP zisDl@PfiIA;0o|+|K*wWCzm=S1=^VQIxMD;!)kNYP?^*urPh6(T=wuSOye3w2#9_5 zwOjVj;*W?vTqq8w<4KvNMFOG{xbRPX4xNNwFgmV$P@KYSB4H6$U`B!yBTcbcXqf~i zi;UWy*7iE=dR}bQTBNrHluwtpiNmnWh!fBa7ZC0ZR5{lY)mC5_10KrLJWinp4!e2% zYfci4(8!Y2X-86dzR+$;gnmAQNn3|!Fr#KdE5(;L*F{+D08_}Y*ihfD6XF)C;}Y$4 z>vh*zqUt2y=7kb@`Vzz=$O%P>gy;T(+i)CX_vG!n@b_npHWdP2!Pzl(fdW$w{l29C ztG(YNcAd*6*Qc7c?}#9ZU>#Zn;ky;}VSex9BS6*#$B`p~N$& zi?THSWL_N_uTqm8mxd%y+6MBo{#@)yO zt2bu~fah`bRbjIu!_%AnJB{F6zVIziL0s%*y1#=7XC6~laNWRL<=5Wt7oSu!2WKll zqgOs#IsM&9jZf^ym`~rpW?mHuy)50nj&7h!mlIGwf4^}&fyet2zq&XCj`QU<*(aKE<7muE6`2bn2(eS#n7=wg{E9vkI( zHdbF|`>8Ay2Y$uhMkRK-*?m>xdu$J6eLlPa`Y!*RXc8Z4Dkl}n9S8Khx#a2!PcqL5 zhAg+guJTh_G%NV5fiH-0tVC`2j$u{=3)%<`Y+*tPayDjdHPUF~-@6Vw;S?>D*B@VU z6X!VrUM28oL^qxx<%U5S^Vnnj$7ID~1;1uRN)LZ3jlSe!J`|g%UVeBW9y$qu*p9`j zbHM9~rx)P$TPZI(T5PFXzd!GU0hpL@G?kyj%$DeoS-*PHrl`20!IxWDS*8aJJ zK>n?NCXM%x`P^2JeBt9)Q~zG9gnUIk7uLr_Ptnfvo%}#oeZc&mpm_4VL`p#9sGc!S zh!>oKtZCvQZ7ja4q&{Y^2b-uC7L4%_MLX0Mv!7+rVm7KH>0Yxtiaq(SFi9>lV%aa( zv#V>RtUK}(H)Ggi59E&7UvyISink}XLF~SmIWyS2c$rcG!C$-NT7h8FQClj~nU{=- z1rC|T*{YV1SaCop-Mf;vReV1*ZlL4ZyrS$p9B*CD-YjyYuOV=n$v}(z??cl@NsV$k zjOxY0i{aNbVI1L*hz6+>2I#JU79kCa`C$jC0Gl!6A&Y4b-;hK5f~ApR4F+tjug39< z&9_4LA4(gQ*3)45zqcEC4_=#PX@|I;B7F|m#adtMA~^FlD%==^rXwyUKfJzxJXzlB zj>Q6rg=)PoZ5SN=WxcDd`Pi1GG6c`sC_f8Lha{Q+VA&kpV)tg1c^nQ^eq%V*9zA>V zfy#auzdwmuWY+^doqn4?`#dxc{TtTL-uIfPw)T5lv*ojlo*bUt`K%-l7E)rQP z^w+BW(ZKvYli>9d^>?EXRLJ?I_zTF&?2AiW<}%pvWN!H%V4Y#$K8|&L6_k;iAa-=W z_w?zaAtw^~s$X`*8AmWtaffA1+G`vX?+0x?3!3!YHEf2cWK}i*4j)X$))~o#Ku;(A zuf%<>>ptJjtJ0R*g4f2k&t#(Qfv1|668Z~En3 z`~siQO_`;ac#mt`3GcmAT>R>7g5+@1OX*eo-(*K?>TT;ANuzOB;;Z9%R-k9Ck&E6F zNFD=l@G$dT98 z3@vi+!hYs1blc4iN4p{c1Qz{-ITf`y7~eF9??|1qR|E9?H*d4be_RV$xZzXk{kRwL zdj^B4eL%tY%Zo8UU;3aD0cZWE<$YrjZ;VMp@cy$_XoLSNiewO})5~qx(@6*_8_{^O z8}M=MdS~r&!f($zM8`IXNQ&G2o;`g>wD$ZVZ!NzjlX&whPGn(0HlY7uwfFs=WdcH; ztSuhVq4`fDm}}>717g+-Tu2OT@d7{pZf0QScU)FEmkScQ>JZvwL`J&VIx%U`6$2Cg z4kt9O7$cI5svQJC{2-KU@}FIyl#-X-krYvj5%}wp#~$QIpHrhq>2Z0X(OP>+Z&@a* z>hMe&sR(ROmPB{ou25vG+Me*!#Cb9O`2T=8Crgy894%T%#S?gc^`hRB;V$seAkYSu z2c$m#&Qr*$8(gF`)X5ZF0`JmSPfSCt*8&g1^&xla zxy@}=FXXKk^`T#D%oyY)=P3krlak&eEi^`878`dt`P>f%TCYrX-VC8?^R@{iQM+9C zK0~;oz_&-uw{PWSjrk0w+=M+ZpO!IArI8n9k`Q^VpMKIpCx|%|t}2DPnYhDcP7;&Z z6^?1VkXhSB`54^K5AP(_WTZWcz21zXT(19?GLMa?LTI@NuA`_=>nsH_A=c=Fj(FA#Nxw&o6L9#W7>XTmI=N-rnY{ zU^IAUc;&D24A@&r)Xk@pSF0Hsczc9Qo7?E4rMqt?oqu|(92ml2Oxc{h4;jlXb7(Pg zN~7_-@zD|jPTWmHOi%mV)KGdPlb9O5^~%pXBh+^Cuq@rC zzT5?j?1huJ)IBjH+~$zPz%x~9 z;<$h;e@Y3lGHRA%6ZTvKp%-xPDPC>Hua6}F5S|X`u-OqY0wtOhCWzHnBg%4Q(kCo} z)bQMQOII5qA?tTYZ2AzO7P=(9^>BO3F4ip{_T2YsQOgxJn4)>G>PJytYqagVclJ4; z4q{wl2>o9lM%-KR7}2cY37PVe`)_RSlRUq=2nd@f5r8)EpN^P%xlq_Z_wFNG>#7PV z&i=>!9Hq<`hq;YwIKq5KI!SAjn)s)KzW1wPqT#cZ?shQXZc(%KPo&^SMzOi!QNkQH z-imk%9oEkt&Jc(oXR7MFeAUPJvs3=U>)i5dKdpZ2k77GBq$+RiI9?kp6@gO=sH>hs zl@XM^*IUdL@1r9^C03mMjXZEOy|e$qB#Gp{_BDt$OXHxUST(9`KtM|ba|eu7bh8=D zo|X3Ky)k862E`6|osxrvu8L{Z>3!~gz=ix5R5V29H-Yb&ajrKfBggJ<Y z&&>R$+?g2WQV_KOGvUkc4P(@U%ELK0S}YRq?8v(%6}~vqDTm-`iq2+Tg%x%GJ~jv+vdH3)i$?%ybXqJ@UxJ2t&S}b)ta^A*VUtmc!hbd}NL`;bm(Et|*t9g8Y+!yeb z#YoxqY&vvAg7`2I_>anPQd#1{pDYam6f;>@!qCadpV;D~|N zA9_Ms?=WdrV^|$Iwd;QQ}$#&4|N7hzd&HbYsLOBzsQtQrje%`iS7a@+6r2i7H ziBVv-mE-zB4FU0v6&|%R*Op+jZd11?vzCW*yhk+f`!n54{OJ^IxP=!bLrv+}k<2&- zrHOn;ag<~m`Zd^*o4e2SuJyYtOk$FLoIaQFbN~3jezy+~oDCejSMZ>NAf}cx5!5{o zH2gc&@J7O|Z2*nA#)k)7cMq?j(fkiazBT4;ziU`3$$&uq&EJDq=(l)NRb0)WQQdxh z1$f~k`ka@(=LTv;??J!4(e1KBxxw?kc+)3^?B&h)4v^^Koya#ZP*qG@*AtZx@J9Ks zp3cGFj(3F$&0#|cN1P`sfqg?}Az+t)Ijmnf#b@%(V;;ix;7 zE&9sIw~C`xfb+B5sXtPNHt$^Y?nmxU1gokDC;i-y*I$5=e;kB8e}CCvy}k2?2(W>_ zs;!9bzPy1mmIdmCU%p?u3PQ~2ig&b=3{4LL-IDj^N6mQlrJ!-<3y5Il!~n>4T{ps| z@H;Gi{;u*t_j?~!j!1Cv68-duax% zLu1=uNm#lpPE|K?rK zeajMpDcozdqynhdya(?-_Ynr+GwVRzoT>syg1F~|af2Su*Q%pj){MMn{(S_tcA41A zWGj1ta_mHdzKXN<{Cl{!DGAtq8DzIn#GMs9O|lKB6AQdQ&D#9s|FCoo-<%*9_@TV) zOOWp(Y)2Ms#w-j#DNWVyzpV4JOA$XPWV$)+7a}l6@By3jV>7;+J!ohX{FrOP7jR~T z_?0{;GgdWZB?i8+4>*|F*wET8n5`IjX+8={z_4aFT;DS8dx+}v*Mz-pgKtQBRIM*Q z0v`$T7DQd;Xt3X^zIA0( z91S@|z=Jx}YONvv)yeT(eqw8ySKocE<`#e%V4 ztJ^ts`?#G_Szr?zXq2OfK^DXmd7&Z^*G7`{wp(EeiMCE|CAco635Kj+xFo_cjiWHK zL`8pGk}rMPI~4_cy-PB2!uqf9_aRGglzi9RltES4--pFq&#K9cc?BFL9)7TITY+>7 zzRtzX0m}X=vkU7x28AXFW@4KQUQ`_ZD5{7aOpm1SMS3*lxd*p0_ZLCc_r7>&Hc=27 zdmnU6gR8Wwi@-ZOA|x3(@>t)8po1KXYlLF{#fR@O{;B*5JB+1}fzLj=#IpPTW8rO< z+Y=+)hJ}F=TG28|DUve~jybp>hLhNgizkRP~hoq-Y?ok#;m3qDTT+#v<2Uptg>Xh>V6h*cwElBZM!>IYq6wE5e!*b-~W7ozcW z&sQ7)t}JhbMs=L^Wx&Q6`46ps_0O(2`hx;Sm#b%mk5zB$!C#u8U{J^f@RPV ziSFRu&eL>6EY;8z{ZnJmlEWARan31kijRk|)G_$nxzwnr_v1|I6p(amv{?+leYcG| zBz2sY5A+OB{WYK4RG8OLN&`owIlNg1XOCu))*}*rU5X(qbZA%MSuDX}MT8WkBznlp z?95qB4mnMN(_%s^gE!h;YQm_8W=G&fC`L#QLQu6Ev`zi_^i#=A4~@1A&fi9YLy%3N zM&TDp0q8c(bS{1d;#bCPt-q8x*L*{*vCqe6mW~HPxzP3CY3|Gh?!;xuohul~HYd%MYgc27TC5X|UI5(lRRxh}t zGNH%K4YsN2!!mq_k5jqrtT2Q~Rw+|?DXEf+Xxe5*}K4<;n*mCtxAZoUo#7{To(QZR@$?BN! z+1_WDo9;111w}($cf!Y|NAad+sQmBGu>^n z$LHT(;BepS1}9W?XeFNm7$#&!@T;G`H7o>Bv`WKp{J!@dI4e4Xpljr3f7+swc;U7A zxvOgG?oAcMO?rl`T4#_D#lgW5qRzhY(HP zuevSIJ*=yn#g>}PW*B_8hCd#f<~YlHgO^b%tX*7^JSNGEUz4Y7%1>M3!MpqrG(w-; z9(4JI;&qb0qDunjv)W@#$GKGmuuu3yEmigw&N<*!9rFF)K3_ZTy>`(CtL>BClk2*r zuHZyaZ6Qsz&oFbI+^ld{U`vi{W0bRrAL2~INpLct`_I+g2hbXQaewul?*N~Pn#R!~ zXnCODe?8@lVfW!q>hlmySKtfXaG*(D*A-txtEl7qT^@g4k$zJQWUDEXOR&dm;u)1Gh%1*J{P9<7N=bJZW?P-XBoo%LU<{ zFRz9<$5Qpa@YZXavqJ3YA?E3rz!k)be^h(@cli?JCY^7dB%9sihaO3Y5dXeDm~8+U zxS;aW{W^DQbgl2LmGcnu9>@&-rA21af1EBL6z~ps>O83;Iv8IAW2sTRuFzI6ov+qN zNDCasaeJNLr`79ArBfbHm?x4Pb=YLZVS>M(kg=;=FH&rN9Cuoq)*b<6TTI_yUU)T! zCx4t;UTf24E8s}od`<^GuL!KojMf7Yd-$hwn<>}%M0(vC+6GJ0t0m{c=D^XvxAyM3 z&(L~+BGl2-uq6%Cbs|Nk_$U}kHq3PLr9OX8 zjQ+46B*SQ5@7&Z;9_guZFp`>3n(T=y$ui^fuMZKbqhk8Q949WX5pjZjL&gr{qI%%Mwi!U=O zu?DM0HEEO7GT<0_Gm7GtxoHy`$7DQMV7@c^EVi{8`jI`NQxqyQIL5Wf#}y31PJFWZ-aI!8Nn0wbw;0tU(}*`n^Meq7#jsC24lu_OjF}u7SOX6`O@|!#^E$s1XY+z z{z?dF+-A)FCOGCqKE==Rduyi=9Gwbpd$3<9TTVDB| zqJA0>NhX+=93h2j0-?IUiRgK!p(Qp{PBqatJ6u$W_hySr0@5ToA^fn-Jd{3WQz=$+ zj(B|>LjfkyB*wIDh7K+9w!2Rk3-9bw6@2E)VkLMogd|1L2FD^&CsI;^cQ1U zYjorCvEN{6=2f!(@|C7pKOBEHqMg^a;9>Td&q41jwS-r8sJUszSCgBELDF+oipo@Q ze|~fs5f^IoCNm?Kb&a#dnuZFY6-X+u;$gsv`ArdMNRV^5uP+%JL6CoN~n0S{# z;LMxLopAhW-P4L3r`8b`ZZ56FJ4rm*BlVpjF9%B_qPEc1S3-oZrQFf~w$^6&f+NE; zUqStu}ceDDUTB;_}X zH*x#^1IZdAOSy1TtTm+*&-A<$)(8t0+|hLs!!Uk*T-bfA#2y8VNx_ODI^Pd`H!|qqLPK|AJ@-r;6Vyso8~8 zhPuwBAf_vO&|78RnO>CJ@|S8qB-+KNa$yz5Sz|M6kY~lZ8b>hLOwaqFu0Y~>;sb&6 zaH2H4gsy#O)aTcO=`a>6r&cc`vuuN=4LF`yqBXt|ABo`F59<=XN-r9jlafW&Din$D zN4Ez^Rf~%|j4BG6o;qsKjtZ4E;^<{bo4xF3nDaWVFExyk=-?+Il6 z#3mUAen%Uw4Z<$XvqXZ2Hw;vn!Az8+z|@=RIeg_2~# z?6fPGauCf9P|#gN8wch;b0j@99IO-4(h5%XgQ1#*#lb&k{U9r-fB&tZKrdnqmCQ$z zE6g09;%9(J!F~E}HU@+88f6MJx}#UWk4${(QKWL7Q}!e(IK7@kk$8WiR1u&jBmHJT z);XI#H4LG16TB@!9gMqq1~yY2SS0N1zmELm>-cF>U zPb2fD#Z3?K{iNXX-9$!o&QR869-mfR-zN9Adqm*jtTE`t4zZs6^ZH5fjNI%XiuQ?K zo_wX8XYI>W-lh+KocXMfQKXEX?+rBs^zLtnu*nvC>E%x@%YI$Cvv06XH4*8AJ`p+R za~kM&auvgLh&NXi#wi>M5FN#HneeemJHeHO$w)DA1@-7hsS~iSNA7YAB;Om9P|G9= zq?cum!X}C+*RD%HAMjGR)cctJf*IE z$vFfZ3P8VP_k(LZGa()PLRJR(*9q_WMJec`&jQMNu78l1V;GpPdr`NZ95y(jFsonx ztfupP}@ccz(c30V#!Dk^ukCEqE6~PO2>I8;s)4rxp$7TxP){ao zy|(4&@1Vq;f=c3p80X$xX})_L*B-;)n9lw=616J6AC5;N&R-NXo3j!Fp5~}_rr&0! zDivZGuY01k!eA4{g3Gi9EM7i$0KK^O7K$TeVxQp~A>)G*cQess8HE74D$b`a95vkg zuv=CF+-^V`SmE~TL3c(~qBo;ceetM}s#F>vP}m z`s}~YZ*tET7tU@JK&k}GKeTa@SD!bKs3<*Vo+uLXsm7$80)O3WkN)s0p(mi9l1hCz z81Z6Gei3oIcPYRBIDv6W!fDah=C0{}Rx0FfEe2zg4HSSW2wm6lX9op+7BI;yVK<%K zO2l&*o8OJCJ@Im+w&0dyd;7o#HG}NGyOq)LAJSMDFHave~yAtaHSj1rFUWoiJRd7wNq@$pS&) zXr&$)LQewzDK6I{&or_f|B5nR!4OlxDrkYb3|cH+q_oNo(6+~#k)FNJ>lCC1Dxz+e z0&m#GJOk?|XeOK5d-io^&CK@4DWNE`Sveb21GB;h2NQv!N+ELivO4y%=P!iscI;4N zdOvewM!sxt(c>3uTdv&d!3|h!n1+`96&+T4O-wZ2tCLg>}%OA zBxzO|w1CqrOd^p;$(0Q$bM>zeNk!v$Nui`}{5oHmDB8VWsW2me zC`ZS}7N60ooVTNU+Fc-AXK=_$0)E0EuL`w={!B>O$wc#F7;DQw5)qMFE}n>DViU)(K9?4#W9!=LqtcmZD_e z#;2G@^csNG)0`be^Ft7QQYIWaJTbhAa6AtqGCo3eLR}KqpMvt-`K>r}KHOO9hE>GP z)q)h7Vsv5}VUyM9ktuRjw z>U8688IcR{Vc(GqvX{NheYiqU5E2XVxr+p-1{EXBY!tm-`_ShmK#XzH09|rpJG_Un zIuE*OafL6L30P`$JV7M0?gyb*B`PZE3B1s%5x-uD zPo3O<+%b7yBZ)HdB9{@BnK2F{b7>W^oxK!cy7T?~go-TzZLj&~fLYH_0&Zj)en-iS z?)@WX;>8;H0blq6uS9Ua2KoZHWr)27 zo?J`}b^4X-_T^r0*)&})Fl2bSD-dJdTJ(Fz>FoGK=`88)9R>{Yqp$D>2)G9hNPG*v z;(~QMlR$~!o(0g;cyyh6#5KAa|@i$3=&8tiB(ns;W$h=KMGdHYgknM18Yi#IFO~e2!=m&C(de!=eZ@ zGk6B~Xksi%%jq?#vMZv+%F?pkT*QZ z5BOPEiz)})HPq9sRm&8KZNnzG1W*NZy3U;MAq>NBzu$z7^*-E*>6pK9B0(Rt5atFy z88Z)M-#^qBIw!>`s{%iUhI z&#@>)NvQvl{}Zj_^GBETMvHh>#8JWLCYp82C~G9=Mg8);rr;_ zxq5SQYpCJ;{FEH%jk!YAXJJF`k8*0jv%ci~m&*fDq#bWgBIS+`?(`J=p)^D<<6)o0 z& z@Ynv{lGcqQPOV_pnZ}-4J-#Vx`d!6Yf%uccAugp(Vo-hWz-}A+At3Wk$1U4yXuB=a z@AST#*Go~ka@2uQLK7vV;CcY?yyEQVGk1QCKR6Gc$=G``S`lu)7W@X=x_Y2N*wylPAM6=W$q!BTr0s2>8S7wT_pXQgJm3AU@zAVLq z8p@)-9;=K>;bSK_7V;PrOu0ANQa7c~NKu2oWieT#54XAf1AM53U-yxCIN)SDcx%11 z4`mFz>o2@f>^#~nFMs+7kVsse!J-TVH|jMf0~16N(ki+92B8JS@|#UwME&zzmUf)J zjv2MsB#%**Cy~raD846+++czqY*Cbb_6se;3dr0Z?y=PapH~QBBOdM7lps^r=gia~ z8R4DvtaSb-sS_YZcsUs>Ir4n9HggpSSg3rrSKhqnza|Ue-u9g{Z)yDvF!99C_z90n zkky4o8Uc>-z)B`TNinFx)SgA$c--xJrAx`f{ zdnxn@jKA-}^TSm3@d=1-Jad&rj zcXuhS#S0YI;zd$ii&KibTWOIZB{&o)?ofg@#U(f-dGhn{&A9KJW#bNlIwo$-e>tJ(G;Q#`gxUBs^y!Of%Bj&*Nq-8e+cNZ(Iz}#?!s~a?!c;yDVBmQmoD-&|{7$u)Jzpn?>8?4t>qoghSw&mvZ;S(&?7-kr zYw}y{o9-Fk;NeO?st$P}>u`jhhn^Ff|ov9*WvEQ5Pc?1+Tn z*`UrV0kLRB`X0>yOcr{N_qb|r@)SlhT~(+O^u8K#owVT&uDH#sZCboPdfPzA`8^&- z6f1GIKA!0F5?xH_|M*x={yiZX%iNw?BymDB)xm?#Zpp8lqE0P7G_(fh1;P5rG)UMj*n{~NXWM7s z%iWjK_lZewn(av)dC^CMcPh9;XejGDh$=k=y_z`5Fl@T#7GL|KlLyq2l8vKZaE6Bj+3T};5@{`hY7Vk5YQFv-wbrR3|gzDFsMS33N1%hpb5Xktz@K(<^AK}Vc?yne6xbh)8x zIIZ3hEtW%zrmuVQ!Q_lki!y31Mw{;91E*7>GX4nj(zKv_6Pps&YdHjorDp(_=sM1I zd11vHdr|GuzuY3$pUd_hxum2=2+N5*Lo+*>dZ{oGg($}LSC*YKYZv;v+F$Uum?Q-u zXTxsTSq`j9S8G(R=(Zv%Yl0~K6#56{8`Q~Z9XAa^OrmtvKTN4m#8?mNeldoa;2xt= zt~=tl#GkPXWu!1=E2?dl{l@A`$8Tig_@d?eaT5=y(h(IezG9)Q`H{Zw;??gA;TV4L z!N!b4H8FeLgJJ`+oJ74gBaL5e0lP9_;HkWZHanhhJR)pG#~VitnHbqNC{?km4hX-c z+G~wZbKEfsZI7p3wVX@1(Gx9hm%C$?=M7C)ygMPSiOx>^(a1!3p-E_>@~c;U%O8#9 z*6XEImvY^o)!m1(?5`!Oe8#JPQ^q|VYQM$mwCM-s-L*PCaa3Q<8#%Sa5ox5;uuG6= zL@yOro^Lp9Gp+13vvsjE|I~rIc_ty&;d5MJ^MoFEVlrw-NFR~3RFzDwzt5@HT;dnh za19<-8RgswFrjI_E>y-tXLCJRSo;8utbrB=Anj}|rp;-u4Y`dod~5(WczCm{ViPpG z5MYV2 z|LJF;YkcbA$@{4A4T2I8{iOZUplKMT$0I^{T_Y$)AKt@-#PU0#-C?uuAxFg_<(pqI zYK=EsUuG9+1k>EcUjzvV$#R@$3_m>X<*XVa@#uT~?okVF+{QCRB_L@c;v;2WDqk@6 z9y$(7!n65Vbkz@ZGVVxL33@`&8+|f=_i-^T-G(1wanids*x$W|7J7$XaXow3P!~l` zD`lR&JWDLjaZj1GqpkS<9+$5#|LnW)49`(_QZHCw+>xrKtuQ?U$8ntM^JqQnDMZBP zM)*G#`$T;DTxA_L&nEa~7@Gb|wZ%aQqA-!7_lSprCFlQ_X=8M29RoSA9rrvb$iA-l zF}8UN#j&5Gfsss4_KK}4moG7#!Sv9PLCPxTxr?gVu;O0b} z0Uj3>Gw~rbV0x^Y!F~uuIW=cNgoV2-Ja+$Ac-%YjdCSYDFyH5~`gB1~XwQ8Sg z)`hD-01#y*4a?$@A$$%0kr7ptQ0#zDe}%;0v$V#dBX_T5dMxq|YzgFU=7PH2`G4%7 zn3{@vZNxUbM^x8%1=CURT9gfVyKDuqO_}+avo?V;}QcNePSCaOfr9-7k^g4-wA-I|HtElH-y3PEGp(EArc-JP^|K$_BvR~O?lQ@?{l^CzbO7{5Yiv@kr9-@>bZa>jS{ zod-{JqzKqO@?m%6xCxJN3gbCVgNxoLn!QUjPPfq(#4@*zAn{rpUu;Boc0z!rjt~zL zlb&3VLMl;9&t1@UMw_SF4LtI`Vzn`O_rwnV0hhO6fYcjsqd>Wr<9M&}I!?zH&i(#u zw=MTXiC5>&CKV?#hvjYX;YKg>`zyTh@;CAmB#o>4Sm9U26z<^S^Oxp#&#OzEJoNnp zxv?8fQf;~|tR#D|9>jLTXc-;Ucd8M>VI6dsH(+tz2k}eoeBA9=tyFqgQ~)U0OTzp7 z=XQSVL_;o-W!uiSUs3e4en8?M|ANg?)PDPtR~CL#>C)&AdEDWbMBcvsyy~8dei3VtSy~VZyf(E-lKjgYD%#82CQGo-;6puLEN|-{BS~{`j}5#hCcXi&S?=L;lJQ z`61-d*baJZZmKGIJ;5S0miiuL>jT7#wcmc7Pk~OuK;h^aJega0Ctx@Q(_y9Tbi)4y@Y#4=Ii>uYBz2YKQcP@MNBAH-5k4$ z>co*ci4GIl#sWrD>F3A$ACak@OaYF4f*vD_pB3#Ib>HGr$Ch+P6R<84A~m>WoA~o$ z=^6K#aC)x(d(!VRsn)ILjl(jkr2A$Bcj#>9Ai%APT6(lVl^^xUc+_QGNW@STyb+Tt z%pQ2zjV?kOe)T=?S>UCE)hVvzW`t4^~EA_~h?} zO<;ziG~OBhorp^1IU*-g_}b zI?XLNx@AJP)j%`1b7{((RwnU%@2tg3X zMCLT7)KRKjI#I&l+or*F`S=d)x0bjk4oj+f1)b+QgMZL|*Mz@_;$~~vI!p6}7_-#Q z1hh3P48sc8lNgjHAp#tgWqP%ndfpWCcOLbw>X-O3qsR{?T^X@!_cE*W)J#!3mybrg z$+LKR6hoqIz9whB)8UILtD+mOycMdFf__7pY=C3b%Y4zV<;Yn(qLp6U?SX%9fb3pI zAm&U`3f?nDN%w#(g&w+6f9^u&D%^~PAxa%Vw;R7|l>lPSzCvPFQPSM=Y?)7%!bd(!W%0K8T?IRXdNVB_%fJ!SS{L|$F5(<3Ta|DIHzaVLb}b`3_5qz zhB(LfET)sh$fFq-bU8OdG}f6s9mID1B50h1N$1Cysxzp)>^L;VhzSyi76cV@l@@lG zH$EA>x33~)S25KLSlv=+K-|Q|tT%PVy2HGTT_y4Bs(R$liS=0_`lF%lN`oPNx)WHU z*=Wj?%WaZ?UOG6(DQT2s@7n7w8YRuCdvWGE4>js;{BS+71EM#4(v$J}zi48maX$xP zCbCNUV2W3JH5~K~zRHXfH>0z~Z5ej^MrT*y&rahwAmeVSNL2Sjoc+MU@I`b>wNW^> zJZj$d{ld5BBqpJF=7)Lf&9qYxeVCd{Y4}$&*Y|Vs{+CRbXAE1a#v-4aeT7#ZiHQ1m zG@A*Pv2>Sz(d>!nNty5nkJOLTeMFlz1@$J$I?4VJrl8zKWq2w>kLp-lfrq|sEGe)t}~ZP=20uovRU74*Y}m+-~P1^G;7H6bL*8b zNgf=5P!v3e53N7Ujd!*F%&&2lZEv9Lf}5emFpsfNlNr`9qK1!g%`PGi+9J1*39%8= zj+rH^>`OqCP~S_h1lPcI2lt}iV|pe$DzVStu;JvQN;h}hto_vrfoqOfg$^l z<5{$D%kT`ly*~5ssg`SiFP8py2|EUVLClBo;7DJZGlN5zY4^ZNeo&%e^xwlci!a!? zd-)s+t*Y|8O3M(0b+lH^Xrr_v{4UVPRCM5{zOE#sbzzpP_9v#Ydho0=X5io1KMbO% z+0o{hOa)g94XK}RUDv(!v_ro5X9liQFixJnfe>bYbzep*|9B5zybF}S%V{m?)h;54^xOUk+O%YU{aQZJh}B@n_EBTp4ssyrDY8=FVr-;U}mTKp3o6| zlqBc1h$W9<#IHn7QA&($#HMVmn-6(Z7Gz%`L{Gv1&MSV)=FE6fWcu8q_UsrK`_-P` z6i9_mpK>;nC13C@W2(QmsAqF%H^q4ozwi>0UR!V4f4?litR!`PAmUn(bLg?Uzw8~y zu4go(07enpsGzh?h*iSh3Kk!{zdAdKRFW|X^*wxm_*fxM|7P?Q0K@Tkb=(@XerOGo zY7{n0QW|7CVy&TgW0dk&N&24m_Y{1VRoh`R(kHxq_b&)>mw|n{h%a4e$YB|`??aX? z^21SadgJ^66$hR4xxWHz+kAW)qF`5VhFbanS=FC<3_Isa@EAg%H@g@dc4+?Nq6pJR zN>hAPfHrz8p)**yP0GC-$k&LX{%HeZ@D}J^et*0Rl$gh-J8<+zp8+kv1PbB^zCYY` zbg9EV-tm8Z>!CQ?RgZJf@=1t`Tyu!D7$`hYKYp6tHYCx~kLAL{%QFk|x4lWAjs{cQ zqvxkh!PhzD^hHDlxW>;D_PU=if)}XOO2k5!J?tu#693os1&do?EWAw3IH=sT@B2qZi1$jR30o`*jZKY+vGUXnl%` zLgwD%eAv~Csj=(3`BT7(r>AfxF%ay3Na2IZ(sv%{Ge$i;6hZFjHK}8JUC0^lFCfW- zj;tJ&>fDZ!XLkikw3t!2=*vo#{Yd$DrX)pkvcVKp5`!TejwfT2r_guM;U1WH-v>3V zO0^fQolE8EhdI&)F0HgVSil-Fhze+>E*?z+GF}&;01%jA~ zcWT1u%QBZACQ;LU?z;h@i@KB^mkmo|m%rgJtYRou@fdD}u^#7^;vGda918k8p1V2w z1W32xUF`sZ7Ei49ha0ebBcYAi($}D~JJ7HkKGM=V!jnQt5QzwHK&DQdmq4kRL)cu% zl>iHoF=?o7M;sd47wqmJVF8*+&nhM~2`_ZXWg;WDN+rYkIefCBb?Qffe@tlU+6hzv z?r&ThYohS@P`+cLXhhMzS;+|A>j(SbZR$B-b7}3fhcYwO_zL}!aNq^7I&Sp=)+I>#O$;I(JhC5Cc)4j$ z!ermZuC&Z7uB6kHbJJ~BZzszPRt>6U(pUJmV8Mt8CJJ&@B5BH8#Y zCp6v|H-Ti8QRBtv22gZmN>MkfMMG!`Z#yN|daK8yAS)OC;3hZ!2t;F)u%-+zf1X^+ z)uEb5r*CP8t(@*yv}3a6hgr~ae2`~v6aM~Vr&s&fw=y3dMA3bzh^Z#>V1;82C?{ei z_#v`DQRq_tZLW29C5@UoPWgByPCUeTZN`nPfh^v&XjEZi&Z-D`C^NSOAmRkX+z^0B;am~@_(KM5S^bCjnM{?*$jHU_SxuibJHZNvyhwfpusBH%21=(u^t?n;r z%+R)>`B7S>erRA$ZeX~zF_qJdvcD|H{owKIIWAgK5FgJgmX>K{$tMhUaTz%%SdX7^ zgsG)b`|IPk#%Ss$yfs1P(Nu%QNa2D+^F9+UNHX7=T@RC(1k(Vg38S#W5C1{!>jHH>*%hKFxYvlcMVAn#9-tS5;5grm8(Z zo-n$y7VEpWs2@v?6MZyhq_6CCshmM-Hi{G=*zRxANFK0~hFNn7dncTPU?thj_gF|L zQ*@UH)RR9{CEHe$k^kex2LP85OZarw-Iti8KA2p_#2kGW{(>s@E|Cqg4+A_WNbIYN zfUE?b8_jO@2{vJfO@A)>Gw(6-(cY%QkL*qa_Il25BIS3w9G^%BjISreKH)@R^aexCy6OC& z=34+%4bFtb0Gn`E!{P7w*IajzEcUpRFB4{`{B;dKGqZqBS$i3bi{Gr_HV=G9w<7vD zxhjv5bzM$iEppy1eoyc=VrK%CyxfWQ2PjJN*TaB@yjIQd%lB@DB1c?@Lp+#NB4LOR=A?25#+! zUCVxUrzj2yr8sA&ynCD+KhpoO_AQjKD)~NpSiaOBCdJ*a8y151Pf&;a2Kmoc_&t== z2t1g}B1{AZ0)c?qx!K-}eyh$gl+Mqn*5Oy9NZ~L044^yk$7V4&K^z`%s7_{tZ?nLLq|omlmuxsA83`=r{|kg`O}_w7?0_xeX!2Js#>0`}f4ML` zh}A9nzG76*Agms7jC2RHX3x(G!3t6=clTDS+uA8f7w`iSg#`ECX&rEh^ebRVlB}RD zCKs>NT~!Ejn*>X?YmDsq3*x>9{?;X}lI{CO2?jv-N;qojH|GZn+_NLd16XQO8UemC zYF}mB-^*V6Nkf4Rh`?>rVQPMl&~h;5*_yRb<|wVkpq~w+R8N3VuF79Kj*Kl(lc;$z4OKCu73~t z)MZc9A2B-vZPVF)DMdk)*!|E`Lxn$f17Z!TTZ84tociu6Bpg`xaqN0X@em7{_xwsw zSDFEammQ2YS;3LcJ{oa_q#a7it&d_}EkCZmC)Qt<6NLNJ&R(T;^_dyRhu&M+=}!8x z{^lpj#**?0KkFt9fK<1_F#{(r>;jPM863_wID7{Y$)U(h=YM;R5=~?lI0`>plusT% zON1*U!FCx|-3K807ZDO?2Jcpyq}sEw0S|*fj?C09;04qo*8Jy5GpUv;P7QL)%M!Sb zF!N)4G~Y?7lSLsefwyWFyLsdxq^_#B2%g<2{;iYp02Pi1qVE0aZ2U@U%Ob$v6hUf1 z2ddAh0ya>EkO9_&xx;u#rz>VrG(jv|-1Jrpm0^>NDrKdi*^BPd8fVU+Xts&A3uuDY4+~*ugnk`hjXJP#@SY|M*^EnLUN#j=3hm$Ifm8 zXu5v}Y7ip{gCjbe4XTs;beq}^R6F;{#n@583X?rmP0=;om=`dz7AlhS=*Q^g7r78S z_ysf?5s+8&zOKZgsUs|P!eoINi?8YTgi5l=XJu!82s{E? z#@k+r2sAA>k7D~C=Kwg1Ot^q8cRNC~0slR_@dWO*fO9P?&?QYDuj~!Aj9)B`cZ)Jn z(y&Zs8^lb0xwos&@*v}|c}=#UGQ_)t%RHu0=&U}cIKAgX(d{tys+TlUvX!P zr4e#_;mhxH8O-Pi^OR0 zTTyy3X{lTBkOt%x;lzlv07lVnS{+r`-GhVJ#LzXXl5&5*`5H32oHw3vb#IXLi9i+F zG$bg2mP9D>hF3o`L=868vp%kgw=wBcx@Zhb_Ht|f!m)2soDix}vPWBv%=soOxD?zB zdYc$a^6LRjC<#Hr-o-k#Tagt~G*f9>{9$tfe5fw@|% z%d+XBrs0+CE2}Ka6pQE%Qufb3Y7~FVj2tAkYXu;A6xOYya7KO6T+c=GFtn>Sh*Nc| z4qQ^QB3_tduhb=X5c`Qry%0z3YB;K$MrO6gXH-;kz*PQ~ip8njGq=+)8S4_cLsyxl zS@_F}5cXgdCH!^ox^a75Tm^3-nxoOivG4!%Dr*YwmpG$%w-q?v!r5P9|4XzuFE||y zy-7UUKLPcU`78=wckK^0f0~(Udh>mc`RuLu-n213uSX;S^3Jh`4@>RPH!`pMbMjz9 z5n$k^!%>B;^1t2AUWV#=uJmS3XVz=LT@r=|n_HW`p+tj?bN z(fAd?0h#|W(*ig7CB-p%MIn&94}kP`5l^Gtflw-@K>#fNkrm&!1QTCo z&u8l(FDajzuot$J4@Cb(GKG zD1f&Rf0ozJKsdQcoB}i(sJILffIsQ42}1;!o2-D;j`5FMU$qdp+pn0MaTGwL=8_AvlOD9g{}SH?kGp8s+If8JP3eEgPZp<8HZexj2ZLbVuYDTCSs4x^bToRUH1#V;~qT`0PFOr{%RhS5;aA2V>Y0`uq03cBtCw zEm)6enHtHYUc5uLSfami&gQk;=2R8ua3+YJP^YrA zqoOTHWt(LYUoP{Py^R{{ITrV;=D$JI?F|DE1R)*FXI*H((7=oE95oL_MfDR-!$ZkIDoJ}&S)gm zgdg@Eb?{u=Mcm;fUe77%cdKsd-pAGO4#*Y4DiW;*rR~FLMiA(i9=Vnl603`R1*ov1;Z!&ZQ;`LUAm|AEXWO_nqLMX!33kOjClOS6PX!t8k*|q+MKDeKQu>!vtG|-H=aZgCipF;5<1-$1P7C@a=lBXYURfAB zDG*w5wRbU+p);WMY0HVU>cFjdtA?bLA~dU_pp4kHap5)3(ngf!L_LL-)w)%!>tp1h zI_Eb_sTop`!dMaDm0LZGG`K4rITEWzJhb+JD2c{ouG~a8TsI zA-0!o@Vpgf|4>s&1RnId1YnNau?UhydTdJ3Q9U{iNXc>U;gG! zN@n||%b~KMq4@0+B|7--9o&q4vl7>yhqzu?qEEW)4#iO#S2YiRq-R@?29Ar`5x(a7m{!~2hs|CR8ep=|x! z#0eRF}*E);%SQd^(l{2bZ?0C_`Y!on-@;2-Y4qxG0UBCg-x zk|nOtrzao(IHn#;CU^y`P-0FEI(+r0G)c?b;{wn-Z zg+X1bV5}y{*R8;+2Z@q;J>5my^UodW22RM|bq<4($B|Z0pwWKB0Y{{PQO^hg@R{4F zM>#CaL(CUUQile=$qoA|os>=4&wpJS`Cv(WaHJ4IS&a*LlmKXG35Q=r_4|KgD1EBj ze5D+DsUiPbGx={ke+K0lq=)DgbU%VqVD`j{VYm)uRt`eB!S*oXvmK^B3z=HA=6z$X zTIpM{2HH#j^Ioil5UDHQ-RK*My9MFDuE6TPy-vBR9*P?DOO~F2$e`CD{XXJV;vMX| zODkG}gdgeH5m%G`x1CRafTlxFHL97K7%}cL@Eg1Uxz52LrlvH>Z0)iAsm&Sw`)TWY zyE2hJKgM9QF)1b#Mt-&S-;VA2obdxAb(&8(ECiNEi<4-oVnDW>85AvU)Rzv6QF2gc%mu^nCF54*0v=dgVC1GsL!>wj0i^%Ls1$ zD_G4F(voQ2{D`YXoFV0tdGWmiRvQ6J9BVCx8-$tYv0Sf-lC-Vp7hOMyJaBISYO``o zzeyv+iEwRdMYSTN0*6?%uhG}oAJv|v7%`ktM%1gKvgFUMxc6f4>o9jFZ|NaX4>>|P zniVt%(@65&o}O4r8}q6U#ELTYTxcLw>Kn`Mg@!ik*-U~%bwHX+A3B`tAn zD1RdzN{&%TNwBI}>k8I@W!P8;aHUGW-eIc%E&k!O5Po`OcZHQ?E@gfVqIkOheT8Qh zUes^|GM@g^(rR-35CJy2Q$Q5jfy(Z2{GR{QP ztDfD2mdfgY^|=BUdfZ!{SL-HV(jdfRadJ|&;rE(^GCfPrU?EB5p`W*e>tjP1F6LevBt+)8MU`Op`t0X05yo9hEQ!D>Nb;>y$?#FHbK#lz;vW@yc^bMX%)YMa(e*LtiC zgR6epS>;tUQY35eD>4o8YM0BvS9Y|1Vlm7~D~p`5RRxOcRI==ZELi7tx&g<0VkuO)=q(9L}wmB0uVy@b1KgzZ<`#U3A z12yL3C`pM>qX;>fe8Rca_j4*Me)?Cyok0MyBvWYVcjKUdX^#Hg$wLRHf|42ZcG1gL z(1(JLmFp||W_scfz<%!3Xg2naV9we%Zz|65V$g?p#qm(++++P?FXF1bUbmjVF7s87 zt3GmC)!Qy12YsnNP6acMRI9J(=-1E4X*Ih4$J(Zrn{QV?6}olwif-&>qPtYE-%sP^sj;$sXQ>~3746-gCE zDeqw}J)F`n-m6tUHv1z26G&{5xXAQ_6bPjONmWjqKA7Z`cReSJ=4GTKwi4sJSLW~l zjuqAlYCT#E0=fZ%U4OuphA26fgBuP7$o(yLvZgVnN9yX}X2hGXgbhq{_U% zReO*2DkB&g6lsK?^qq+K2Hl5uBZz3*LTz!VLvD8S1ZVbdDT0Y`#1>nDHF|OEjlrCI zC45cAhGQhDTn3|Gar#+M(B`fFrMn18NW>(Ny&QNmJLlT`=DRbVHkVnG zMU+wUe`@nYOcD~3+iyr8M^h+JzXITq$a)1hJ0%#UvT89zL%!s1$Z5Y@js5ypsz&$8 zBJXcYSV@fq0Itz5aN{EyNwS81-UEI!N!)l0GG>71H$!Wy0j-um!cdx<3#$uI>mQmk z_}wtr1@5!mZY`Vd^i~7ib*JS-Rk{|88xbhQz> z0f$5V6%ey$?Mb@HQ|HE~iG)eTirEd5R zcQp26CV~1rd}@{BY!v{G0FSND^%%`kjPQf`20vv88T14)}TnrfODFFVNHF4&k zaVp0@-|zB<-}%6zlB*i>;r;%d1RakuL`vrWixHmqJlilt=G3J$j96C`z`+&yEOD;D zbH4?WeOcK0leEUCW#yoCkCL-sz4S-R71u5_glB~lg_MkLe{@$-X~63!wFvv~1ERmS z7y<_bZi)+wGm447o>ad8tcQeO-J%{__aihV@Xpf1=Zi1MA4|#@4&S%uRpKu7A)#=C zUq*d!)HQo1OqMJ*wDVnGh|&JOEQKxqZS_jKd!NXuYlZaARH}8KC$CZj6O(TKVW#B% z3Iv1d|KxivbwW>PUU9}sGGw-C4&^Ccy<&4^H4&Pu;yQvPgny9(a0qEH|ATj{Z@Y5Y zTc^beD}J>1W7oqb)OX z$+X2;*$w{+@Ux|w%<(6FDCW^!Uwl38@Om^NncnaxtxJsv@k+UAVjFoQ=~!qYWX_hH z!ZJrV(PR@z8w;dvp6pU6w8BE}zIS)y0cti0)6T9V{=%j>Nts!vAjCDvIvD$7&U8J? zBM@F&8gXY$)XZD{kxgAO*r)~Qetx!TH(!RO8-3UB7R*p%LomVPy^k7P`wKfO(H{kHloy;6%0phe zZ&DR6+f=mrxOxt{4&8>w7ND3T71aL|eYY5U_`*cs4hdFbG5g)AFav=(W*)=LXTUHW zDp1J}Km>PD>hU+P0D*W(4_pp%9+VG~{tke1C=C^ekIvgE+C zLY0dahNJi5lDb+2-{4DWi>>M>Cu^TzAEvr8bGQ`O0{tgJwW* zgaC(*?C07Y2VBW=n5i8{aHFDK?QLD`$27Hr*QQij&JXzjn6%2T8=;(Eg=nmn18ZnL zeS*ovaT8lVQt3(~OWV<7G&}5mup6N$<%Ud|ZmPIN?K+_{JiZi<(*m8*e$xZSA(iv( zf4264fiU{$A%k{C+ogL;nNKL{BvkU(kFBM?;e67TIC=Kt{==sG0p~xKI`!do?dUA7 z6lyQ+X{o2luB4Ie{L3J@`G?x?Fc%NFOSYW*JSFKQ+dAxY#}5qPzk?^<0wO5|cbcTl z4iw63*4pKh1-Ap?{wCJVv)A2uU1{*!u+qxu$HvgU(EUk?@l}&?1povX2ti2_`ki}% zU>7bwmsax9%izbs+1>F0aD8uzYWB($=IQHS>44`Vd2^R+B07r|>#aETiQLIV&UR#; zrdu0#}M9s|1!Qb5)v>^ypzggp0gD@X*yykkgUA&-s;nCKe)_h~>#l84?%4A8~aVGdcYsmb|BLS#?dl4~f_?i0p?BxU`a}kzCOusps z4U6c#C@qxW%Z@GBoeacL{NGMN?Tv)r55V<{ubxf!%Wp_)!0k(I=$S9fYZJ~4hQpx0 zgPZfJ3d=o?MiXnb*oKdZhj0q$6OR*3^=0u-xW7TpxNs zpp(ocAMi{T((qd2-U!7gd{+mgN_4%i@Pr?3S_Pj|Qhj_`hC?;9vkp@TXg^q;mV@Bg z_lXV68KX6`-B5^GcM}f}mbvn*I~(m6$yvM^Xk;H`?=c$9I`A2TGgJ%qFbmtOD!Kn` zpor#ltl`i+Pwpjt6xrGLsxGE%nc14KGkZI7Dr}N5G%a<|@QL81{zXME$A8SOY zJ6iXCh$WeEuq@y-P|=#7y|s)XN>(RY?(88+wF`^4M5;T#?r}_42!rXBky_@EHxcI; z|C`8e(mz$*m#M#d`zkg27`%lwh9QI%n`k}sCPAFqh3?Xs<5lepVj1%rn!p)G@rlRK zXOUzY-gE)*dYL$D#g8aT%|T1VF_;|Y)-@E3O7`Ej2Y(+QujFiVKM(-G#_~2E3Yfup zXHtX=e12#G$0z)RUswf)fmnW2Mc9?WBgM~&!F3KHk+0^lRT6`c_1t{1=jjpb*jYh3 zoq;z^LV(7HaP+1YGB}PJ$tl#`suhLh~G?PHXWeK!#q~5T8?+@EB6M@cj_mnqv$X7rH@_msh zvC>n}IP?Fq+%y>dZMQ^fXn>KN?QWw(AwGKWWcgOld!J<>+st=ZMBxQP3Ze91J*n9! zrm2b;L?P66%$z^bz@J|` z=koWl_(W8lza`IBV1;L@t)pqXZHMgMjhE$9-x0r6JB>TO?}L3G?q0+sFC-zQ{!o2y zm`fjA*dxdC*)@#*9xl29IE>Dr1E`v%g7Rz%ypWLst05@4TE*0sXIn;hS&dD%e*2Vo=c6eTB-IsduL?GjeWcvjW#26 zwb6NT6k*vR$U}5Iv3seP?*(gxKeZwlrwCz`W#gbi?aA(QKVrd%XmhpnP}k5f)D{vF zG9*BueXE!|lll`@33wuF<2KY7eB;@n$`Wt9!=)oT4av8A-d&`2c^uM&hnQe4KTgTo z%>n&SK-lpHr3%pJpjlw!cQsKab!FOu;h1iSH0(NV{t?0&ZZ!kn{0SF(gxI}kX~ize zLLN{9NnJ@TOm6L+Z-RBTY9EHCVnB=cGqdo6vptbfjBS6sitzsDHE$$upf{Cea`@j? zSX#1s_@*!%)cF1$471LO4S#HT=G?tne(s0(e1Oh$!DP6r6bu7DshYm|GFsk1UmL}_ z&+JbAVr+2d3OsRzUpIFo`76vBDmEVDwB{%+e_zF~ue}8YxTlXesJ}Up`Wf7umV^>= z@>1WK`)yex|D=1_8kyN}dG_SZwu_hchndrP>wO;PO3>ntbs%@c)1T$(Co3@E{R!Yb zM4=d}-~j6jgdM+}1D87zO2lAos|p5KMIp=7cIgnZ$5Q|BB)@)l`gBT$^g3{J@b-AC z40i*vTB0$2^*-pHB45NUSzPhtYfFzxwUk{%9f%u?X0H*m+*pO;5nMJ4eI##mkh~(K zGXupKPxbwt=_yU0hI?WF#m_yjf#3PmX*-i=hzDHjOUAJEqQ2Yb6lKDQWSdwCrQlEC zXqcQ4+%h8a_F_{Gpu@ZOQU~nmhV;Xk>F>Ox0Y3MzRn}I=H49X!R%EtwNn|9>#*2vO zGS)XmX)~p@NEPSO6|zkub#-H15)il?H`zXunIX9@=d}+kbhZoDOQ_q!NO2Htoq_XS zsXu{@K3%6-tZd~eRRsEf@6NP_U((@><}pWUGw)qit8&WQMY`@p%L5r*Z2E9?e3keo zUUmOBMz~K(2YK@?)$)_wf1@GZ4h>^vjWLraN9EpAu9IY-{P9)t|3>}4i~je)|KE$H zLzJff`zqrH{sgl83V~A{*!Itgtxd47@syQ=DaX2VeZ;OjMfN+uY0s++;4}7ahW%9cS!A|l(T?@HZJdpDFG^f=S)7y!+V!>Mw4UqJ44$<}n=R41NL4{IH6 z%+lF#7t1ZVwTilB0HpT17&-~N8xR2p&V_LyJTS^(({!oB-7nRX5^zW}Yc0Qusv z@js0%TTQ(&St2%(9VoA|W@BGAJYhZbCEowW*9GmhOh0J_+NKJDUtSn=ysbz{Tx5%g zc*(0t`EipPDJ6GdQ1Iuloti@LhE)k!#MvJ>0%mR((a~htk!-;`Hkr%gHFE_T z6OxvVP5kQpN4h8mY_~nR_^dv2^s?IYQ&rq+3r#UBOolo6Y_khhP*QRNVJ8UF8;76T zZ6jo@w$TgwWjc~VviH*-oU22VWO=@eGVs4mX~3I53ao6#9nEOdyyq7MlBOqIe=i&0 zgzg$c@u$$0)!Ac6c)%iAmI?MD_O!?Aa;&3&$Ly@X?}}v}7F~c{J&eV7!~I~ni_9)* zI0XulPpNe`Gh0bRnVO^4<8n}2luMh@d5bT$l)`3@Aqo0dIsiT-dN3=CVD-6}q+x;aQ`M}`&d;%!g*BebgU z(%(PnIn{ue3E6J)7SpBkB9Z4&9EY{u-A`5hjvDZ?rqknx;4Aum*wU&R3GwknTj?KS zY*9_VOQWPBm~^x5&ApiU&kN9~bl>fZl?xYnO6=PZTiRW_9`7Vi%Uv|{x;*Q?oGQQ6)c?oP zHHYQ>cJXZYWZSmwmRl{`Teg;MExXp1tz|5`mTf-Sz2D#aS6y9o_2@qL`RE*!LNn5e zA-EiRkF$R=)(@1;U3J+JMq*+?-<3ogKaU2$PC<^!#2eEL*&F-p0`IZ+vEP@q1vJKz z;y-EUHQ$EA(tjN8=2)JuxR+!T;^$`VJn0zi95L7<5gngi?*95+y^~f| zGd(^1T_aqVSyq_Tda2s5WX`tv+xn;y+aI^j!id4Q3 zhTz5lER9AITS@D7S)eG>?o{Arg2D!VEPpIC%K|9IXAUdH4niDRy__9(k{+wMZ`#mU zfN2Wcuw+DW+4W9~MH}uK4;|sb#qWi0$+So7%3X5kyuP4gcE;Ti4)>(`arI{#KL1(@ z5IHW>Pr_h&=I6EEC}F(zlH{Bw!RL+uykh?U!VO4v+EL*S^Ts@%4rt7lb&u?MJz!sg z*M6Fg(I<`Y77N%Bo7%37L&UH54oLhb}?6xbk zVZ_I25+NqcgxGg=I$DFV>beRu2AL8cLV<1`!DJuf0tAP%PpCVvmVU(?reUyEUv2Ob zzbO~MavEVp3|DtaTpI-sqvw7J-0K%RO=Ct6DDo?sDOnc^*yWO%DdTQ z(rY z!;`^!aDCH2)0Q-Xy72Yh+&GAF?KNIMbMnyp{+KT6I8ooR9Z@x;*F*;V3Wyr~7;4$w z8qr-{qK%6N08+iZyHjUO`;nJNn?JSdO{yw#H~%I7Bb`OxVkDVn&qbiUz5PdKX5sJO zF~9-i%tZP9xvEbu=JG|ZG4Sm4)O=~u(E1F)$p3BufUe0t(^UCWbIZ#kTU+Fr%4KqFpYkE-AM<@p`sod#*bvjO@7%{7zaz<3+=$7RwW3G=ebcb0K_cYooS!&W$ zz$S;F@t4V9VWX@7JnM;4m2@%au0FIy6Uz?id=wu>J-ij<%*b!OD=<>{iJ%I4Uf>Kh zzs}Ok6qbej^VL^@;J#Ie5XlIf*!q$_tP_;ypiQscxY@P&SZujA4OxaT4!A>N)MYqE zi7|yX)^h4S|>#LbCv97-sJfXU%>gQCO8Auz8{A4PXw=s~R*>I^wBk+TT6 zs_^t(p8vp(?Z>pX-@ehJNR^e9)h?RFngR#SVY4fDW=1`h!+q$Zx*C}CaKiW>LNk8s z%Um+=GFMOzxD{zhPK1!bv_@4GzT;kualLC=a=r9NzuF2(*uub=h-+CJol_NqW!-yb z(Px*4VmZxd2v}EqniWC6T7N6IDp+%y`=r5)OF%*bwCYPFl@r-~4X%eO|3ScoExU=0 z){FMjl7@zq|8^5u3xAwecc`$o?E!3*MZ@ynr{gnf;ABrvi_@m`;!BC<4-3c%=2owY zwi(1L(@KqX;)-4;CH$S9#@Kuu;+sE?WuxTg=ALhO<>KN3?p^GW>P$q2$0U{?C??vw zoi|0sf^2$>pIBJvi^167BhepA%I0IVnS^4#LEl?^Kde_1t*p|XgGfIe@Kq>4FblcHafOZa|e zc^iR#P%%{*5t~alG}>6gPfj62f~k@&weP!Rk(aD}!|{&Fm+6HdXUN>Ir~}eN77%(% z1QxLTJx+!5dk7*+#~I5epKs(fR>lZ*yLIUEw$wY|;ouOIah0OtO6?WMLH62js^aG6 zxjwO9oep)_=*-N>|40VWxxQ`7m zJnX>3^0NI&mCM^ybREBXu0C(1+hw+~Gjo3tHhTWY_BW;GeCzO1OlaSSulmy{i~eHr zYzi$~#ijc3yAz@&u|l96Qc|Q5~+sB%UT!G#O*2UtvOWSSqxTFt>r;UakYG4IE-^ z`I?gU--W%Cv-@@#D8>WxT_d_b0=+nOry>81c?kdcI920MObIH*l`ZCO`jyg#3YJTiR;)&bR+{XU+ zIC}BpW>feNVd)s_7xDo1$*+9X5(=3Wl9={kwR;eTVQ>OFh#}gfs-2D4<=EVo4fu#( z{>@3q2M2bZu3das{>D?tQTVn}k7bNBLsQ}pCu>#vD@ZQiC+s^nJlvE@#lT_r<4y3M z*I`EhhI8~tg}NFAV0D0@jC&paxayv?0dxavYAY#eiSaOIyKmIh#3L41UqQ~QAr16Z zYM)I*AXJ~|r%d9efKJARcF;URmGnu&bisSxN5PIyD z{8i=O!t~#A*@FN!v6t!HYc4)R-?ci?*Vkf=$YFY>Pxwe2>fE}+AFE!}d_CP=k3|I{ z0gv_WNGAFpiIwMBfr>Y+uh(O+{74$Dhj-mLrF4*St+eTe*T(UW4|f@kSaG|h8AkjS zU?cAfp(2AI8Dv4{BAb&g{DB1GSB<}9n@&V}TT7(xtn_1>-MhR88KX8qy%sqiuj?=5 zNwL-3IIxh@NR7~vL+~EERK)!A2}ht)-gOtnQ#Gl)T=|Rck9V$s8hiJPK{JbiNi+|k zL)~Tvf{>69Oh`k(bp=>sfewc;4e7}*j~zvoiE1NFn)PC2D@-Qf5&m2MFnHcP0c%Ng zj*ABByl(p!i}2gHtGak?9io$g@13^rRj#kCJPjsM!C>9fi9KTDu+HT>ZjeH)HMyMQ z`vC7SD&HD8&(H2dlH6k5PA?AN-+JW@kB_6|9nQ?n0X5Xx&#!X>4SZalFS`Hq(S!c_ zeO?V0XayUrK8ZkRG6Ao%x!k%yB^cuN_SWg~YWw*RmqjmhF)IWfy{M_IrsgsMqP8%a<7vV^$(wkZ{`WcvQx{ek$9 z&>f(1u~Z$SGuqkAyRx!^Pe3#nGaRXn`VuvQIDok1u-vzJXlzl?lF$q7t8yx^aq-su z{(K5co-$I9YUbv4`xx|rO%Ac5xAN23Jy*GH`gwo7zO^_kHMFwJh68TGEg*Ut_BJ8j zOyTOfnM9War@QKp8;vL=^2!R>0XBginTe8n+`bHitHQdxNo=WH(NkS7a%H98`~gPN9N-b}3hU{OyvOfcoj#c=OY*WV1~rUsb!c zu?)7vLBpy?)1D&}vX!2F`$bb?2j6`h=Dw^udoTA>CNG4Hnl_X}W_{z;AXf^$O)r)N z;cEm%rs^&qWLZRt@Z|jMyomg*wm-viWz~93ii_2TF&fc8i7rU3H9w4}((7Oaz~tiM z=K(~;OrQHeD=T1lGp=dX;Eiyz<7T{T{E~5CE;+)#7DqC+uE!nc;lL{)F*?*waJ!$_ zIW`jd%G>HNOF=gWJe-_7v99quZiqy`PJ}QM^D~PYI*5LgAWeS;x@^cPs$5$jf)eo( z{@8;~N`~2RW_X$A#~C$7J<}5&gPV-T=y#0%@t8U}k??*nOmpem+4=$TnVZp=T9dKv zrE9l4u)F>ptIc9Uurc(^Z(ks*$^7m_DYMQwZ^JjTwjrh?-;0n5E@w-}+o`(inD*Op zWBhx>1qJcNaP;=9(qdtdPRnJ_&`#x-_V4Ka$G3?He8wyE*=+hMlAmT~a>Vsx96>6K zdoi$CEA9BX73_uzSC6hW*SQ(0)qC?o*rf)pPSziMorqHpjZ}qJ(|a7%Y2s$(B8v_{ zJ`<8%r+as~)>ril7Gr`H+!T-L{u%|g9cMOPVK~H(KeP>ONnDu5pLP|{3?Pe1K7&Rd zBcry7ZHjyHI$~W5^qe%{P=i>^K2eRT>?(aPCoj9E_e<7*#Mv1WmJ|rtr6nxwJjq9L zE^y14PWuh{{b*^2AB5w_P+Uumi4j3p`m^PvZPH{Erb~G@g{o|H;em=;7W20s$eJK+ zTM=_WV4N~pJf}drkZ^r0AG}l^g2bUy!4%U9^GNwPDU*?afDipyhTZ{_7?&)pHwlfg zT-XYAR!Bs|knb8P3`);lqXN`LMnI-#OIVM3_p_E?VsLXD;oEY(Oe_Z-4#H914+{wj zRSlU;*xxuQVEl+!Q&n?pP;_}pH^p=T#*R2I$`JxoS@gSl_fwp;ajGKa2zrga|G4#A z>4qUEudw7;C$C^t@$Wy-Ozix;ii0)*)qx4b#6wovaPpvBibY}8xagG^!2tyI+7*STgeq<}Il3jxQlI8FU-%g;pTq*M zhlStf8*H?<+fN;PsANsT0NjzcWaOXgAUMIZWDtV0eQce#7d1>O#q6-*f~v@@iA^PZ zH?9d|Hm!Iw*8MsLW0aHsyss)RJU6g)RR>)FaDST*w)XbFHy>sMkTZY$AV+|zY)Vxu zeaa=)^2OmmK`J`cCIp6lzvh)=3n~)Xk5qtfH2d4B#jOB1rG; zEq4qq%g$DB2tYe6+3Vip=%FaIJRRqvp1R4ot%7_!tpF~DFJ*>+S1`iW; zYcbXV1{4*+#qfZ#*=8oSOCt7ZC+1%vVP+{cKrGWHRI^P!MUy{L|1V`$!Skrv9U z=F^#zc%xyX@`m@zdFNH%4ZZ5z>ZTlLO5ejDJDfz?+>rv9yg;zb4o7~tH%lcjcyJlK za(a8Y?yWHe_PG2o;5{?AKR>2KusTf?fPVX(5mO}j(h1iyE6|<0Hcw5+zVOo2Q3YMT z+sYFz?zi!;F86EApYS159Vr8*_Cp?QO(ZIclwIslah+km`?%PdfB*ijq&Xv|4HK=Z zqE)EJr!fpN>YmpMmYm52CcFf5u`2pRNkXa7r_S;tBEHJ=;qK6tpX#u7%cD>jirn;S z|Ja-v3Vym#!!k?V?+Jo7a6Mme@O^Wy&xFg$%GUKAAruDHd|Mp?hN$-g+--PdQCn%I z(vkrbeAesNVY!>}ylUU5s zdG*Ne9bJ#61VpPt)g%dXO|>C;u;(CT9O+Snbjfd7*2YKHZ{c_ND9g%RnkifsoD4b0 zw%|fNG8*|N-Hpwml>wFMSmUO2>j3_VoOeUiOT-gm50%9J|&_s+(|1LYVCP(5SHNq ze6GPne!i!_J72`7A zpB%bQ7?WAI!aTpGieg?o-jC48ely5U{mrT$sH&LHhVD`g#kQoZ`dnkSkRS8@fNm z+5j5`*v-r)J^G0Rapdhd|2^|B`846?gxX0Uq*PeV#tRA#j`iX8bz8+q>$zc3>dqV4 zBLro7MFoR2aaiVGMEzP5Oknb%P_9;KWk(PzIJc)vh|O3Jg>5 z5k@KYnHV=DV{h;zFBJGGqQh9QJoB4EEon3QT4uSS~4M<*iZw{a~gX6J{wft64wB(BYe+*Qv#^my*sHv*Lt*5 z9Z!YvPcAR0_F(Ga+gobA0$s+!G*cscrq7m7eM|X;C4?&3$XoecS4xzz+o$-fvCd0| z=;mLuI=VdA3i(s9V$twP1wwgcy8JJ7FmeTKse4wu+f6*G7xoM2Wb z&y3rT4^&>dBzcS*bNZ?iH1ReA+Dv7$*g^x=6qRzs{zR8HWek|{@$npXDzD2}}2JWu`V)4sDPrE@uczHNqzg-WlcdpSTXH>VGS$x_aq;fd`e9w;slPxM63o`(W0k zu0t(;eeFitsvlca7|1BVr0aYhWf~?qEG_S5k!585vKGZJB{i%;&-8xO?iuv?^`LkY z(!4M=BooW{x%Wd{v#pP3$xxy%9HsLb?z5kV>b}5_k!xeJN7l%LIliu#X*j>vx)*XB z*ljhOGWh$V)Y=adGL_-Bv(eQE*5bKv^^L#E~6OpQSJ^<&BfV9^yP!05r>y@XYmaeq$%asT|0k&*T}<6X&rjkef-{``SS`}=r#epsyVzv1z#Mx%I@dVF%A1rd+hvIhriFbDl3{S;k1r-BAguTd;IW+9;8d~P=w&O|wfYTmCSy&f zDzbA4#Dj%{r!jYm|KJxkpr9pS2~PZ8^~Aupv9&c*kQ3s7YS%wZvUMGp|O>S#xeSFP1h{YEYBsndaPY3rb9PHk~hn!&!YG`8nN zmQkgzv{@)RL^o7dq}v@J5`lJZZD&S2bt7Ls7yD_y2N3||A~jvtoY-v&lFkOcZ*f{~ z!MM_qgqh@SF7vNKf~&A50WW^hrGWPAha4pxY)~yOCkH?D!v_&8g)SoP>B;x$ z)2F*Pqb56?l$4aay`se|V1C6_M&MHhAe3D{pVk1M_dsi{MX^hw>;#nta|8F z-8YC=v(?ij8mt(5UPESebCCUHod3jR1}1&q+$0(Kky{|*8b5S*Y<5h#P9ul z`O`F3QpFu|SWsRbHY}6s9*cMJgtk=KkqVoO{J8V>P zZU}7l?2=_&PHj7&0ECI@^5*n}x?rwYW0LN9q%5v=6?k*p<3- z)J;juuIUP<=Catun8SGB(M;*LVbQAW=i(sLRH%%>Xjf!lq!>u~;($Pvg5xqffIa1S z7^Fit|3wah7*VEZrK}>BAM%u<2qUGBfj*l#otoX-YImGcufj5%!bM(E4@I_6O4$Vng`Vb>C4kD7Zcv-!T3+J3Unv+9YRtZs+DaWRd@lz(f*p7r6 zt0cTU?CGTUPBy0kC|!KVEA)|7x+K(E5(-6ysB+-@4ncehBp9)=_X|c92F`*hkv0X0 zECESY5*VGWjWEq$g|LvB5Xc-g#_en<9x)dgjdG<%q=p&M>4NK~_VtSk98r<0ysl)U zWCiu2m2)+uIzwuM4HZ9Fy&blcR^2G_GZ)?4T~w|38mtXy6cI4C93#x`+oJCLOuM&_ z!dOv{*Efw*Q-?c;NtMm%kCG9h*dP6QwdWvVj?!jO{cT`AcF9d}0$@yXb8~IV89+$x z#mc{r)}x1aLrvuY4q8vC&0q-MRg%8+lDG>y6$>eExUh9NuZ)%+C2#h=G6&zU)g5>y@7Y+HoT`pGqMj%zZ>f6~zdBCOPyUI0GAoyPc=Qe}UNE}Ad6^yXDL6?O9 zX(BCSL=7wit&>Bm4b9Z;In`HKL=rKdDZ}d|`)?(6YCGrwFW8SmS2Z6GAHReG&gk~` z?y@AAaB`Qw3|X6GCutylB~CA+3fM&8r@kpKPe+7Do+`X zBq^ynodyvnMO|stWH8V|;hY$Wpr+pY@GCUvvy=dgWt5N%KJ@vhcCNo!Dp3(;IVGw- zU+W#Fk7#>3^A0Fj#@=vgbjqa?}ZR}FZ30%3^y=_;a^zDG?GH4cw0MKZ_ zEdqdHKozS#4N;_##9J7J_#Na9=!S7|aRzQPGJxE;on!9j_ZoV7;Z5rA@2~vn6QJ5t35qE zwsC=4MWvQiZj&&Tm&erAP{9QQ)3^9R*FP8z5L4$Ugn1_5A z%sTuDMhDugU-wqb4c(4uu#`$Ue*FDO<6^Q4=Fj6yRUBlz{bC*~!4PLn2@?x7o5@{j zhWM2`2#jfMYnLgf`6A4)XZ7!4rA`SnIrx6L+z`QzvRr2l4>S~j3iSLWlHQg3l}jQnkY^+k(rrJl(0v)22pW&e>QH0j2-q* z5d8$3@Lp$Ic`Z-F2||)9#>yhh*6s2W09Z20#V=hiJ)U)i`_HG2djRTA9kX1l(jUG* zU!Bq8VrTD}EmZ=(;Ra@EpRb-;mp3(~iTK{v{-;^V%Hk6fm$bC-DbBMPj$U1{r=-X| zo6d!C-mGT-$YH$-3v7!adz&VCG=lo+bYvp7Jakm;x3!91?{KUb3tnzB=R+DEiaQ0g zFd2LF0jWw=C42b(ewjY@5XwPKRlf+wjW;Zon+|#xZmiCqs5s}_3|EzTgnJ zvaZMNO|SjyQzk33C~f$fU>LP5q3wFJyft7Sq8Vs}mZDU6bdHLj<%e5vb2Be-yaB~? zXMW`Fm;Qly>cubhnX-LmXamKi6iSk%tuAwdi;jw;*i(N-xoSw4Ep)5qrK~zB#KYl)Pc3VwEvYxw5t%Z+Nes zQ|f`CJv-4=`)>#M70L6*c0m?gsE&-=cCv@c1%|uW-m~qJN95J8Q!Tnot!lf{9HIm= z1$Z7UMUgjWH>(W4_XN-(ZqcMMC-$LJb~*??GoKGp5FecmAH$7K1`FJv{%e1Ge4BrP z9~#VH_-r&EH8d?G9PEV(QtWHng6s6t&KR)B(yulQQ4R9@hSf-`<6=WoV#WbN+pVz6 zzy3=ma5w(JhOpY7fNmXKAHgSH0-;HJ_^382}G?j=jP!p{=-jH-HB7B z=y#F;H_#><@Y2%dHSlb>l8)1Dm-sSSSKAa+BJNrSX>6McqYGPeF7O?pQXhCPTust; z>$PJ5%AaZVfl~2iWwPIk)#5EWMlE!23^o-EsEP_Uej7n4!TEb5A;SkSKP_+5G~CS> z^pt>W3ty8j-hO%uD3y(i7Muiq?3F^m@KWGIeX<5I>@Hn8de6q5s|+qYww1Zq%l+uS zyhvKmOyR~=(n>WO|AH1h41a^UbCl#Di#52zp{+K-|CF2HrwjSIv-y^rnr1pTs=YTB z?+ja}u^k58(P{>E3I7cVQ2_^WZDSIw8VViJm5zw_T#pQnpc zu<3H9UPP}TA^B?`AXFG|S&T3Q1|}mvH)b2n#gM} z*;^w2A<+E~>6so931OEz-y3-_pTY8_{*l=S2Ip*I#-9K=TtrC1yYAa?;0&sLg zUUzZljXd02&F6is-|ee)hwpR@<2kY-$O55$qhub)g5syc2bvBHFI!=0aPdBS?WCQj zM%I~MVo;^Xu&&o4B_(PxhvBkGS`Z(;B@FN0c`qy$7_f2)3mZ(GJlx*S+c($?3r$Q+ z*p!~i-v9fDFM&avQtNdu`rM_;mPfxdonQU#Ddf4jHboa|n1{OLdwz)SLx zi)2SRr3ts@6z%EXPW5}S-`vYx4tu?m3xLdMl&_H9qQf7JP(RqDu0tzX2^tnq8bOq> zDbOh5NhjY{O#OqUdCnnv-x4_ZJmP;{P3A4ObaLjr88Q-uIBLFYkxby@;}c1R0i&#{ zn)2Y2a&09*r#41$8cHz`M7fWn%L{8 z46`Hrs~#6aQNeE5a5COg6u6U)#Ui=ne4<#eudzi%(6|qcTQIndJg#0gsp14fRz(GC zTheGrw(Wu)wdx<$R8SDvn;q(m0Rnb3RZ>~L2bhnLcvXgkz3=v!?=PgVTUo2s)si2@ zCA&>6oATpN!r&@7c9om)H&r!Gn(Bb5g;0bL|9-C>@cYLzWU@rE(Ec|Cc-#B#E8KVl zL|aD(Gj((5Os(Xq)lG4b@Y5(!WE1n*$$+GnZhD z!EmB)d+)>fke2u)dD09MuTST9B^HH0gjSp<_5qH1r!3pCFFgIw*elOVcycmV2=YI( zhS&3PdE4Eh{&Iu$6lN(2&^p!RCuuPb4h+Bm+`!#;8=!}VM@9!PbEi{F z-WfCQOwcXDoN|N|333%pGvlWN8E(_ZeM(G9e0K~~f^6)*S?4ST)gZO9Tg<=*N)lG? zFVqCQN4~wVeVm&oCk%QY^hhukRVc?|v*{cKQd4f~-O{rIJu559 z3nBgZ=`Ji;!^9lQT!#{nWEXL;LJ}JjBS-$FXh&L76lI&h;=0f(T2gbH5ARxX&k3zT z6J3MGp(xIIn7}kr0#;B7f_xBX!Q4WI)%Dq=4pAtQvvw3KEnaYR`hu4Iq%{?UU7*-k z7+?Z`L#&#mx}tepJY});*DO$gg;oqS;)(426V{<*4!xvVfp88l3}X~My82;Wh=c(w zW*Aktl({yFbFejei3{3+y}E26tnfKzDAK<6>BBFWME+0oK%|^p%ja{=wPxl&t@-;L z=0z*al^)xHCwiGCw2gu$bcCTtdMx^^?+lHs1?w|M5uq^D2Bni0mmL`U2J>^->^rLL zgh@v{^@>Yea7iMTV3J2l81VwoXHd{0d9Y03Am(`_%?0CM#8!U0rg2mJWM$gZjL%gh z{{VeN0%Lk*MX}AGtgS86PgE6Xz^!5F=;%&+zh_CgYY;dV?BzbcSLS6|nAV9)fHb4{ z;d5%s+YsU4Am|BDM{_~wZ^L3QOV<%(@3kw}Ok~*TVfbWoi^@MkEtIfV?>plWrP_r$ zYIlyvh=&OJZ?6#ezI7&R>G0*hPi&H30PaY1@Q}WqL|cl73{TM~n3`FnkfFKnuIe4R z?7=03IJtr9NL5r3;_7c}Bg9{eW|Ol_85Ik$j7pSZXb`xmg(C@uG?8{us7CM?`_vdG zZAQ)cO9>Qg1(h)w`{}-Y`!Z-hG)c~}y0F_7r<^+BeF&%>tCA||W zAK?$6Ei-2(mK(yh>*on!@DZ2t8RIVO{?GmhrUt9GQsxc|9Mq~@;oHX)8-QL6df?y@ zRs7=H*>$JQ_$Yig3)%Mr(91Kv=|*T%5KdfOT_Ii;>wS@`TCfJ*gc|#*`|kU1LWcld zMUgR!PwjN24BZ=-pFS7H*F$@ASd&nv@eudfp=Co zd-5gnPr}KwYn#FRl5n==!Y^%@v=fq2P@yye(G=I7i??u9ly{Od@r^mZ^_K<@mWNGG zvEAb0nZsC7it9atvyUQ~7<$|o_hDt}_*GOpUMO-TGvX)+e)Ve`-cc=vFy7~%4}K~z z-^F=zDRB2Bh+}+kgYgcxg8D;weKx>#&Wkk$;f`42_6}w)F2u;(ynGy@nb5+tWmX8% zu3Ks#@h_bwn1!eWq$HHJeZjCXl&g)+n|U<1Qc&l$E0~Yz(P&PxwT#jPaiM7HXkUB( zMZN?vV)gt&SXR52#NrKaP9zUE2G8UbfNS|Br!-tF83PcfNUC1qLekv`+31T6{zk{7 ztJMOYZAuNfI)9Ygd*{_SzCwq;zx9o2=B9(aNV(dCf9tSXKdo3@1l~H279El0i|3eu zgTo?G2?&U2Y9&=4cBl@F<>td6;n7Hco&rPCc{S*9y>{02CjaUPc>Tij{XC z^}-Qb-g>z){DY6Jm*sM8V1Azdx6U^cGZ(0G#@h!{Nut5dW{>cQYlqHP*;IuT6*#~9 zn)fiTq9{dyu>0hJUC}tynJ1=L&OeJyB3}WQ%kgk+FZ6i z)Vjv|)s360icWQ=%I!AkV5JV()MshcN40vS(#qO6jB|1cNC@W*P-82ng+*VhNAWTa zcwdbi@(btCsfor@e?!|l{(=m#=CyzXK1UI`Y0$;lo%+}bRCi`TAuZGmkC^;wd{0zk zL@W5iN-Sr4?4=-re-)B?i%{+}03PbU$cW)oM~I1Ej| z!MxP;$qF=TW+PTukqTE~HIAi~IPh@Nxyl$PWFJp>(%zc*pvd8ai6x9yYU9UQz8UW8 zA*PzbCNgId2(g=)4|Hcq{P`S)Fir(PP?uAls;w=@-b8-dRqd7vcEJXoYB%F|x7ozT z@G>o`JpQa~PJEiwXiN*%q*%!KCMI0dw1Ydt7bmpE8r|4djAD>VXcJR927N-6(7lPs zgi?oxDa>NEZm6>wLs}gpwK20MYpS=Ls%$jlBzDB`yn$lv=NtT(!Jk@;k6p&rz0JI% zXDBErCb2*sWnp<5okURUl2nb$&Ajd(qP~+L&VHI34w_f}bz2y+#r^>Gr+rFTbrd0` z8cx5T+{O4_Tw7*ZO;qwtEPLt%Kfd(ViM?hfFhcOubxeayZ?45Cc1pn)XcpgIWAyaB|cWkuxyz@tljPfB7PIRZOYd_1;uN z46gWid+8?cBBfrRiPuQvX$CPnrhO)D3;cm^)p8>@z4~7`UYP5BZ(8#6{FTy9U_v zT+s=BjAhj9O<#QFwnzpXV!Pq1-?r=I@~PA~JWwXs1^N4!Lf&Fyktc5I{myg(QB@`1 z&jR1kWo3cz)Y$ZDesLXx3e7gviW4|`5aiHf@8}@s&5>SX04b}2ANy0pv1-0B{f-TI z02V#d(`s*TtZ9lMB-rqX2(Uj{l{*Y_jg^OLxL1n->)ghMN`+PtfZI4ZB~?|?2hHlx z>f9$yb4%;$k{oye3o^e_I`ej(??qu%6|fm2NRY{sGqa?$Gz@TYFIIl(2MQ)a@Yc^s znFe=YQo;wFN9QZ$4ee+NbfiFti{xr2?hul{`qq^8x&{esYg){0nRCI{Fz>i? zFJ5YiSc?(P_aV}u!@)0IrXt-BMBTD6yuf;$dHa8{#N^RGCxAXm^`PVi&%ftkAGDkSvbAs=IV(F~y zO8qUERq_3 zGI=OlO;TZC_pk*Zlu3c1p`mzSr5Y|pnS^-=XUF{oWv+5E8w|5?SM)(?4A{Sa4Dg9? zF;Zrtv3&iMqON4X5=td7Cp?Lzedz46M9Z?%qz zMaC8r=}bSpD3q31sk9*b|Ag@G+gv(8vl!e=+Ose2*1eF)HXi)){M!385sK5ocHJB3lw(!zTwiAAN~;u^|o1~drLA}@((qIKHB9!JUii61KWK_fEGrc zJ;A9-U;nxjV{6z&T*|G#>6I1?ZhM(2ze?N5T{0S;AHY}i=H_j2nhHVRjWxC5j*$O5 z8@3+GYf(^>5nnwi&xe8*94a>+*bKUc1<1H7znW?)Ak?TJB?Ubte1igT!*XQ)jc7N< zt?ZJkEP9QRUss#eE41+O@x|>YfQIIzlL7dhuC6X0g=K?gwFwS9s2wnOrdH0(j58J( z&g1fe%GfK~f^mqbMrF3aiF6$~rG#kq%*&iD%8RbFQ%*Q<|Kn}_5Dd(Ovo*J|A&l8C zYW4`OjlGxf&B{#56c}!q57?Mrcp;5%|Lg_`>WGa8D`R}pIS}3Nr&x9qF}`SO_dCL_ z^oot+u_}p3QnI9-a&g2skDQn;gCzc!hfdTOP)zhQ1*kN_(Ht@A(fpzTT|Iy25;XA% z3k#C{jt;Wry}a+q{*4`#>|c$s-SpYluxI8MC5IEhlo#JOjn1W34ifN`QyDD$S`Ss@ag=4_%P?WjRyhul~=&bi4F{wtY*eDUQmHd)T?Sz$9t zeYnNW&4eU46Kytd7}kW+yT37%B0o3$Gf?Hib`!3U$1M*2TUQW_9p-_d#}@4xRlOLf z!#-Jncq%eJ6-MojMsncHD)lo3L=!&8km?%ArCo5{mI8uJ1$`f)U#d)@w?r@?q%vtF z*XYH-zz{p#Wg@xzUbAJYCH%`njnG;nRbF#3JbE;b8*1=~vlR&+hl0=m&HK?5O_w@1OfauxDfWopva~?@$)0S`>ccbV|J^z;|yZ0C^t<hLov+frR@zRa)7P`bSy(}~98 zY2lNQ3{6=$DPlhp^2jw)=w|>79?MWZ*LU3+MFYrW>(MQF3H;wgaOv zN}E_putArU^O*p_4sdLpg7QR~9DK`B0&%x*oA<6OZgc+;b%)k7!Q zZP|U3Rz)2wXo7^K!~J=UIxlaXEBzC{>coJpp~0R9w08U#5E&Lu7Jkb}|J`??FFnbD za1{9%!iR%{1I9Z70u*hEK#`ORs=EgzyskFEg1+9Wt?g*7{UvGHH4ZJZ47cdMNtWlD z2R4}7g!|+13H~wD_?bG>t&uvT(l`uH3B!>Id~&M39LmAY%cH>XQ>{5To!$vAuLm#x z?S1L*doVdUO25G7M{jSh;4yG9{DN1tgR!Bb0`fJ0|D#TqI!V6PVVU#(VqFOX#yzsC zDZRH>f|iah;pZGF0YM?)4FQlCP=*1SEjBjxKah?AW8gAE140V(*>YjkFHobOpFsmC z!cwJ-dcdwYy3YxyVt3yU05`~KPy*q|D!{@44s}4EOHwRV;eR&}bS~4CwoTZ4aqRBZ z^xWvTWF11yMYeIYqj19U3r)9(g%cantp;LViaVIUraoVlN-EKYSZN$K=GG!GN*&Mco zo(z|n4u@C#j^;}X2RG0uv8?@P;N~jq_XowuL=Ord@MpFFyaQztf7KfqDJfurPbe&; z(5TSL?EqqUz=+OLA15HIcsg+6vAAJVb^5%o>$$8C4Y9bwDA!l9&nJwUH_L43!_lRF z_OC8`1KJlM#uCUn4rOUGA*K%7``%*;{sr*!L@{}7d|{o!07JW=&s7}&xMt=Sf*iS1 zQg&0LabgdtR5*kns|KV5&^71wS8bN?LCi`{S3x`~RpxACyM0zCN_NU71A^O2VV9Xch{l&`IHuMYP7!IpZU9gf) zrKA~$kqmofOH%f`7`ha+i;bNcO*4Buk7-W2 zEv7xAzweSMS*O+ni5evx4cL2l9XAXdYtYmghN}%bekKiGthS(kZ?a!n3=tnRO9Emu zOM&Gc@IdGoP$A>-1J75QV&g8v38Z+lO}(7RB@_5DtPvPV!Me#(@UmV{`#O)A`EL^S z%V@k`^`enAU;8&dsQN<$4w~G}40F`TF+RB}rK>Tgv5UXJF{P&;$eKLbG*Sps66H~e z1K#z}Jc?teTD0FhGUr^obO>+!jE&R-ST$NUPLNW=;@qTTPcPGKuUH??f$zZ@MUpEq zh0ZVm!D?v?3?Zq|*Tv@J1E47K0yA#(wLtU?!`U#lKBXyU5y`I#-iVFb zS_lkG=xn&R*X8^lfI;d0?b*h7w4K6#q_!_184IWdia3Yel4X1#x538lIWAr0Es8&_v=5Z_i>wRY^nSx)h` z8@F$a1CuEUeBfPA9Qw}>ll80h7`l{epXvuAL)W~gVzhFm;y1*5VE}EV8&5qe!Edje z3bw+~a5)EOuQzRsnsv_Lk0}9KLf}(JH+4bK=JUDg_SIvRY5>$e!G9ShyMsTT{ATW* z-gBH_!}zfE3Gys!BR>*MK!C++{3RV*p$*G$NDkrDUsjqtKj)y=0>s~Ry1*bAyxkrX znOysFvaNO|T%{Gzzt%FMshfDSmnl4t$nqG2Zf^lafk{d0T!DwcoBbGdJ?F!gym-!n zOT7sGLA)+7R#0?2SN1%ZA87hS`MxOM-ly-KjgFEsxug05ls zj{L0G^CBH;1I%yQVQyIGBLFOu7n#rbILee1#w4t_B_z!H zk(asGvxmUN1uF?ZM@6;fe?_i`*xxV3Z8bNLVv7Zau~ghsr0IN|VeI-L^u+7s>3=>Z zcT`38QirYp*apvtsjFncsd5rHk8EP?GD!7_Z2reeNL#-hB~Xaxw$cbsprpf0tbZ*f zLlt{p;(gGpkf;V7CgpA-^^~sv{)OkW_eW4iLI=t3v|lV{$mvBakRWz2%-csa;DW4aD<#!X@}UcQO4idFBPVm&6T0vRr{Sj2gFVKor>{Dqu zvAut)$-U7#xUYizm8F>@PknM|Z11mlXbjp@lF?YE-qLjjYmiUg^Ih~~IrR%QtD(6* znxZ(9id`43KAkLGSo*z0DuEa2}Auv0|(x{T~qOCu%f7jYQQqZiy~rJNixTOu z%0yV=^6?clS~{;tb;58oI4CRX#O`%2^6Y!Yu4F%2+@Je75l`IY@4tso#jH` zx@%!lMoTq3@Zb+9Hw5^EB^7OmRjB>_{U9qB(2Y0e2)B_d_D(1`%DJqJ7UOhUapvDV zFw6lEb`?vZWbJbho?h$jjN)8@=Ny}tmzT2fL3rZ>boX_-v0lQzu*KYtrZI!)OF_qO z&#kY>t`v~TBcT6rbd^z2u3MOt?(T*mq@}yNK|s0@1nFkz?(XhJKtxjM?v{=b>2BtJ z=l<2@TH~Pa-up=yzx%U%poFv*vlg*CO-mjj=f50+y?=X3?KM z8A%Td9(I6rrauSXlnyq2c<(|1A$fKbJLY^y{u4@7hhNQx&g&#|rnAOYqOlq|ju1wzBvPWOGPLI}qYU z`j-bu;ibXPW#c;~pm%AZ>W)uM&$9cUOJlJF)pB%7hIEoVjs3I5_~BitipjX2T@k_AN~4plG; ziU`V71w4%vX_4#(rD9hS=t)P(&&F!TJv;t!#aJS~ine5;&R^WOfm6{hF6RnIW$f55 z@p%|UZ*<<8RFQOn(lsW>Fs(K;6l8IURUw)RQ9yx1jGO83_Lh-OCT)P9W>hXL#8Uo$TRKz zQ5Vl|X)BZ}vFn?r=xn(SEUn^`>n#NM~^od1k+ zu@=EA{mUy0!TF00!94?q?dmXC$b6{5OqB2m6H<*o71!WOLz`vMo8HWy)K&OFE`}I~ z3%8pVy$vDYjH3Ozv8!J$K zjplk4w2qrJ4>p|!eLReY_~0uXR~Lwug_2knIjxJ{a6Jk}!Km%~DveMGkis_$2yRMz z@WfsiOQHD9uQCWu zlVokx>8mY5=2Fn%KA?7@FieP$TKX0_h4`1H!)RYaOFlh1{y{GC7hZ$Ot~ zk!P8sWg7e*`)(=D9%G3FL9*N0215?~4YDN!B8+)ZG#BCTpI7gi@H_YBsIPwy02r>H z)3T4um+E^EB<1V+ak^2~lw}-t*!tn6(^xVhA{=kZ)sXv9*Fa7`&g2;7B5KQtc9;>R zGT4n-J~$<{lO}v9{mutnJqOoUT*+KF3a$dD$j$vdFb`a&7KIZ5riz-jOso3mjxie{ z4$khSK+iegfXEgHivim7+Dsa|dY`>`e*JFW55On@&YcO8H~>{_{r;UBFlzxw%D;#J zM!e<-em=ewVBYOzj$5OKOLg@<0zInArZ!re$26vcKvVFBCNuYWOqVw&aNIyek7JX{0rv2Qjfea z_+H!+DS2n8OVPvB<<&Sxs5bC9T>s7#gPL~8Ki2jB$B+%l%V!r9RA{j!bL^vpMjD&Ct?;vg|FR%RD9Gec z;t~?L!GT_Fri*N^2eg4C1ik~xTybu?d{EMVlBLwNUv6n_jq#(xlEXQ0e&sa0Ei4V- z73wgAH;XBe_#Y?7R9=J#3cy&1U0Q_{grogE1r+A@a8k`Df0{!N#xq-NmrXFKL?o0y z2?xBsw(_=f@)9P)RLnESRT7^FhiPSuUUD%i(NIuO#3dvGqR-G@oI*lsetyF^p6fW@ z{n_MbldH}Hvd~DV5)CnW0DIDa1=oMNK|m)=#^-1@oIvrPVVYA!1TflGS6BNsH4-9E z+O+69tTxf0TJ+w`DZBmcr8QCddweX9W~JpK^|3@}jHlO9Omi`ze=VtD3NeajVgeL{ zn0Q#BH^fv)OqDxePoEV9$?hj8sN2 zE(mojtI5?UtP&J3aW(u($MXI{5^xP&{s-N3lu8VphoR37yB zxE=SrALrLg?B10WFh893v=npTL{IH!Fka@3)p7pfM#Yj76;dBR!5e-6GKNJZ4ID7hg*?Rapk#dS)5}9-L*{blcr+Wu-WGwXZ}1Z|4ht^rEO7d-~#W8oZOXTz$1m4H0WLWZk-%!fvd+f%-r@+@ zX@?dtf~omcD^w9ks|lEG%g4%kh(N?+zG_EyQehm3Jn>+x@-m{^soO?HGQ_zJga#ct zMjTy|U?!krU*pqeMCgae{Ed1Ji5`yfi7+ab=fDhd`jN13+7rYd+7itbC!z;5;Kn(6i0f(Rev(!%J4$zD zxJ-5HHyIAes5&mz5?-VD0A`TG)abUX&7sRkw+X zEZ%P!DhuUT=(FuUizzYx=OcbW1tc;`A8OLkG?!)k<$-YFP;5K4juMl5-~5sL>swVl z81Oe1P6MX#sNp?;Se^Ov$B3z*-eY~l3Xsq<#0*-zzAR43)YD7L*nR#iL_;;{NZ|DgoH$rdGPy3wT4#&o&NW<<;@jI z#?&F*ahR4>UJ4518w|`MM8g&XU-5dB5?0a=~!CfxctTZhrz*FyF6a6rYzM#2bt`HxSW54!vyS(js{2u7ted% zeGMDijWvgS&!?xCgYL{m?N6hOa!#rLd83L(;sOM;afFk<0+24-hI{=lmF0V&a6FH+ zq1{LZz|sBvd`(g)H38QLIomNKVG0xTUJldMPn%8~FBSib0^{Pq%nXcietukhB4=+~ z{HAmOFb?PE=8%Uh-Tk?9pj_D01y{&MQTi9Eah%9@PIeWz5gr!v7R@7P8=Z-E=laz; z|0!O?vJ7WFGRs<8(!u2NJ6C9cWI%}q!PV^rr3rUz8ygh#xGo`_F!=S?pHRxB*meL* zM+ttKoxM}J4m6Y&_t_SjyY<+% zwVzS=hPb=$^U%k=(41121jAUfg}#2*;oTBlRx73N*@BOn~m z!Pv{`v%%Er?b`(-{fgi)Kxr>j3qYCZG$+B7c&PuKJKW5keEj(js|PYGrKQk%eKxJm zwq4>BwXDJ~6@mo6bgN03l$dwdlHwVnm_tqLRdvP|j`ye2WnO>Wa;=uDSIG~gpt5GU z7IkeYZms|Er zV)fgd-q(J7PggKvCc8*M9i+?3VZKX5x)V{n2e5bDy z%Nj%g(|@ZKE>+wIB-tK=m!e1@u5UCfuu)6(`1P9Utbnr^U}+4Q+;SaWNdHv>aRq=% zd-X`SR*y?mbP^z<6zOqq4R1Qinyb^N-*zhP9qa~n1oVkZ%EDv5w|aQaF11Bf%Y-nr zZ%u`k!nb}|RRE81X7Rc^t_~D#fjOF$mpLibah*@8xtuA@(c#p&C?}}Hto#cjdp$VP z67#FI*XXjR7Wnd182bS+16_Z=)wgVbVf-2ueTgC!O+EE!RM7J#=3h!em0Kjh^ZVTY zg$M*0Ru~eEThdjyZuZzYxpn^Xr9M*$K~h3lSy{Bjkc|)}q=*uxu9)Mq$I6GQ+Y{>F z)|tjbll)r~z&@UbkTl$mR<;?qkktV&ddorydBF`tlR8cj1&F|ja4t=fICX|tmZJFd zj5R+?ve?4UKV3?b%8;%AScK7}fnz1#I3FDYvv`n;PXx{`

@4am8UI&aVBDVk0cA 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[hc-gf)$T=kMY%k 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 diff --git a/buildWorkers.mjs b/buildWorkers.mjs index cf39f8867..ecee79789 100644 --- a/buildWorkers.mjs +++ b/buildWorkers.mjs @@ -27,13 +27,10 @@ const result = await (watch ? context : build)({ assert: 'assert', dns: './src/dns.js' }, - inject: [ - './src/shims.js' - ], plugins: [ { name: 'writeOutput', - setup(build) { + setup (build) { build.onEnd(({ outputFiles }) => { for (const file of outputFiles) { for (const dir of ['prismarine-viewer/public', 'dist']) { diff --git a/docs-assets/handled-packets.md b/docs-assets/handled-packets.md new file mode 100644 index 000000000..0671987cd --- /dev/null +++ b/docs-assets/handled-packets.md @@ -0,0 +1,169 @@ +# Handled Packets + +## Server -> Client + +❌ statistics +❌ advancements +❌ face_player +❌ nbt_query_response +❌ chat_suggestions +❌ trade_list +❌ vehicle_move +❌ open_book +❌ craft_recipe_response +❌ end_combat_event +❌ enter_combat_event +❌ unlock_recipes +❌ camera +❌ update_view_position +❌ update_view_distance +❌ entity_sound_effect +❌ stop_sound +❌ feature_flags +❌ select_advancement_tab +❌ declare_recipes +❌ tags +❌ acknowledge_player_digging +❌ initialize_world_border +❌ world_border_center +❌ world_border_lerp_size +❌ world_border_size +❌ world_border_warning_delay +❌ world_border_warning_reach +❌ simulation_distance +❌ chunk_biomes +❌ damage_event +❌ hurt_animation +✅ spawn_entity +✅ spawn_entity_experience_orb +✅ named_entity_spawn +✅ animation +✅ block_break_animation +✅ tile_entity_data +✅ block_action +✅ block_change +✅ boss_bar +✅ difficulty +✅ tab_complete +✅ declare_commands +✅ multi_block_change +✅ close_window +✅ open_window +✅ window_items +✅ craft_progress_bar +✅ set_slot +✅ set_cooldown +✅ custom_payload +✅ hide_message +✅ kick_disconnect +✅ profileless_chat +✅ entity_status +✅ explosion +✅ unload_chunk +✅ game_state_change +✅ open_horse_window +✅ keep_alive +✅ map_chunk +✅ world_event +✅ world_particles +✅ update_light +✅ login +✅ map +✅ rel_entity_move +✅ entity_move_look +✅ entity_look +✅ open_sign_entity +✅ abilities +✅ player_chat +✅ death_combat_event +✅ player_remove +✅ player_info +✅ position +✅ entity_destroy +✅ remove_entity_effect +✅ resource_pack_send +✅ respawn +✅ entity_head_rotation +✅ held_item_slot +✅ scoreboard_display_objective +✅ entity_metadata +✅ attach_entity +✅ entity_velocity +✅ entity_equipment +✅ experience +✅ update_health +✅ scoreboard_objective +✅ set_passengers +✅ teams +✅ scoreboard_score +✅ spawn_position +✅ update_time +✅ sound_effect +✅ system_chat +✅ playerlist_header +✅ collect +✅ entity_teleport +✅ entity_update_attributes +✅ entity_effect +✅ server_data +✅ clear_titles +✅ action_bar +✅ ping +✅ set_title_subtitle +✅ set_title_text +✅ set_title_time +✅ packet + +## Client -> Server + +❌ query_block_nbt +❌ set_difficulty +❌ query_entity_nbt +❌ pick_item +❌ set_beacon_effect +❌ update_command_block_minecart +❌ update_structure_block +❌ generate_structure +❌ lock_difficulty +❌ craft_recipe_request +❌ displayed_recipe +❌ recipe_book +❌ update_jigsaw_block +❌ spectate +❌ advancement_tab +✅ teleport_confirm +✅ chat_command +✅ chat_message +✅ message_acknowledgement +✅ edit_book +✅ name_item +✅ select_trade +✅ update_command_block +✅ tab_complete +✅ client_command +✅ settings +✅ enchant_item +✅ window_click +✅ close_window +✅ custom_payload +✅ use_entity +✅ keep_alive +✅ position +✅ position_look +✅ look +✅ flying +✅ vehicle_move +✅ steer_boat +✅ abilities +✅ block_dig +✅ entity_action +✅ steer_vehicle +✅ resource_pack_receive +✅ held_item_slot +✅ set_creative_slot +✅ update_sign +✅ arm_animation +✅ block_place +✅ use_item +✅ pong +✅ chat_session_update diff --git a/esbuild.mjs b/esbuild.mjs deleted file mode 100644 index e7a964b87..000000000 --- a/esbuild.mjs +++ /dev/null @@ -1,140 +0,0 @@ -//@ts-check -import * as esbuild from 'esbuild' -import fs from 'fs' -// import htmlPlugin from '@chialab/esbuild-plugin-html' -import server from './server.js' -import { clients, plugins, startWatchingHmr } from './scripts/esbuildPlugins.mjs' -import { generateSW } from 'workbox-build' -import { getSwAdditionalEntries } from './scripts/build.js' -import { build } from 'esbuild' - -//@ts-ignore -try { await import('./localSettings.mjs') } catch { } - -const entrypoint = 'index.ts' - -fs.writeFileSync('dist/index.html', fs.readFileSync('index.html', 'utf8').replace('', ``), 'utf8') - -const watch = process.argv.includes('--watch') || process.argv.includes('-w') -const prod = process.argv.includes('--prod') -if (prod) process.env.PROD = 'true' -const dev = !prod - -const banner = [ - 'window.global = globalThis;', -] - -const buildingVersion = new Date().toISOString().split(':')[0] - -/** @type {import('esbuild').BuildOptions} */ -const buildOptions = { - bundle: true, - entryPoints: [`src/${entrypoint}`], - target: ['es2020'], - jsx: 'automatic', - jsxDev: dev, - // logLevel: 'debug', - logLevel: 'info', - platform: 'browser', - sourcemap: prod ? true : 'linked', - outdir: 'dist', - mainFields: [ - 'browser', 'module', 'main' - ], - keepNames: true, - banner: { - // using \n breaks sourcemaps! - js: banner.join(';'), - }, - external: [ - 'sharp' - ], - alias: { - events: 'events', // make explicit - buffer: 'buffer', - 'fs': 'browserfs/dist/shims/fs.js', - http: 'http-browserify', - perf_hooks: './src/perf_hooks_replacement.js', - crypto: './src/crypto.js', - stream: 'stream-browserify', - net: 'net-browserify', - assert: 'assert', - dns: './src/dns.js', - 'yggdrasil': './src/yggdrasilReplacement.ts', - // todo write advancedAliases plugin - }, - inject: [ - './src/shims.js' - ], - metafile: true, - plugins, - sourcesContent: !process.argv.includes('--no-sources'), - minify: process.argv.includes('--minify'), - define: { - 'process.env.NODE_ENV': JSON.stringify(dev ? 'development' : 'production'), - 'process.env.BUILD_VERSION': JSON.stringify(!dev ? buildingVersion : 'undefined'), - 'process.env.GITHUB_URL': - JSON.stringify(`https://github.com/${process.env.GITHUB_REPOSITORY || `${process.env.VERCEL_GIT_REPO_OWNER}/${process.env.VERCEL_GIT_REPO_SLUG}`}`), - 'process.env.DEPS_VERSIONS': JSON.stringify({}) - }, - loader: { - // todo use external or resolve issues with duplicating - '.png': 'dataurl', - '.svg': 'dataurl', - '.map': 'empty', - '.vert': 'text', - '.frag': 'text', - '.wgsl': 'text', - '.obj': 'text', - '.woff': 'dataurl', - '.woff2': 'dataurl', - '.ttf': 'dataurl', - }, - write: false, - // todo would be better to enable? - // preserveSymlinks: true, -} - -if (watch) { - const ctx = await esbuild.context(buildOptions) - await ctx.watch() - startWatchingHmr() - server.app.get('/esbuild', (req, res, next) => { - res.writeHead(200, { - 'Content-Type': 'text/event-stream', - 'Cache-Control': 'no-cache', - Connection: 'keep-alive', - }) - - // Send a comment to keep the connection alive - res.write(': ping\n\n') - - // Add the client response to the clients array - clients.push(res) - - // Handle any client disconnection logic - res.on('close', () => { - const index = clients.indexOf(res) - if (index !== -1) { - clients.splice(index, 1) - } - }) - }) -} else { - const result = await build(buildOptions) - // console.log(await esbuild.analyzeMetafile(result.metafile)) - - if (prod) { - fs.writeFileSync('dist/version.txt', buildingVersion, 'utf-8') - - const { count, size, warnings } = await generateSW({ - // dontCacheBustURLsMatching: [new RegExp('...')], - globDirectory: 'dist', - skipWaiting: true, - clientsClaim: true, - additionalManifestEntries: getSwAdditionalEntries(), - globPatterns: [], - swDest: 'dist/service-worker.js', - }) - } -} diff --git a/experiments/texture-render.html b/experiments/texture-render.html deleted file mode 100644 index 25cc984bc..000000000 --- a/experiments/texture-render.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - Document - - - - - - - diff --git a/index.html b/index.html index 62e109cd6..26a2ef96d 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ --> Prismarine Web Client - - + diff --git a/package.json b/package.json index 157be7eac..333da27ec 100644 --- a/package.json +++ b/package.json @@ -3,26 +3,30 @@ "version": "0.0.0-dev", "description": "A minecraft client running in a browser", "scripts": { - "start": "node scripts/build.js copyFilesDev && node scripts/prepareData.mjs && node esbuild.mjs --watch", - "start-watch-script": "nodemon -w esbuild.mjs --watch", - "build": "node scripts/build.js copyFiles && node scripts/prepareData.mjs -f && node esbuild.mjs --minify --prod && node buildWorkers.mjs", - "check-build": "tsc && pnpm build", + "dev-rsbuild": "rsbuild dev", + "dev-proxy": "node server.js", + "start": "run-p dev-rsbuild dev-proxy", + "build": "node buildWorkers.mjs && rsbuild build", + "build-analyze": "BUNDLE_ANALYZE=true rsbuild build && node buildWorkers.mjs", + "check-build": "tsx scripts/genShims.ts && tsc && pnpm build", "test:cypress": "cypress run", "test:cypress:perf": "cypress run --spec cypress/e2e/perf.spec.ts --browser edge", "test-unit": "vitest", "test:e2e": "start-test http-get://localhost:8080 test:cypress", - "prod-start": "node server.js", - "postinstall": "node scripts/gen-texturepack-files.mjs && tsx scripts/optimizeBlockCollisions.ts", + "prod-start": "node server.js --prod", + "postinstall": "tsx scripts/optimizeBlockCollisions.ts && pnpm build-mesher", "test-mc-server": "tsx cypress/minecraft-server.mjs", "lint": "eslint \"{src,cypress}/**/*.{ts,js,jsx,tsx}\"", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build && node scripts/build.js moveStorybookFiles", "start-experiments": "vite --config experiments/vite.config.ts --host", "watch-other-workers": "node buildWorkers.mjs -w", - "watch-mesher": "node prismarine-viewer/buildMesherWorker.mjs -w", + "build-mesher": "node prismarine-viewer/buildMesherWorker.mjs", + "watch-mesher": "pnpm build-mesher -w", "run-playground": "run-p watch-mesher watch-other-workers playground-server watch-playground", "run-all": "run-p start run-playground", "playground-server": "live-server --port=9090 prismarine-viewer/public", + "start-watch-script": "nodemon -w rsbuild.config.ts --watch", "watch-playground": "node prismarine-viewer/esbuild.mjs -w" }, "keywords": [ @@ -58,20 +62,19 @@ "classnames": "^2.5.1", "compression": "^1.7.4", "cors": "^2.8.5", - "cypress-plugin-snapshots": "^1.4.4", "debug": "^4.3.4", + "diff-match-patch": "^1.0.5", "eruda": "^3.0.1", "esbuild": "^0.19.3", "esbuild-plugin-polyfill-node": "^0.3.0", "express": "^4.18.2", "filesize": "^10.0.12", - "flying-squid": "npm:@zardoy/flying-squid@^0.0.33", + "flying-squid": "npm:@zardoy/flying-squid@^0.0.34", "fs-extra": "^11.1.1", "google-drive-browserfs": "github:zardoy/browserfs#google-drive", "jszip": "^3.10.1", "lodash-es": "^4.17.21", "math.gl": "^4.0.0", - "minecraft-assets": "^1.12.2", "minecraft-data": "3.65.0", "minecraft-protocol": "github:PrismarineJS/node-minecraft-protocol#master", "mineflayer-item-map-downloader": "github:zardoy/mineflayer-item-map-downloader", @@ -108,11 +111,17 @@ "workbox-build": "^7.0.0" }, "devDependencies": { + "@rsbuild/core": "1.0.1-beta.4", + "@rsbuild/plugin-node-polyfill": "^1.0.3", + "@rsbuild/plugin-type-check": "1.0.1-beta.4", + "@rsbuild/plugin-typed-css-modules": "^1.0.1", + "@rsbuild/plugin-react": "^1.0.1-beta.4", "@storybook/addon-essentials": "^7.4.6", "@storybook/addon-links": "^7.4.6", "@storybook/blocks": "^7.4.6", "@storybook/react": "^7.4.6", "@storybook/react-vite": "^7.4.6", + "@types/diff-match-patch": "^1.0.36", "@types/lodash-es": "^4.17.9", "@types/react-transition-group": "^4.4.7", "@types/stats.js": "^0.17.1", @@ -126,14 +135,15 @@ "constants-browserify": "^1.0.0", "contro-max": "^0.1.8", "crypto-browserify": "^3.12.0", - "cypress": "^10.11.0", "cypress-esbuild-preprocessor": "^1.0.2", "eslint": "^8.50.0", "eslint-config-zardoy": "^0.2.17", "events": "^3.3.0", + "gzip-size": "^7.0.0", "http-browserify": "^1.7.0", "http-server": "^14.1.1", "https-browserify": "^1.0.0", + "mc-assets": "^0.2.5", "minecraft-inventory-gui": "github:zardoy/minecraft-inventory-gui#next", "mineflayer": "github:zardoy/mineflayer", "mineflayer-pathfinder": "^2.4.4", @@ -148,15 +158,18 @@ "stream-browserify": "^3.0.0", "three": "0.154.0", "timers-browserify": "^2.0.12", - "typescript": "5.5.0-beta", + "typescript": "5.5.4", "vitest": "^0.34.6", "yaml": "^2.3.2" }, "optionalDependencies": { + "cypress": "^10.11.0", + "cypress-plugin-snapshots": "^1.4.4", "systeminformation": "^5.21.22" }, "pnpm": { "overrides": { + "buffer": "^6.0.3", "@nxg-org/mineflayer-physics-util": "1.5.8", "three": "0.154.0", "diamond-square": "github:zardoy/diamond-square", @@ -174,7 +187,8 @@ "patchedDependencies": { "minecraft-protocol@1.47.0": "patches/minecraft-protocol@1.47.0.patch", "three@0.154.0": "patches/three@0.154.0.patch", - "pixelarticons@1.8.1": "patches/pixelarticons@1.8.1.patch" + "pixelarticons@1.8.1": "patches/pixelarticons@1.8.1.patch", + "mineflayer-item-map-downloader@1.2.0": "patches/mineflayer-item-map-downloader@1.2.0.patch" } }, "packageManager": "pnpm@9.0.4" diff --git a/package.npm.json b/package.npm.json index 7e13d67b5..4853780f5 100644 --- a/package.npm.json +++ b/package.npm.json @@ -3,7 +3,13 @@ "description": "A Minecraft-like React UI library", "keywords": [ "minecraft", - "minecraft style" + "minecraft style", + "minecraft ui", + "minecraft components", + "minecraft react", + "minecraft library", + "minecraft web", + "minecraft browser" ], "license": "MIT", "sideEffects": false, diff --git a/patches/mineflayer-item-map-downloader@1.2.0.patch b/patches/mineflayer-item-map-downloader@1.2.0.patch new file mode 100644 index 000000000..97813cc1d --- /dev/null +++ b/patches/mineflayer-item-map-downloader@1.2.0.patch @@ -0,0 +1,16 @@ +diff --git a/package.json b/package.json +index 2a7aff75a9f1c7fe4eebb657002e58f4581dad0e..cd3490983353336efeb13f24f0af69c6c1d16444 100644 +--- a/package.json ++++ b/package.json +@@ -9,10 +9,7 @@ + "keywords": [], + "author": "Ic3Tank", + "license": "ISC", +- "dependencies": { +- "mineflayer": "^4.3.0", +- "sharp": "^0.30.6" +- }, ++ "dependencies": {}, + "devDependencies": { + "mineflayer-item-map-downloader": "file:./" + } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f73c8bb21..266b27462 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: + buffer: ^6.0.3 '@nxg-org/mineflayer-physics-util': 1.5.8 three: 0.154.0 diamond-square: github:zardoy/diamond-square @@ -20,6 +21,9 @@ patchedDependencies: minecraft-protocol@1.47.0: hash: 7otpchsbv7hxsuis4rrrwdtbve path: patches/minecraft-protocol@1.47.0.patch + mineflayer-item-map-downloader@1.2.0: + hash: bck55yjvd4wrgz46x7o4vfur5q + path: patches/mineflayer-item-map-downloader@1.2.0.patch pixelarticons@1.8.1: hash: cclg2qo6d4yjs4evj64nr2mbwa path: patches/pixelarticons@1.8.1.patch @@ -91,12 +95,12 @@ importers: cors: specifier: ^2.8.5 version: 2.8.5 - cypress-plugin-snapshots: - specifier: ^1.4.4 - version: 1.4.4(cypress@10.11.0) debug: specifier: ^4.3.4 version: 4.3.4(supports-color@8.1.1) + diff-match-patch: + specifier: ^1.0.5 + version: 1.0.5 eruda: specifier: ^3.0.1 version: 3.0.1 @@ -113,8 +117,8 @@ importers: specifier: ^10.0.12 version: 10.0.12 flying-squid: - specifier: npm:@zardoy/flying-squid@^0.0.33 - version: '@zardoy/flying-squid@0.0.33(encoding@0.1.13)' + specifier: npm:@zardoy/flying-squid@^0.0.34 + version: '@zardoy/flying-squid@0.0.34(encoding@0.1.13)' fs-extra: specifier: ^11.1.1 version: 11.1.1 @@ -130,9 +134,6 @@ importers: math.gl: specifier: ^4.0.0 version: 4.0.1 - minecraft-assets: - specifier: ^1.12.2 - version: 1.12.2 minecraft-data: specifier: 3.65.0 version: 3.65.0 @@ -141,13 +142,13 @@ importers: version: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) mineflayer-item-map-downloader: specifier: github:zardoy/mineflayer-item-map-downloader - version: https://codeload.github.com/zardoy/mineflayer-item-map-downloader/tar.gz/642fd4f7023a98a96da4caf8f993f8e19361a1e7(encoding@0.1.13) + version: https://codeload.github.com/zardoy/mineflayer-item-map-downloader/tar.gz/642fd4f7023a98a96da4caf8f993f8e19361a1e7(patch_hash=bck55yjvd4wrgz46x7o4vfur5q)(encoding@0.1.13) mojangson: specifier: ^2.0.4 version: 2.0.4 net-browserify: specifier: github:zardoy/prismarinejs-net-browserify - version: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/231ef1737a078e8cb51e8c695b48d7b43ce3bc53 + version: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/d3f7f77d8ac751bc171173bba639086c931a62f7 node-gzip: specifier: ^1.1.2 version: 1.1.2 @@ -222,7 +223,7 @@ importers: version: 1.0.37 use-typed-event-listener: specifier: ^4.0.2 - version: 4.0.2(react@18.2.0)(typescript@5.5.0-beta) + version: 4.0.2(react@18.2.0)(typescript@5.5.4) valtio: specifier: ^1.11.1 version: 1.11.2(@types/react@18.2.20)(react@18.2.0) @@ -236,10 +237,31 @@ importers: specifier: ^7.0.0 version: 7.0.0(@types/babel__core@7.20.2) optionalDependencies: + cypress: + specifier: ^10.11.0 + version: 10.11.0 + cypress-plugin-snapshots: + specifier: ^1.4.4 + version: 1.4.4(cypress@10.11.0) systeminformation: specifier: ^5.21.22 version: 5.21.24 devDependencies: + '@rsbuild/core': + specifier: 1.0.1-beta.4 + version: 1.0.1-beta.4 + '@rsbuild/plugin-node-polyfill': + specifier: ^1.0.3 + version: 1.0.3(@rsbuild/core@1.0.1-beta.4) + '@rsbuild/plugin-react': + specifier: ^1.0.1-beta.4 + version: 1.0.1-beta.4(@rsbuild/core@1.0.1-beta.4) + '@rsbuild/plugin-type-check': + specifier: 1.0.1-beta.4 + version: 1.0.1-beta.4(@rsbuild/core@1.0.1-beta.4)(esbuild@0.19.3)(typescript@5.5.4) + '@rsbuild/plugin-typed-css-modules': + specifier: ^1.0.1 + version: 1.0.1(@rsbuild/core@1.0.1-beta.4) '@storybook/addon-essentials': specifier: ^7.4.6 version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -251,10 +273,13 @@ importers: version: 7.4.6(@types/react-dom@18.2.7)(@types/react@18.2.20)(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/react': specifier: ^7.4.6 - version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.0-beta) + version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.4) '@storybook/react-vite': specifier: ^7.4.6 - version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) + version: 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3)) + '@types/diff-match-patch': + specifier: ^1.0.36 + version: 1.0.36 '@types/lodash-es': specifier: ^4.17.9 version: 4.17.9 @@ -290,13 +315,10 @@ importers: version: 1.0.0 contro-max: specifier: ^0.1.8 - version: 0.1.8(typescript@5.5.0-beta) + version: 0.1.8(typescript@5.5.4) crypto-browserify: specifier: ^3.12.0 version: 3.12.0 - cypress: - specifier: ^10.11.0 - version: 10.11.0 cypress-esbuild-preprocessor: specifier: ^1.0.2 version: 1.0.2 @@ -305,10 +327,13 @@ importers: version: 8.50.0 eslint-config-zardoy: specifier: ^0.2.17 - version: 0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.5.0-beta) + version: 0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.5.4) events: specifier: ^3.3.0 version: 3.3.0 + gzip-size: + specifier: ^7.0.0 + version: 7.0.0 http-browserify: specifier: ^1.7.0 version: 1.7.0 @@ -318,12 +343,15 @@ importers: https-browserify: specifier: ^1.0.0 version: 1.0.0 + mc-assets: + specifier: ^0.2.5 + version: 0.2.5 minecraft-inventory-gui: specifier: github:zardoy/minecraft-inventory-gui#next version: https://codeload.github.com/zardoy/minecraft-inventory-gui/tar.gz/c50afc54e39817f7e4d313ce0f6fdaad71e7e4f4(@types/react@18.2.20)(react@18.2.0) mineflayer: specifier: github:zardoy/mineflayer - version: https://codeload.github.com/zardoy/mineflayer/tar.gz/dddc683544317f117172077a9245a07be1b12479(encoding@0.1.13) + version: https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321(encoding@0.1.13) mineflayer-pathfinder: specifier: ^2.4.4 version: 2.4.4 @@ -361,11 +389,11 @@ importers: specifier: ^2.0.12 version: 2.0.12 typescript: - specifier: 5.5.0-beta - version: 5.5.0-beta + specifier: 5.5.4 + version: 5.5.4 vitest: specifier: ^0.34.6 - version: 0.34.6(terser@5.19.2) + version: 0.34.6(terser@5.31.3) yaml: specifier: ^2.3.2 version: 2.3.2 @@ -381,9 +409,6 @@ importers: buffer: specifier: ^6.0.3 version: 6.0.3 - canvas: - specifier: ^2.11.2 - version: 2.11.2(encoding@0.1.13) filesize: specifier: ^10.0.12 version: 10.0.12 @@ -396,9 +421,6 @@ importers: live-server: specifier: ^1.2.2 version: 1.2.2 - looks-same: - specifier: ^8.2.3 - version: 8.2.3 minecraft-wrap: specifier: ^1.3.0 version: 1.5.1(encoding@0.1.13) @@ -407,7 +429,7 @@ importers: version: 1.3.6 prismarine-block: specifier: github:zardoy/prismarine-block#next-era - version: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + version: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chunk: specifier: github:zardoy/prismarine-chunk version: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) @@ -439,6 +461,9 @@ importers: specifier: ^0.1.7 version: 0.1.8 optionalDependencies: + canvas: + specifier: ^2.11.2 + version: 2.11.2(encoding@0.1.13) node-canvas-webgl: specifier: ^0.3.0 version: 0.3.0(encoding@0.1.13) @@ -447,7 +472,7 @@ importers: dependencies: vite: specifier: ^4.4.9 - version: 4.4.10(@types/node@20.11.19)(terser@5.19.2) + version: 4.4.10(@types/node@20.12.8)(terser@5.31.3) packages: @@ -1966,6 +1991,9 @@ packages: '@jridgewell/trace-mapping@0.3.19': resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jspm/core@2.0.1': resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} @@ -1987,6 +2015,18 @@ packages: peerDependencies: react: ^18.2.0 + '@module-federation/runtime-tools@0.2.3': + resolution: {integrity: sha512-capN8CVTCEqNAjnl102girrkevczoQfnQYyiYC4WuyKsg7+LUqfirIe1Eiyv6VSE2UgvOTZDnqvervA6rBOlmg==} + + '@module-federation/runtime@0.2.3': + resolution: {integrity: sha512-N+ZxBUb1mkmfO9XT1BwgYQgShtUTlijHbukqQ4afFka5lRAT+ayC7RKfHJLz0HbuexKPCmPBDfdmCnErR5WyTQ==} + + '@module-federation/sdk@0.2.3': + resolution: {integrity: sha512-W9zrPchLocyCBc/B8CW21akcfJXLl++9xBe1L1EtgxZGfj/xwHt0GcBWE/y+QGvYTL2a1iZjwscbftbUhxgxXg==} + + '@module-federation/webpack-bundler-runtime@0.2.3': + resolution: {integrity: sha512-L/jt2uJ+8dwYiyn9GxryzDR6tr/Wk8rpgvelM2EBeLIhu7YxCHSmSjQYhw3BTux9zZIr47d1K9fGjBFsVRd/SQ==} + '@msgpack/msgpack@2.8.0': resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} @@ -2417,6 +2457,106 @@ packages: rollup: optional: true + '@rsbuild/core@1.0.1-beta.4': + resolution: {integrity: sha512-mjtmZIrlNf8nHuTDIwazk/4HFkXmjg/A5CwGsl77GeCp8ciI5D2q5ZSKvFfLTOIFAWWpno3pOLT8bBR1Co9YKw==} + engines: {node: '>=16.7.0'} + hasBin: true + + '@rsbuild/plugin-node-polyfill@1.0.3': + resolution: {integrity: sha512-AoPIOV1pyInIz08K1ECwUjFemLLSa5OUq8sfJN1ShXrGR2qc14b1wzwZKwF4vgKnBromqfMLagVbk6KT/nLIvQ==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rsbuild/plugin-react@1.0.1-beta.4': + resolution: {integrity: sha512-CIn56QLBZpS+4+zRFehDdW+1iHwi+M8omztCwzYbvkWwtz7XwGGjgnoRrw4FW+vCCW+n6PzIlOQiTZsOGrP3Fg==} + peerDependencies: + '@rsbuild/core': ^1.0.1-beta.0 + + '@rsbuild/plugin-type-check@1.0.1-beta.4': + resolution: {integrity: sha512-Ot5VjGBdAt5GK0wNCQcBDpj0FPDk+7Flt7TcmRs+dvt1F6bU9pLQ/WAxFBQ/NhrEXvWt8kx0AOJ2qTFId7nxjA==} + peerDependencies: + '@rsbuild/core': ^1.0.1-beta.0 + + '@rsbuild/plugin-typed-css-modules@1.0.1': + resolution: {integrity: sha512-biCSm7+vOgqrqXdAjxnjGNA7KPUfBadfndCeINJ2HApWfuQ2TLWuI5R+MzGvslis13SCKQ55K7NMAkvRhXyi8w==} + peerDependencies: + '@rsbuild/core': 1.x + peerDependenciesMeta: + '@rsbuild/core': + optional: true + + '@rspack/binding-darwin-arm64@1.0.0-alpha.5': + resolution: {integrity: sha512-ogpsxEjqwsn4aeeS0wyUnxuH8yXKTa2+BfxM7aSQILq4MNUVH0MqZ9dn0HAaGfQ3hdUhIqE3Gld6spdQCrgtHQ==} + cpu: [arm64] + os: [darwin] + + '@rspack/binding-darwin-x64@1.0.0-alpha.5': + resolution: {integrity: sha512-fcMVZJQVo9zJ+7YEqkMms+FlAkMOxTfI98sS+XxKC2M/UWDKdMdl7nyhobH+eEhH/eP0Yww6ikEWqF9r3MUsew==} + cpu: [x64] + os: [darwin] + + '@rspack/binding-linux-arm64-gnu@1.0.0-alpha.5': + resolution: {integrity: sha512-UZC2TScOVWVqICiinGWSYdYPAYcn8F/2L+8sbA6NAwSZo0mzH+LaRr6nZRdW2z7y+lELVDQG8UniMxXjoXjVjg==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-arm64-musl@1.0.0-alpha.5': + resolution: {integrity: sha512-uvrqKqNmj60eCze5ZLxod3nFyDBtDz+OeoSO3T5GU9VRv8XKtd4xJbmm4Nz3A14GOWWfGgGr1cYwQBIGBZActA==} + cpu: [arm64] + os: [linux] + + '@rspack/binding-linux-x64-gnu@1.0.0-alpha.5': + resolution: {integrity: sha512-7P5EnCsQmbLrYnCXJ1P8NF7/FCOpvOHaoNlReDZnut2HRppsUJXMnH3lQucq/sdS3djZ4RdG3sBMcTA3OEALwg==} + cpu: [x64] + os: [linux] + + '@rspack/binding-linux-x64-musl@1.0.0-alpha.5': + resolution: {integrity: sha512-RGj1cZLURjY8RG+t8qG2OB9ruqKQvM0M+JMhwhel57CYW9Ge9zZY+ReEhrdtYjW32KxVvuqtt2e7RhhKibK75w==} + cpu: [x64] + os: [linux] + + '@rspack/binding-win32-arm64-msvc@1.0.0-alpha.5': + resolution: {integrity: sha512-7u/LLEcDcBS5slSsAS9h23sTJNbJ+TUMy7GR91X7ySkqJ0VIR6tzml7+JqFxdPcBGXSszonGbcUupYy3nVzLCQ==} + cpu: [arm64] + os: [win32] + + '@rspack/binding-win32-ia32-msvc@1.0.0-alpha.5': + resolution: {integrity: sha512-HpP7Ptekbv/rQgV253UY+DXSIULINv49JbTBKB2PeBn9ra+Ec4vKPKlQtqIfoPStXEGSmA727nqFQ+VE581P4A==} + cpu: [ia32] + os: [win32] + + '@rspack/binding-win32-x64-msvc@1.0.0-alpha.5': + resolution: {integrity: sha512-t04ipYUTzigLtl6z7R78ytrAlK/oJWAwDUEVblyTtyJ/RwKfREUcS/8dkMx431Ia4Y0Icz6AVNf4avbYCoREyQ==} + cpu: [x64] + os: [win32] + + '@rspack/binding@1.0.0-alpha.5': + resolution: {integrity: sha512-CTrYz0Kgv+3k0sBXbY/MruciFVr2Qd+r3r/VEAVT4N0qhKporsubs1J49vLU2VXun1PBfZ3+3sBknjo5AlA0vw==} + + '@rspack/core@1.0.0-alpha.5': + resolution: {integrity: sha512-3nddnCqwnz91KprvMlqBDURYJ1GkT5IqCl+os05i2ce4Vk3zQmzvv8d/X8l/49CrDCOLrwyyuS3bKwca8aWdcg==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@swc/helpers': '>=0.5.1' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@rspack/lite-tapable@1.0.0-alpha.5': + resolution: {integrity: sha512-B1fNL3en1ohK+QybgjM45PpqcmAmr2LTRUhGvarwouNcj845vjq5clYPqUfFVC0goLmsqx+pt7r+TvpP0Yk67A==} + engines: {node: '>=16.0.0'} + + '@rspack/plugin-react-refresh@1.0.0-alpha.5': + resolution: {integrity: sha512-qyTYh1CsHQOjh6hxKIpiWgH18uwNj4+renv5U5nDIHixz7b8f96PYIP+Ptc9BnNklkc4BivF2RHpSNTsYeZ3fQ==} + peerDependencies: + react-refresh: '>=0.10.0 <1.0.0' + peerDependenciesMeta: + react-refresh: + optional: true + '@rushstack/eslint-patch@1.4.0': resolution: {integrity: sha512-cEjvTPU32OM9lUFegJagO0mRnIn+rbqrG89vV8/xLnLFX0DoR0r1oy5IlTga71Q7uT3Qus7qm7wgeiMT/+Irlg==} @@ -2681,6 +2821,9 @@ packages: '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + '@swc/helpers@0.5.11': + resolution: {integrity: sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} @@ -2730,6 +2873,9 @@ packages: '@types/detect-port@1.3.3': resolution: {integrity: sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg==} + '@types/diff-match-patch@1.0.36': + resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==} + '@types/doctrine@0.0.3': resolution: {integrity: sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==} @@ -2745,6 +2891,12 @@ packages: '@types/escodegen@0.0.6': resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.0': + resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} + '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} @@ -2754,6 +2906,9 @@ packages: '@types/estree@1.0.2': resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/express-serve-static-core@4.17.37': resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} @@ -3046,6 +3201,51 @@ packages: '@vitest/utils@0.34.6': resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + '@webgpu/types@0.1.40': resolution: {integrity: sha512-/BBkHLS6/eQjyWhY2H7Dx5DHcVrS2ICj9owvSRdgtQT6KcafLZA86tPze0xAOsd4FbsYKCUBUQyNi87q7gV7kw==} @@ -3091,6 +3291,12 @@ packages: '@xobotyi/scrollbar-width@1.9.5': resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15': resolution: {integrity: sha512-kYzDJO5CA9sy+on/s2aIW0411AklfCi8Ck/4QDivOqsMKpStZA2SsR+X27VTggGwpStWaLrjJcDcdDMowtG8MA==} engines: {node: '>=14.15.0'} @@ -3105,8 +3311,8 @@ packages: resolution: {integrity: sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==} engines: {node: '>=12 <14 || 14.2 - 14.9 || >14.10.0'} - '@zardoy/flying-squid@0.0.33': - resolution: {integrity: sha512-zCgHinWrNbS4HugnA1GBMuKQ0rUemBg//b+XhefxKeGBg9ngk8UVlJoR6cCAaa67zjiauEq/rhnNKnA4V7vtuQ==} + '@zardoy/flying-squid@0.0.34': + resolution: {integrity: sha512-1q9AE4GfmRQhKnSJ3QJtLZIznjJ/IcvwjjKKBS/LrxzaN+qsa3RI2H68OOULj5r/tiGU9DQNncW3CpMlezH6gA==} engines: {node: '>=8'} hasBin: true @@ -3135,6 +3341,11 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3192,6 +3403,11 @@ packages: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3357,6 +3573,9 @@ packages: assert@2.0.0: resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -3415,6 +3634,10 @@ packages: resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} @@ -3605,6 +3828,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.23.2: + resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -3628,9 +3856,6 @@ packages: buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -3638,6 +3863,9 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -3693,8 +3921,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001524: - resolution: {integrity: sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==} + caniuse-lite@1.0.30001643: + resolution: {integrity: sha512-ERgWGNleEilSrHM6iUz/zJNSQTP8Mr21wDWpdgvRwcTXGAq6jMtOUPP4dqFPTdKqZ2wKTdtB+uucZ3MRpAUSmg==} canvas@2.11.2: resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} @@ -3756,6 +3984,10 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} @@ -3821,9 +4053,6 @@ packages: resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} engines: {node: '>=0.10.0'} - color-convert@0.5.3: - resolution: {integrity: sha512-RwBeO/B/vZR3dfKL1ye/vx8MHZ40ugzpyfeVG5GsiuGnrlMWe2o8wxBbLCpw9CsxV+wHuzYlCiWnybrIA0ling==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -3831,9 +4060,6 @@ packages: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-diff@1.4.0: - resolution: {integrity: sha512-4oDB/o78lNdppbaqrg0HjOp7pHmUc+dfCxWKWFnQg6AB/1dkjtBDop3RZht5386cq9xBUDRvDvSCA7WUlM9Jqw==} - color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} @@ -3914,6 +4140,9 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -3965,6 +4194,9 @@ packages: core-js@3.32.1: resolution: {integrity: sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==} + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -3983,6 +4215,15 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} @@ -4045,6 +4286,18 @@ packages: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dayjs@1.11.9: resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} @@ -4236,6 +4489,9 @@ packages: resolution: {tarball: https://codeload.github.com/zardoy/diamond-square/tar.gz/4bbe28dcad35403abaa925055e91f601a61b9015} version: 1.3.0 + diff-match-patch@1.0.5: + resolution: {integrity: sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==} + diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4279,6 +4535,10 @@ packages: dom-walk@0.1.2: resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + domain-browser@5.7.0: + resolution: {integrity: sha512-edTFu0M/7wO1pXY6GDxVNVW086uqwWYIHP98txhcPyV995X21JIH2DtYp33sQJOupYoXKe9RwTw2Ya2vWaquTQ==} + engines: {node: '>=4'} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -4329,6 +4589,9 @@ packages: electron-to-chromium@1.4.504: resolution: {integrity: sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==} + electron-to-chromium@1.5.0: + resolution: {integrity: sha512-Vb3xHHYnLseK8vlMJQKJYXJ++t4u1/qJ3vykuVrVjvdiOEhYyT1AuP4x03G8EnPmYvYOhe9T+dADTmthjRQMkA==} + elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -4376,6 +4639,10 @@ packages: resolution: {integrity: sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==} engines: {node: '>=10.2.0'} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -4413,6 +4680,10 @@ packages: resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} engines: {node: '>= 0.4'} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -4428,6 +4699,13 @@ packages: es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} @@ -4436,6 +4714,10 @@ packages: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} @@ -4487,6 +4769,10 @@ packages: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -4622,6 +4908,10 @@ packages: peerDependencies: eslint: '>=8.44.0' + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4660,6 +4950,10 @@ packages: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -4934,6 +5228,13 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + fork-ts-checker-webpack-plugin@9.0.2: + resolution: {integrity: sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + form-data@2.3.3: resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} engines: {node: '>= 0.12'} @@ -4960,6 +5261,10 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fs-extra@11.1.1: resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} engines: {node: '>=14.14'} @@ -4968,10 +5273,6 @@ packages: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - fs-extra@9.1.0: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} @@ -4980,6 +5281,9 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -5166,6 +5470,10 @@ packages: resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true + gzip-size@7.0.0: + resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} engines: {node: '>=0.4.7'} @@ -5202,6 +5510,10 @@ packages: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -5248,6 +5560,10 @@ packages: resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -5273,6 +5589,9 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -5504,6 +5823,10 @@ packages: resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} engines: {node: '>= 0.4'} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -5587,6 +5910,10 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} @@ -5641,6 +5968,10 @@ packages: is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -5759,6 +6090,10 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5781,10 +6116,6 @@ packages: js-cookie@2.2.1: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} - js-graph-algorithms@1.0.18: - resolution: {integrity: sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==} - hasBin: true - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5957,6 +6288,10 @@ packages: resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} engines: {node: '>=4'} + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} @@ -6032,10 +6367,6 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - looks-same@8.2.3: - resolution: {integrity: sha512-0LK5r4+9t2D56XPVNH3hhG4o0yBYUdeu9FEd8z0ZCs/2fR9zJQj+6ob6ued8iHk3yddrSAdUA+9YGVK2FBMGUw==} - engines: {node: '>= 12.0.0'} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -6129,6 +6460,10 @@ packages: math.gl@4.0.1: resolution: {integrity: sha512-Yvw1HfmsDePxwhCBvGT8teyPN0mwxcxUaWLoDaRuZYxoUYa9HRg+6ywBS+yXopC0wIS9MFi+BCVKP8hdJpaJjw==} + mc-assets@0.2.5: + resolution: {integrity: sha512-HZ4Q1zqbib2ySSorCb+vMkBZAGXTTZIlcSfGq/L15fkg+l+KKslLSivWfFlCXdg9bzGc0x5WeQN3kKWfZmyuFg==} + engines: {node: '>=18.0.0'} + md5-file@4.0.0: resolution: {integrity: sha512-UC0qFwyAjn4YdPpKaDNw6gNxRf7Mcx7jC1UGCY4boCzgvU2Aoc1mOGzTtrjjLKhM5ivsnhoKpQVxKPp+1j1qwg==} engines: {node: '>=6.0'} @@ -6165,6 +6500,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} @@ -6308,9 +6647,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minecraft-assets@1.12.2: - resolution: {integrity: sha512-/eMxh3LNjCXOnU6KnQMjBM8dRnoJNpWIg7mD2m2RthraYiQK2FNzPWIKxWm2j3Ufcf5nzFXupgABledE86r4fQ==} - minecraft-data@3.65.0: resolution: {integrity: sha512-9K8dOrdrcpUklTdqKBtRcKur0gLZnguTvhM/1Xv52qzh8Unkto4290RJc4ueRIYo1VqN4zzQrRxO8lnqtkERDQ==} @@ -6326,6 +6662,11 @@ packages: version: 1.47.0 engines: {node: '>=14'} + minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1: + resolution: {tarball: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1} + version: 1.47.0 + engines: {node: '>=14'} + minecraft-wrap@1.5.1: resolution: {integrity: sha512-7DZ2WhrcRD3fUMau84l9Va0KWzV92SHNdB7mnNdNhgXID2aW6pjWuYPZi8MepEBemA4XKKdnDx7HmhTbkoiR8A==} hasBin: true @@ -6344,8 +6685,8 @@ packages: resolution: {integrity: sha512-QMMNPx4IyZE7ydAzjvGLQLCnQNUOfkk1qVZKxTTS9q3qPTAewz4GhsVUBtbQ8LSbHthe5RcQ1Sgxs4wlIma/Qw==} engines: {node: '>=18'} - mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/dddc683544317f117172077a9245a07be1b12479: - resolution: {tarball: https://codeload.github.com/zardoy/mineflayer/tar.gz/dddc683544317f117172077a9245a07be1b12479} + mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321: + resolution: {tarball: https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321} version: 4.20.1 engines: {node: '>=18'} @@ -6506,11 +6847,8 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - nested-error-stacks@2.1.1: - resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==} - - net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/231ef1737a078e8cb51e8c695b48d7b43ce3bc53: - resolution: {tarball: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/231ef1737a078e8cb51e8c695b48d7b43ce3bc53} + net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/d3f7f77d8ac751bc171173bba639086c931a62f7: + resolution: {tarball: https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/d3f7f77d8ac751bc171173bba639086c931a62f7} version: 0.2.4 nice-try@1.0.5: @@ -6523,6 +6861,9 @@ packages: resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} @@ -6566,6 +6907,9 @@ packages: node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-rsa@0.4.2: resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} @@ -6673,6 +7017,10 @@ packages: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + omggif@1.0.10: resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} @@ -6782,9 +7130,6 @@ packages: parse-bmfont-xml@1.1.4: resolution: {integrity: sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==} - parse-color@1.0.0: - resolution: {integrity: sha512-fuDHYgFHJGbpGMgw9skY/bj3HL/Jrn4l/5rSspy00DoT4RyLnDcRvPxdZ+r6OFwIsgAuhDh4I09tAId4mI12bw==} - parse-headers@2.0.5: resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} @@ -6905,6 +7250,9 @@ packages: picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -6975,12 +7323,16 @@ packages: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.35: - resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + postcss@8.4.39: + resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} engines: {node: ^10 || ^12 || >=14} potpack@1.0.2: @@ -7030,8 +7382,8 @@ packages: minecraft-data: 3.65.0 prismarine-registry: ^1.1.0 - prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8: - resolution: {tarball: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8} + prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819: + resolution: {tarball: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819} version: 1.17.1 prismarine-chat@1.10.1: @@ -7213,6 +7565,9 @@ packages: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -7242,6 +7597,10 @@ packages: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -7367,8 +7726,8 @@ packages: react: ^18.2.0 react-dom: ^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0 - react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} react-remove-scroll-bar@2.3.4: @@ -7486,8 +7845,11 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} - reflect.getprototypeof@1.0.5: - resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} + reduce-configs@1.0.0: + resolution: {integrity: sha512-/JCYSgL/QeXXsq0Lv/7kOZfqvof7vyzHWfyNQPt3c6vc73mU4WRyT8RJ6ZH5Ci08vUOqXwk7jkZy6BycHTDD9w==} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} regenerate-unicode-properties@10.1.0: @@ -7679,6 +8041,10 @@ packages: resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -7710,6 +8076,10 @@ packages: scheduler@0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + screenfull@5.2.0: resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} engines: {node: '>=0.10.0'} @@ -7748,6 +8118,9 @@ packages: serialize-javascript@4.0.0: resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-index@1.9.1: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} @@ -7931,6 +8304,10 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + source-map-resolve@0.5.3: resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} deprecated: See https://github.com/lydell/source-map-resolve#deprecated @@ -8045,6 +8422,9 @@ packages: stream-combiner@0.0.4: resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + stream-http@3.2.0: + resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} @@ -8070,12 +8450,23 @@ packages: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -8159,6 +8550,10 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -8189,11 +8584,32 @@ packages: resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + terser@5.19.2: resolution: {integrity: sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==} engines: {node: '>=10'} hasBin: true + terser@5.31.3: + resolution: {integrity: sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -8349,6 +8765,9 @@ packages: engines: {node: '>=18.0.0'} hasBin: true + tty-browserify@0.0.1: + resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -8406,17 +8825,33 @@ packages: resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + typed-emitter@1.4.0: resolution: {integrity: sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==} @@ -8426,8 +8861,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@5.5.0-beta: - resolution: {integrity: sha512-FRg3e/aQg3olEG3ff8YjHOERsO4IM0m4qGrsE4UMvILaq4TdDZ6gQX4+2Rq9SjTpfSe/ebwiHcsjm/7FfWWQ6Q==} + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true @@ -8561,6 +8996,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} @@ -8580,6 +9021,9 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url@0.11.3: + resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} + use-callback-ref@1.3.0: resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} @@ -8731,8 +9175,8 @@ packages: terser: optional: true - vite@4.5.2: - resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + vite@4.5.3: + resolution: {integrity: sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -8790,6 +9234,9 @@ packages: webdriverio: optional: true + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} @@ -8808,6 +9255,10 @@ packages: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} + watchpack@2.4.1: + resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==} + engines: {node: '>=10.13.0'} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -8824,6 +9275,16 @@ packages: webpack-virtual-modules@0.5.0: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + webpack@5.93.0: + resolution: {integrity: sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webrtc-adapter@8.2.3: resolution: {integrity: sha512-gnmRz++suzmvxtp3ehQts6s2JtAGPuDPjA1F3a9ckNpG1kYdYuHWYpazoAnL9FS5/B21tKlhkorbdCXat0+4xQ==} engines: {node: '>=6.0.0', npm: '>=3.10.0'} @@ -8867,6 +9328,10 @@ packages: resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -9108,7 +9573,7 @@ snapshots: '@ampproject/remapping@2.2.1': dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.19 + '@jridgewell/trace-mapping': 0.3.25 '@apideck/better-ajv-errors@0.3.6(ajv@8.12.0)': dependencies: @@ -9142,12 +9607,12 @@ snapshots: '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.10 '@babel/helper-compilation-targets': 7.22.10 - '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.11) + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.11) '@babel/helpers': 7.22.11 '@babel/parser': 7.22.13 '@babel/template': 7.22.5 '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 @@ -9174,8 +9639,8 @@ snapshots: '@babel/helper-compilation-targets@7.22.10': dependencies: '@babel/compat-data': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.10 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.23.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -9322,7 +9787,7 @@ snapshots: dependencies: '@babel/template': 7.22.5 '@babel/traverse': 7.22.11 - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color @@ -9334,7 +9799,7 @@ snapshots: '@babel/parser@7.22.13': dependencies: - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.22.11)': dependencies: @@ -9932,18 +10397,18 @@ snapshots: dependencies: '@babel/code-frame': 7.22.13 '@babel/parser': 7.22.13 - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 '@babel/traverse@7.22.11': dependencies: '@babel/code-frame': 7.22.13 '@babel/generator': 7.22.10 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.13 - '@babel/types': 7.22.11 + '@babel/types': 7.23.0 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: @@ -10006,6 +10471,7 @@ snapshots: tough-cookie: 4.1.3 tunnel-agent: 0.6.0 uuid: 8.3.2 + optional: true '@cypress/xvfb@1.2.4(supports-color@8.1.1)': dependencies: @@ -10013,6 +10479,7 @@ snapshots: lodash.once: 4.1.1 transitivePeerDependencies: - supports-color + optional: true '@dimaka/interface@0.0.3-alpha.0(@babel/core@7.22.11)(@popperjs/core@2.11.8)(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -10441,13 +10908,14 @@ snapshots: '@jimp/utils': 0.10.3 bmp-js: 0.1.0 core-js: 3.32.1 + optional: true '@jimp/core@0.10.3': dependencies: '@babel/runtime': 7.22.11 '@jimp/utils': 0.10.3 any-base: 1.1.0 - buffer: 5.7.1 + buffer: 6.0.3 core-js: 3.32.1 exif-parser: 0.1.12 file-type: 9.0.0 @@ -10456,12 +10924,14 @@ snapshots: phin: 2.9.3 pixelmatch: 4.0.2 tinycolor2: 1.6.0 + optional: true '@jimp/custom@0.10.3': dependencies: '@babel/runtime': 7.22.11 '@jimp/core': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/gif@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10470,6 +10940,7 @@ snapshots: '@jimp/utils': 0.10.3 core-js: 3.32.1 omggif: 1.0.10 + optional: true '@jimp/jpeg@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10478,6 +10949,7 @@ snapshots: '@jimp/utils': 0.10.3 core-js: 3.32.1 jpeg-js: 0.3.7 + optional: true '@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10485,6 +10957,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10492,6 +10965,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-circle@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10499,6 +10973,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10507,6 +10982,7 @@ snapshots: '@jimp/utils': 0.10.3 core-js: 3.32.1 tinycolor2: 1.6.0 + optional: true '@jimp/plugin-contain@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: @@ -10517,6 +10993,7 @@ snapshots: '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-cover@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: @@ -10527,6 +11004,7 @@ snapshots: '@jimp/plugin-scale': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10534,6 +11012,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-displace@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10541,6 +11020,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-dither@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10548,6 +11028,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-fisheye@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10555,6 +11036,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-flip@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)))': dependencies: @@ -10563,6 +11045,7 @@ snapshots: '@jimp/plugin-rotate': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-gaussian@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10570,6 +11053,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-invert@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10577,6 +11061,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-mask@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10584,6 +11069,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-normalize@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10591,6 +11077,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-print@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))': dependencies: @@ -10600,6 +11087,7 @@ snapshots: '@jimp/utils': 0.10.3 core-js: 3.32.1 load-bmfont: 1.4.1 + optional: true '@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10607,6 +11095,7 @@ snapshots: '@jimp/custom': 0.10.3 '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-rotate@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blit@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-crop@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: @@ -10617,6 +11106,7 @@ snapshots: '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-scale@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: @@ -10625,6 +11115,7 @@ snapshots: '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-shadow@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-blur@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: @@ -10634,6 +11125,7 @@ snapshots: '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugin-threshold@0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3))': dependencies: @@ -10643,6 +11135,7 @@ snapshots: '@jimp/plugin-resize': 0.10.3(@jimp/custom@0.10.3) '@jimp/utils': 0.10.3 core-js: 3.32.1 + optional: true '@jimp/plugins@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10671,6 +11164,7 @@ snapshots: '@jimp/plugin-threshold': 0.10.3(@jimp/custom@0.10.3)(@jimp/plugin-color@0.10.3(@jimp/custom@0.10.3))(@jimp/plugin-resize@0.10.3(@jimp/custom@0.10.3)) core-js: 3.32.1 timm: 1.7.1 + optional: true '@jimp/png@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10679,6 +11173,7 @@ snapshots: '@jimp/utils': 0.10.3 core-js: 3.32.1 pngjs: 3.4.0 + optional: true '@jimp/tiff@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10686,6 +11181,7 @@ snapshots: '@jimp/custom': 0.10.3 core-js: 3.32.1 utif: 2.0.1 + optional: true '@jimp/types@0.10.3(@jimp/custom@0.10.3)': dependencies: @@ -10698,22 +11194,24 @@ snapshots: '@jimp/tiff': 0.10.3(@jimp/custom@0.10.3) core-js: 3.32.1 timm: 1.7.1 + optional: true '@jimp/utils@0.10.3': dependencies: '@babel/runtime': 7.22.11 core-js: 3.32.1 regenerator-runtime: 0.13.11 + optional: true - '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.2.1(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 - react-docgen-typescript: 2.2.2(typescript@5.5.0-beta) - vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + react-docgen-typescript: 2.2.2(typescript@5.5.4) + vite: 4.5.3(@types/node@20.8.0)(terser@5.31.3) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 '@jridgewell/gen-mapping@0.3.3': dependencies: @@ -10737,6 +11235,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jspm/core@2.0.1': {} '@juggle/resize-observer@3.3.1': {} @@ -10755,6 +11258,7 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + optional: true '@math.gl/core@4.0.1': dependencies: @@ -10768,6 +11272,22 @@ snapshots: '@types/react': 18.2.20 react: 18.2.0 + '@module-federation/runtime-tools@0.2.3': + dependencies: + '@module-federation/runtime': 0.2.3 + '@module-federation/webpack-bundler-runtime': 0.2.3 + + '@module-federation/runtime@0.2.3': + dependencies: + '@module-federation/sdk': 0.2.3 + + '@module-federation/sdk@0.2.3': {} + + '@module-federation/webpack-bundler-runtime@0.2.3': + dependencies: + '@module-federation/runtime': 0.2.3 + '@module-federation/sdk': 0.2.3 + '@msgpack/msgpack@2.8.0': {} '@mui/base@5.0.0-beta.40(@types/react@18.2.20)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -11207,6 +11727,127 @@ snapshots: optionalDependencies: rollup: 2.79.1 + '@rsbuild/core@1.0.1-beta.4': + dependencies: + '@rspack/core': 1.0.0-alpha.5(@swc/helpers@0.5.11) + '@rspack/lite-tapable': 1.0.0-alpha.5 + '@swc/helpers': 0.5.11 + caniuse-lite: 1.0.30001643 + core-js: 3.37.1 + postcss: 8.4.39 + optionalDependencies: + fsevents: 2.3.3 + + '@rsbuild/plugin-node-polyfill@1.0.3(@rsbuild/core@1.0.1-beta.4)': + dependencies: + assert: 2.1.0 + browserify-zlib: 0.2.0 + buffer: 6.0.3 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 5.7.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 1.0.1 + process: 0.11.10 + punycode: 2.3.1 + querystring-es3: 0.2.1 + readable-stream: 4.5.2 + stream-browserify: 3.0.0 + stream-http: 3.2.0 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.1 + url: 0.11.3 + util: 0.12.5 + vm-browserify: 1.1.2 + optionalDependencies: + '@rsbuild/core': 1.0.1-beta.4 + + '@rsbuild/plugin-react@1.0.1-beta.4(@rsbuild/core@1.0.1-beta.4)': + dependencies: + '@rsbuild/core': 1.0.1-beta.4 + '@rspack/plugin-react-refresh': 1.0.0-alpha.5(react-refresh@0.14.2) + react-refresh: 0.14.2 + + '@rsbuild/plugin-type-check@1.0.1-beta.4(@rsbuild/core@1.0.1-beta.4)(esbuild@0.19.3)(typescript@5.5.4)': + dependencies: + '@rsbuild/core': 1.0.1-beta.4 + deepmerge: 4.3.1 + fork-ts-checker-webpack-plugin: 9.0.2(typescript@5.5.4)(webpack@5.93.0(esbuild@0.19.3)) + json5: 2.2.3 + reduce-configs: 1.0.0 + webpack: 5.93.0(esbuild@0.19.3) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - typescript + - uglify-js + - webpack-cli + + '@rsbuild/plugin-typed-css-modules@1.0.1(@rsbuild/core@1.0.1-beta.4)': + optionalDependencies: + '@rsbuild/core': 1.0.1-beta.4 + + '@rspack/binding-darwin-arm64@1.0.0-alpha.5': + optional: true + + '@rspack/binding-darwin-x64@1.0.0-alpha.5': + optional: true + + '@rspack/binding-linux-arm64-gnu@1.0.0-alpha.5': + optional: true + + '@rspack/binding-linux-arm64-musl@1.0.0-alpha.5': + optional: true + + '@rspack/binding-linux-x64-gnu@1.0.0-alpha.5': + optional: true + + '@rspack/binding-linux-x64-musl@1.0.0-alpha.5': + optional: true + + '@rspack/binding-win32-arm64-msvc@1.0.0-alpha.5': + optional: true + + '@rspack/binding-win32-ia32-msvc@1.0.0-alpha.5': + optional: true + + '@rspack/binding-win32-x64-msvc@1.0.0-alpha.5': + optional: true + + '@rspack/binding@1.0.0-alpha.5': + optionalDependencies: + '@rspack/binding-darwin-arm64': 1.0.0-alpha.5 + '@rspack/binding-darwin-x64': 1.0.0-alpha.5 + '@rspack/binding-linux-arm64-gnu': 1.0.0-alpha.5 + '@rspack/binding-linux-arm64-musl': 1.0.0-alpha.5 + '@rspack/binding-linux-x64-gnu': 1.0.0-alpha.5 + '@rspack/binding-linux-x64-musl': 1.0.0-alpha.5 + '@rspack/binding-win32-arm64-msvc': 1.0.0-alpha.5 + '@rspack/binding-win32-ia32-msvc': 1.0.0-alpha.5 + '@rspack/binding-win32-x64-msvc': 1.0.0-alpha.5 + + '@rspack/core@1.0.0-alpha.5(@swc/helpers@0.5.11)': + dependencies: + '@module-federation/runtime-tools': 0.2.3 + '@rspack/binding': 1.0.0-alpha.5 + '@rspack/lite-tapable': 1.0.0-alpha.5 + caniuse-lite: 1.0.30001643 + optionalDependencies: + '@swc/helpers': 0.5.11 + + '@rspack/lite-tapable@1.0.0-alpha.5': {} + + '@rspack/plugin-react-refresh@1.0.0-alpha.5(react-refresh@0.14.2)': + dependencies: + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + optionalDependencies: + react-refresh: 0.14.2 + '@rushstack/eslint-patch@1.4.0': {} '@sideway/address@4.1.5': @@ -11484,7 +12125,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@7.4.6(encoding@0.1.13)(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': + '@storybook/builder-vite@7.4.6(encoding@0.1.13)(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3))': dependencies: '@storybook/channels': 7.4.6 '@storybook/client-logger': 7.4.6 @@ -11505,9 +12146,9 @@ snapshots: remark-external-links: 8.0.0 remark-slug: 6.1.0 rollup: 3.29.4 - vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + vite: 4.5.3(@types/node@20.8.0)(terser@5.31.3) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - encoding - supports-color @@ -11791,19 +12432,19 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/react-vite@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': + '@storybook/react-vite@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@2.79.1)(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.2.1(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3)) '@rollup/pluginutils': 5.0.5(rollup@2.79.1) - '@storybook/builder-vite': 7.4.6(encoding@0.1.13)(typescript@5.5.0-beta)(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) - '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.0-beta) - '@vitejs/plugin-react': 3.1.0(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2)) + '@storybook/builder-vite': 7.4.6(encoding@0.1.13)(typescript@5.5.4)(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3)) + '@storybook/react': 7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.4) + '@vitejs/plugin-react': 3.1.0(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3)) ast-types: 0.14.2 magic-string: 0.30.4 react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + vite: 4.5.3(@types/node@20.8.0)(terser@5.31.3) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -11812,7 +12453,7 @@ snapshots: - typescript - vite-plugin-glimmerx - '@storybook/react@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.0-beta)': + '@storybook/react@7.4.6(encoding@0.1.13)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.5.4)': dependencies: '@storybook/client-logger': 7.4.6 '@storybook/core-client': 7.4.6 @@ -11838,7 +12479,7 @@ snapshots: type-fest: 2.19.0 util-deprecate: 1.0.2 optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - encoding - supports-color @@ -11888,6 +12529,10 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.10 + '@swc/helpers@0.5.11': + dependencies: + tslib: 2.6.2 + '@tootallnate/once@2.0.0': {} '@tweenjs/tween.js@18.6.4': {} @@ -11946,6 +12591,8 @@ snapshots: '@types/detect-port@1.3.3': {} + '@types/diff-match-patch@1.0.36': {} + '@types/doctrine@0.0.3': {} '@types/draco3d@1.4.7': {} @@ -11956,12 +12603,24 @@ snapshots: '@types/escodegen@0.0.6': {} + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.0 + '@types/estree': 1.0.5 + + '@types/eslint@9.6.0': + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.12 + '@types/estree@0.0.39': {} '@types/estree@0.0.51': {} '@types/estree@1.0.2': {} + '@types/estree@1.0.5': {} + '@types/express-serve-static-core@4.17.37': dependencies: '@types/node': 20.12.8 @@ -12038,7 +12697,8 @@ snapshots: '@types/node': 20.8.0 form-data: 4.0.0 - '@types/node@14.18.56': {} + '@types/node@14.18.56': + optional: true '@types/node@16.18.58': {} @@ -12106,9 +12766,11 @@ snapshots: '@types/mime': 3.0.2 '@types/node': 20.12.8 - '@types/sinonjs__fake-timers@8.1.1': {} + '@types/sinonjs__fake-timers@8.1.1': + optional: true - '@types/sizzle@2.3.3': {} + '@types/sizzle@2.3.3': + optional: true '@types/stats.js@0.17.1': {} @@ -12159,13 +12821,13 @@ snapshots: '@types/node': 20.12.8 optional: true - '@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta)': + '@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.8.0 - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 6.1.0 - '@typescript-eslint/type-utils': 6.1.0(eslint@8.50.0)(typescript@5.5.0-beta) - '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/type-utils': 6.1.0(eslint@8.50.0)(typescript@5.5.4) + '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4(supports-color@8.1.1) eslint: 8.50.0 @@ -12174,22 +12836,22 @@ snapshots: natural-compare: 1.4.0 natural-compare-lite: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.5.0-beta) + ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta)': + '@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 6.7.3 '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.5.0-beta) + '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.5.4) '@typescript-eslint/visitor-keys': 6.7.3 debug: 4.3.4(supports-color@8.1.1) eslint: 8.50.0 optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -12203,15 +12865,15 @@ snapshots: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/visitor-keys': 6.7.3 - '@typescript-eslint/type-utils@6.1.0(eslint@8.50.0)(typescript@5.5.0-beta)': + '@typescript-eslint/type-utils@6.1.0(eslint@8.50.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.5.0-beta) - '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.5.4) + '@typescript-eslint/utils': 6.1.0(eslint@8.50.0)(typescript@5.5.4) debug: 4.3.4(supports-color@8.1.1) eslint: 8.50.0 - ts-api-utils: 1.0.3(typescript@5.5.0-beta) + ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - supports-color @@ -12219,7 +12881,7 @@ snapshots: '@typescript-eslint/types@6.7.3': {} - '@typescript-eslint/typescript-estree@6.1.0(typescript@5.5.0-beta)': + '@typescript-eslint/typescript-estree@6.1.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 6.1.0 '@typescript-eslint/visitor-keys': 6.1.0 @@ -12227,13 +12889,13 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - ts-api-utils: 1.0.3(typescript@5.5.0-beta) + ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.7.3(typescript@5.5.0-beta)': + '@typescript-eslint/typescript-estree@6.7.3(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 6.7.3 '@typescript-eslint/visitor-keys': 6.7.3 @@ -12241,20 +12903,20 @@ snapshots: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 - ts-api-utils: 1.0.3(typescript@5.5.0-beta) + ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.1.0(eslint@8.50.0)(typescript@5.5.0-beta)': + '@typescript-eslint/utils@6.1.0(eslint@8.50.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 6.1.0 '@typescript-eslint/types': 6.1.0 - '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.5.0-beta) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.5.4) eslint: 8.50.0 semver: 7.6.0 transitivePeerDependencies: @@ -12271,14 +12933,14 @@ snapshots: '@typescript-eslint/types': 6.7.3 eslint-visitor-keys: 3.4.3 - '@vitejs/plugin-react@3.1.0(vite@4.5.2(@types/node@20.8.0)(terser@5.19.2))': + '@vitejs/plugin-react@3.1.0(vite@4.5.3(@types/node@20.8.0)(terser@5.31.3))': dependencies: '@babel/core': 7.22.11 '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.11) '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.11) magic-string: 0.27.0 - react-refresh: 0.14.0 - vite: 4.5.2(@types/node@20.8.0)(terser@5.19.2) + react-refresh: 0.14.2 + vite: 4.5.3(@types/node@20.8.0)(terser@5.31.3) transitivePeerDependencies: - supports-color @@ -12310,6 +12972,82 @@ snapshots: loupe: 2.3.6 pretty-format: 29.7.0 + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + '@webgpu/types@0.1.40': {} '@xboxreplay/errors@0.1.0': {} @@ -12361,6 +13099,10 @@ snapshots: '@xobotyi/scrollbar-width@1.9.5': {} + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': dependencies: esbuild: 0.18.20 @@ -12376,7 +13118,7 @@ snapshots: '@types/emscripten': 1.39.8 tslib: 1.14.1 - '@zardoy/flying-squid@0.0.33(encoding@0.1.13)': + '@zardoy/flying-squid@0.0.34(encoding@0.1.13)': dependencies: '@tootallnate/once': 2.0.0 change-case: 4.1.2 @@ -12387,7 +13129,7 @@ snapshots: flatmap: 0.0.3 long: 5.2.3 minecraft-data: 3.65.0 - minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) + minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) mkdirp: 2.1.6 node-gzip: 1.1.2 node-rsa: 1.1.1 @@ -12428,7 +13170,8 @@ snapshots: Base64@0.2.1: {} - abbrev@1.1.1: {} + abbrev@1.1.1: + optional: true abort-controller@3.0.0: dependencies: @@ -12439,6 +13182,10 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-import-attributes@1.9.5(acorn@8.10.0): + dependencies: + acorn: 8.10.0 + acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 @@ -12461,7 +13208,8 @@ snapshots: aes-js@3.1.2: {} - after@0.8.2: {} + after@0.8.2: + optional: true agent-base@5.1.1: {} @@ -12470,6 +13218,7 @@ snapshots: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + optional: true agent-base@7.1.0: dependencies: @@ -12487,6 +13236,10 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -12503,11 +13256,13 @@ snapshots: animejs@3.2.1: {} - ansi-colors@4.1.3: {} + ansi-colors@4.1.3: + optional: true ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 + optional: true ansi-regex@5.0.1: {} @@ -12525,7 +13280,8 @@ snapshots: ansi-styles@6.2.1: {} - any-base@1.1.0: {} + any-base@1.1.0: + optional: true any-promise@1.3.0: {} @@ -12549,14 +13305,17 @@ snapshots: app-root-dir@1.0.2: {} - aproba@2.0.0: {} + aproba@2.0.0: + optional: true - arch@2.2.0: {} + arch@2.2.0: + optional: true are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 readable-stream: 3.6.2 + optional: true are-we-there-yet@3.0.1: dependencies: @@ -12647,7 +13406,8 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 - arraybuffer.slice@0.0.7: {} + arraybuffer.slice@0.0.7: + optional: true arrify@1.0.1: {} @@ -12664,7 +13424,8 @@ snapshots: dependencies: safer-buffer: 2.1.2 - assert-plus@1.0.0: {} + assert-plus@1.0.0: + optional: true assert@2.0.0: dependencies: @@ -12673,6 +13434,14 @@ snapshots: object-is: 1.1.5 util: 0.12.5 + assert@2.1.0: + dependencies: + call-bind: 1.0.7 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.5 + util: 0.12.5 + assertion-error@1.1.0: {} assign-symbols@1.0.0: {} @@ -12689,7 +13458,8 @@ snapshots: dependencies: tslib: 2.6.2 - astral-regex@2.0.0: {} + astral-regex@2.0.0: + optional: true async-each@1.0.6: {} @@ -12715,9 +13485,15 @@ snapshots: available-typed-arrays@1.0.6: {} - aws-sign2@0.7.0: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + aws-sign2@0.7.0: + optional: true - aws4@1.12.0: {} + aws4@1.12.0: + optional: true axios@0.21.4(debug@4.3.4): dependencies: @@ -12777,13 +13553,15 @@ snapshots: transitivePeerDependencies: - supports-color - backo2@1.0.2: {} + backo2@1.0.2: + optional: true bail@2.0.2: {} balanced-match@1.0.2: {} - base64-arraybuffer@0.1.4: {} + base64-arraybuffer@0.1.4: + optional: true base64-js@1.5.1: {} @@ -12808,6 +13586,7 @@ snapshots: bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 + optional: true bcryptjs@2.4.3: {} @@ -12831,17 +13610,21 @@ snapshots: bl@4.1.0: dependencies: - buffer: 5.7.1 + buffer: 6.0.3 inherits: 2.0.4 readable-stream: 3.6.2 - blob-util@2.0.2: {} + blob-util@2.0.2: + optional: true - blob@0.0.5: {} + blob@0.0.5: + optional: true - bluebird@3.7.2: {} + bluebird@3.7.2: + optional: true - bmp-js@0.1.0: {} + bmp-js@0.1.0: + optional: true bn.js@4.12.0: {} @@ -12974,11 +13757,18 @@ snapshots: browserslist@4.21.10: dependencies: - caniuse-lite: 1.0.30001524 + caniuse-lite: 1.0.30001643 electron-to-chromium: 1.4.504 node-releases: 2.0.13 update-browserslist-db: 1.0.11(browserslist@4.21.10) + browserslist@4.23.2: + dependencies: + caniuse-lite: 1.0.30001643 + electron-to-chromium: 1.5.0 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.2) + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12987,7 +13777,8 @@ snapshots: buffer-equal-constant-time@1.0.1: {} - buffer-equal@0.0.1: {} + buffer-equal@0.0.1: + optional: true buffer-equal@1.0.1: {} @@ -12995,11 +13786,6 @@ snapshots: buffer-xor@1.0.3: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -13007,6 +13793,8 @@ snapshots: builtin-modules@3.3.0: {} + builtin-status-codes@3.0.0: {} + bytes@3.0.0: {} bytes@3.1.2: {} @@ -13064,7 +13852,8 @@ snapshots: union-value: 1.0.1 unset-value: 1.0.0 - cachedir@2.4.0: {} + cachedir@2.4.0: + optional: true call-bind@1.0.2: dependencies: @@ -13097,7 +13886,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001524: {} + caniuse-lite@1.0.30001643: {} canvas@2.11.2(encoding@0.1.13): dependencies: @@ -13107,6 +13896,7 @@ snapshots: transitivePeerDependencies: - encoding - supports-color + optional: true capital-case@1.0.4: dependencies: @@ -13114,7 +13904,8 @@ snapshots: tslib: 2.6.2 upper-case-first: 2.0.2 - caseless@0.12.0: {} + caseless@0.12.0: + optional: true cbor-extract@2.2.0: dependencies: @@ -13176,7 +13967,8 @@ snapshots: dependencies: get-func-name: 2.0.2 - check-more-types@2.24.0: {} + check-more-types@2.24.0: + optional: true chokidar@2.1.8: dependencies: @@ -13212,6 +14004,8 @@ snapshots: chownr@2.0.0: {} + chrome-trace-event@1.0.4: {} + ci-info@3.8.0: {} cipher-base@1.0.4: @@ -13250,6 +14044,7 @@ snapshots: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 + optional: true cliui@7.0.4: dependencies: @@ -13280,8 +14075,6 @@ snapshots: map-visit: 1.0.0 object-visit: 1.0.1 - color-convert@0.5.3: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -13290,8 +14083,6 @@ snapshots: dependencies: color-name: 1.1.4 - color-diff@1.4.0: {} - color-name@1.1.3: {} color-name@1.1.4: {} @@ -13301,7 +14092,8 @@ snapshots: color-name: 1.1.4 simple-swizzle: 0.2.2 - color-support@1.1.3: {} + color-support@1.1.3: + optional: true color@4.2.3: dependencies: @@ -13318,7 +14110,8 @@ snapshots: commander@2.20.3: {} - commander@5.1.0: {} + commander@5.1.0: + optional: true commander@6.2.1: {} @@ -13326,13 +14119,16 @@ snapshots: commondir@1.0.1: {} - component-bind@1.0.0: {} + component-bind@1.0.0: + optional: true - component-emitter@1.2.1: {} + component-emitter@1.2.1: + optional: true component-emitter@1.3.0: {} - component-inherit@0.0.3: {} + component-inherit@0.0.3: + optional: true compressible@2.0.18: dependencies: @@ -13370,7 +14166,10 @@ snapshots: transitivePeerDependencies: - supports-color - console-control-strings@1.1.0: {} + console-browserify@1.2.0: {} + + console-control-strings@1.1.0: + optional: true constant-case@3.0.4: dependencies: @@ -13386,14 +14185,14 @@ snapshots: content-type@1.0.5: {} - contro-max@0.1.8(typescript@5.5.0-beta): + contro-max@0.1.8(typescript@5.5.4): dependencies: events: 3.3.0 lodash-es: 4.17.21 typed-emitter: 2.1.0 optionalDependencies: react: 18.2.0 - use-typed-event-listener: 4.0.2(react@18.2.0)(typescript@5.5.0-beta) + use-typed-event-listener: 4.0.2(react@18.2.0)(typescript@5.5.4) transitivePeerDependencies: - typescript @@ -13417,9 +14216,13 @@ snapshots: dependencies: browserslist: 4.21.10 - core-js@3.32.1: {} + core-js@3.32.1: + optional: true + + core-js@3.37.1: {} - core-util-is@1.0.2: {} + core-util-is@1.0.2: + optional: true core-util-is@1.0.3: {} @@ -13438,6 +14241,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.5.4): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.4 + create-ecdh@4.0.4: dependencies: bn.js: 4.12.0 @@ -13537,6 +14349,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true cypress@10.11.0: dependencies: @@ -13548,7 +14361,7 @@ snapshots: arch: 2.2.0 blob-util: 2.0.2 bluebird: 3.7.2 - buffer: 5.7.1 + buffer: 6.0.3 cachedir: 2.4.0 chalk: 4.1.2 check-more-types: 2.24.0 @@ -13582,13 +14395,34 @@ snapshots: tmp: 0.2.1 untildify: 4.0.0 yauzl: 2.10.0 + optional: true dashdash@1.14.1: dependencies: assert-plus: 1.0.0 + optional: true + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + dayjs@1.11.9: + optional: true - dayjs@1.11.9: {} - debounce@1.2.1: {} debug@2.6.9: @@ -13598,6 +14432,7 @@ snapshots: debug@3.1.0: dependencies: ms: 2.0.0 + optional: true debug@3.2.7(supports-color@8.1.1): dependencies: @@ -13608,6 +14443,7 @@ snapshots: debug@4.1.1: dependencies: ms: 2.1.3 + optional: true debug@4.3.4(supports-color@8.1.1): dependencies: @@ -13633,6 +14469,7 @@ snapshots: decompress-response@4.2.1: dependencies: mimic-response: 2.1.0 + optional: true decompress-response@6.0.0: dependencies: @@ -13705,7 +14542,8 @@ snapshots: delayed-stream@1.0.0: {} - delegates@1.0.0: {} + delegates@1.0.0: + optional: true depd@1.1.2: {} @@ -13759,6 +14597,8 @@ snapshots: random-seed: 0.3.0 vec3: 0.1.8 + diff-match-patch@1.0.5: {} + diff-sequences@29.6.3: {} diff2html@2.12.2: @@ -13767,10 +14607,13 @@ snapshots: hogan.js: 3.0.2 merge: 1.2.1 whatwg-fetch: 3.6.18 + optional: true - diff@2.2.3: {} + diff@2.2.3: + optional: true - diff@4.0.2: {} + diff@4.0.2: + optional: true diffie-hellman@5.0.3: dependencies: @@ -13803,7 +14646,10 @@ snapshots: domhandler: 5.0.3 entities: 4.5.0 - dom-walk@0.1.2: {} + dom-walk@0.1.2: + optional: true + + domain-browser@5.7.0: {} domelementtype@2.3.0: {} @@ -13843,6 +14689,7 @@ snapshots: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 + optional: true ecdsa-sig-formatter@1.0.11: dependencies: @@ -13856,6 +14703,8 @@ snapshots: electron-to-chromium@1.4.504: {} + electron-to-chromium@1.5.0: {} + elliptic@6.5.4: dependencies: bn.js: 4.12.0 @@ -13902,6 +14751,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true engine.io-client@6.5.2: dependencies: @@ -13922,6 +14772,7 @@ snapshots: base64-arraybuffer: 0.1.4 blob: 0.0.5 has-binary2: 1.0.3 + optional: true engine.io-parser@5.2.1: {} @@ -13937,6 +14788,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true engine.io@6.5.3: dependencies: @@ -13955,10 +14807,16 @@ snapshots: - supports-color - utf-8-validate + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + optional: true entities@4.5.0: {} @@ -14066,6 +14924,55 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.14 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -14092,6 +14999,12 @@ snapshots: es-module-lexer@0.9.3: {} + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.1 @@ -14104,6 +15017,12 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.1 + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 @@ -14219,6 +15138,8 @@ snapshots: escalade@3.1.1: {} + escalade@3.1.2: {} + escape-html@1.0.3: {} escape-string-regexp@1.0.5: {} @@ -14243,34 +15164,34 @@ snapshots: eslint-plugin-react: 7.33.2(eslint@8.50.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.50.0) - eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta): + eslint-config-xo-typescript@1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta) - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.4) eslint: 8.50.0 - typescript: 5.5.0-beta + typescript: 5.5.4 eslint-config-xo@0.43.1(eslint@8.50.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 8.50.0 - eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.5.0-beta): + eslint-config-zardoy@0.2.17(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0)(typescript@5.5.4): dependencies: '@rushstack/eslint-patch': 1.4.0 - '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta) - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/eslint-plugin': 6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.4) eslint: 8.50.0 eslint-config-prettier: 8.10.0(eslint@8.50.0) eslint-config-xo: 0.43.1(eslint@8.50.0) eslint-config-xo-react: 0.27.0(eslint-plugin-react-hooks@4.6.0(eslint@8.50.0))(eslint-plugin-react@7.33.2(eslint@8.50.0))(eslint@8.50.0) - eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0)(typescript@5.5.0-beta) + eslint-config-xo-typescript: 1.0.1(@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4))(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0)(typescript@5.5.4) eslint-plugin-eslint-comments: 3.2.0(eslint@8.50.0) - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0) + eslint-plugin-import: 2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0) eslint-plugin-node: 11.1.0(eslint@8.50.0) eslint-plugin-sonarjs: 0.19.0(eslint@8.50.0) eslint-plugin-unicorn: 48.0.0(eslint@8.50.0) - typescript: 5.5.0-beta + typescript: 5.5.4 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14286,11 +15207,11 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): + eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.4) eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: @@ -14308,7 +15229,7 @@ snapshots: eslint: 8.50.0 ignore: 5.2.4 - eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint@8.50.0): + eslint-plugin-import@2.27.5(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint@8.50.0): dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 @@ -14317,7 +15238,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.50.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.0-beta))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.50.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -14327,7 +15248,7 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.14.2 optionalDependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.0-beta) + '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -14361,7 +15282,7 @@ snapshots: object.entries: 1.1.7 object.fromentries: 2.0.7 object.hasown: 1.1.3 - object.values: 1.1.7 + object.values: 1.2.0 prop-types: 15.8.1 resolve: 2.0.0-next.5 semver: 6.3.1 @@ -14390,6 +15311,11 @@ snapshots: semver: 7.5.4 strip-indent: 3.0.0 + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 @@ -14461,6 +15387,8 @@ snapshots: dependencies: estraverse: 5.3.0 + estraverse@4.3.0: {} + estraverse@5.3.0: {} estree-to-babel@3.2.1: @@ -14491,7 +15419,8 @@ snapshots: event-target-shim@5.0.1: {} - eventemitter2@6.4.7: {} + eventemitter2@6.4.7: + optional: true eventemitter3@4.0.7: {} @@ -14513,6 +15442,7 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + optional: true execa@5.1.1: dependencies: @@ -14529,8 +15459,10 @@ snapshots: executable@4.1.1: dependencies: pify: 2.3.0 + optional: true - exif-parser@0.1.12: {} + exif-parser@0.1.12: + optional: true exit-hook@2.2.1: {} @@ -14638,7 +15570,8 @@ snapshots: transitivePeerDependencies: - supports-color - extsprintf@1.3.0: {} + extsprintf@1.3.0: + optional: true fast-deep-equal@3.1.3: {} @@ -14683,6 +15616,7 @@ snapshots: figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 + optional: true file-entry-cache@6.0.1: dependencies: @@ -14693,7 +15627,8 @@ snapshots: fs-extra: 11.1.1 ramda: 0.29.0 - file-type@9.0.0: {} + file-type@9.0.0: + optional: true file-uri-to-path@1.0.0: optional: true @@ -14807,13 +15742,32 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - forever-agent@0.6.1: {} + forever-agent@0.6.1: + optional: true + + fork-ts-checker-webpack-plugin@9.0.2(typescript@5.5.4)(webpack@5.93.0(esbuild@0.19.3)): + dependencies: + '@babel/code-frame': 7.22.13 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 8.3.6(typescript@5.5.4) + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.6.0 + tapable: 2.2.1 + typescript: 5.5.4 + webpack: 5.93.0(esbuild@0.19.3) form-data@2.3.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + optional: true form-data@4.0.0: dependencies: @@ -14833,23 +15787,24 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@11.1.1: + fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 - fs-extra@7.0.1: + fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 + jsonfile: 6.1.0 + universalify: 2.0.0 - fs-extra@8.1.0: + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + optional: true fs-extra@9.1.0: dependencies: @@ -14862,6 +15817,8 @@ snapshots: dependencies: minipass: 3.3.6 + fs-monkey@1.0.6: {} + fs.realpath@1.0.0: {} fsevents@1.2.13: @@ -14897,6 +15854,7 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 wide-align: 1.1.5 + optional: true gauge@4.0.4: dependencies: @@ -14967,10 +15925,12 @@ snapshots: getos@3.2.1: dependencies: async: 3.2.5 + optional: true getpass@0.1.7: dependencies: assert-plus: 1.0.0 + optional: true giget@1.1.3: dependencies: @@ -15051,11 +16011,13 @@ snapshots: global-dirs@3.0.1: dependencies: ini: 2.0.0 + optional: true global@4.4.0: dependencies: min-document: 2.19.0 process: 0.11.10 + optional: true globals@11.12.0: {} @@ -15098,6 +16060,10 @@ snapshots: pumpify: 1.5.1 through2: 2.0.5 + gzip-size@7.0.0: + dependencies: + duplexer: 0.1.2 + handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -15114,8 +16080,10 @@ snapshots: has-binary2@1.0.3: dependencies: isarray: 2.0.1 + optional: true - has-cors@1.1.0: {} + has-cors@1.1.0: + optional: true has-flag@3.0.0: {} @@ -15131,6 +16099,8 @@ snapshots: has-proto@1.0.1: {} + has-proto@1.0.3: {} + has-symbols@1.0.3: {} has-tostringtag@1.0.0: @@ -15141,7 +16111,8 @@ snapshots: dependencies: has-symbols: 1.0.3 - has-unicode@2.0.1: {} + has-unicode@2.0.1: + optional: true has-value@0.3.1: dependencies: @@ -15181,6 +16152,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + he@1.2.0: {} header-case@2.0.4: @@ -15198,6 +16173,7 @@ snapshots: dependencies: mkdirp: 0.3.0 nopt: 1.0.10 + optional: true hosted-git-info@2.8.9: {} @@ -15209,6 +16185,8 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 + html-entities@2.5.2: {} + html-escaper@2.0.2: {} html-tags@3.3.1: {} @@ -15285,6 +16263,7 @@ snapshots: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.17.0 + optional: true https-browserify@1.0.0: {} @@ -15301,6 +16280,7 @@ snapshots: debug: 4.3.4(supports-color@8.1.1) transitivePeerDependencies: - supports-color + optional: true https-proxy-agent@7.0.2: dependencies: @@ -15309,7 +16289,8 @@ snapshots: transitivePeerDependencies: - supports-color - human-signals@1.1.1: {} + human-signals@1.1.1: + optional: true human-signals@2.1.0: {} @@ -15334,7 +16315,8 @@ snapshots: ignore@5.2.4: {} - image-size@0.7.5: {} + image-size@0.7.5: + optional: true immediate@3.0.6: {} @@ -15351,7 +16333,8 @@ snapshots: indent-string@5.0.0: {} - indexof@0.0.1: {} + indexof@0.0.1: + optional: true infer-owner@1.0.4: optional: true @@ -15367,7 +16350,8 @@ snapshots: ini@1.3.8: {} - ini@2.0.0: {} + ini@2.0.0: + optional: true inline-style-prefixer@6.0.4: dependencies: @@ -15452,6 +16436,7 @@ snapshots: is-ci@3.0.1: dependencies: ci-info: 3.8.0 + optional: true is-core-module@2.13.0: dependencies: @@ -15465,6 +16450,10 @@ snapshots: dependencies: hasown: 2.0.1 + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 @@ -15497,7 +16486,8 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-function@1.0.2: {} + is-function@1.0.2: + optional: true is-generator-function@1.0.10: dependencies: @@ -15517,6 +16507,7 @@ snapshots: dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 + optional: true is-interactive@1.0.0: {} @@ -15534,6 +16525,8 @@ snapshots: is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 @@ -15573,6 +16566,10 @@ snapshots: dependencies: call-bind: 1.0.2 + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + is-stream@2.0.1: {} is-string@1.0.7: @@ -15591,7 +16588,8 @@ snapshots: dependencies: which-typed-array: 1.1.14 - is-typedarray@1.0.0: {} + is-typedarray@1.0.0: + optional: true is-unicode-supported@0.1.0: {} @@ -15619,7 +16617,8 @@ snapshots: isarray@1.0.0: {} - isarray@2.0.1: {} + isarray@2.0.1: + optional: true isarray@2.0.5: {} @@ -15631,7 +16630,8 @@ snapshots: isobject@3.0.1: {} - isstream@0.1.2: {} + isstream@0.1.2: + optional: true istanbul-lib-coverage@3.2.0: {} @@ -15661,7 +16661,7 @@ snapshots: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.5 + reflect.getprototypeof: 1.0.6 set-function-name: 2.0.1 jackspeak@2.3.0: @@ -15710,6 +16710,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 7.2.0 + jest-worker@27.5.1: + dependencies: + '@types/node': 20.12.8 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jest-worker@29.7.0: dependencies: '@types/node': 20.12.8 @@ -15725,6 +16731,7 @@ snapshots: '@jimp/types': 0.10.3(@jimp/custom@0.10.3) core-js: 3.32.1 regenerator-runtime: 0.13.11 + optional: true joi@17.13.1: dependencies: @@ -15736,14 +16743,14 @@ snapshots: jose@4.15.5: {} - jpeg-js@0.3.7: {} + jpeg-js@0.3.7: + optional: true - js-base64@2.6.4: {} + js-base64@2.6.4: + optional: true js-cookie@2.2.1: {} - js-graph-algorithms@1.0.18: {} - js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -15755,7 +16762,8 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@0.1.1: {} + jsbn@0.1.1: + optional: true jscodeshift@0.14.0(@babel/preset-env@7.22.10(@babel/core@7.22.11)): dependencies: @@ -15815,6 +16823,7 @@ snapshots: jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 + optional: true jsonfile@6.1.0: dependencies: @@ -15843,13 +16852,14 @@ snapshots: extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 + optional: true jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 - object.values: 1.1.7 + object.values: 1.2.0 jszip@3.10.1: dependencies: @@ -15885,7 +16895,8 @@ snapshots: kleur@3.0.3: {} - lazy-ass@1.6.0: {} + lazy-ass@1.6.0: + optional: true lazy-universal-dotenv@4.0.0: dependencies: @@ -15926,6 +16937,7 @@ snapshots: wrap-ansi: 7.0.0 optionalDependencies: enquirer: 2.4.1 + optional: true live-server@1.2.2: dependencies: @@ -15955,6 +16967,7 @@ snapshots: phin: 2.9.3 xhr: 2.6.0 xtend: 4.0.2 + optional: true load-json-file@4.0.0: dependencies: @@ -15963,6 +16976,8 @@ snapshots: pify: 3.0.0 strip-bom: 3.0.0 + loader-runner@4.3.0: {} + local-pkg@0.4.3: {} locate-path@3.0.0: @@ -16019,21 +17034,12 @@ snapshots: cli-cursor: 3.1.0 slice-ansi: 4.0.0 wrap-ansi: 6.2.0 + optional: true long@5.2.3: {} longest-streak@3.1.0: {} - looks-same@8.2.3: - dependencies: - color-diff: 1.4.0 - fs-extra: 8.1.0 - js-graph-algorithms: 1.0.18 - lodash: 4.17.21 - nested-error-stacks: 2.1.1 - parse-color: 1.0.0 - sharp: 0.30.7 - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -16144,6 +17150,8 @@ snapshots: dependencies: '@math.gl/core': 4.0.1 + mc-assets@0.2.5: {} + md5-file@4.0.0: {} md5.js@1.3.5: @@ -16201,6 +17209,10 @@ snapshots: media-typer@0.3.0: {} + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 @@ -16228,7 +17240,8 @@ snapshots: merge2@1.4.1: {} - merge@1.2.1: {} + merge@1.2.1: + optional: true meshoptimizer@0.18.1: {} @@ -16407,18 +17420,18 @@ snapshots: mimic-fn@2.1.0: {} - mimic-response@2.1.0: {} + mimic-response@2.1.0: + optional: true mimic-response@3.1.0: {} min-document@2.19.0: dependencies: dom-walk: 0.1.2 + optional: true min-indent@1.0.1: {} - minecraft-assets@1.12.2: {} - minecraft-data@3.65.0: {} minecraft-folder-path@1.2.0: {} @@ -16455,6 +17468,31 @@ snapshots: - encoding - supports-color + minecraft-protocol@https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/7057ad979b416192ada235f2f4e3b5eb26af5fa1(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13): + dependencies: + '@types/readable-stream': 4.0.10 + aes-js: 3.1.2 + buffer-equal: 1.0.1 + debug: 4.3.4(supports-color@8.1.1) + endian-toggle: 0.0.0 + lodash.get: 4.4.2 + lodash.merge: 4.6.2 + minecraft-data: 3.65.0 + minecraft-folder-path: 1.2.0 + node-fetch: 2.7.0(encoding@0.1.13) + node-rsa: 0.4.2 + prismarine-auth: 2.4.1(encoding@0.1.13) + prismarine-chat: 1.10.1 + prismarine-nbt: 2.5.0 + prismarine-realms: 1.3.2(encoding@0.1.13) + protodef: 1.15.0 + readable-stream: 4.5.2 + uuid-1345: 1.0.2 + yggdrasil: 1.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + - supports-color + minecraft-wrap@1.5.1(encoding@0.1.13): dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -16478,7 +17516,7 @@ snapshots: detect-collisions: 7.0.5 vec3: 0.1.8 - mineflayer-item-map-downloader@https://codeload.github.com/zardoy/mineflayer-item-map-downloader/tar.gz/642fd4f7023a98a96da4caf8f993f8e19361a1e7(encoding@0.1.13): + mineflayer-item-map-downloader@https://codeload.github.com/zardoy/mineflayer-item-map-downloader/tar.gz/642fd4f7023a98a96da4caf8f993f8e19361a1e7(patch_hash=bck55yjvd4wrgz46x7o4vfur5q)(encoding@0.1.13): dependencies: mineflayer: 4.20.1(encoding@0.1.13) sharp: 0.30.7 @@ -16489,7 +17527,7 @@ snapshots: mineflayer-pathfinder@2.4.4: dependencies: minecraft-data: 3.65.0 - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-entity: 2.3.1 prismarine-item: 1.14.0 prismarine-nbt: 2.2.1 @@ -16501,7 +17539,7 @@ snapshots: minecraft-data: 3.65.0 minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chat: 1.10.1 prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) prismarine-entity: 2.3.1 @@ -16519,12 +17557,12 @@ snapshots: - encoding - supports-color - mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/dddc683544317f117172077a9245a07be1b12479(encoding@0.1.13): + mineflayer@https://codeload.github.com/zardoy/mineflayer/tar.gz/7f65e46a048f1bc2b57775d84b32400dce707321(encoding@0.1.13): dependencies: minecraft-data: 3.65.0 minecraft-protocol: https://codeload.github.com/PrismarineJS/node-minecraft-protocol/tar.gz/495eed56ab230b2615596590064671356d86a2dc(patch_hash=7otpchsbv7hxsuis4rrrwdtbve)(encoding@0.1.13) prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chat: 1.10.1 prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) prismarine-entity: 2.3.1 @@ -16615,7 +17653,8 @@ snapshots: mkdirp-classic@0.5.3: {} - mkdirp@0.3.0: {} + mkdirp@0.3.0: + optional: true mkdirp@0.5.6: dependencies: @@ -16662,7 +17701,8 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.18.0: {} + nan@2.18.0: + optional: true nano-css@5.3.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: @@ -16714,9 +17754,7 @@ snapshots: neo-async@2.6.2: {} - nested-error-stacks@2.1.1: {} - - net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/231ef1737a078e8cb51e8c695b48d7b43ce3bc53: + net-browserify@https://codeload.github.com/zardoy/prismarinejs-net-browserify/tar.gz/d3f7f77d8ac751bc171173bba639086c931a62f7: dependencies: body-parser: 1.20.2 express: 4.18.2 @@ -16737,6 +17775,8 @@ snapshots: dependencies: semver: 7.6.0 + node-abort-controller@3.1.1: {} + node-addon-api@5.1.0: {} node-canvas-webgl@0.3.0(encoding@0.1.13): @@ -16795,6 +17835,8 @@ snapshots: node-releases@2.0.13: {} + node-releases@2.0.18: {} + node-rsa@0.4.2: dependencies: asn1: 0.2.3 @@ -16806,10 +17848,12 @@ snapshots: nopt@1.0.10: dependencies: abbrev: 1.1.1 + optional: true nopt@5.0.0: dependencies: abbrev: 1.1.1 + optional: true nopt@6.0.0: dependencies: @@ -16858,6 +17902,7 @@ snapshots: console-control-strings: 1.1.0 gauge: 3.0.2 set-blocking: 2.0.0 + optional: true npmlog@6.0.2: dependencies: @@ -16935,7 +17980,14 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.2 - omggif@1.0.10: {} + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + omggif@1.0.10: + optional: true on-finished@2.3.0: dependencies: @@ -16992,7 +18044,8 @@ snapshots: os-browserify@0.3.0: {} - ospath@1.2.2: {} + ospath@1.2.2: + optional: true p-limit@2.3.0: dependencies: @@ -17045,20 +18098,20 @@ snapshots: pbkdf2: 3.1.2 safe-buffer: 5.2.1 - parse-bmfont-ascii@1.0.6: {} + parse-bmfont-ascii@1.0.6: + optional: true - parse-bmfont-binary@1.0.6: {} + parse-bmfont-binary@1.0.6: + optional: true parse-bmfont-xml@1.1.4: dependencies: xml-parse-from-string: 1.0.1 xml2js: 0.4.23 + optional: true - parse-color@1.0.0: - dependencies: - color-convert: 0.5.3 - - parse-headers@2.0.5: {} + parse-headers@2.0.5: + optional: true parse-json@4.0.0: dependencies: @@ -17072,9 +18125,11 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parseqs@0.0.6: {} + parseqs@0.0.6: + optional: true - parseuri@0.0.6: {} + parseuri@0.0.6: + optional: true parseurl@1.3.3: {} @@ -17160,17 +18215,22 @@ snapshots: pend@1.2.0: {} - performance-now@2.1.0: {} + performance-now@2.1.0: + optional: true - phin@2.9.3: {} + phin@2.9.3: + optional: true picocolors@1.0.0: {} + picocolors@1.0.1: {} + picomatch@2.3.1: {} pidtree@0.3.1: {} - pify@2.3.0: {} + pify@2.3.0: + optional: true pify@3.0.0: {} @@ -17183,6 +18243,7 @@ snapshots: pixelmatch@4.0.2: dependencies: pngjs: 3.4.0 + optional: true pkg-dir@3.0.0: dependencies: @@ -17204,7 +18265,8 @@ snapshots: pluralize@8.0.0: {} - pngjs@3.4.0: {} + pngjs@3.4.0: + optional: true polished@4.2.2: dependencies: @@ -17222,17 +18284,19 @@ snapshots: posix-character-classes@0.1.1: {} + possible-typed-array-names@1.0.0: {} + postcss@8.4.31: dependencies: nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 - postcss@8.4.35: + postcss@8.4.39: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 + picocolors: 1.0.1 + source-map-js: 1.2.0 potpack@1.0.2: {} @@ -17253,7 +18317,8 @@ snapshots: prelude-ls@1.2.1: {} - prettier@1.19.1: {} + prettier@1.19.1: + optional: true prettier@2.8.8: {} @@ -17287,7 +18352,7 @@ snapshots: minecraft-data: 3.65.0 prismarine-registry: 1.7.0 - prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8: + prismarine-block@https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819: dependencies: minecraft-data: 3.65.0 prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) @@ -17305,7 +18370,7 @@ snapshots: prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0): dependencies: prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 smart-buffer: 4.2.0 @@ -17318,7 +18383,7 @@ snapshots: prismarine-chunk@https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/cea0b6c792d7dcbb69dfd20fa48be5fd60ce83ef(minecraft-data@3.65.0): dependencies: prismarine-biome: 1.3.0(minecraft-data@3.65.0)(prismarine-registry@1.7.0) - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-nbt: 2.5.0 prismarine-registry: 1.7.0 smart-buffer: 4.2.0 @@ -17356,7 +18421,7 @@ snapshots: prismarine-provider-anvil@https://codeload.github.com/zardoy/prismarine-provider-anvil/tar.gz/0228b5252f48a0d6ad7f36d7189851c427fbe8c4(minecraft-data@3.65.0): dependencies: - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-chunk: https://codeload.github.com/zardoy/prismarine-chunk/tar.gz/9662306deea57d8d0ba0a2a3f3f7adb95f0131e3(minecraft-data@3.65.0) prismarine-nbt: 2.5.0 prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/187a87f6d71cba12881a7bbaa510ed9085bf6da7 @@ -17385,7 +18450,7 @@ snapshots: prismarine-schematic@1.2.3: dependencies: minecraft-data: 3.65.0 - prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/dd4954fff3b334f8ce063d18e39b2e9414ece5b8 + prismarine-block: https://codeload.github.com/zardoy/prismarine-block/tar.gz/a69b66ab1e4be6b67f25a5a6db15e0ad39e11819 prismarine-nbt: 2.2.1 prismarine-world: https://codeload.github.com/zardoy/prismarine-world/tar.gz/187a87f6d71cba12881a7bbaa510ed9085bf6da7 vec3: 0.1.8 @@ -17540,7 +18605,8 @@ snapshots: proxy-middleware@0.15.0: {} - psl@1.9.0: {} + psl@1.9.0: + optional: true public-encrypt@4.0.3: dependencies: @@ -17569,6 +18635,8 @@ snapshots: punycode.js@2.3.1: {} + punycode@1.4.1: {} + punycode@2.3.0: {} punycode@2.3.1: {} @@ -17597,6 +18665,7 @@ snapshots: qs@6.10.4: dependencies: side-channel: 1.0.5 + optional: true qs@6.11.0: dependencies: @@ -17606,7 +18675,10 @@ snapshots: dependencies: side-channel: 1.0.4 - querystringify@2.2.0: {} + querystring-es3@0.2.1: {} + + querystringify@2.2.0: + optional: true queue-microtask@1.2.3: {} @@ -17674,9 +18746,9 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-docgen-typescript@2.2.2(typescript@5.5.0-beta): + react-docgen-typescript@2.2.2(typescript@5.5.4): dependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 react-docgen@6.0.0-alpha.3: dependencies: @@ -17737,7 +18809,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-refresh@0.14.0: {} + react-refresh@0.14.2: {} react-remove-scroll-bar@2.3.4(@types/react@18.2.20)(react@18.2.0): dependencies: @@ -17908,11 +18980,15 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.0.0 - reflect.getprototypeof@1.0.5: + reduce-configs@1.0.0: + dependencies: + browserslist: 4.23.2 + + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.4 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 globalthis: 1.0.3 @@ -17924,7 +19000,8 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.13.11: {} + regenerator-runtime@0.13.11: + optional: true regenerator-runtime@0.14.0: {} @@ -18018,6 +19095,7 @@ snapshots: request-progress@3.0.0: dependencies: throttleit: 1.0.0 + optional: true require-directory@2.1.1: {} @@ -18059,7 +19137,8 @@ snapshots: reusify@1.0.4: {} - rfdc@1.3.0: {} + rfdc@1.3.0: + optional: true rimraf@2.6.3: dependencies: @@ -18126,6 +19205,13 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -18154,12 +19240,19 @@ snapshots: sat@0.9.0: {} - sax@1.3.0: {} + sax@1.3.0: + optional: true scheduler@0.23.0: dependencies: loose-envify: 1.4.0 + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + screenfull@5.2.0: {} sdp@3.2.0: {} @@ -18206,6 +19299,10 @@ snapshots: dependencies: randombytes: 2.1.0 + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + serve-index@1.9.1: dependencies: accepts: 1.3.8 @@ -18227,7 +19324,8 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} + set-blocking@2.0.0: + optional: true set-function-length@1.2.1: dependencies: @@ -18319,6 +19417,7 @@ snapshots: decompress-response: 4.2.1 once: 1.4.0 simple-concat: 1.0.1 + optional: true simple-get@4.0.1: dependencies: @@ -18351,12 +19450,14 @@ snapshots: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + optional: true slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + optional: true smart-buffer@4.2.0: {} @@ -18388,7 +19489,8 @@ snapshots: transitivePeerDependencies: - supports-color - socket.io-adapter@1.1.2: {} + socket.io-adapter@1.1.2: + optional: true socket.io-adapter@2.5.2: dependencies: @@ -18414,6 +19516,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true socket.io-client@4.7.2: dependencies: @@ -18433,6 +19536,7 @@ snapshots: isarray: 2.0.1 transitivePeerDependencies: - supports-color + optional: true socket.io-parser@3.4.3: dependencies: @@ -18441,6 +19545,7 @@ snapshots: isarray: 2.0.1 transitivePeerDependencies: - supports-color + optional: true socket.io-parser@4.2.4: dependencies: @@ -18461,6 +19566,7 @@ snapshots: - bufferutil - supports-color - utf-8-validate + optional: true socket.io@4.7.2: dependencies: @@ -18493,6 +19599,8 @@ snapshots: source-map-js@1.0.2: {} + source-map-js@1.2.0: {} + source-map-resolve@0.5.3: dependencies: atob: 2.1.2 @@ -18557,6 +19665,7 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 tweetnacl: 0.14.5 + optional: true ssri@9.0.1: dependencies: @@ -18617,6 +19726,13 @@ snapshots: dependencies: duplexer: 0.1.2 + stream-http@3.2.0: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + xtend: 4.0.2 + stream-shift@1.0.1: {} strict-event-emitter-types@2.0.0: {} @@ -18657,18 +19773,37 @@ snapshots: define-properties: 1.2.1 es-abstract: 1.22.2 + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.2 + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string_decoder@0.10.31: optional: true @@ -18739,6 +19874,8 @@ snapshots: tabbable@6.2.0: {} + tapable@2.2.1: {} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 @@ -18788,6 +19925,17 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 + terser-webpack-plugin@5.3.10(esbuild@0.19.3)(webpack@5.93.0(esbuild@0.19.3)): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.31.3 + webpack: 5.93.0(esbuild@0.19.3) + optionalDependencies: + esbuild: 0.19.3 + terser@5.19.2: dependencies: '@jridgewell/source-map': 0.3.5 @@ -18795,6 +19943,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.31.3: + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -18827,7 +19982,8 @@ snapshots: throttle-debounce@3.0.1: {} - throttleit@1.0.0: {} + throttleit@1.0.0: + optional: true through2@0.6.5: dependencies: @@ -18846,13 +20002,15 @@ snapshots: dependencies: setimmediate: 1.0.5 - timm@1.7.1: {} + timm@1.7.1: + optional: true tiny-invariant@1.3.1: {} tinybench@2.5.1: {} - tinycolor2@1.6.0: {} + tinycolor2@1.6.0: + optional: true tinypool@0.7.0: {} @@ -18865,10 +20023,12 @@ snapshots: tmp@0.2.1: dependencies: rimraf: 3.0.2 + optional: true tmpl@1.0.5: {} - to-array@0.1.4: {} + to-array@0.1.4: + optional: true to-fast-properties@2.0.0: {} @@ -18904,6 +20064,7 @@ snapshots: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + optional: true tr46@0.0.3: {} @@ -18919,9 +20080,9 @@ snapshots: dependencies: utf8-byte-length: 1.0.4 - ts-api-utils@1.0.3(typescript@5.5.0-beta): + ts-api-utils@1.0.3(typescript@5.5.4): dependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 ts-dedent@2.2.0: {} @@ -18945,11 +20106,14 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + tty-browserify@0.0.1: {} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - tweetnacl@0.14.5: {} + tweetnacl@0.14.5: + optional: true twgl.js@5.5.4: {} @@ -18963,7 +20127,8 @@ snapshots: type-fest@0.20.2: {} - type-fest@0.21.3: {} + type-fest@0.21.3: + optional: true type-fest@0.6.0: {} @@ -18990,6 +20155,12 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.13 + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.2 @@ -18997,6 +20168,14 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 @@ -19005,12 +20184,30 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-length@1.0.4: dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.12 + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + typed-emitter@1.4.0: {} typed-emitter@2.1.0: @@ -19019,7 +20216,7 @@ snapshots: typedarray@0.0.6: {} - typescript@5.5.0-beta: {} + typescript@5.5.4: {} ua-parser-js@1.0.37: {} @@ -19059,6 +20256,7 @@ snapshots: unidiff@1.0.2: dependencies: diff: 2.2.3 + optional: true unified@11.0.4: dependencies: @@ -19127,9 +20325,11 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.1.2: {} + universalify@0.1.2: + optional: true - universalify@0.2.0: {} + universalify@0.2.0: + optional: true universalify@2.0.0: {} @@ -19157,7 +20357,13 @@ snapshots: dependencies: browserslist: 4.21.10 escalade: 3.1.1 - picocolors: 1.0.0 + picocolors: 1.0.1 + + update-browserslist-db@1.1.0(browserslist@4.23.2): + dependencies: + browserslist: 4.23.2 + escalade: 3.1.2 + picocolors: 1.0.1 upper-case-first@2.0.2: dependencies: @@ -19179,6 +20385,12 @@ snapshots: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + optional: true + + url@0.11.3: + dependencies: + punycode: 1.4.1 + qs: 6.11.2 use-callback-ref@1.3.0(@types/react@18.2.20)(react@18.2.0): dependencies: @@ -19210,13 +20422,13 @@ snapshots: dependencies: react: 18.2.0 - use-typed-event-listener@4.0.2(react@18.2.0)(typescript@5.5.0-beta): + use-typed-event-listener@4.0.2(react@18.2.0)(typescript@5.5.4): dependencies: '@babel/runtime': 7.22.11 react: 18.2.0 use-deep-compare: 1.1.0(react@18.2.0) optionalDependencies: - typescript: 5.5.0-beta + typescript: 5.5.4 use@3.1.1: {} @@ -19225,6 +20437,7 @@ snapshots: utif@2.0.1: dependencies: pako: 1.0.11 + optional: true util-deprecate@1.0.2: {} @@ -19276,6 +20489,7 @@ snapshots: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.3.0 + optional: true vfile-message@4.0.2: dependencies: @@ -19288,14 +20502,14 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@0.34.6(@types/node@20.8.0)(terser@5.19.2): + vite-node@0.34.6(@types/node@20.8.0)(terser@5.31.3): dependencies: cac: 6.7.14 debug: 4.3.4(supports-color@8.1.1) mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.10(@types/node@20.8.0)(terser@5.19.2) + vite: 4.4.10(@types/node@20.8.0)(terser@5.31.3) transitivePeerDependencies: - '@types/node' - less @@ -19306,7 +20520,7 @@ snapshots: - supports-color - terser - vite@4.4.10(@types/node@20.11.19)(terser@5.19.2): + vite@4.4.10(@types/node@20.12.8)(terser@5.31.3): dependencies: esbuild: 0.18.20 postcss: 8.4.31 @@ -19314,9 +20528,9 @@ snapshots: optionalDependencies: '@types/node': 20.12.8 fsevents: 2.3.3 - terser: 5.19.2 + terser: 5.31.3 - vite@4.4.10(@types/node@20.8.0)(terser@5.19.2): + vite@4.4.10(@types/node@20.8.0)(terser@5.31.3): dependencies: esbuild: 0.18.20 postcss: 8.4.31 @@ -19324,19 +20538,19 @@ snapshots: optionalDependencies: '@types/node': 20.8.0 fsevents: 2.3.3 - terser: 5.19.2 + terser: 5.31.3 - vite@4.5.2(@types/node@20.8.0)(terser@5.19.2): + vite@4.5.3(@types/node@20.8.0)(terser@5.31.3): dependencies: esbuild: 0.18.20 - postcss: 8.4.35 + postcss: 8.4.39 rollup: 3.29.4 optionalDependencies: '@types/node': 20.8.0 fsevents: 2.3.3 - terser: 5.19.2 + terser: 5.31.3 - vitest@0.34.6(terser@5.19.2): + vitest@0.34.6(terser@5.31.3): dependencies: '@types/chai': 4.3.6 '@types/chai-subset': 1.3.3 @@ -19359,8 +20573,8 @@ snapshots: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.10(@types/node@20.8.0)(terser@5.19.2) - vite-node: 0.34.6(@types/node@20.8.0)(terser@5.19.2) + vite: 4.4.10(@types/node@20.8.0)(terser@5.31.3) + vite-node: 0.34.6(@types/node@20.8.0)(terser@5.31.3) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -19371,6 +20585,8 @@ snapshots: - supports-color - terser + vm-browserify@1.1.2: {} + w3c-keyname@2.2.8: {} wait-on@7.2.0(debug@4.3.4): @@ -19396,6 +20612,11 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + watchpack@2.4.1: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -19408,6 +20629,37 @@ snapshots: webpack-virtual-modules@0.5.0: {} + webpack@5.93.0(esbuild@0.19.3): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.10.0 + acorn-import-attributes: 1.9.5(acorn@8.10.0) + browserslist: 4.21.10 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.19.3)(webpack@5.93.0(esbuild@0.19.3)) + watchpack: 2.4.1 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + webrtc-adapter@8.2.3: dependencies: sdp: 3.2.0 @@ -19424,7 +20676,8 @@ snapshots: dependencies: iconv-lite: 0.6.3 - whatwg-fetch@3.6.18: {} + whatwg-fetch@3.6.18: + optional: true whatwg-url@5.0.0: dependencies: @@ -19483,6 +20736,14 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.2 + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + which@1.3.1: dependencies: isexe: 2.0.0 @@ -19499,6 +20760,7 @@ snapshots: wide-align@1.1.5: dependencies: string-width: 4.2.3 + optional: true wordwrap@1.0.0: {} @@ -19620,6 +20882,7 @@ snapshots: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + optional: true wrap-ansi@7.0.0: dependencies: @@ -19654,7 +20917,8 @@ snapshots: dependencies: async-limiter: 1.0.1 - ws@7.4.6: {} + ws@7.4.6: + optional: true ws@8.11.0: {} @@ -19664,17 +20928,22 @@ snapshots: is-function: 1.0.2 parse-headers: 2.0.5 xtend: 4.0.2 + optional: true - xml-parse-from-string@1.0.1: {} + xml-parse-from-string@1.0.1: + optional: true xml2js@0.4.23: dependencies: sax: 1.3.0 xmlbuilder: 11.0.1 + optional: true - xmlbuilder@11.0.1: {} + xmlbuilder@11.0.1: + optional: true - xmlhttprequest-ssl@1.6.3: {} + xmlhttprequest-ssl@1.6.3: + optional: true xmlhttprequest-ssl@2.0.0: {} @@ -19711,7 +20980,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.1.2 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -19723,7 +20992,8 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - yeast@0.1.2: {} + yeast@0.1.2: + optional: true yggdrasil@1.7.0(encoding@0.1.13): dependencies: diff --git a/prismarine-viewer/buildMesherWorker.mjs b/prismarine-viewer/buildMesherWorker.mjs index 80f612d3b..f6b50033f 100644 --- a/prismarine-viewer/buildMesherWorker.mjs +++ b/prismarine-viewer/buildMesherWorker.mjs @@ -108,6 +108,7 @@ const buildOptions = { }) build.onEnd(({ metafile, outputFiles }) => { if (!metafile) return + fs.mkdirSync(path.join(__dirname, './public'), { recursive: true }) fs.writeFileSync(path.join(__dirname, './public/metafile.json'), JSON.stringify(metafile)) for (const outDir of ['../dist/', './public/']) { for (const outputFile of outputFiles) { @@ -115,8 +116,9 @@ const buildOptions = { // skip writing & browser loading sourcemap there, worker debugging should be done in playground // continue } - fs.mkdirSync(outDir, { recursive: true }) - fs.writeFileSync(path.join(__dirname, outDir, path.basename(outputFile.path)), outputFile.text) + const writePath = path.join(__dirname, outDir, path.basename(outputFile.path)) + fs.mkdirSync(path.dirname(writePath), { recursive: true }) + fs.writeFileSync(writePath, outputFile.text) } } }) diff --git a/prismarine-viewer/esbuild.mjs b/prismarine-viewer/esbuild.mjs index 1daa84740..78e0e83d6 100644 --- a/prismarine-viewer/esbuild.mjs +++ b/prismarine-viewer/esbuild.mjs @@ -1,7 +1,7 @@ +//@ts-check import * as fs from 'fs' import fsExtra from 'fs-extra' -//@ts-check import * as esbuild from 'esbuild' import { polyfillNode } from 'esbuild-plugin-polyfill-node' import path, { dirname, join } from 'path' @@ -17,7 +17,6 @@ if (!fs.existsSync(mcDataPath)) { await import('../scripts/prepareData.mjs') } -fs.mkdirSync(join(__dirname, 'public'), { recursive: true }) fs.copyFileSync(join(__dirname, 'playground.html'), join(__dirname, 'public/index.html')) fsExtra.copySync(mcDataPath, join(__dirname, 'public/mc-data')) const availableVersions = fs.readdirSync(mcDataPath).map(ver => ver.replace('.js', '')) @@ -60,7 +59,7 @@ const buildOptions = { plugins: [ { name: 'minecraft-data', - setup(build) { + setup (build) { build.onLoad({ filter: /minecraft-data[\/\\]data.js$/, }, () => { @@ -72,7 +71,7 @@ const buildOptions = { }) build.onEnd((e) => { if (e.errors.length) return - fs.writeFileSync(join(__dirname, 'public/metafile.json'), JSON.stringify(e.metafile), 'utf8') + // fs.writeFileSync(join(__dirname, 'dist/metafile.json'), JSON.stringify(e.metafile), 'utf8') }) } }, diff --git a/prismarine-viewer/examples/examples/index.ts b/prismarine-viewer/examples/examples/index.ts new file mode 100644 index 000000000..ee2031063 --- /dev/null +++ b/prismarine-viewer/examples/examples/index.ts @@ -0,0 +1 @@ +export { default as rotation } from './rotation' diff --git a/prismarine-viewer/examples/examples/rotation.ts b/prismarine-viewer/examples/examples/rotation.ts new file mode 100644 index 000000000..8298b72a5 --- /dev/null +++ b/prismarine-viewer/examples/examples/rotation.ts @@ -0,0 +1,9 @@ +import { Vec3 } from 'vec3' +import { ExampleSetupFunction } from './type' + +const setup: ExampleSetupFunction = (world, mcData, mesherConfig, setupParam) => { + mesherConfig.debugModelVariant = [3] + world.setBlockStateId(new Vec3(0, 0, 0), mcData.blocksByName.sand.defaultState) +} + +export default setup diff --git a/prismarine-viewer/examples/examples/type.ts b/prismarine-viewer/examples/examples/type.ts new file mode 100644 index 000000000..e341e26f4 --- /dev/null +++ b/prismarine-viewer/examples/examples/type.ts @@ -0,0 +1,6 @@ +import { CustomWorld } from 'flying-squid/dist/lib/modules/world' +import { MesherConfig } from '../../viewer/lib/mesher/shared' +import { IndexedData } from 'minecraft-data' + +type SetupParams = {} +export type ExampleSetupFunction = (world: CustomWorld, mcData: IndexedData, mesherConfig: MesherConfig, setupParam: SetupParams) => void diff --git a/prismarine-viewer/examples/playground.ts b/prismarine-viewer/examples/playground.ts index b828ac569..0b6c6ffbe 100644 --- a/prismarine-viewer/examples/playground.ts +++ b/prismarine-viewer/examples/playground.ts @@ -6,11 +6,11 @@ import ChunkLoader from 'prismarine-chunk' import WorldLoader from 'prismarine-world' import * as THREE from 'three' import { GUI } from 'lil-gui' -import { toMajor } from '../viewer/lib/version' import { loadScript } from '../viewer/lib/utils' import JSZip from 'jszip' import { TWEEN_DURATION } from '../viewer/lib/entities' import { EntityMesh } from '../viewer/lib/entity/EntityMesh' +import blockstatesModels from 'mc-assets/dist/blockStatesModels.json' // import * as Mathgl from 'math.gl' import { initWebgpuRenderer, loadFixtureSides, setAnimationTick, webgpuChannel } from './webgpuRendererMain' import { renderToDom } from '@zardoy/react-util' @@ -18,6 +18,7 @@ import { renderToDom } from '@zardoy/react-util' globalThis.THREE = THREE //@ts-ignore import { OrbitControls } from 'three/addons/controls/OrbitControls.js' +import { toMajorVersion } from '../../src/utils' import { renderPlayground } from './TouchControls2' import { WorldRendererWebgpu } from '../viewer/lib/worldrendererWebgpu' import { TextureAnimation } from './TextureAnimation' @@ -27,7 +28,7 @@ const gui = new GUI() // initial values const params = { - skip: '', + skipQs: '', version: globalThis.includedVersions.sort((a, b) => { const s = (x) => { const parts = x.split('.') @@ -46,6 +47,7 @@ const params = { camera: '', playSound () { }, blockIsomorphicRenderBundle () { }, + modelVariant: 0, animationTick: 0 } @@ -57,7 +59,7 @@ qs.forEach((value, key) => { const setQs = () => { const newQs = new URLSearchParams() for (const [key, value] of Object.entries(params)) { - if (!value || typeof value === 'function' || params.skip.includes(key)) continue + if (!value || typeof value === 'function' || params.skipQs.includes(key)) continue //@ts-ignore newQs.set(key, value) } @@ -83,7 +85,7 @@ async function main () { // temporary solution until web worker is here, cache data for faster reloads const globalMcData = window['mcData'] if (!globalMcData['version']) { - const major = toMajor(version) + const major = toMajorVersion(version) const sessionKey = `mcData-${major}` if (sessionStorage[sessionKey]) { Object.assign(globalMcData, JSON.parse(sessionStorage[sessionKey])) @@ -102,11 +104,12 @@ async function main () { gui.add(params, 'version', globalThis.includedVersions) gui.add(params, 'block', mcData.blocksArray.map(b => b.name).sort((a, b) => a.localeCompare(b))) const metadataGui = gui.add(params, 'metadata') + gui.add(params, 'modelVariant') gui.add(params, 'supportBlock') gui.add(params, 'entity', mcData.entitiesArray.map(b => b.name).sort((a, b) => a.localeCompare(b))).listen() gui.add(params, 'removeEntity') gui.add(params, 'entityRotate') - gui.add(params, 'skip') + gui.add(params, 'skipQs') gui.add(params, 'playSound') gui.add(params, 'blockIsomorphicRenderBundle') const animationController = gui.add(params, 'animationTick', -1, 20, 1).listen() @@ -130,12 +133,8 @@ async function main () { const chunk1 = new Chunk() //@ts-ignore const chunk2 = new Chunk() - chunk1.setBlockStateId(targetPos, 1) - chunk2.setBlockStateId(targetPos.offset(1, 0, 0), 1) - chunk1.setBlockStateId(targetPos.offset(0, 1, 1), 2) - // chunk1.setBlockStateId(targetPos.offset(0, 1, 0), 1) - // chunk1.setBlockStateId(targetPos.offset(1, 1, 0), 1) - // chunk1.setBlockStateId(targetPos.offset(-1, 1, 0), 1) + chunk1.setBlockStateId(targetPos, 34) + chunk2.setBlockStateId(targetPos.offset(1, 0, 0), 34) //@ts-ignore const world = new World((chunkX, chunkZ) => { // if (chunkX === 0 && chunkZ === 0) return chunk1 @@ -153,11 +152,13 @@ async function main () { const worldView = new WorldDataEmitter(world, viewDistance, targetPos) const nullRenderer = new THREE.WebGLRenderer({ antialias: true }) const viewer = new Viewer(nullRenderer, { numWorkers: 1, showChunkBorders: false }) + viewer.world.blockstatesModels = blockstatesModels + viewer.entities.setDebugMode('basic') viewer.world.stopBlockUpdate = stopUpdate viewer.setVersion(version) globalThis.viewer = viewer - await initWebgpuRenderer(version, () => { }, !enableControls && !fixture, true) + await initWebgpuRenderer(() => { }, !enableControls && !fixture, true) const simpleControls = () => { let pressedKeys = new Set() const loop = () => { @@ -361,36 +362,45 @@ async function main () { let textureAnimation: TextureAnimation | undefined const onUpdate = { + version (initialUpdate) { + if (initialUpdate) return + // viewer.world.texturesVersion = params.version + // viewer.world.updateTexturesData() + // todo warning + }, block () { + blockProps = {} metadataFolder.destroy() const block = mcData.blocksByName[params.block] if (!block) return + console.log('block', block.name) const props = new Block(block.id, 0, 0).getProperties() //@ts-ignore const { states } = mcData.blocksByStateId[getBlock()?.minStateId] ?? {} metadataFolder = gui.addFolder('metadata') if (states) { for (const state of states) { - let defaultValue - switch (state.type) { - case 'enum': - defaultValue = state.values[0] - break - case 'bool': - defaultValue = false - break - case 'int': - defaultValue = 0 - break - case 'direction': - defaultValue = 'north' - break - - default: - continue + let defaultValue: string | number | boolean + if (state.values) { // int, enum + defaultValue = state.values[0] + } else { + switch (state.type) { + case 'bool': + defaultValue = false + break + case 'int': + defaultValue = 0 + break + case 'direction': + defaultValue = 'north' + break + + default: + continue + } } blockProps[state.name] = defaultValue - if (state.type === 'enum') { + if (state.values) { metadataFolder.add(blockProps, state.name, state.values) } else { metadataFolder.add(blockProps, state.name) @@ -402,6 +412,7 @@ async function main () { metadataFolder.add(blockProps, name) } } + console.log('props', blockProps) metadataFolder.open() }, entity () { @@ -427,6 +438,9 @@ async function main () { supportBlock () { viewer.setBlockStateId(targetPos.offset(0, -1, 0), params.supportBlock ? 1 : 0) }, + modelVariant () { + viewer.world.mesherConfig.debugModelVariant = params.modelVariant === 0 ? undefined : [params.modelVariant] + }, animationTick () { const webgl = (viewer.world as WorldRendererWebgpu).playgroundGetWebglData() if (!webgl?.animation) { @@ -491,10 +505,14 @@ async function main () { } }) viewer.waitForChunksToRender().then(async () => { + // TODO! + await new Promise(resolve => { + setTimeout(resolve, 50) + }) for (const update of Object.values(onUpdate)) { - update() + update(true) } - applyChanges(true) + applyChanges() // gui.openAnimated() }) diff --git a/prismarine-viewer/examples/webgpuRendererMain.ts b/prismarine-viewer/examples/webgpuRendererMain.ts index 7be13dfed..e7a012dc0 100644 --- a/prismarine-viewer/examples/webgpuRendererMain.ts +++ b/prismarine-viewer/examples/webgpuRendererMain.ts @@ -68,7 +68,7 @@ export const removeBlocksSection = (key) => { } let playground = false -export const initWebgpuRenderer = async (texturesVersion: string, postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { +export const initWebgpuRenderer = async (postRender = () => { }, playgroundModeInWorker = false, actuallyPlayground = false) => { playground = actuallyPlayground await new Promise(resolve => { // console.log('viewer.world.material.map!.image', viewer.world.material.map!.image) @@ -76,14 +76,16 @@ export const initWebgpuRenderer = async (texturesVersion: string, postRender = ( // console.log(this.material.map!.image) // resolve() // } - viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', resolve) + viewer.world.renderUpdateEmitter.once('textureDownloaded', resolve) }) - const imageBlob = await fetch(`./textures/${texturesVersion}.png`).then((res) => res.blob()) + const image = viewer.world.material.map!.image + const imageBlob = await fetch(image.src).then((res) => res.blob()) const canvas = document.createElement('canvas') canvas.width = window.innerWidth * window.devicePixelRatio canvas.height = window.innerHeight * window.devicePixelRatio document.body.appendChild(canvas) canvas.id = 'viewer-canvas' + console.log('starting offscreen') const offscreen = canvas.transferControlToOffscreen() diff --git a/prismarine-viewer/index.d.ts b/prismarine-viewer/index.d.ts deleted file mode 100644 index 543fa225d..000000000 --- a/prismarine-viewer/index.d.ts +++ /dev/null @@ -1,38 +0,0 @@ -import {Bot} from "mineflayer"; - -export function mineflayer(bot: Bot, settings: { - viewDistance?: number; - firstPerson?: boolean; - port?: number; - prefix?: string; -}); - -export function standalone(options: { - version: versions; - world: (x: number, y: number, z: number) => 0 | 1; - center?: Vec3; - viewDistance?: number; - port?: number; - prefix?: string; -}); - -export function headless(bot: Bot, settings: { - viewDistance?: number; - output?: string; - frames?: number; - width?: number; - height?: number; - logFFMPEG?: boolean; - jpegOption: any; -}); - -export const viewer: { - Viewer: any; - WorldDataEmitter: any; - MapControls: any; - Entitiy: any; - getBufferFromStream: (stream: any) => Promise; -}; - -export const supportedVersions: versions[]; -export type versions = '1.8.8' | '1.9.4' | '1.10.2' | '1.11.2' | '1.12.2' | '1.13.2' | '1.14.4' | '1.15.2' | '1.16.1' | '1.16.4' | '1.17.1' | '1.18.1'; diff --git a/prismarine-viewer/index.js b/prismarine-viewer/index.js index 67136592c..37689158e 100644 --- a/prismarine-viewer/index.js +++ b/prismarine-viewer/index.js @@ -3,5 +3,4 @@ module.exports = { standalone: require('./lib/standalone'), headless: require('./lib/headless'), viewer: require('./viewer'), - supportedVersions: require('./viewer/supportedVersions.json') } diff --git a/prismarine-viewer/jest-puppeteer.config.js b/prismarine-viewer/jest-puppeteer.config.js deleted file mode 100644 index 6007898f8..000000000 --- a/prismarine-viewer/jest-puppeteer.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - launch: { - args: ['--no-sandbox', '--disable-setuid-sandbox'] - } -} diff --git a/prismarine-viewer/jest.config.js b/prismarine-viewer/jest.config.js deleted file mode 100644 index ae87d0d01..000000000 --- a/prismarine-viewer/jest.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - preset: 'jest-puppeteer', - testRegex: './*\\.test\\.js$' -} diff --git a/prismarine-viewer/package.json b/prismarine-viewer/package.json index c44e72879..38245aa0f 100644 --- a/prismarine-viewer/package.json +++ b/prismarine-viewer/package.json @@ -3,10 +3,7 @@ "version": "1.25.0", "description": "Web based viewer", "main": "index.js", - "scripts": { - "postinstall": "pnpm generate-textures && node buildMesherWorker.mjs", - "generate-textures": "tsx viewer/prepare/postinstall.ts" - }, + "scripts": {}, "author": "PrismarineJS", "license": "MIT", "standard": { @@ -22,11 +19,9 @@ "live-server": "^1.2.2", "assert": "^2.0.0", "buffer": "^6.0.3", - "canvas": "^2.11.2", "filesize": "^10.0.12", "fs-extra": "^11.0.0", "lil-gui": "^0.18.2", - "looks-same": "^8.2.3", "minecraft-wrap": "^1.3.0", "minecrafthawkeye": "^1.3.6", "prismarine-block": "^1.7.3", @@ -42,6 +37,7 @@ "vec3": "^0.1.7" }, "optionalDependencies": { + "canvas": "^2.11.2", "node-canvas-webgl": "^0.3.0" } } diff --git a/prismarine-viewer/tsconfig.json b/prismarine-viewer/tsconfig.json deleted file mode 100644 index 331961856..000000000 --- a/prismarine-viewer/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "strictNullChecks": true, - "experimentalDecorators": true - }, - "files": [ - "index.d.ts", - "globals.d.ts", - ] -} diff --git a/prismarine-viewer/viewer/lib/entities.js b/prismarine-viewer/viewer/lib/entities.js index 94f06e0c6..5bd5274cc 100644 --- a/prismarine-viewer/viewer/lib/entities.js +++ b/prismarine-viewer/viewer/lib/entities.js @@ -7,7 +7,7 @@ import EventEmitter from 'events' import { PlayerObject, PlayerAnimation } from 'skinview3d' import { loadSkinToCanvas, loadEarsToCanvasFromSkin, inferModelType, loadCapeToCanvas, loadImage } from 'skinview-utils' // todo replace with url -import stevePng from 'minecraft-assets/minecraft-assets/data/1.20.2/entity/player/wide/steve.png' +import stevePng from 'mc-assets/dist/other-textures/latest/entity/player/wide/steve.png' import { WalkingGeneralSwing } from './entity/animations' import { NameTagObject } from 'skinview3d/libs/nametag' import { flat, fromFormattedString } from '@xmcl/text-component' @@ -17,7 +17,7 @@ import { disposeObject } from './threeJsUtils' export const TWEEN_DURATION = 50 // todo should be 100 -function getUsernameTexture(username, { fontFamily = 'sans-serif' }) { +function getUsernameTexture (username, { fontFamily = 'sans-serif' }) { const canvas = document.createElement('canvas') const ctx = canvas.getContext('2d') if (!ctx) throw new Error('Could not get 2d context') @@ -61,7 +61,7 @@ const addNametag = (entity, options, mesh) => { // todo cleanup const nametags = {} -function getEntityMesh(entity, scene, options, overrides) { +function getEntityMesh (entity, scene, options, overrides) { if (entity.name) { try { // https://github.com/PrismarineJS/prismarine-viewer/pull/410 @@ -102,11 +102,12 @@ export class Entities extends EventEmitter { this.onSkinUpdate = () => { } this.clock = new THREE.Clock() this.rendering = true + /** @type {THREE.Texture | null} */ this.itemsTexture = null this.getItemUv = undefined } - clear() { + clear () { for (const mesh of Object.values(this.entities)) { this.scene.remove(mesh) disposeObject(mesh) @@ -114,7 +115,7 @@ export class Entities extends EventEmitter { this.entities = {} } - setDebugMode(mode, /** @type {THREE.Object3D?} */entity = null) { + setDebugMode (mode, /** @type {THREE.Object3D?} */entity = null) { this.debugMode = mode for (const mesh of entity ? [entity] : Object.values(this.entities)) { const boxHelper = mesh.children.find(c => c.name === 'debug') @@ -126,7 +127,7 @@ export class Entities extends EventEmitter { } } - setRendering(rendering, /** @type {THREE.Object3D?} */entity = null) { + setRendering (rendering, /** @type {THREE.Object3D?} */entity = null) { this.rendering = rendering for (const ent of entity ? [entity] : Object.values(this.entities)) { if (rendering) { @@ -137,7 +138,7 @@ export class Entities extends EventEmitter { } } - render() { + render () { const dt = this.clock.getDelta() for (const entityId of Object.keys(this.entities)) { const playerObject = this.getPlayerObject(entityId) @@ -147,7 +148,7 @@ export class Entities extends EventEmitter { } } - getPlayerObject(entityId) { + getPlayerObject (entityId) { /** @type {(PlayerObject & { animation?: PlayerAnimation }) | undefined} */ const playerObject = this.entities[entityId]?.playerObject return playerObject @@ -157,7 +158,7 @@ export class Entities extends EventEmitter { defaultSteveTexture // true means use default skin url - updatePlayerSkin(entityId, username, /** @type {string | true} */skinUrl, /** @type {string | true | undefined} */capeUrl = undefined) { + updatePlayerSkin (entityId, username, /** @type {string | true} */skinUrl, /** @type {string | true | undefined} */capeUrl = undefined) { let playerObject = this.getPlayerObject(entityId) if (!playerObject) return // const username = this.entities[entityId].username @@ -240,14 +241,14 @@ export class Entities extends EventEmitter { playerObject.cape.map = null } - function isCanvasBlank(canvas) { + function isCanvasBlank (canvas) { return !canvas.getContext('2d') .getImageData(0, 0, canvas.width, canvas.height).data .some(channel => channel !== 0) } } - playAnimation(entityPlayerId, /** @type {'walking' | 'running' | 'oneSwing' | 'idle'} */animation) { + playAnimation (entityPlayerId, /** @type {'walking' | 'running' | 'oneSwing' | 'idle'} */animation) { const playerObject = this.getPlayerObject(entityPlayerId) if (!playerObject) return @@ -267,7 +268,7 @@ export class Entities extends EventEmitter { } - parseEntityLabel(jsonLike) { + parseEntityLabel (jsonLike) { if (!jsonLike) return try { const parsed = typeof jsonLike === 'string' ? mojangson.simplify(mojangson.parse(jsonLike)) : nbt.simplify(jsonLike) @@ -278,7 +279,7 @@ export class Entities extends EventEmitter { } } - update(/** @type {import('prismarine-entity').Entity & {delete?, pos}} */entity, overrides) { + update (/** @type {import('prismarine-entity').Entity & {delete?, pos}} */entity, overrides) { let isPlayerModel = entity.name === 'player' if (entity.name === 'zombie' || entity.name === 'zombie_villager' || entity.name === 'husk') { isPlayerModel = true @@ -405,14 +406,14 @@ export class Entities extends EventEmitter { } //@ts-ignore + // set visibility const isInvisible = entity.metadata?.[0] & 0x20 - if (isInvisible) { - for (const child of this.entities[entity.id].children.find(c => c.name === 'mesh').children) { - if (child.name !== 'nametag') { - child.visible = false - } + for (const child of this.entities[entity.id]?.children.find(c => c.name === 'mesh')?.children ?? []) { + if (child.name !== 'nametag') { + child.visible = !isInvisible } } + // --- // not player const displayText = entity.metadata?.[3] && this.parseEntityLabel(entity.metadata[2]) if (entity.name !== 'player' && displayText) { diff --git a/prismarine-viewer/viewer/lib/entity/EntityMesh.js b/prismarine-viewer/viewer/lib/entity/EntityMesh.js index 8f8812d0c..ef71019a8 100644 --- a/prismarine-viewer/viewer/lib/entity/EntityMesh.js +++ b/prismarine-viewer/viewer/lib/entity/EntityMesh.js @@ -1,4 +1,5 @@ //@ts-check +import * as THREE from 'three' import { OBJLoader } from 'three-stdlib' import entities from './entities.json' import { externalModels } from './objModels' @@ -87,11 +88,11 @@ const elemFaces = { } } -function dot (a, b) { +function dot(a, b) { return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] } -function addCube (attr, boneId, bone, cube, texWidth = 64, texHeight = 64) { +function addCube(attr, boneId, bone, cube, texWidth = 64, texHeight = 64) { const cubeRotation = new THREE.Euler(0, 0, 0) if (cube.rotation) { cubeRotation.x = -cube.rotation[0] * Math.PI / 180 @@ -131,7 +132,7 @@ function addCube (attr, boneId, bone, cube, texWidth = 64, texHeight = 64) { } } -function getMesh (texture, jsonModel, overrides = {}) { +function getMesh(texture, jsonModel, overrides = {}) { const bones = {} const geoData = { @@ -294,7 +295,7 @@ const getEntity = (name) => { // } export class EntityMesh { - constructor (version, type, scene, /** @type {{textures?, rotation?: Record}} */overrides = {}) { + constructor(version, type, scene, /** @type {{textures?, rotation?: Record}} */overrides = {}) { let originalType = type const mappedValue = temporaryMap[type] if (mappedValue) type = mappedValue @@ -355,7 +356,7 @@ export class EntityMesh { const texture = overrides.textures?.[name] ?? e.textures[name] if (!texture) continue // console.log(JSON.stringify(jsonModel, null, 2)) - const mesh = getMesh(texture.replace('textures', 'textures/' + version) + '.png', jsonModel, overrides) + const mesh = getMesh(texture + '.png', jsonModel, overrides,) mesh.name = `geometry_${name}` this.mesh.add(mesh) @@ -367,7 +368,7 @@ export class EntityMesh { } } - static getStaticData (name) { + static getStaticData(name) { name = temporaryMap[name] || name if (externalModels[name]) { return { diff --git a/prismarine-viewer/viewer/lib/mesher/mesher.ts b/prismarine-viewer/viewer/lib/mesher/mesher.ts index 57eb7c4f6..fbefd1a9c 100644 --- a/prismarine-viewer/viewer/lib/mesher/mesher.ts +++ b/prismarine-viewer/viewer/lib/mesher/mesher.ts @@ -1,6 +1,6 @@ import { World } from './world' import { Vec3 } from 'vec3' -import { getSectionGeometry, setBlockStatesData } from './models' +import { getSectionGeometry, setBlockStatesData as setMesherData } from './models' if (module.require) { // If we are in a node environement, we need to fake some env variables @@ -13,7 +13,7 @@ if (module.require) { let world: World let dirtySections: Map = new Map() -let blockStatesReady = false +let allDataReady = false function sectionKey (x, y, z) { return `${x},${y},${z}` @@ -74,15 +74,18 @@ const handleMessage = data => { } if (data.config) { + if (data.type === 'mesherData' && allDataReady) { + world = undefined as any // reset models + } + world ??= new World(data.config.version) world.config = { ...world.config, ...data.config } globalThis.world = world } if (data.type === 'mesherData') { - // todo - setBlockStatesData(data.json, world.config.outputFormat === 'webgpu') - blockStatesReady = true + setMesherData(data.blockstatesModels, data.blocksAtlas, data.config.outputFormat === 'webgpu') + allDataReady = true } else if (data.type === 'dirty') { const loc = new Vec3(data.x, data.y, data.z) setSectionDirty(loc, data.value) @@ -100,7 +103,7 @@ const handleMessage = data => { dirtySections = new Map() // todo also remove cached globalVar.mcData = null - blockStatesReady = false + allDataReady = false } } @@ -114,7 +117,7 @@ self.onmessage = ({ data }) => { } setInterval(() => { - if (world === null || !blockStatesReady) return + if (world === null || !allDataReady) return if (dirtySections.size === 0) return // console.log(sections.length + ' dirty sections') diff --git a/prismarine-viewer/viewer/lib/mesher/models.ts b/prismarine-viewer/viewer/lib/mesher/models.ts index 3bb9b596a..425154426 100644 --- a/prismarine-viewer/viewer/lib/mesher/models.ts +++ b/prismarine-viewer/viewer/lib/mesher/models.ts @@ -1,14 +1,15 @@ import { Vec3 } from 'vec3' -import type { BlockStatesOutput } from '../../prepare/modelsBuilder' -import { World } from './world' +import { World, BlockModelPartsResolved } from './world' import { WorldBlock as Block } from './world' import legacyJson from '../../../../src/preflatMap.json' -import { versionToNumber } from '../../prepare/utils' +import worldBlockProvider, { WorldBlockProvider } from 'mc-assets/dist/worldBlockProvider' +import { BlockElement, buildRotationMatrix, elemFaces, matmul3, matmulmat3, vecadd3, vecsub3 } from './modelsGeometryCommon' + +let blockProvider: WorldBlockProvider import { BlockType } from '../../../examples/shared' import { MesherGeometryOutput } from './shared' const tints: any = {} -let blockStates: BlockStatesOutput let needTiles = false let tintsData @@ -50,6 +51,10 @@ function prepareTints (tints) { }) } +function mod (x: number, n: number) { + return ((x % n) + n) % n +} + const calculatedBlocksEntries = Object.entries(legacyJson.clientCalculatedBlocks) export function preflatBlockCalculation (block: Block, world: World, position: Vec3) { const type = calculatedBlocksEntries.find(([name, blocks]) => blocks.includes(block.name))?.[0] @@ -104,75 +109,6 @@ function tintToGl (tint) { return [r / 255, g / 255, b / 255] } -const elemFaces = { - up: { - dir: [0, 1, 0], - mask1: [1, 1, 0], - mask2: [0, 1, 1], - corners: [ - [0, 1, 1, 0, 1], - [1, 1, 1, 1, 1], - [0, 1, 0, 0, 0], - [1, 1, 0, 1, 0] - ] - }, - down: { - dir: [0, -1, 0], - mask1: [1, 1, 0], - mask2: [0, 1, 1], - corners: [ - [1, 0, 1, 0, 1], - [0, 0, 1, 1, 1], - [1, 0, 0, 0, 0], - [0, 0, 0, 1, 0] - ] - }, - east: { - dir: [1, 0, 0], - mask1: [1, 1, 0], - mask2: [1, 0, 1], - corners: [ - [1, 1, 1, 0, 0], - [1, 0, 1, 0, 1], - [1, 1, 0, 1, 0], - [1, 0, 0, 1, 1] - ] - }, - west: { - dir: [-1, 0, 0], - mask1: [1, 1, 0], - mask2: [1, 0, 1], - corners: [ - [0, 1, 0, 0, 0], - [0, 0, 0, 0, 1], - [0, 1, 1, 1, 0], - [0, 0, 1, 1, 1] - ] - }, - north: { - dir: [0, 0, -1], - mask1: [1, 0, 1], - mask2: [0, 1, 1], - corners: [ - [1, 0, 0, 0, 1], - [0, 0, 0, 1, 1], - [1, 1, 0, 0, 0], - [0, 1, 0, 1, 0] - ] - }, - south: { - dir: [0, 0, 1], - mask1: [1, 0, 1], - mask2: [0, 1, 1], - corners: [ - [0, 0, 1, 0, 1], - [1, 0, 1, 1, 1], - [0, 1, 1, 0, 0], - [1, 1, 1, 1, 0] - ] - } -} - function getLiquidRenderHeight (world, block, type, pos) { if (!block || block.type !== type) return 1 / 9 if (block.metadata === 0) { // source block @@ -253,8 +189,9 @@ const findTextureInBlockStates = (name): any => { const isCube = (block) => { if (!block || block.transparent) return false if (block.isCube) return true - if (!block.variant) block.variant = getModelVariants(block) - if (!block.variant.length) return false + // TODO! + // if (!block.variant) block.variant = getModelVariants(block) + if (!block.variant?.length) return false return block.variant.every(v => everyArray(v?.model?.elements, e => { return e.from[0] === 0 && e.from[1] === 0 && e.from[2] === 0 && e.to[0] === 16 && e.to[1] === 16 && e.to[2] === 16 })) @@ -326,78 +263,9 @@ function renderLiquid (world, cursor, texture, type, biome, water, attr) { } } -function vecadd3 (a, b) { - if (!b) return a - return [a[0] + b[0], a[1] + b[1], a[2] + b[2]] -} - -function vecsub3 (a, b) { - if (!b) return a - return [a[0] - b[0], a[1] - b[1], a[2] - b[2]] -} - -function matmul3 (matrix, vector): [number, number, number] { - if (!matrix) return vector - return [ - matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2], - matrix[1][0] * vector[0] + matrix[1][1] * vector[1] + matrix[1][2] * vector[2], - matrix[2][0] * vector[0] + matrix[2][1] * vector[1] + matrix[2][2] * vector[2] - ] -} - -function matmulmat3 (a, b) { - const te = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] - - const a11 = a[0][0]; const a12 = a[1][0]; const a13 = a[2][0] - const a21 = a[0][1]; const a22 = a[1][1]; const a23 = a[2][1] - const a31 = a[0][2]; const a32 = a[1][2]; const a33 = a[2][2] - - const b11 = b[0][0]; const b12 = b[1][0]; const b13 = b[2][0] - const b21 = b[0][1]; const b22 = b[1][1]; const b23 = b[2][1] - const b31 = b[0][2]; const b32 = b[1][2]; const b33 = b[2][2] - - te[0][0] = a11 * b11 + a12 * b21 + a13 * b31 - te[1][0] = a11 * b12 + a12 * b22 + a13 * b32 - te[2][0] = a11 * b13 + a12 * b23 + a13 * b33 - - te[0][1] = a21 * b11 + a22 * b21 + a23 * b31 - te[1][1] = a21 * b12 + a22 * b22 + a23 * b32 - te[2][1] = a21 * b13 + a22 * b23 + a23 * b33 - - te[0][2] = a31 * b11 + a32 * b21 + a33 * b31 - te[1][2] = a31 * b12 + a32 * b22 + a33 * b32 - te[2][2] = a31 * b13 + a32 * b23 + a33 * b33 - - return te -} - -function buildRotationMatrix (axis, degree) { - const radians = degree / 180 * Math.PI - const cos = Math.cos(radians) - const sin = Math.sin(radians) - - const axis0 = { x: 0, y: 1, z: 2 }[axis] - const axis1 = (axis0 + 1) % 3 - const axis2 = (axis0 + 2) % 3 - - const matrix = [ - [0, 0, 0], - [0, 0, 0], - [0, 0, 0] - ] - - matrix[axis0][axis0] = 1 - matrix[axis1][axis1] = cos - matrix[axis1][axis2] = -sin - matrix[axis2][axis1] = +sin - matrix[axis2][axis2] = cos - - return matrix -} - let needRecompute = false -function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr: MesherGeometryOutput, globalMatrix, globalShift, block: Block, biome) { +function renderElement (world: World, cursor: Vec3, element: BlockElement, doAO: boolean, attr: MesherGeometryOutput, globalMatrix: any, globalShift: any, block: Block, biome: string) { const position = cursor // const key = `${position.x},${position.y},${position.z}` // if (!globalThis.allowedBlocks.includes(key)) return @@ -426,10 +294,11 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr const maxy = element.to[1] const maxz = element.to[2] - const u = eFace.texture.u - const v = eFace.texture.v - const su = eFace.texture.su - const sv = eFace.texture.sv + const texture = eFace.texture as any + const u = texture.u + const v = texture.v + const su = texture.su + const sv = texture.sv const ndx = Math.floor(attr.positions.length / 3) @@ -459,6 +328,7 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr let localShift = null as any if (element.rotation) { + // todo do we support rescale? localMatrix = buildRotationMatrix( element.rotation.axis, element.rotation.angle @@ -566,6 +436,11 @@ function renderElement (world: World, cursor: Vec3, element, doAO: boolean, attr } } +const invisibleBlocks = ['air', 'cave_air', 'void_air', 'barrier'] + +const isBlockWaterlogged = (block: Block) => block.getProperties().waterlogged === true || block.getProperties().waterlogged === 'true' + +let unknownBlockModel: BlockModelPartsResolved export function getSectionGeometry (sx, sy, sz, world: World) { let delayedRender = [] as (() => void)[] @@ -592,6 +467,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { for (cursor.z = sz; cursor.z < sz + 16; cursor.z++) { for (cursor.x = sx; cursor.x < sx + 16; cursor.x++) { const block = world.getBlock(cursor)! + if (invisibleBlocks.includes(block.name)) continue if (block.name.includes('_sign') || block.name === 'sign') { const key = `${cursor.x},${cursor.y},${cursor.z}` const props: any = block.getProperties() @@ -627,51 +503,71 @@ export function getSectionGeometry (sx, sy, sz, world: World) { block._originalProperties = undefined } } - if (block.variant === undefined || preflatRecomputeVariant) { - block.variant = getModelVariants(block) + + const isWaterlogged = isBlockWaterlogged(block) + if (block.name === 'water' || isWaterlogged) { + const pos = cursor.clone() + delayedRender.push(() => { + renderLiquid(world, pos, blockProvider.getTextureInfo('water_still'), block.type, biome, true, attr) + }) + } else if (block.name === 'lava') { + renderLiquid(world, cursor, blockProvider.getTextureInfo('lava_still'), block.type, biome, false, attr) } + if (block.name !== "water" && block.name !== "lava" && !invisibleBlocks.includes(block.name)) { + // cache + let models = block.models + if (block.models === undefined || preflatRecomputeVariant) { + try { + models = blockProvider.getAllResolvedModels0_1({ + name: block.name, + properties: block.getProperties(), + })! + if (!models.length) models = null + } catch (err) { + console.error(`Critical assets error. Unable to get block model for ${block.name}[${JSON.stringify(block.getProperties())}]: ` + err.message, err.stack) + } + } + block.models = models ?? null - for (const variant of block.variant) { - if (!variant || !variant.model) continue + models ??= unknownBlockModel - const isWaterlogged = block.getProperties().waterlogged - if (block.name === 'water' || isWaterlogged) { - const waterBlock = block.name === 'water' ? block : { name: 'water', metadata: 0 } - const variant = getModelVariants(waterBlock as any)[0] + const firstForceVar = world.config.debugModelVariant?.[0] + let part = 0 + for (const modelVars of models ?? []) { const pos = cursor.clone() - delayedRender.push(() => { - renderLiquid(world, pos, variant.model.textures.particle, block.type, biome, true, attr) - }) - } else if (block.name === 'lava') { - renderLiquid(world, cursor, variant.model.textures.particle, block.type, biome, false, attr) - } - if (block.name !== "water") { + // const variantRuntime = mod(Math.floor(pos.x / 16) + Math.floor(pos.y / 16) + Math.floor(pos.z / 16), modelVars.length) + const variantRuntime = 0 + const useVariant = world.config.debugModelVariant?.[part] ?? firstForceVar ?? variantRuntime + part++ + const model = modelVars[useVariant] ?? modelVars[0] + if (!model) continue + let globalMatrix = null as any let globalShift = null as any - - for (const axis of ['x', 'y', 'z']) { - if (axis in variant) { - if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -variant[axis]) - else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -variant[axis])) + for (const axis of ['x', 'y', 'z'] as const) { + if (axis in model) { + if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -(model[axis] ?? 0)) + else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -(model[axis] ?? 0))) } } - if (globalMatrix) { globalShift = [8, 8, 8] globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) } - for (const element of variant.model.elements) { + for (const element of model.elements ?? []) { + const ao = model.ao ?? true if (block.transparent) { const pos = cursor.clone() delayedRender.push(() => { - renderElement(world, pos, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) + renderElement(world, pos, element, ao, attr, globalMatrix, globalShift, block, biome) }) } else { - renderElement(world, cursor, element, variant.model.ao, attr, globalMatrix, globalShift, block, biome) + renderElement(world, cursor, element, ao, attr, globalMatrix, globalShift, block, biome) } } } + } } } @@ -705,7 +601,7 @@ export function getSectionGeometry (sx, sy, sz, world: World) { delete attr.t_uvs attr.positions = new Float32Array(attr.positions) as any - attr.normals = new Int8Array(attr.normals) as any + attr.normals = new Float32Array(attr.normals) as any attr.colors = new Float32Array(attr.colors) as any attr.uvs = new Float32Array(attr.uvs) as any @@ -719,65 +615,12 @@ export function getSectionGeometry (sx, sy, sz, world: World) { return attr } -function parseProperties (properties) { - if (typeof properties === 'object') { return properties } - - const json = {} - for (const prop of properties.split(',')) { - const [key, value] = prop.split('=') - json[key] = value +export const setBlockStatesData = (blockstatesModels, blocksAtlas: any, _needTiles = false, useUnknownBlockModel = true) => { + blockProvider = worldBlockProvider(blockstatesModels, blocksAtlas, 'latest') + globalThis.blockProvider = blockProvider + if (useUnknownBlockModel) { + unknownBlockModel = blockProvider.getAllResolvedModels0_1({ name: 'unknown', properties: {} }) } - return json -} - -function matchProperties (block: Block, /* to match against */properties: Record & { OR }) { - if (!properties) { return true } - - properties = parseProperties(properties) - const blockProps = block.getProperties() - if (properties.OR) { - return properties.OR.some((or) => matchProperties(block, or)) - } - for (const prop in blockProps) { - if (properties[prop] === undefined) continue // unknown property, ignore - if (typeof properties[prop] !== 'string') properties[prop] = String(properties[prop]) - if (!(properties[prop] as string).split('|').some((value) => value === String(blockProps[prop]))) { - return false - } - } - return true -} - -function getModelVariants (block: Block) { - // air, cave_air, void_air and so on... - // full list of invisible & special blocks https://minecraft.wiki/w/Model#Blocks_and_fluids - if (block.name === '' || block.name === 'air' || block.name.endsWith('_air')) return [] - if (block.name === 'barrier') return [] - const matchedState = blockStates[block.name] - // if (!matchedState) currentWarnings.value.add(`Missing block ${block.name}`) - const state = matchedState ?? blockStates.missing_texture - if (!state) return [] - if (state.variants) { - for (const [properties, variant] of Object.entries(state.variants)) { - if (!matchProperties(block, properties as any)) continue - if (variant instanceof Array) return [variant[0]] - return [variant] - } - } - if (state.multipart) { - const parts = state.multipart.filter(multipart => matchProperties(block, multipart.when)) - let variants = [] as any[] - for (const part of parts) { - variants = [...variants, ...Array.isArray(part.apply) ? part.apply : [part.apply]] - } - - return variants - } - - return [] -} -export const setBlockStatesData = (_blockStates: BlockStatesOutput | null, _needTiles = false) => { - blockStates = _blockStates! needTiles = _needTiles } diff --git a/prismarine-viewer/viewer/lib/mesher/modelsGeometryCommon.ts b/prismarine-viewer/viewer/lib/mesher/modelsGeometryCommon.ts new file mode 100644 index 000000000..1d83c818d --- /dev/null +++ b/prismarine-viewer/viewer/lib/mesher/modelsGeometryCommon.ts @@ -0,0 +1,142 @@ +import { BlockModelPartsResolved } from './world' + +export type BlockElement = NonNullable[0] + + +export function buildRotationMatrix (axis, degree) { + const radians = degree / 180 * Math.PI + const cos = Math.cos(radians) + const sin = Math.sin(radians) + + const axis0 = { x: 0, y: 1, z: 2 }[axis] + const axis1 = (axis0 + 1) % 3 + const axis2 = (axis0 + 2) % 3 + + const matrix = [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ] + + matrix[axis0][axis0] = 1 + matrix[axis1][axis1] = cos + matrix[axis1][axis2] = -sin + matrix[axis2][axis1] = +sin + matrix[axis2][axis2] = cos + + return matrix +} + +export function vecadd3 (a, b) { + if (!b) return a + return [a[0] + b[0], a[1] + b[1], a[2] + b[2]] +} + +export function vecsub3 (a, b) { + if (!b) return a + return [a[0] - b[0], a[1] - b[1], a[2] - b[2]] +} + +export function matmul3 (matrix, vector): [number, number, number] { + if (!matrix) return vector + return [ + matrix[0][0] * vector[0] + matrix[0][1] * vector[1] + matrix[0][2] * vector[2], + matrix[1][0] * vector[0] + matrix[1][1] * vector[1] + matrix[1][2] * vector[2], + matrix[2][0] * vector[0] + matrix[2][1] * vector[1] + matrix[2][2] * vector[2] + ] +} + +export function matmulmat3 (a, b) { + const te = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] + + const a11 = a[0][0]; const a12 = a[1][0]; const a13 = a[2][0] + const a21 = a[0][1]; const a22 = a[1][1]; const a23 = a[2][1] + const a31 = a[0][2]; const a32 = a[1][2]; const a33 = a[2][2] + + const b11 = b[0][0]; const b12 = b[1][0]; const b13 = b[2][0] + const b21 = b[0][1]; const b22 = b[1][1]; const b23 = b[2][1] + const b31 = b[0][2]; const b32 = b[1][2]; const b33 = b[2][2] + + te[0][0] = a11 * b11 + a12 * b21 + a13 * b31 + te[1][0] = a11 * b12 + a12 * b22 + a13 * b32 + te[2][0] = a11 * b13 + a12 * b23 + a13 * b33 + + te[0][1] = a21 * b11 + a22 * b21 + a23 * b31 + te[1][1] = a21 * b12 + a22 * b22 + a23 * b32 + te[2][1] = a21 * b13 + a22 * b23 + a23 * b33 + + te[0][2] = a31 * b11 + a32 * b21 + a33 * b31 + te[1][2] = a31 * b12 + a32 * b22 + a33 * b32 + te[2][2] = a31 * b13 + a32 * b23 + a33 * b33 + + return te +} + +export const elemFaces = { + up: { + dir: [0, 1, 0], + mask1: [1, 1, 0], + mask2: [0, 1, 1], + corners: [ + [0, 1, 1, 0, 1], + [1, 1, 1, 1, 1], + [0, 1, 0, 0, 0], + [1, 1, 0, 1, 0] + ] + }, + down: { + dir: [0, -1, 0], + mask1: [1, 1, 0], + mask2: [0, 1, 1], + corners: [ + [1, 0, 1, 0, 1], + [0, 0, 1, 1, 1], + [1, 0, 0, 0, 0], + [0, 0, 0, 1, 0] + ] + }, + east: { + dir: [1, 0, 0], + mask1: [1, 1, 0], + mask2: [1, 0, 1], + corners: [ + [1, 1, 1, 0, 0], + [1, 0, 1, 0, 1], + [1, 1, 0, 1, 0], + [1, 0, 0, 1, 1] + ] + }, + west: { + dir: [-1, 0, 0], + mask1: [1, 1, 0], + mask2: [1, 0, 1], + corners: [ + [0, 1, 0, 0, 0], + [0, 0, 0, 0, 1], + [0, 1, 1, 1, 0], + [0, 0, 1, 1, 1] + ] + }, + north: { + dir: [0, 0, -1], + mask1: [1, 0, 1], + mask2: [0, 1, 1], + corners: [ + [1, 0, 0, 0, 1], + [0, 0, 0, 1, 1], + [1, 1, 0, 0, 0], + [0, 1, 0, 1, 0] + ] + }, + south: { + dir: [0, 0, 1], + mask1: [1, 0, 1], + mask2: [0, 1, 1], + corners: [ + [0, 0, 1, 0, 1], + [1, 0, 1, 1, 1], + [0, 1, 1, 0, 0], + [1, 1, 1, 1, 0] + ] + } +} diff --git a/prismarine-viewer/viewer/lib/mesher/shared.ts b/prismarine-viewer/viewer/lib/mesher/shared.ts index 75b801446..a7a017de3 100644 --- a/prismarine-viewer/viewer/lib/mesher/shared.ts +++ b/prismarine-viewer/viewer/lib/mesher/shared.ts @@ -7,6 +7,7 @@ export const defaultMesherConfig = { smoothLighting: true, outputFormat: 'threeJs' as 'threeJs' | 'webgpu', textureSize: 1024, // for testing + debugModelVariant: undefined as undefined | number[] } export type MesherConfig = typeof defaultMesherConfig diff --git a/prismarine-viewer/viewer/lib/mesher/standaloneRenderer.ts b/prismarine-viewer/viewer/lib/mesher/standaloneRenderer.ts new file mode 100644 index 000000000..71e0c56ff --- /dev/null +++ b/prismarine-viewer/viewer/lib/mesher/standaloneRenderer.ts @@ -0,0 +1,273 @@ +import { Vec3 } from 'vec3' +import { BlockElement, buildRotationMatrix, elemFaces, matmul3, matmulmat3, vecadd3, vecsub3 } from './modelsGeometryCommon' +import { Block } from 'prismarine-block' +import { BlockModelPartsResolved } from './world' +import { IndexedData } from 'minecraft-data' +import * as THREE from 'three' + +type NeighborSide = 'up' | 'down' | 'east' | 'west' | 'north' | 'south' + +function tintToGl (tint) { + const r = (tint >> 16) & 0xff + const g = (tint >> 8) & 0xff + const b = tint & 0xff + return [r / 255, g / 255, b / 255] +} + +type Neighbors = Partial> +function renderElement (element: BlockElement, doAO: boolean, attr, globalMatrix, globalShift, block: Block | undefined, biome: string, neighbors: Neighbors) { + const cursor = new Vec3(0, 0, 0) + + // const key = `${position.x},${position.y},${position.z}` + // if (!globalThis.allowedBlocks.includes(key)) return + // const cullIfIdentical = block.name.indexOf('glass') >= 0 + + for (const face in element.faces) { + const eFace = element.faces[face] + const { corners, mask1, mask2 } = elemFaces[face] + const dir = matmul3(globalMatrix, elemFaces[face].dir) + + if (eFace.cullface) { + if (neighbors[face]) continue + } + + const minx = element.from[0] + const miny = element.from[1] + const minz = element.from[2] + const maxx = element.to[0] + const maxy = element.to[1] + const maxz = element.to[2] + + const texture = eFace.texture as any + const u = texture.u + const v = texture.v + const su = texture.su + const sv = texture.sv + + const ndx = Math.floor(attr.positions.length / 3) + + let tint = [1, 1, 1] + if (eFace.tintindex !== undefined) { + if (eFace.tintindex === 0) { + // TODO + // if (block.name === 'redstone_wire') { + // tint = tints.redstone[`${block.getProperties().power}`] + // } else if (block.name === 'birch_leaves' || + // block.name === 'spruce_leaves' || + // block.name === 'lily_pad') { + // tint = tints.constant[block.name] + // } else if (block.name.includes('leaves') || block.name === 'vine') { + // tint = tints.foliage[biome] + // } else { + // tint = tints.grass[biome] + // } + } + } + + // UV rotation + const r = eFace.rotation || 0 + const uvcs = Math.cos(r * Math.PI / 180) + const uvsn = -Math.sin(r * Math.PI / 180) + + let localMatrix = null as any + let localShift = null as any + + if (element.rotation) { + // todo do we support rescale? + localMatrix = buildRotationMatrix( + element.rotation.axis, + element.rotation.angle + ) + + localShift = vecsub3( + element.rotation.origin, + matmul3( + localMatrix, + element.rotation.origin + ) + ) + } + + const aos: number[] = [] + // const neighborPos = position.plus(new Vec3(...dir)) + // const baseLight = world.getLight(neighborPos, undefined, undefined, block.name) / 15 + const baseLight = 1 + for (const pos of corners) { + let vertex = [ + (pos[0] ? maxx : minx), + (pos[1] ? maxy : miny), + (pos[2] ? maxz : minz) + ] + + vertex = vecadd3(matmul3(localMatrix, vertex), localShift) + vertex = vecadd3(matmul3(globalMatrix, vertex), globalShift) + vertex = vertex.map(v => v / 16) + + attr.positions.push( + vertex[0]/* + (cursor.x & 15) - 8 */, + vertex[1]/* + (cursor.y & 15) x */, + vertex[2]/* + (cursor.z & 15) - 8 */ + ) + + attr.normals.push(...dir) + + const baseu = (pos[3] - 0.5) * uvcs - (pos[4] - 0.5) * uvsn + 0.5 + const basev = (pos[3] - 0.5) * uvsn + (pos[4] - 0.5) * uvcs + 0.5 + attr.uvs.push(baseu * su + u, basev * sv + v) + + let light = 1 + if (doAO) { + const dx = pos[0] * 2 - 1 + const dy = pos[1] * 2 - 1 + const dz = pos[2] * 2 - 1 + const cornerDir = matmul3(globalMatrix, [dx, dy, dz]) + const side1Dir = matmul3(globalMatrix, [dx * mask1[0], dy * mask1[1], dz * mask1[2]]) + const side2Dir = matmul3(globalMatrix, [dx * mask2[0], dy * mask2[1], dz * mask2[2]]) + // const side1 = world.getBlock(cursor.offset(...side1Dir)) + // const side2 = world.getBlock(cursor.offset(...side2Dir)) + // const corner = world.getBlock(cursor.offset(...cornerDir)) + + let cornerLightResult = 15 + // if (/* world.config.smoothLighting */false) { // todo fix + // const side1Light = world.getLight(cursor.plus(new Vec3(...side1Dir)), true) + // const side2Light = world.getLight(cursor.plus(new Vec3(...side2Dir)), true) + // const cornerLight = world.getLight(cursor.plus(new Vec3(...cornerDir)), true) + // // interpolate + // cornerLightResult = (side1Light + side2Light + cornerLight) / 3 + // } + + // const side1Block = world.shouldMakeAo(side1) ? 1 : 0 + // const side2Block = world.shouldMakeAo(side2) ? 1 : 0 + // const cornerBlock = world.shouldMakeAo(corner) ? 1 : 0 + const side1Block = 0 + const side2Block = 0 + const cornerBlock = 0 + + // TODO: correctly interpolate ao light based on pos (evaluate once for each corner of the block) + + const ao = (side1Block && side2Block) ? 0 : (3 - (side1Block + side2Block + cornerBlock)) + // todo light should go upper on lower blocks + light = (ao + 1) / 4 * (cornerLightResult / 15) + aos.push(ao) + } + + attr.colors.push(baseLight * tint[0] * light, baseLight * tint[1] * light, baseLight * tint[2] * light) + } + + // if (needTiles) { + // attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`] ??= { + // block: block.name, + // faces: [], + // } + // attr.tiles[`${cursor.x},${cursor.y},${cursor.z}`].faces.push({ + // face, + // neighbor: `${neighborPos.x},${neighborPos.y},${neighborPos.z}`, + // light: baseLight + // // texture: eFace.texture.name, + // }) + // } + + if (doAO && aos[0] + aos[3] >= aos[1] + aos[2]) { + attr.indices.push( + ndx, ndx + 3, ndx + 2, + ndx, ndx + 1, ndx + 3 + ) + } else { + attr.indices.push( + ndx, ndx + 1, ndx + 2, + ndx + 2, ndx + 1, ndx + 3 + ) + } + } +} + +export const renderBlockThreeAttr = (models: BlockModelPartsResolved, block: Block | undefined, biome: string, mcData: IndexedData, variants = [], neighbors: Neighbors = {}) => { + const sx = 0 + const sy = 0 + const sz = 0 + + const attr = { + sx: sx + 0.5, + sy: sy + 0.5, + sz: sz + 0.5, + positions: [], + normals: [], + colors: [], + uvs: [], + t_positions: [], + t_normals: [], + t_colors: [], + t_uvs: [], + indices: [], + tiles: {}, + } as Record + + for (const [i, modelVars] of models.entries()) { + const model = modelVars[variants[i]] ?? modelVars[0] + if (!model) continue + let globalMatrix = null as any + let globalShift = null as any + for (const axis of ['x', 'y', 'z'] as const) { + if (axis in model) { + if (!globalMatrix) globalMatrix = buildRotationMatrix(axis, -(model[axis] ?? 0)) + else globalMatrix = matmulmat3(globalMatrix, buildRotationMatrix(axis, -(model[axis] ?? 0))) + } + } + if (globalMatrix) { + globalShift = [8, 8, 8] + globalShift = vecsub3(globalShift, matmul3(globalMatrix, globalShift)) + } + + const ao = model.ao ?? true + + for (const element of model.elements ?? []) { + renderElement(element, ao, attr, globalMatrix, globalShift, block, biome, neighbors) + } + } + + let ndx = attr.positions.length / 3 + for (let i = 0; i < attr.t_positions.length / 12; i++) { + attr.indices.push( + ndx, ndx + 1, ndx + 2, + ndx + 2, ndx + 1, ndx + 3, + // back face + ndx, ndx + 2, ndx + 1, + ndx + 2, ndx + 3, ndx + 1 + ) + ndx += 4 + } + + attr.positions.push(...attr.t_positions) + attr.normals.push(...attr.t_normals) + attr.colors.push(...attr.t_colors) + attr.uvs.push(...attr.t_uvs) + + delete attr.t_positions + delete attr.t_normals + delete attr.t_colors + delete attr.t_uvs + + attr.positions = new Float32Array(attr.positions) as any + attr.normals = new Float32Array(attr.normals) as any + attr.colors = new Float32Array(attr.colors) as any + attr.uvs = new Float32Array(attr.uvs) as any + + return attr +} + +export const renderBlockThree = (...args: Parameters) => { + const attr = renderBlockThreeAttr(...args) + const data = { + geometry: attr + } + + const geometry = new THREE.BufferGeometry() + geometry.setAttribute('position', new THREE.BufferAttribute(data.geometry.positions, 3)) + geometry.setAttribute('normal', new THREE.BufferAttribute(data.geometry.normals, 3)) + geometry.setAttribute('color', new THREE.BufferAttribute(data.geometry.colors, 3)) + geometry.setAttribute('uv', new THREE.BufferAttribute(data.geometry.uvs, 2)) + geometry.setIndex(data.geometry.indices) + geometry.name = 'block-geometry' + + return geometry +} diff --git a/prismarine-viewer/viewer/lib/mesher/test/mesherTester.ts b/prismarine-viewer/viewer/lib/mesher/test/mesherTester.ts index 6103a3d42..02576536e 100644 --- a/prismarine-viewer/viewer/lib/mesher/test/mesherTester.ts +++ b/prismarine-viewer/viewer/lib/mesher/test/mesherTester.ts @@ -3,10 +3,11 @@ import { World as MesherWorld } from '../world' import ChunkLoader, { PCChunk } from 'prismarine-chunk' import { Vec3 } from 'vec3' import MinecraftData from 'minecraft-data' +import blocksAtlasesJson from 'mc-assets/dist/blocksAtlases.json' export const setup = (version, initialBlocks: [number[], string][]) => { const mcData = MinecraftData(version) - const blockStates = require(`../../../../public/blocksStates/${version}.json`) + const blockStatesModels = require(`mc-assets/dist/blockStatesModels.json`) const mesherWorld = new MesherWorld(version) const Chunk = ChunkLoader(version) const chunk1 = new Chunk(undefined as any) @@ -31,7 +32,7 @@ export const setup = (version, initialBlocks: [number[], string][]) => { } } - setBlockStatesData(blockStates, true) + setBlockStatesData(blockStatesModels, blocksAtlasesJson, true, false) const reload = () => { mesherWorld.removeColumn(0, 0) mesherWorld.addColumn(0, 0, chunk1.toJson()) diff --git a/prismarine-viewer/viewer/lib/mesher/test/tests.test.ts b/prismarine-viewer/viewer/lib/mesher/test/tests.test.ts index de5db815a..757056c79 100644 --- a/prismarine-viewer/viewer/lib/mesher/test/tests.test.ts +++ b/prismarine-viewer/viewer/lib/mesher/test/tests.test.ts @@ -1,9 +1,8 @@ import { test, expect } from 'vitest' import { setup } from './mesherTester' -import minecraftData from 'minecraft-data' -import minecraftAssets from 'minecraft-assets' +import supportedVersions from '../../../../../src/supportedVersions.mjs' -const version = minecraftAssets.versions.at(-1) +const lastVersion = supportedVersions.at(-1) const addPositions = [ // [[0, 0, 0], 'diamond_block'], @@ -16,7 +15,7 @@ const addPositions = [ ] as const test('Known blocks are not rendered', () => { - const { mesherWorld, getGeometry, pos, mcData } = setup(version, addPositions as any) + const { mesherWorld, getGeometry, pos, mcData } = setup(lastVersion, addPositions as any) const ignoreAsExpected = ['air', 'cave_air', 'void_air', 'barrier', 'water', 'lava', 'moving_piston', 'light'] let time = 0 @@ -45,96 +44,27 @@ test('Known blocks are not rendered', () => { // should be fixed, but to avoid regressions & for visibility expect(invalidBlocks).toMatchInlineSnapshot(` { - "black_banner": true, - "black_bed": true, - "black_candle": true, - "black_wall_banner": true, - "blue_banner": true, - "blue_bed": true, - "blue_candle": true, - "blue_wall_banner": true, - "brown_banner": true, - "brown_bed": true, - "brown_candle": true, - "brown_wall_banner": true, + "black_glazed_terracotta": true, + "blue_glazed_terracotta": true, + "brown_glazed_terracotta": true, "bubble_column": true, - "candle": true, - "creeper_head": true, - "creeper_wall_head": true, - "cyan_banner": true, - "cyan_bed": true, - "cyan_candle": true, - "cyan_wall_banner": true, - "dragon_head": true, - "dragon_wall_head": true, + "cyan_glazed_terracotta": true, "end_gateway": true, "end_portal": true, - "gray_banner": true, - "gray_bed": true, - "gray_candle": true, - "gray_wall_banner": true, - "green_banner": true, - "green_bed": true, - "green_candle": true, - "green_wall_banner": true, - "light_blue_banner": true, - "light_blue_bed": true, - "light_blue_candle": true, - "light_blue_wall_banner": true, - "light_gray_banner": true, - "light_gray_bed": true, - "light_gray_candle": true, - "light_gray_wall_banner": true, - "lime_banner": true, - "lime_bed": true, - "lime_candle": true, - "lime_wall_banner": true, - "magenta_banner": true, - "magenta_bed": true, - "magenta_candle": true, - "magenta_wall_banner": true, - "orange_banner": true, - "orange_bed": true, - "orange_candle": true, - "orange_wall_banner": true, - "piglin_head": true, - "piglin_wall_head": true, - "pink_banner": true, - "pink_bed": true, - "pink_candle": true, - "pink_petals": true, - "pink_wall_banner": true, - "player_head": true, - "player_wall_head": true, - "powder_snow_cauldron": true, - "purple_banner": true, - "purple_bed": true, - "purple_candle": true, - "purple_wall_banner": true, - "red_banner": true, - "red_bed": true, - "red_candle": true, - "red_wall_banner": true, - "repeater": true, - "sea_pickle": true, - "skeleton_skull": true, - "skeleton_wall_skull": true, - "snow": true, + "gray_glazed_terracotta": true, + "green_glazed_terracotta": true, + "light_blue_glazed_terracotta": true, + "light_gray_glazed_terracotta": true, + "lime_glazed_terracotta": true, + "magenta_glazed_terracotta": true, + "orange_glazed_terracotta": true, + "pink_glazed_terracotta": true, + "purple_glazed_terracotta": true, + "red_glazed_terracotta": true, "structure_void": true, - "turtle_egg": true, - "water_cauldron": true, - "white_banner": true, - "white_bed": true, - "white_candle": true, - "white_wall_banner": true, - "wither_skeleton_skull": true, - "wither_skeleton_wall_skull": true, - "yellow_banner": true, - "yellow_bed": true, - "yellow_candle": true, - "yellow_wall_banner": true, - "zombie_head": true, - "zombie_wall_head": true, + "trial_spawner": true, + "white_glazed_terracotta": true, + "yellow_glazed_terracotta": true, } `) }) diff --git a/prismarine-viewer/viewer/lib/mesher/world.ts b/prismarine-viewer/viewer/lib/mesher/world.ts index 71b859f40..cc4480376 100644 --- a/prismarine-viewer/viewer/lib/mesher/world.ts +++ b/prismarine-viewer/viewer/lib/mesher/world.ts @@ -5,6 +5,7 @@ import { Vec3 } from 'vec3' import moreBlockDataGeneratedJson from '../moreBlockDataGenerated.json' import { defaultMesherConfig } from './shared' import legacyJson from '../../../../src/preflatMap.json' +import { WorldBlockProvider } from 'mc-assets/dist/worldBlockProvider' const ignoreAoBlocks = Object.keys(moreBlockDataGeneratedJson.noOcclusions) @@ -18,10 +19,13 @@ function isCube (shapes) { return shape[0] === 0 && shape[1] === 0 && shape[2] === 0 && shape[3] === 1 && shape[4] === 1 && shape[5] === 1 } +export type BlockModelPartsResolved = ReturnType + export type WorldBlock = Omit & { - variant?: any // todo isCube: boolean + /** cache */ + models?: BlockModelPartsResolved | null } diff --git a/prismarine-viewer/viewer/lib/version.js b/prismarine-viewer/viewer/lib/version.js deleted file mode 100644 index 804bd0c7a..000000000 --- a/prismarine-viewer/viewer/lib/version.js +++ /dev/null @@ -1,30 +0,0 @@ -const supportedVersions = require('../../public/supportedVersions.json') - -const lastOfMajor = {} -for (const version of supportedVersions) { - const major = toMajor(version) - if (lastOfMajor[major]) { - if (minor(lastOfMajor[major]) < minor(version)) { - lastOfMajor[major] = version - } - } else { - lastOfMajor[major] = version - } -} - -function toMajor (version) { - const [a, b] = (version + '').split('.') - return a + '.' + b -} - -function minor (version) { - const [, , c] = (version + '.0').split('.') - return parseInt(c, 10) -} - -function getVersion (version) { - if (supportedVersions.indexOf(version) !== -1) return version - return lastOfMajor[toMajor(version)] ?? Object.values(lastOfMajor).at(-1) -} - -module.exports = { getVersion, toMajor } diff --git a/prismarine-viewer/viewer/lib/viewer.ts b/prismarine-viewer/viewer/lib/viewer.ts index 2c37fc532..d709115fa 100644 --- a/prismarine-viewer/viewer/lib/viewer.ts +++ b/prismarine-viewer/viewer/lib/viewer.ts @@ -2,13 +2,15 @@ import * as THREE from 'three' import { Vec3 } from 'vec3' import { WorldRendererWebgpu } from './worldrendererWebgpu' import { Entities } from './entities' -import { getVersion } from './version' +import { Primitives } from './primitives' import EventEmitter from 'events' import { generateSpiralMatrix } from 'flying-squid/dist/utils' import { defaultWorldRendererConfig } from './worldrendererCommon' import { sendCameraToWorker } from '../../examples/webgpuRendererMain' import { WorldRendererThree } from './worldrendererThree' import { versionToNumber } from '../prepare/utils' +import worldBlockProvider from 'mc-assets/dist/worldBlockProvider' +import { renderBlockThree } from './mesher/standaloneRenderer' export class Viewer { scene: THREE.Scene @@ -80,11 +82,13 @@ export class Viewer { // this.primitives.clear() } - setVersion (userVersion: string) { - let texturesVersion = getVersion(userVersion) - if (versionToNumber(userVersion) < versionToNumber('1.13')) texturesVersion = '1.13.2' // we normalize to post-flatenning in mesher + setVersion (userVersion: string, texturesVersion = userVersion) { console.log('[viewer] Using version:', userVersion, 'textures:', texturesVersion) - this.world.setVersion(userVersion, texturesVersion) + this.world.setVersion(userVersion, texturesVersion).then(() => { + return new THREE.TextureLoader().loadAsync(this.world.itemsAtlasParser!.latestImage) + }).then((texture) => { + this.entities.itemsTexture = texture + }) this.entities.clear() // this.primitives.clear() } @@ -101,6 +105,24 @@ export class Viewer { this.world.setBlockStateId(pos, stateId) } + demoModel () { + const blockProvider = worldBlockProvider(this.world.blockstatesModels, this.world.blocksAtlases, 'latest') + const models = blockProvider.getAllResolvedModels0_1({ + name: 'item_frame', + properties: { + map: false + } + }) + const geometry = renderBlockThree(models, undefined, 'plains', loadedData) + const material = this.world.material + // block material + const mesh = new THREE.Mesh(geometry, material) + mesh.position.set(this.camera.position.x, this.camera.position.y, this.camera.position.z) + const helper = new THREE.BoxHelper(mesh, 0xffff00) + mesh.add(helper) + this.scene.add(mesh) + } + updateEntity (e) { this.entities.update(e, this.processEntityOverrides(e, { rotation: { @@ -125,7 +147,7 @@ export class Viewer { sendCameraToWorker() } - playSound (position: Vec3, path: string, volume = 1) { + playSound (position: Vec3, path: string, volume = 1, pitch = 1) { if (!this.audioListener) { this.audioListener = new THREE.AudioListener() this.camera.add(this.audioListener) @@ -141,6 +163,7 @@ export class Viewer { sound.setBuffer(buffer) sound.setRefDistance(20) sound.setVolume(volume) + sound.setPlaybackRate(pitch) // set the pitch this.scene.add(sound) // set sound position sound.position.set(position.x, position.y, position.z) diff --git a/prismarine-viewer/viewer/lib/worldDataEmitter.ts b/prismarine-viewer/viewer/lib/worldDataEmitter.ts index 5df5cc73a..761509c26 100644 --- a/prismarine-viewer/viewer/lib/worldDataEmitter.ts +++ b/prismarine-viewer/viewer/lib/worldDataEmitter.ts @@ -44,7 +44,14 @@ export class WorldDataEmitter extends EventEmitter { listenToBot (bot: typeof __type_bot) { const emitEntity = (e) => { if (!e || e === bot.entity) return - this.emitter.emit('entity', { ...e, pos: e.position, username: e.username }) + this.emitter.emit('entity', { + ...e, + pos: e.position, + username: e.username, + // set debugTree (obj) { + // e.debugTree = obj + // } + }) } this.eventListeners[bot.username] = { diff --git a/prismarine-viewer/viewer/lib/worldrendererCommon.ts b/prismarine-viewer/viewer/lib/worldrendererCommon.ts index ce7c07b2b..1a2a56d18 100644 --- a/prismarine-viewer/viewer/lib/worldrendererCommon.ts +++ b/prismarine-viewer/viewer/lib/worldrendererCommon.ts @@ -5,10 +5,18 @@ import { loadTexture } from './utils.web' import { EventEmitter } from 'events' import mcDataRaw from 'minecraft-data/data.js' // handled correctly in esbuild plugin import { dynamicMcDataFiles } from '../../buildMesherConfig.mjs' -import { toMajor } from './version.js' import { chunkPos } from './simpleUtils' import { defaultMesherConfig } from './mesher/shared' import { buildCleanupDecorator } from './cleanupDecorator' +import blocksAtlases from 'mc-assets/dist/blocksAtlases.json' +import blocksAtlasLatest from 'mc-assets/dist/blocksAtlasLatest.png' +import blocksAtlasLegacy from 'mc-assets/dist/blocksAtlasLegacy.png' +import itemsAtlases from 'mc-assets/dist/itemsAtlases.json' +import itemsAtlasLatest from 'mc-assets/dist/itemsAtlasLatest.png' +import itemsAtlasLegacy from 'mc-assets/dist/itemsAtlasLegacy.png' +import { AtlasParser } from 'mc-assets' +import { getResourcepackTiles } from '../../../src/resourcePack' +import { toMajorVersion } from '../../../src/utils' function mod (x, n) { return ((x % n) + n) % n @@ -23,6 +31,11 @@ export const defaultWorldRendererConfig = { export type WorldRendererConfig = typeof defaultWorldRendererConfig +type CustomTexturesData = { + tileSize: number | undefined + textures: Record +} + export abstract class WorldRendererCommon { worldConfig = { minY: 0, worldHeight: 256 } material = new THREE.MeshLambertMaterial({ vertexColors: true, transparent: true, alphaTest: 0.1 }) @@ -36,11 +49,10 @@ export abstract class WorldRendererCommon finishedChunks = {} as Record @worldCleanup() sectionsOutstanding = new Map() + @worldCleanup() renderUpdateEmitter = new EventEmitter() - customBlockStatesData = undefined as any customTexturesDataUrl = undefined as string | undefined - downloadedBlockStatesData = undefined as any - downloadedTextureImage = undefined as any + currentTextureImage = undefined as any workers: any[] = [] viewerPosition?: Vec3 lastCamUpdate = 0 @@ -55,10 +67,22 @@ export abstract class WorldRendererCommon handleResize = () => { } mesherConfig = defaultMesherConfig camera: THREE.PerspectiveCamera + blockstatesModels: any + customBlockStates: Record | undefined + customModels: Record | undefined + itemsAtlasParser: AtlasParser | undefined + blocksAtlasParser: AtlasParser | undefined + + blocksAtlases = blocksAtlases + itemsAtlases = itemsAtlases + customTextures: { + items?: CustomTexturesData + blocks?: CustomTexturesData + } = {} abstract outputFormat: 'threeJs' | 'webgpu' - constructor(public config: WorldRendererConfig) { + constructor (public config: WorldRendererConfig) { // this.initWorkers(1) // preload script on page load this.snapshotInitialValues() } @@ -161,10 +185,14 @@ export abstract class WorldRendererCommon worker.terminate() } this.workers = [] + this.currentTextureImage = undefined + this.blocksAtlasParser = undefined + this.itemsAtlasParser = undefined } // new game load happens here - setVersion (version, texturesVersion = version) { + async setVersion (version, texturesVersion = version) { + if (!this.blockstatesModels) throw new Error('Blockstates models is not loaded yet') this.version = version this.texturesVersion = texturesVersion this.resetWorld() @@ -174,11 +202,11 @@ export abstract class WorldRendererCommon this.mesherConfig.version = this.version! this.sendMesherMcData() - this.updateTexturesData() + await this.updateTexturesData() } sendMesherMcData () { - const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajor(this.version)] + const allMcData = mcDataRaw.pc[this.version] ?? mcDataRaw.pc[toMajorVersion(this.version)] const mcData = Object.fromEntries(Object.entries(allMcData).filter(([key]) => dynamicMcDataFiles.includes(key))) mcData.version = JSON.parse(JSON.stringify(mcData.version)) @@ -187,38 +215,56 @@ export abstract class WorldRendererCommon } } - updateTexturesData () { - loadTexture(this.customTexturesDataUrl || `textures/${this.texturesVersion}.png`, (texture: import('three').Texture) => { - texture.magFilter = THREE.NearestFilter - texture.minFilter = THREE.NearestFilter - texture.flipY = false - this.material.map = texture - }, () => { - this.downloadedTextureImage = this.material.map!.image - const loadBlockStates = async () => { - return new Promise(resolve => { - if (this.customBlockStatesData) return resolve(this.customBlockStatesData) - return loadJSON(`/blocksStates/${this.texturesVersion}.json`, (data) => { - this.downloadedBlockStatesData = data - this.renderUpdateEmitter.emit('blockStatesDownloaded') - resolve(data) - }) - }) + async updateTexturesData () { + const blocksAssetsParser = new AtlasParser(this.blocksAtlases, blocksAtlasLatest, blocksAtlasLegacy) + const itemsAssetsParser = new AtlasParser(this.itemsAtlases, itemsAtlasLatest, itemsAtlasLegacy) + const { atlas: blocksAtlas, canvas: blocksCanvas } = await blocksAssetsParser.makeNewAtlas(this.texturesVersion ?? this.version ?? 'latest', (textureName) => { + const texture = this.customTextures?.blocks?.textures[textureName] + if (!texture) return + return texture + }, this.customTextures?.blocks?.tileSize) + const { atlas: itemsAtlas, canvas: itemsCanvas } = await itemsAssetsParser.makeNewAtlas(this.texturesVersion ?? this.version ?? 'latest', (textureName) => { + const texture = this.customTextures?.items?.textures[textureName] + if (!texture) return + return texture + }, this.customTextures?.items?.tileSize) + this.blocksAtlasParser = new AtlasParser({ latest: blocksAtlas }, blocksCanvas.toDataURL()) + this.itemsAtlasParser = new AtlasParser({ latest: itemsAtlas }, itemsCanvas.toDataURL()) + + const texture = await new THREE.TextureLoader().loadAsync(this.blocksAtlasParser.latestImage) + texture.magFilter = THREE.NearestFilter + texture.minFilter = THREE.NearestFilter + texture.flipY = false + this.material.map = texture + this.currentTextureImage = this.material.map!.image + this.mesherConfig.textureSize = this.material.map!.image.width + + for (const worker of this.workers) { + const blockstatesModels = this.blockstatesModels + if (this.customBlockStates) { + // TODO! remove from other versions as well + blockstatesModels.blockstates.latest = { + ...blockstatesModels.blockstates.latest, + ...this.customBlockStates + } } - loadBlockStates().then((blockStates) => { - this.mesherConfig.textureSize = this.material.map!.image.width - - for (const worker of this.workers) { - worker.postMessage({ - type: 'mesherData', - json: blockStates, - config: this.mesherConfig, - }) + if (this.customModels) { + blockstatesModels.models.latest = { + ...blockstatesModels.models.latest, + ...this.customModels } - this.renderUpdateEmitter.emit('textureDownloaded') + } + worker.postMessage({ + type: 'mesherData', + blocksAtlas: { + latest: blocksAtlas + }, + blockstatesModels, + config: this.mesherConfig, }) - }) - + } + this.renderUpdateEmitter.emit('textureDownloaded') + console.log('texture loaded') } addColumn (x: number, z: number, chunk: any, isLightUpdate: boolean) { diff --git a/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts index 7bdc4140b..915dc7c9c 100644 --- a/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts +++ b/prismarine-viewer/viewer/lib/worldrendererWebgpu.ts @@ -9,7 +9,7 @@ import { MesherGeometryOutput } from './mesher/shared' export class WorldRendererWebgpu extends WorldRendererCommon { outputFormat = 'webgpu' as const newChunks = {} as Record - webglData: WebglData + // webglData: WebglData stopBlockUpdate = false lastChunkDistance = 0 @@ -29,7 +29,7 @@ export class WorldRendererWebgpu extends WorldRendererCommon { if (!block) return const { textureName } = block if (!textureName) return - return this.webglData[textureName] + // return this.webglData[textureName] } setBlockStateId (pos: any, stateId: any): void { @@ -68,11 +68,8 @@ export class WorldRendererWebgpu extends WorldRendererCommon { updatePosDataChunk (key: string) { } - updateTexturesData (): void { - super.updateTexturesData() - loadJSON(`/webgl/${this.texturesVersion}.json`, (json) => { - this.webglData = json - }) + async updateTexturesData (): Promise { + await super.updateTexturesData() } updateShowChunksBorder (value: boolean) { diff --git a/prismarine-viewer/viewer/prepare/atlas.ts b/prismarine-viewer/viewer/prepare/atlas.ts deleted file mode 100644 index cf73fdc4e..000000000 --- a/prismarine-viewer/viewer/prepare/atlas.ts +++ /dev/null @@ -1,144 +0,0 @@ -import fs from 'fs' -import path from 'path' -import { Canvas, Image } from 'canvas' -import { getAdditionalTextures } from './moreGeneratedBlocks' -import { McAssets } from './modelsBuilder' - -function nextPowerOfTwo (n) { - if (n === 0) return 1 - n-- - n |= n >> 1 - n |= n >> 2 - n |= n >> 4 - n |= n >> 8 - n |= n >> 16 - return n + 1 -} - -const localTextures = ['missing_texture.png'] - -function readTexture (basePath, name) { - if (localTextures.includes(name)) { - // grab ./missing_texture.png - basePath = __dirname - } - return fs.readFileSync(path.join(basePath, name), 'base64') -} - -export type JsonAtlas = { - size: number, - textures: { - [file: string]: { - u: number, - v: number, - } - } -} - -export const makeTextureAtlas = (input: string[], getInputData: (name) => { contents: string, tileWidthMult?: number, origSizeTextures?}, tilesCount = input.length, suSvOptimize: 'remove' | null = null): { - image: Buffer, - canvas: Canvas, - json: JsonAtlas -} => { - const texSize = nextPowerOfTwo(Math.ceil(Math.sqrt(tilesCount))) - const tileSize = 16 - - const imgSize = texSize * tileSize - const canvas = new Canvas(imgSize, imgSize, 'png' as any) - const g = canvas.getContext('2d') - - const texturesIndex = {} - - let nextX = 0 - let nextY = 0 - let rowMaxY = 0 - - const goToNextRow = () => { - nextX = 0 - nextY += rowMaxY - rowMaxY = 0 - } - - const suSv = tileSize / imgSize - for (const i in input) { - const img = new Image() - const keyValue = input[i] - const inputData = getInputData(keyValue) - img.src = inputData.contents - let su = suSv - let sv = suSv - let renderWidth = tileSize * (inputData.tileWidthMult ?? 1) - let renderHeight = tileSize - if (inputData.origSizeTextures?.[keyValue]) { - // todo check have enough space - renderWidth = Math.ceil(img.width / tileSize) * tileSize - renderHeight = Math.ceil(img.height / tileSize) * tileSize - su = renderWidth / imgSize - sv = renderHeight / imgSize - if (renderHeight > imgSize || renderWidth > imgSize) { - throw new Error('Texture ' + keyValue + ' is too big') - } - } - - if (nextX + renderWidth > imgSize) { - goToNextRow() - } - - const x = nextX - const y = nextY - - nextX += renderWidth - rowMaxY = Math.max(rowMaxY, renderHeight) - if (nextX >= imgSize) { - goToNextRow() - } - - g.drawImage(img, 0, 0, renderWidth, renderHeight, x, y, renderWidth, renderHeight) - - const cleanName = keyValue.split('.').slice(0, -1).join('.') || keyValue - texturesIndex[cleanName] = { - u: x / imgSize, - v: y / imgSize, - ...suSvOptimize === 'remove' ? {} : { - su: su, - sv: sv - } - } - } - - return { image: canvas.toBuffer(), canvas, json: { size: suSv, textures: texturesIndex } } -} - -export const writeCanvasStream = (canvas, path, onEnd) => { - const out = fs.createWriteStream(path) - const stream = (canvas as any).pngStream() - stream.on('data', (chunk) => out.write(chunk)) - if (onEnd) stream.on('end', onEnd) - return stream -} - -export function makeBlockTextureAtlas (mcAssets: McAssets) { - const blocksTexturePath = path.join(mcAssets.directory, '/blocks') - const textureFiles = fs.readdirSync(blocksTexturePath).filter(file => file.endsWith('.png')) - // const textureFiles = mostEncounteredBlocks.map(x => x + '.png') - textureFiles.unshift(...localTextures) - - const { generated: additionalTextures, origSizeTextures } = getAdditionalTextures() - textureFiles.push(...Object.keys(additionalTextures)) - - const atlas = makeTextureAtlas(textureFiles, name => { - let contents: string - if (additionalTextures[name]) { - contents = additionalTextures[name] - } else { - contents = 'data:image/png;base64,' + readTexture(blocksTexturePath, name) - } - - return { - contents, - // tileWidthMult: twoTileTextures.includes(name) ? 2 : undefined, - origSizeTextures - } - }) - return atlas -} diff --git a/prismarine-viewer/viewer/prepare/genItemsAtlas.ts b/prismarine-viewer/viewer/prepare/genItemsAtlas.ts deleted file mode 100644 index 788f1b60d..000000000 --- a/prismarine-viewer/viewer/prepare/genItemsAtlas.ts +++ /dev/null @@ -1,148 +0,0 @@ -import fs from 'fs' -import McAssets from 'minecraft-assets' -import { join } from 'path' -import { filesize } from 'filesize' -import minecraftDataLoader from 'minecraft-data' -import BlockLoader from 'prismarine-block' -import { JsonAtlas, makeTextureAtlas, writeCanvasStream } from './atlas' -import looksSame from 'looks-same' // ensure after canvas import -import { Version as _Version } from 'minecraft-data' -import { versionToNumber } from './utils' - -// todo move it, remove it -const legacyInvsprite = JSON.parse(fs.readFileSync(join(__dirname, '../../../src/invsprite.json'), 'utf8')) - -//@ts-ignore -const latestMcAssetsVersion = McAssets.versions.at(-1)! -// const latestVersion = minecraftDataLoader.supportedVersions.pc.at(-1) -const mcData = minecraftDataLoader(latestMcAssetsVersion) -const PBlock = BlockLoader(latestMcAssetsVersion) - -function isCube (name) { - const id = mcData.blocksByName[name]?.id - if (!id) return - const block = new PBlock(id, 0, 0) - const shape = block.shapes?.[0] - return block.shapes?.length === 1 && shape[0] === 0 && shape[1] === 0 && shape[2] === 0 && shape[3] === 1 && shape[4] === 1 && shape[5] === 1 -} - -export type ItemsAtlasesOutputJson = { - latest: JsonAtlas - legacy: JsonAtlas - legacyMap: [string, string[]][] -} - -export const generateItemsAtlases = async () => { - const latestAssets = McAssets(latestMcAssetsVersion) - const latestItems = fs.readdirSync(join(latestAssets.directory, 'items')).map(f => f.split('.')[0]) - - // item - texture path - const toAddTextures = { - fromBlocks: {} as Record, - remapItems: {} as Record, // todo - } - - const getItemTextureOfBlock = (name: string) => { - const blockModel = latestAssets.blocksModels[name] - // const isPlainBlockDisplay = blockModel?.display?.gui?.rotation?.[0] === 0 && blockModel?.display?.gui?.rotation?.[1] === 0 && blockModel?.display?.gui?.rotation?.[2] === 0 - // it seems that information about cross blocks is hardcoded - if (blockModel?.parent?.endsWith('block/cross')) { - toAddTextures.fromBlocks[name] = `blocks/${blockModel.textures.cross.split('/')[1]}` - return true - } - - if (legacyInvsprite[name]) { - return true - } - - if (fs.existsSync(join(latestAssets.directory, 'blocks', name + '.png'))) { - // very last resort - toAddTextures.fromBlocks[name] = `blocks/${name}` - return true - } - if (name.endsWith('_spawn_egg')) { - // todo also color - toAddTextures.fromBlocks[name] = `items/spawn_egg` - } - } - - for (const item of mcData.itemsArray) { - if (latestItems.includes(item.name)) { - continue - } - // USE IN RUNTIME - if (isCube(item.name)) { - // console.log('cube', block.name) - } else if (!getItemTextureOfBlock(item.name)) { - console.warn('skipping item (not cube, no item texture)', item.name) - } - } - - let fullItemsMap = {} as Record - - const itemsSizes = {} - let saving = 0 - let overallsize = 0 - let prevItemsDir - let prevVersion - for (const version of [...McAssets.versions].reverse()) { - const itemsDir = join(McAssets(version).directory, 'items') - for (const item of fs.readdirSync(itemsDir)) { - const prevItemPath = !prevItemsDir ? undefined : join(prevItemsDir, item) - const itemSize = fs.statSync(join(itemsDir, item)).size - if (prevItemPath && fs.existsSync(prevItemPath) && (await looksSame(join(itemsDir, item), prevItemPath, { strict: true })).equal) { - saving += itemSize - } else { - fullItemsMap[version] ??= [] - fullItemsMap[version].push(item) - } - overallsize += itemSize - } - prevItemsDir = itemsDir - prevVersion = version - } - - fullItemsMap = Object.fromEntries(Object.entries(fullItemsMap).map(([ver, items]) => [ver, items.filter(item => item.endsWith('.png'))])) - const latestVersionItems = fullItemsMap[latestMcAssetsVersion] - delete fullItemsMap[latestMcAssetsVersion] - const legacyItemsSortedEntries = Object.entries(fullItemsMap).sort(([a], [b]) => versionToNumber(a) - versionToNumber(b)).map(([key, value]) => [key, value.map(x => x.replace('.png', ''))] as [typeof key, typeof value]) - // const allItemsLength = Object.values(fullItemsMap).reduce((acc, x) => acc + x.length, 0) - // console.log(`Items to generate: ${allItemsLength} (latest version: ${latestVersionItems.length})`) - const fullLatestItemsObject = { - ...Object.fromEntries(latestVersionItems.map(item => [item, `items/${item.replace('.png', '')}`])), - ...toAddTextures.fromBlocks, - ...toAddTextures.remapItems - } - - const latestAtlas = makeTextureAtlas(Object.keys(fullLatestItemsObject), (name) => { - const contents = `data:image/png;base64,${fs.readFileSync(join(latestAssets.directory, `${fullLatestItemsObject[name]}.png`), 'base64')}` - return { - contents, - } - }, undefined, 'remove') - const texturesPath = join(__dirname, '../../public/textures') - writeCanvasStream(latestAtlas.canvas, join(texturesPath, 'items.png'), () => { - console.log('Generated latest items atlas') - }) - - const legacyItemsMap = legacyItemsSortedEntries.flatMap(([ver, items]) => items.map(item => `${ver}-${item}.png`)) - const legacyItemsAtlas = makeTextureAtlas(legacyItemsMap, (name) => { - const [ver, item] = name.split('-') - const contents = `data:image/png;base64,${fs.readFileSync(join(McAssets(ver).directory, `items/${item}`), 'base64')}` - return { - contents, - } - }, undefined, 'remove') - writeCanvasStream(legacyItemsAtlas.canvas, join(texturesPath, 'items-legacy.png'), () => { - console.log('Generated legacy items atlas') - }) - - const allItemsMaps: ItemsAtlasesOutputJson = { - latest: latestAtlas.json, - legacy: legacyItemsAtlas.json, - legacyMap: legacyItemsSortedEntries - } - fs.writeFileSync(join(texturesPath, 'items.json'), JSON.stringify(allItemsMaps), 'utf8') - - console.log(`Generated items! Input size: ${filesize(overallsize)}, saving: ~${filesize(saving)}`) -} diff --git a/prismarine-viewer/viewer/prepare/generateTextures.ts b/prismarine-viewer/viewer/prepare/generateTextures.ts deleted file mode 100644 index 025b4dcab..000000000 --- a/prismarine-viewer/viewer/prepare/generateTextures.ts +++ /dev/null @@ -1,60 +0,0 @@ -import path from 'path' -import { makeBlockTextureAtlas } from './atlas' -import { prepareBlocksStates } from './modelsBuilder' -import mcAssets from 'minecraft-assets' -import fs from 'fs-extra' -import { prepareMoreGeneratedBlocks } from './moreGeneratedBlocks' -import { generateItemsAtlases } from './genItemsAtlas' -import { prepareWebglData } from './webglData' -import { versionToNumber } from './utils' - -const publicPath = path.resolve(__dirname, '../../public') - -const texturesPath = path.join(publicPath, 'textures') -if (fs.existsSync(texturesPath) && !process.argv.includes('-f') && !process.argv.includes('-l')) { - console.log('textures folder already exists, skipping...') - process.exit(0) -} -fs.mkdirSync(texturesPath, { recursive: true }) - -const blockStatesPath = path.join(publicPath, 'blocksStates') -fs.mkdirSync(blockStatesPath, { recursive: true }) -fs.mkdirSync(path.join(publicPath, 'webgl'), { recursive: true }) - -const warnings = new Set() -Promise.resolve().then(async () => { - generateItemsAtlases() - console.time('generateTextures') - const versions = process.argv.includes('-l') ? [mcAssets.versions.at(-1)!] : mcAssets.versions - for (const version of versions as typeof mcAssets['versions']) { - // for debugging (e.g. when above is overridden) - if (!versions.includes(version)) { - throw new Error(`Version ${version} is not supported by minecraft-assets`) - } - if (versionToNumber(version) < versionToNumber('1.13')) { - // we normalize data to 1.13 for pre 1.13 versions - continue - } - const assets = mcAssets(version) - const { warnings: _warnings } = await prepareMoreGeneratedBlocks(assets) - _warnings.forEach(x => warnings.add(x)) - // #region texture atlas - const atlas = makeBlockTextureAtlas(assets) - const out = fs.createWriteStream(path.resolve(texturesPath, version + '.png')) - const stream = (atlas.canvas as any).pngStream() - stream.on('data', (chunk) => out.write(chunk)) - stream.on('end', () => console.log('Generated textures/' + version + '.png')) - // #endregion - - const blocksStates = JSON.stringify(prepareBlocksStates(assets, atlas)) - fs.writeFileSync(path.resolve(blockStatesPath, version + '.json'), blocksStates) - const webglData = prepareWebglData(path.join(assets.directory, 'blocks'), atlas.json) - fs.writeFileSync(path.resolve(publicPath, 'webgl', version + '.json'), JSON.stringify(webglData)) - - fs.copySync(assets.directory, path.resolve(texturesPath, version), { overwrite: true }) - } - - fs.writeFileSync(path.join(publicPath, 'supportedVersions.json'), '[' + versions.map(v => `"${v}"`).toString() + ']') - warnings.forEach(x => console.warn(x)) - console.timeEnd('generateTextures') -}) diff --git a/prismarine-viewer/viewer/prepare/missing_texture.png b/prismarine-viewer/viewer/prepare/missing_texture.png deleted file mode 100644 index affd9d681b58040ad59418a3f30de7bdb9922ed3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!55w`jv*HQb0;VAH7oG6a#v|I#>XA2VEwwi zYGda|KkmNk56tGi_~I?Ku)%D5d`HSCne_|i6zoox0 zQ)sK zA#9Yr$d(~PZPxPMXETpmlr(rA_*d4#z4?2A2E#PXHy@|G+<8Fo4a3$$kFF*#{+DtM j6#3IP{fX$EKTE{xUndAny_zWq^fQB}tDnm{r-UW|2}qEH diff --git a/prismarine-viewer/viewer/prepare/modelsBuilder.ts b/prismarine-viewer/viewer/prepare/modelsBuilder.ts deleted file mode 100644 index b6e5268f1..000000000 --- a/prismarine-viewer/viewer/prepare/modelsBuilder.ts +++ /dev/null @@ -1,259 +0,0 @@ -type ModelBasic = { - model: string - x?: number - y?: number - uvlock?: boolean -} - -type BlockApplyModel = ModelBasic | (ModelBasic & { weight })[] - -type BlockStateCondition = { - [name: string]: string | number -} - -type BlockState = { - variants?: { - [name: string | ""]: BlockApplyModel - } - multipart?: { - when: { - [name: string]: string | number - } & { - OR?: BlockStateCondition[] - } - apply: BlockApplyModel - }[] -} - -type BlockModel = { - parent?: string - textures?: { - [name: string]: string - } - elements?: { - from: number[] - to: number[] - faces: { - [name: string]: { - texture: string - uv?: number[] - cullface?: string - } - } - }[] - ambientocclusion?: boolean - x?: number - y?: number - z?: number - ao?: boolean -} - -export type McAssets = { - blocksStates: { - [x: string]: BlockState - } - blocksModels: { - [x: string]: BlockModel - } - directory: string - version: string -} - -export type BlockStatesOutput = { - // states: { - [blockName: string]: any/* ResolvedModel */ - // } - // defaults: { - // su: number - // sv: number - // } -} - -export type ResolvedModel = { - textures: { - [name: string]: { - u: number - v: number - su: number - sv: number - bu: number - bv: number - } - } - elements: { - from: number[] - to: number[] - faces: { - [name: string]: { - texture: { - u: number - v: number - su: number - sv: number - bu: number - bv: number - } - } - } - }[] - ao: boolean - x?: number - y?: number - z?: number -} - -export const addBlockAllModel = (mcAssets: McAssets, name: string, texture = name) => { - mcAssets.blocksStates[name] = { - "variants": { - "": { - "model": name - } - } - } - mcAssets.blocksModels[name] = { - "parent": "block/cube_all", - "textures": { - "all": `blocks/${texture}` - } - } -} - -function cleanupBlockName (name: string) { - if (name.startsWith('block') || name.startsWith('minecraft:block')) return name.split('/')[1] - return name -} - -const objectAssignStrict = > (target: T, source: Partial) => Object.assign(target, source) - -function getFinalModel (name: string, blocksModels: { [x: string]: BlockModel }) { - name = cleanupBlockName(name) - const input = blocksModels[name] - if (!input) { - return null - } - - let out: BlockModel | null = { - textures: {}, - elements: [], - ao: true, - x: input.x, - y: input.y, - z: input.z, - } - - if (input.parent) { - out = getFinalModel(input.parent, blocksModels) - if (!out) return null - } - if (input.textures) { - Object.assign(out.textures!, deepCopy(input.textures)) - } - if (input.elements) out.elements = deepCopy(input.elements) - if (input.ao !== undefined) out.ao = input.ao - return out -} - -const deepCopy = (obj) => JSON.parse(JSON.stringify(obj)) - -const workerUsedTextures = ['particle'] -function prepareModel (model: BlockModel, texturesJson) { - const newModel = {} - - const getFinalTexture = (originalBlockName) => { - // texture name e.g. blocks/anvil_base - const cleanBlockName = cleanupBlockName(originalBlockName) - return { ...texturesJson[cleanBlockName], /* __debugName: cleanBlockName */ } - } - - const finalTextures = [] - - // resolve texture names eg west: #all -> blocks/stone - for (const side in model.textures) { - let texture = model.textures[side] - - while (texture.charAt(0) === '#') { - const textureName = texture.slice(1) - texture = model.textures[textureName] - if (texture === undefined) throw new Error(`Texture ${textureName} in ${JSON.stringify(model.textures)} not found`) - } - - finalTextures[side] = getFinalTexture(texture) - if (workerUsedTextures.includes(side)) { - model.textures[side] = finalTextures[side] - } - } - - for (const elem of model.elements!) { - for (const sideName of Object.keys(elem.faces)) { - const face = elem.faces[sideName] - - const textureRaw = face.texture.charAt(0) === '#' - ? finalTextures![face.texture.slice(1)] - : getFinalTexture(face.texture) - if (!textureRaw) throw new Error(`Texture ${face.texture} in ${JSON.stringify(model.textures)} not found`) - const finalTexture = deepCopy( - textureRaw - ) - - const _from = elem.from - const _to = elem.to - // taken from https://github.com/DragonDev1906/Minecraft-Overviewer/ - const uv = face.uv || { - // default UVs - // format: [u1, v1, u2, v2] (u = x, v = y) - north: [_to[0], 16 - _to[1], _from[0], 16 - _from[1]], - east: [_from[2], 16 - _to[1], _to[2], 16 - _from[1]], - south: [_from[0], 16 - _to[1], _to[0], 16 - _from[1]], - west: [_from[2], 16 - _to[1], _to[2], 16 - _from[1]], - up: [_from[0], _from[2], _to[0], _to[2]], - down: [_to[0], _from[2], _from[0], _to[2]] - }[sideName]! - - const su = (uv[2] - uv[0]) / 16 * finalTexture.su - const sv = (uv[3] - uv[1]) / 16 * finalTexture.sv - finalTexture.u += uv[0] / 16 * finalTexture.su - finalTexture.v += uv[1] / 16 * finalTexture.sv - finalTexture.su = su - finalTexture.sv = sv - face.texture = finalTexture - } - } - return model -} - -function resolveModel (name, blocksModels, texturesJson) { - const model = getFinalModel(name, blocksModels) - return prepareModel(model, texturesJson.textures) -} - -export function prepareBlocksStates (mcAssets: McAssets, atlas: { json: any }) { - addBlockAllModel(mcAssets, 'missing_texture') - - const blocksStates = mcAssets.blocksStates - for (const block of Object.values(blocksStates)) { - if (!block) continue - if (block.variants) { - for (const variant of Object.values(block.variants)) { - if (variant instanceof Array) { - for (const v of variant) { - v.model = resolveModel(v.model, mcAssets.blocksModels, atlas.json) as any - } - } else { - variant.model = resolveModel(variant.model, mcAssets.blocksModels, atlas.json) as any - } - } - } - if (block.multipart) { - for (const variant of block.multipart) { - if (variant.apply instanceof Array) { - for (const v of variant.apply) { - v.model = resolveModel(v.model, mcAssets.blocksModels, atlas.json) as any - } - } else { - variant.apply.model = resolveModel(variant.apply.model, mcAssets.blocksModels, atlas.json) as any - } - } - } - } - return blocksStates -} diff --git a/prismarine-viewer/viewer/prepare/moreGeneratedBlocks.ts b/prismarine-viewer/viewer/prepare/moreGeneratedBlocks.ts deleted file mode 100644 index e64b7cffb..000000000 --- a/prismarine-viewer/viewer/prepare/moreGeneratedBlocks.ts +++ /dev/null @@ -1,421 +0,0 @@ -import Jimp from 'jimp' -import minecraftData from 'minecraft-data' -import { McAssets } from './modelsBuilder' -import path from 'path' -import fs from 'fs' -import { fileURLToPath } from 'url' -import { versionToNumber } from './utils' - -// todo refactor -const handledBlocks = ['water', 'lava', 'barrier'] -const origSizeTextures: string[] = [] -let currentImage: Jimp -let currentBlockName: string -let currentMcAssets: McAssets -const __dirname = path.dirname(fileURLToPath(new URL(import.meta.url))) - -type SidesType = { - "up": string - "north": string - "east": string - "south": string - "west": string - "down": string -} - -const getBlockStates = (name: string) => { - const mcData = minecraftData(currentMcAssets.version) - return mcData.blocksByName[name]?.states -} - -export const addBlockCustomSidesModel = (name: string, sides: SidesType) => { - currentMcAssets.blocksStates[name] = { - "variants": { - "": { - "model": name - } - } - } - currentMcAssets.blocksModels[name] = { - "parent": "block/cube", - "textures": sides - } -} - -type TextureMap = [ - x: number, - y: number, - width?: number, - height?: number, -] - -const justCropUV = (x: number, y: number, x1, y1) => { - // input: 0-16, output: 0-currentImage.getWidth() - const width = Math.abs(x1 - x) - const height = Math.abs(y1 - y) - return currentImage.clone().crop( - x / 16 * currentImage.getWidth(), - y / 16 * currentImage.getHeight(), - width / 16 * currentImage.getWidth(), - height / 16 * currentImage.getHeight(), - ) -} -const justCrop = (x: number, y: number, width = 16, height = 16) => { - return currentImage.clone().crop(x, y, width, height) -} - -const combineTextures = (locations: TextureMap[]) => { - const resized: Jimp[] = [] - for (const [x, y, height = 16, width = 16] of locations) { - resized.push(justCrop(x, y, width, height)) - } - - const combinedImage = new Jimp(locations[0]![2] ?? 16, locations[0]![3] ?? 16) - for (const image of resized) { - combinedImage.blit(image, 0, 0) - } - return combinedImage -} - -const generatedImageTextures: { [blockName: string]: /* base64 */string } = {} - -const getBlockTexturesFromJimp = async > (sides: T, withUv = false, textureNameBase = currentBlockName): Promise> => { - const sidesTextures = {} as any - for (const [side, jimp] of Object.entries(sides)) { - const textureName = `${textureNameBase}_${side}` - const sideTexture = withUv ? { uv: [0, 0, jimp.getWidth(), jimp.getHeight()], texture: textureName } : textureName - const base64Url = await jimp.getBase64Async(jimp.getMIME()) - if (side === 'side') { - sidesTextures['north'] = sideTexture - sidesTextures['east'] = sideTexture - sidesTextures['south'] = sideTexture - sidesTextures['west'] = sideTexture - } else { - sidesTextures[side] = sideTexture - } - generatedImageTextures[textureName] = base64Url - } - - return sidesTextures -} - -const addSimpleCubeWithSides = async (sides: Record) => { - const sidesTextures = await getBlockTexturesFromJimp(sides) - - addBlockCustomSidesModel(currentBlockName, sidesTextures as any) -} - -const handleShulkerBox = async (dataBase: string, match: RegExpExecArray) => { - const [, shulkerColor = ''] = match - currentImage = await Jimp.read(dataBase + `entity/shulker/shulker${shulkerColor && `_${shulkerColor}`}.png`) - - const shulkerBoxTextures = { - // todo do all sides - side: combineTextures([ - [0, 16], // top - [0, 36], // bottom - ]), - up: justCrop(16, 0), - down: justCrop(32, 28) - } - - await addSimpleCubeWithSides(shulkerBoxTextures) -} - -// TODO! should not be there! move to data with signs! -const chestModels = { - chest: { - "parent": "block/block", - "textures": { - "particle": "#particles" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 10, 15], - "faces": { - "down": { "texture": "#chest", "uv": [3.5, 4.75, 7, 8.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [10.5, 8.25, 14, 10.75], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0, 8.25, 3.5, 10.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 8.25, 7, 10.75], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [7, 8.25, 10.5, 10.75], "rotation": 180 } - }, - }, - { - "from": [1, 10, 1], - "to": [15, 14, 15], - "faces": { - "up": { "texture": "#chest", "uv": [3.5, 4.75, 7, 8.25] }, - "north": { "texture": "#chest", "uv": [10.5, 3.75, 14, 4.75], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0, 3.75, 3.5, 4.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 3.75, 7, 4.75], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [7, 3.75, 10.5, 4.75], "rotation": 180 } - } - }, - { - "from": [7, 7, 0], - "to": [9, 11, 1], - "faces": { - "down": { "texture": "#chest", "uv": [0.25, 0, 0.75, 0.25], "rotation": 180 }, - "up": { "texture": "#chest", "uv": [0.75, 0, 1.25, 0.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [1, 0.25, 1.5, 1.25], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [0.75, 0.25, 1, 1.25], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0, 0.25, 0.25, 1.25], "rotation": 180 } - } - } - ] - }, - chest_left: { - "parent": "block/block", - "textures": { - "particle": "#particles" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [16, 10, 15], - "faces": { - "down": { "texture": "#chest", "uv": [3.5, 4.75, 7.25, 8.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [10.75, 8.25, 14.5, 10.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 8.25, 7.25, 10.75], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [7.25, 8.25, 10.75, 10.75], "rotation": 180 } - } - }, - { - "from": [1, 10, 1], - "to": [16, 14, 15], - "faces": { - "up": { "texture": "#chest", "uv": [3.5, 4.75, 7.25, 8.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [10.75, 3.75, 14.5, 4.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 3.75, 7.25, 4.75], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [7.25, 3.75, 10.75, 4.75], "rotation": 180 } - } - }, - { - "from": [15, 7, 0], - "to": [16, 11, 1], - "faces": { - "down": { "texture": "#chest", "uv": [0.25, 0, 0.5, 0.25], "rotation": 180 }, - "up": { "texture": "#chest", "uv": [0.5, 0, 0.75, 0.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [0.75, 0.25, 1, 1.25], "rotation": 180 }, - "west": { "texture": "#chest", "uv": [0.5, 0.25, 0.75, 1.25], "rotation": 180 } - } - } - ] - }, - chest_right: { - "parent": "block/block", - "textures": { - "particle": "#particles" - }, - "elements": [ - { - "from": [0, 0, 1], - "to": [15, 10, 15], - "faces": { - "down": { "texture": "#chest", "uv": [3.5, 4.75, 7.25, 8.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [10.75, 8.25, 14.5, 10.75], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0, 8.25, 3.5, 10.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 8.25, 7.25, 10.75], "rotation": 180 } - } - }, - { - "from": [0, 10, 1], - "to": [15, 14, 15], - "faces": { - "up": { "texture": "#chest", "uv": [3.5, 4.75, 7.25, 8.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [10.75, 3.75, 14.5, 4.75], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0, 3.75, 3.5, 4.75], "rotation": 180 }, - "south": { "texture": "#chest", "uv": [3.5, 3.75, 7.25, 4.75], "rotation": 180 } - } - }, - { - "from": [0, 7, 0], - "to": [1, 11, 1], - "faces": { - "down": { "texture": "#chest", "uv": [0.25, 0, 0.5, 0.25], "rotation": 180 }, - "up": { "texture": "#chest", "uv": [0.5, 0, 0.75, 0.25], "rotation": 180 }, - "north": { "texture": "#chest", "uv": [0.75, 0.25, 1, 1.25], "rotation": 180 }, - "east": { "texture": "#chest", "uv": [0.0, 0.25, 0.25, 1.25], "rotation": 180 } - } - } - ] - } -} - -// these blockStates / models copied from https://github.com/FakeDomi/FastChest/blob/master/src/main/resources/assets/minecraft/blockstates/ -const chestBlockStatesMap = { - chest: JSON.parse(fs.readFileSync(path.join(__dirname, 'blockStates/chest.json'), 'utf-8')), - trapped_chest: JSON.parse(fs.readFileSync(path.join(__dirname, 'blockStates/trapped_chest.json'), 'utf-8')), - ender_chest: JSON.parse(fs.readFileSync(path.join(__dirname, 'blockStates/ender_chest.json'), 'utf-8')), -} -const handleChest = async (dataBase: string, match: RegExpExecArray) => { - const blockStates = structuredClone(chestBlockStatesMap[currentBlockName]) - - const particle = match[1] === 'ender' ? 'obsidian' : 'oak_planks' - - const blockStatesVariants = Object.values(blockStates.variants) as { model }[] - const neededModels = [...new Set(blockStatesVariants.map((x) => x.model))] - - for (const modelName of neededModels) { - let chestTextureName = { - chest: 'normal', - trapped_chest: 'trapped', - ender_chest: 'ender', - }[currentBlockName] - if (modelName.endsWith('_left')) chestTextureName = `${chestTextureName}_left` - if (modelName.endsWith('_right')) chestTextureName = `${chestTextureName}_right` - - const texture = path.join(currentMcAssets.directory, `../1.19.1/entity/chest/${chestTextureName}.png`) - - currentImage = await Jimp.read(texture) - - const model = structuredClone(chestModels[modelName]) - model.textures.particle = particle - const newModelName = `${currentBlockName}_${modelName}` - for (const variant of blockStatesVariants) { - if (variant.model !== modelName) continue - variant.model = newModelName - } - for (const [i, { faces }] of model.elements.entries()) { - for (const [faceName, face] of Object.entries(faces) as any) { - const { uv } = face - //@ts-ignore - const jimp = justCropUV(...uv) - const key = `${chestTextureName}_${modelName}_${i}_${faceName}` - const texture = await getBlockTexturesFromJimp({ - [key]: jimp - }, true, key).then(a => a[key]) - face.texture = texture.texture - face.uv = texture.uv - } - } - currentMcAssets.blocksModels[newModelName] = model - } - currentMcAssets.blocksStates[currentBlockName] = blockStates -} - -async function loadBlockModelTextures (dataBase: string, blockModel: any) { - for (const key in blockModel.textures) { - let texture: string = blockModel.textures[key] - const useAssetsPath = !!texture.match(/^[0-9.]+\//) - blockModel.textures.particle = texture - generatedImageTextures[texture] = `data:image/png;base64,${fs.readFileSync(path.join(dataBase, useAssetsPath ? '..' : '', texture + '.png'), 'base64')}` - origSizeTextures[texture] = true - } -} - -const handlers = [ - [/(.+)_shulker_box$/, handleShulkerBox], - [/^shulker_box$/, handleShulkerBox], - [/^(?:(ender|trapped)_)?chest$/, handleChest], - // [/(^|(.+)_)bed$/, handleBed], - // no-op just suppress warning - [/(^light|^moving_piston$)/, true], -] as const - -export const tryHandleBlockEntity = async (dataBase, blockName) => { - currentBlockName = blockName - for (const [regex, handler] of handlers) { - const match = regex.exec(blockName) - if (!match) continue - if (handler !== true) { - await handler(dataBase, match) - } - return true - } -} - -async function readAllBlockStates (blockStatesDir: string) { - const files = fs.readdirSync(blockStatesDir) - for (const file of files) { - if (file.endsWith('.json')) { - const state = JSON.parse(fs.readFileSync(path.join(blockStatesDir, file), 'utf-8')) - const name = file.replace('.json', '') - currentMcAssets.blocksStates[name] = state - handledBlocks.push(name) - } else { - await readAllBlockStates(path.join(blockStatesDir, file)) - } - } -} - -async function readAllBlockModels (dataBase: string, blockModelsDir: string, completePath: string) { - const actualPath = completePath.length ? completePath + "/" : "" - const files = fs.readdirSync(blockModelsDir) - for (const file of files) { - if (file.endsWith('.json')) { - const model = JSON.parse(fs.readFileSync(path.join(blockModelsDir, file), 'utf-8')) - const name = actualPath + file.replace('.json', '') - currentMcAssets.blocksModels[name] = model - await loadBlockModelTextures(dataBase, model) - } else { - await readAllBlockModels(dataBase, path.join(blockModelsDir, file), actualPath + file) - } - } -} - -const handleExternalData = async (assetsPathRoot: string, version: string) => { - const currentVersionNumber = versionToNumber(version) - const versions = fs.readdirSync(path.join(__dirname, 'data'), { withFileTypes: true }) - .filter(x => x.isDirectory()) - .map(x => x.name) - .sort((a, b) => versionToNumber(b) - versionToNumber(a)) - - const allAssetsVersions = fs.readdirSync(assetsPathRoot, { withFileTypes: true }) - .filter(x => x.isDirectory()) - .map(x => x.name) - .sort((a, b) => versionToNumber(b) - versionToNumber(a)) - - const getAssetsVersion = (version: string) => { - return allAssetsVersions[version] ?? allAssetsVersions.find(x => x.startsWith(version)) - } - - for (const curVer of versions) { - const baseDir = path.join(__dirname, 'data', curVer) - if (versionToNumber(curVer) > currentVersionNumber) continue - - const assetsVersion = getAssetsVersion(curVer) - await readAllBlockStates(path.join(baseDir, 'blockStates')) - await readAllBlockModels(path.join(assetsPathRoot, assetsVersion), path.join(baseDir, 'blockModels'), "") - } -} - -export const prepareMoreGeneratedBlocks = async (mcAssets: McAssets) => { - const mcData = minecraftData(mcAssets.version) - const allTheBlocks = mcData.blocksArray.map(x => x.name) - - currentMcAssets = mcAssets - // todo - const ignoredBlocks = ['skull', 'structure_void', 'banner', 'bed', 'end_portal'] - - for (const theBlock of allTheBlocks) { - try { - if (await tryHandleBlockEntity(mcAssets.directory, theBlock)) { - handledBlocks.push(theBlock) - } - } catch (err) { - // todo remove when all warnings are resolved - console.warn(`[${mcAssets.version}] failed to generate block ${theBlock}`) - } - } - - await handleExternalData(path.join(mcAssets.directory, '..'), mcAssets.version) - - const warnings: string[] = [] - for (const [name, model] of Object.entries(mcAssets.blocksModels)) { - if (Object.keys(model).length === 1 && model.textures) { - const keys = Object.keys(model.textures) - if (keys.length === 1 && keys[0] === 'particle') { - if (handledBlocks.includes(name) || ignoredBlocks.includes(name)) continue - warnings.push(`unhandled block ${name}`) - } - } - } - - return { warnings } -} - -export const getAdditionalTextures = () => { - return { generated: generatedImageTextures, origSizeTextures } -} diff --git a/prismarine-viewer/viewer/prepare/postinstall.ts b/prismarine-viewer/viewer/prepare/postinstall.ts deleted file mode 100644 index bf70d26c0..000000000 --- a/prismarine-viewer/viewer/prepare/postinstall.ts +++ /dev/null @@ -1,12 +0,0 @@ -import path from 'path' -import fs from 'fs' - -const publicPath = path.resolve(__dirname, '../../public') -const texturesPath = path.join(publicPath, 'textures') - -if (fs.existsSync(texturesPath) && !process.argv.includes('-f')) { - console.log('textures folder already exists, skipping...') - process.exit(0) -} else { - import('./generateTextures') -} diff --git a/prismarine-viewer/viewer/prepare/utils.ts b/prismarine-viewer/viewer/prepare/utils.ts index a33909a9d..958273f3b 100644 --- a/prismarine-viewer/viewer/prepare/utils.ts +++ b/prismarine-viewer/viewer/prepare/utils.ts @@ -2,3 +2,17 @@ export const versionToNumber = (ver: string) => { const [x, y = '0', z = '0'] = ver.split('.') return +`${x.padStart(2, '0')}${y.padStart(2, '0')}${z.padStart(2, '0')}` } + +export const versionToMajor = (version: string) => { + const [x, y = '0'] = version.split('.') + return `${x.padStart(2, '0')}.${y.padStart(2, '0')}` +} + +export const versionsMapToMajor = (versionsMap: Record) => { + const majorVersions = {} as Record + for (const [ver, data] of Object.entries(versionsMap)) { + const major = versionToMajor(ver) + majorVersions[major] = data + } + return majorVersions +} diff --git a/prismarine-viewer/viewer/supportedVersions.json b/prismarine-viewer/viewer/supportedVersions.json deleted file mode 100644 index d4fcd3d8e..000000000 --- a/prismarine-viewer/viewer/supportedVersions.json +++ /dev/null @@ -1 +0,0 @@ -["1.8.8", "1.9.4", "1.10.2", "1.11.2", "1.12.2", "1.13.2", "1.14.4", "1.15.2", "1.16.1", "1.16.4", "1.17.1", "1.18.1", "1.18.2"] \ No newline at end of file diff --git a/prismarine-viewer/webpack.config.js b/prismarine-viewer/webpack.config.js deleted file mode 100644 index d1577c9df..000000000 --- a/prismarine-viewer/webpack.config.js +++ /dev/null @@ -1,88 +0,0 @@ -// eslint-disable-next-line no-unused-vars -const webpack = require('webpack') -const path = require('path') -// const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin - -// Minify the index.js by removing unused minecraft data. Since the worker only needs to do meshing, -// we can remove all the other data unrelated to meshing. -const blockedIndexFiles = ['blocksB2J', 'blocksJ2B', 'blockMappings', 'steve', 'recipes'] -const allowedWorkerFiles = ['blocks', 'blockCollisionShapes', 'tints', 'blockStates', - 'biomes', 'features', 'version', 'legacy', 'versions', 'version', 'protocolVersions'] - -const indexConfig = { - entry: './lib/index.js', - mode: 'production', - output: { - path: path.resolve(__dirname, './public'), - filename: './index.js' - }, - resolve: { - fallback: { - zlib: false - } - }, - plugins: [ - // fix "process is not defined" error: - new webpack.ProvidePlugin({ - process: 'process/browser' - }), - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'] - }), - new webpack.NormalModuleReplacementPlugin( - // eslint-disable-next-line - /viewer[\/|\\]lib[\/|\\]utils/, - './utils.web.js' - ) - // new BundleAnalyzerPlugin() - ], - externals: [ - function (req, cb) { - if (req.context.includes('minecraft-data') && req.request.endsWith('.json')) { - const fileName = req.request.split('/').pop().replace('.json', '') - if (blockedIndexFiles.includes(fileName)) { - cb(null, []) - return - } - } - cb() - } - ] -} - -const workerConfig = { - entry: './viewer/lib/worker.js', - mode: 'production', - output: { - path: path.join(__dirname, '/public'), - filename: './worker.js' - }, - resolve: { - fallback: { - zlib: false - } - }, - plugins: [ - // fix "process is not defined" error: - new webpack.ProvidePlugin({ - process: 'process/browser' - }), - new webpack.ProvidePlugin({ - Buffer: ['buffer', 'Buffer'] - }) - ], - externals: [ - function (req, cb) { - if (req.context.includes('minecraft-data') && req.request.endsWith('.json')) { - const fileName = req.request.split('/').pop().replace('.json', '') - if (!allowedWorkerFiles.includes(fileName)) { - cb(null, []) - return - } - } - cb() - } - ] -} - -module.exports = [indexConfig, workerConfig] diff --git a/rsbuild.config.ts b/rsbuild.config.ts new file mode 100644 index 000000000..33f9e631d --- /dev/null +++ b/rsbuild.config.ts @@ -0,0 +1,189 @@ +import { defineConfig, RsbuildPluginAPI } from '@rsbuild/core' +import { pluginReact } from '@rsbuild/plugin-react' +import { pluginTypedCSSModules } from '@rsbuild/plugin-typed-css-modules' +import { pluginNodePolyfill } from '@rsbuild/plugin-node-polyfill' +import { pluginTypeCheck } from '@rsbuild/plugin-type-check' +import path from 'path' +import childProcess from 'child_process' +import fs from 'fs' +import fsExtra from 'fs-extra' +import { promisify } from 'util' +import { generateSW } from 'workbox-build' +import { getSwAdditionalEntries } from './scripts/build' + +//@ts-ignore +try { require('./localSettings.js') } catch { } + +const execAsync = promisify(childProcess.exec) + +const buildingVersion = new Date().toISOString().split(':')[0] + +const dev = process.env.NODE_ENV === 'development' + +export default defineConfig({ + dev: { + progressBar: true, + writeToDisk: true + }, + html: { + template: './index.html', + }, + output: { + polyfill: 'usage', + externals: [ + 'sharp' + ], + sourceMap: { + js: 'source-map', + css: true, + }, + // 50kb limit for data uri + dataUriLimit: 50 * 1024 + }, + source: { + alias: { + fs: './src/shims/fs.js', + http: 'http-browserify', + stream: 'stream-browserify', + net: 'net-browserify', + 'minecraft-protocol$': 'minecraft-protocol/src/index.js', + 'buffer$': 'buffer', + // avoid bundling, not used on client side + 'prismarine-auth': './src/shims/empty.ts', + perf_hooks: './src/shims/perf_hooks_replacement.js', + crypto: './src/shims/crypto.js', + dns: './src/shims/dns.js', + yggdrasil: './src/shims/yggdrasilReplacement.ts', + }, + entry: { + index: './src/index.ts', + }, + // exclude: [ + // /.woff$/ + // ], + define: { + 'process.env.BUILD_VERSION': JSON.stringify(!dev ? buildingVersion : 'undefined'), + 'process.platform': '"browser"', + 'process.env.GITHUB_URL': + JSON.stringify(`https://github.com/${process.env.GITHUB_REPOSITORY || `${process.env.VERCEL_GIT_REPO_OWNER}/${process.env.VERCEL_GIT_REPO_SLUG}`}`), + 'process.env.DEPS_VERSIONS': JSON.stringify({}) + }, + decorators: { + version: 'legacy', // default is a lie + }, + }, + server: { + // strictPort: true, + htmlFallback: false, + publicDir: false, + // publicDir: { + // name: 'assets', + // }, + headers: { + // enable shared array buffer + 'Cross-Origin-Opener-Policy': 'same-origin', + 'Cross-Origin-Embedder-Policy': 'require-corp', + }, + open: process.env.OPEN_BROWSER === 'true', + proxy: { + '/api': 'http://localhost:8080', + }, + }, + plugins: [ + pluginReact(), + pluginTypedCSSModules(), + pluginNodePolyfill(), + { + name: 'test', + setup (build: RsbuildPluginAPI) { + const prep = async () => { + console.time('total-prep') + if (!fs.existsSync('./generated/minecraft-data-data.js')) { + childProcess.execSync('tsx ./scripts/genShims.ts', { stdio: 'inherit' }) + } + fsExtra.copySync('./node_modules/mc-assets/dist/other-textures/latest/entity', './dist/textures/entity') + fsExtra.copySync('./assets/background', './dist/background') + fs.copyFileSync('./assets/favicon.png', './dist/favicon.png') + fs.copyFileSync('./assets/manifest.json', './dist/manifest.json') + fs.copyFileSync('./assets/loading-bg.jpg', './dist/loading-bg.jpg') + const configJson = JSON.parse(fs.readFileSync('./config.json', 'utf8')) + if (dev) { + configJson.defaultProxy = ':8080' + } + fs.writeFileSync('./dist/config.json', JSON.stringify(configJson), 'utf8') + childProcess.execSync('node ./scripts/prepareData.mjs', { stdio: 'inherit' }) + // childProcess.execSync('./scripts/prepareSounds.mjs', { stdio: 'inherit' }) + // childProcess.execSync('tsx ./scripts/genMcDataTypes.ts', { stdio: 'inherit' }) + // childProcess.execSync('tsx ./scripts/genPixelartTypes.ts', { stdio: 'inherit' }) + if (fs.existsSync('./prismarine-viewer/public/mesher.js')) { + // copy mesher + fs.copyFileSync('./prismarine-viewer/public/mesher.js', './dist/mesher.js') + } else { + await execAsync('pnpm run build-mesher') + } + fs.writeFileSync('./dist/version.txt', buildingVersion, 'utf-8') + console.timeEnd('total-prep') + } + if (!dev) { + build.onBeforeBuild(async () => { + await prep() + }) + build.onAfterBuild(async () => { + const { count, size, warnings } = await generateSW({ + // dontCacheBustURLsMatching: [new RegExp('...')], + globDirectory: 'dist', + skipWaiting: true, + clientsClaim: true, + additionalManifestEntries: getSwAdditionalEntries(), + globPatterns: [], + swDest: './dist/service-worker.js', + }) + }) + } + build.onBeforeStartDevServer(prep) + }, + }, + ], + tools: { + bundlerChain (chain, { CHAIN_ID }) { + }, + rspack (config, { addRules, appendPlugins, rspack }) { + appendPlugins(new rspack.NormalModuleReplacementPlugin(/data/, (resource) => { + let absolute: string + const request = resource.request.replaceAll('\\', '/') + absolute = path.join(resource.context, request).replaceAll('\\', '/') + if (request.includes('minecraft-data/data/pc/1.')) { + console.log('Error: incompatible resource', request, resource.contextInfo.issuer) + process.exit(1) + // throw new Error(`${resource.request} was requested by ${resource.contextInfo.issuer}`) + } + if (absolute.endsWith('/minecraft-data/data.js')) { + resource.request = path.join(__dirname, './generated/minecraft-data-data.js') + } + })) + addRules([ + { + test: /\.obj$/, + type: 'asset/source', + }, + { + test: /\.wgsl$/, + type: 'asset/source', + }, + { + test: /\.mp3$/, + type: 'asset/source', + } + ]) + config.ignoreWarnings = [ + /the request of a dependency is an expression/, + /Unsupported pseudo class or element: xr-overlay/ + ] + } + }, + performance: { + // bundleAnalyze: { + // analyzerMode: 'json', + // }, + }, +}) diff --git a/scripts/build.js b/scripts/build.js index 01b7dffde..7d3dc3fc6 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -5,19 +5,15 @@ const glob = require('glob') const fs = require('fs') const crypto = require('crypto') const path = require('path') -const McAssets = require('minecraft-assets') const prismarineViewerBase = "./node_modules/prismarine-viewer" -const entityMcAssets = McAssets('1.16.4') // these files could be copied at build time eg with copy plugin, but copy plugin slows down the config so we copy them there, alternative we could inline it in esbuild config const filesToCopy = [ - { from: `${prismarineViewerBase}/public/blocksStates/`, to: 'dist/blocksStates/' }, - { from: `${prismarineViewerBase}/public/webgl/`, to: 'dist/webgl/' }, { from: `${prismarineViewerBase}/public/mesher.js`, to: 'dist/mesher.js' }, { from: './assets/', to: './dist/' }, { from: './config.json', to: 'dist/config.json' }, - { from: path.join(entityMcAssets.directory, 'entity'), to: 'dist/textures/1.16.4/entity' }, + // { from: path.join(entityMcAssets.directory, 'entity'), to: 'dist/textures/1.16.4/entity' }, ] exports.filesToCopy = filesToCopy exports.copyFiles = (dev = false) => { @@ -47,15 +43,10 @@ exports.copyFilesDev = () => { exports.getSwAdditionalEntries = () => { // need to be careful with this - const singlePlayerVersion = defaultLocalServerOptions.version const filesToCachePatterns = [ 'index.html', - 'index.js', - 'index.css', - 'favicon.ico', `mc-data/${defaultLocalServerOptions.versionMajor}.js`, - `blocksStates/${singlePlayerVersion}.json`, - 'extra-textures/**', + 'background/**', // todo-low copy from assets '*.mp3', '*.ttf', @@ -63,13 +54,12 @@ exports.getSwAdditionalEntries = () => { '*.woff', 'mesher.js', 'worldSaveWorker.js', - // todo-low preload entity atlas? - `textures/${singlePlayerVersion}.png`, - `textures/1.16.4/entity/squid.png`, + `textures/entity/squid/squid.png`, + // everything but not .map + 'static/**/!(*.map)', ] const filesNeedsCacheKey = [ - 'index.js', - 'index.css', + 'index.html', 'mesher.js', 'worldSaveWorker.js', ] @@ -90,6 +80,9 @@ exports.getSwAdditionalEntries = () => { output.push({ url, revision }) } } + if (output.length > 40) { + throw new Error(`SW: Ios has a limit of 40 urls to cache (now ${output.length})`) + } console.log(`Got ${output.length} additional sw entries to cache`) return output } @@ -99,6 +92,16 @@ exports.moveStorybookFiles = () => { fsExtra.copySync('dist/storybook', '.vercel/output/static/storybook') } +exports.getSwFilesSize = () => { + const files = exports.getSwAdditionalEntries() + let size = 0 + for (const { url } of files) { + const file = path.join(__dirname, '../dist', url) + size += fs.statSync(file).size + } + console.log('mb', size / 1024 / 1024) +} + const fn = require.main === module && exports[process.argv[2]] if (fn) { diff --git a/scripts/buildNpmReact.ts b/scripts/buildNpmReact.ts index 4516f1b70..f23a37cc2 100644 --- a/scripts/buildNpmReact.ts +++ b/scripts/buildNpmReact.ts @@ -11,7 +11,7 @@ fs.promises.readdir(path.resolve(__dirname, '../src/react')).then(async (files) const components = files .filter((file) => { if (file.startsWith('Concept')) return false - return file.endsWith('.stories.tsx'); + return file.endsWith('.stories.tsx') }) .map((file) => { return file.replace('.stories.tsx', '') @@ -39,7 +39,7 @@ fs.promises.readdir(path.resolve(__dirname, '../src/react')).then(async (files) version = version.replace(/^v/, '') packageJson.version = version - const externalize = ['minecraft-assets', 'prismarine-viewer'] + const externalize = ['prismarine-viewer', 'mc-assets'] const { metafile } = await build({ entryPoints: [path.resolve(__dirname, '../src/react/npmReactComponents.ts')], bundle: true, @@ -53,6 +53,10 @@ fs.promises.readdir(path.resolve(__dirname, '../src/react')).then(async (files) write: false, // todo loader: { '.png': 'dataurl', + '.jpg': 'dataurl', + '.jpeg': 'dataurl', + '.webp': 'dataurl', + '.css': 'text', }, plugins: [ // on external module resolve diff --git a/scripts/dockerPrepare.mjs b/scripts/dockerPrepare.mjs new file mode 100644 index 000000000..fd3680b4d --- /dev/null +++ b/scripts/dockerPrepare.mjs @@ -0,0 +1,12 @@ +//@ts-check +import fs from 'fs' +import path from 'path' +import { fileURLToPath } from 'url' + +const packageJson = JSON.parse(fs.readFileSync('./package.json', 'utf8')) +delete packageJson.optionalDependencies +fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2), 'utf8') + +const packageJsonViewer = JSON.parse(fs.readFileSync('./prismarine-viewer/package.json', 'utf8')) +delete packageJsonViewer.optionalDependencies +fs.writeFileSync('./prismarine-viewer/package.json', JSON.stringify(packageJsonViewer, null, 2), 'utf8') diff --git a/scripts/esbuildPlugins.mjs b/scripts/esbuildPlugins.mjs index b36f02143..431c16a4b 100644 --- a/scripts/esbuildPlugins.mjs +++ b/scripts/esbuildPlugins.mjs @@ -1,46 +1,16 @@ //@ts-check -import { polyfillNode } from 'esbuild-plugin-polyfill-node' -import { join, dirname, basename } from 'path' +import { join, dirname } from 'path' import * as fs from 'fs' -import { filesize } from 'filesize' -import MCProtocol from 'minecraft-protocol' -import MCData from 'minecraft-data' -import { throttle } from 'lodash-es' import { fileURLToPath } from 'url' const __dirname = dirname(fileURLToPath(new URL(import.meta.url))) -const { supportedVersions } = MCProtocol - -const prod = process.argv.includes('--prod') -let connectedClients = [] - -const writeToClients = (data) => { - connectedClients.forEach((res) => { - res.write(`data: ${JSON.stringify(data)}\n\n`) - res.flush() - }) -} - -export const startWatchingHmr = () => { - const eventsPerFile = { - 'mesher.js': 'mesher', - // 'dist/webglRendererWorker.js': 'webglRendererWorker', - } - for (const name of Object.keys(eventsPerFile)) { - const file = join('dist', name) - if (!fs.existsSync(file)) console.warn(`[missing worker] File ${name} does not exist`) - fs.watchFile(file, () => { - writeToClients({ replace: { type: eventsPerFile[name] } }) - }) - } -} /** @type {import('esbuild').Plugin[]} */ const mesherSharedPlugins = [ { name: 'minecraft-data', - setup(build) { + setup (build) { build.onLoad({ filter: /data[\/\\]pc[\/\\]common[\/\\]legacy.json$/, }, async (args) => { @@ -54,315 +24,4 @@ const mesherSharedPlugins = [ } ] -/** @type {import('esbuild').Plugin[]} */ -const plugins = [ - ...mesherSharedPlugins, - { - name: 'strict-aliases', - setup(build) { - build.onResolve({ - filter: /^minecraft-protocol$/, - }, async ({ kind, resolveDir }) => { - return { - path: (await build.resolve('minecraft-protocol/src/index.js', { kind, resolveDir })).path, - } - }) - build.onLoad({ - filter: /minecraft-data[\/\\]data.js$/, - }, (args) => { - const version = supportedVersions.at(-1) - if (!version) throw new Error('unreachable') - const data = MCData(version) - const defaultVersionsObj = { - // default protocol data, needed for auto-version - [version]: { - version: data.version, - // protocol: JSON.parse(fs.readFileSync(join(args.path, '..', 'minecraft-data/data/pc/1.20/protocol.json'), 'utf8')), - protocol: data.protocol, - } - } - return { - contents: `window.mcData ??= ${JSON.stringify(defaultVersionsObj)};module.exports = { pc: window.mcData }`, - loader: 'js', - watchFiles: [ - // todo - 'dist/worker.js', - 'dist/webglRendererWorker.js' - ], - } - }) - build.onResolve({ - filter: /^minecraft-assets$/, - }, () => { - throw new Error('hit banned package') - }) - build.onLoad({ - filter: /^prismarine-auth/, - }, () => { - return { - contents: 'module.exports = {}', - } - }) - - build.onResolve({ - filter: /^three$/, - }, async ({ kind, resolveDir }) => { - return { - path: (await build.resolve('three/src/Three.js', { kind, resolveDir })).path, - } - }) - } - }, - { - name: 'data-assets', - setup(build) { - build.onResolve({ - filter: /.*/, - }, async ({ path, ...rest }) => { - if (['.woff', '.woff2', '.ttf'].some(ext => path.endsWith(ext)) || path.startsWith('extra-textures/')) { - return { - path, - namespace: 'assets', - external: true, - } - } - }) - - const removeNodeModulesSourcemaps = (map) => { - const doNotRemove = ['prismarine', 'mineflayer', 'flying-squid', '@jspm/core', 'minecraft', 'three'] - map.sourcesContent.forEach((_, i) => { - if (map.sources[i].includes('node_modules') && !doNotRemove.some(x => map.sources[i].includes(x))) { - map.sourcesContent[i] = null - } - }) - } - - build.onEnd(async ({ metafile, outputFiles }) => { - // write outputFiles - //@ts-ignore - for (const file of outputFiles) { - let contents = file.text - if (file.path.endsWith('.map') && file.text && !process.env.PROD) { - const map = JSON.parse(file.text) - removeNodeModulesSourcemaps(map) - contents = JSON.stringify(map) - } - await fs.promises.writeFile(file.path, contents) - } - if (!prod) return - // const deps = Object.entries(metafile.inputs).sort(([, a], [, b]) => b.bytes - a.bytes).map(([x, { bytes }]) => [x, filesize(bytes)]).slice(0, 5) - //@ts-ignore - const sizeByExt = {} - //@ts-ignore - Object.entries(metafile.inputs).sort(([, a], [, b]) => b.bytes - a.bytes).forEach(([x, { bytes }]) => { - const ext = x.slice(x.lastIndexOf('.')) - sizeByExt[ext] ??= 0 - sizeByExt[ext] += bytes - }) - console.log('Input size by ext:') - console.log(Object.fromEntries(Object.entries(sizeByExt).map(x => [x[0], filesize(x[1])]))) - }) - }, - }, - { - name: 'prevent-incorrect-linking', - setup(build) { - build.onResolve({ - filter: /.+/, - }, async ({ resolveDir, path, importer, kind, pluginData }) => { - if (pluginData?.__internal) return - // not ideal as packages can have different version, on the other hand we should not have multiple versions of the same package of developing deps - const packageName = path.startsWith('@') ? path.split('/', 2).join('/') : path.split('/', 1)[0] - const localPackageToReuse = join('node_modules', packageName) - if (!resolveDir.startsWith(process.cwd()) && ['./', '../'].every(x => !path.startsWith(x)) && fs.existsSync(localPackageToReuse)) { - const redirected = await build.resolve(path, { kind: 'import-statement', resolveDir: process.cwd(), pluginData: { __internal: true }, }) - return redirected - } - // disallow imports from outside the root directory to ensure modules are resolved from node_modules of this workspace - // if ([resolveDir, path].some(x => x.includes('node_modules')) && !resolveDir.startsWith(process.cwd())) { - // // why? ensure workspace dependency versions are used (we have overrides and need to dedupe so it doesn't grow in size) - // throw new Error(`Restricted package import from outside the root directory: ${resolveDir}`) - // } - return undefined - }) - } - }, - { - name: 'watch-notify', - setup(build) { - let count = 0 - let time - let prevHash - - build.onStart(() => { - time = Date.now() - }) - build.onEnd(({ errors, outputFiles: _outputFiles, metafile, warnings }) => { - /** @type {import('esbuild').OutputFile[]} */ - // @ts-ignore - const outputFiles = _outputFiles - const elapsed = Date.now() - time - outputFiles.find(outputFile => outputFile.path) - - if (errors.length) { - writeToClients({ errors: errors.map(error => error.text) }) - return - } - - // write metafile to disk if needed to analyze - fs.writeFileSync('dist/meta.json', JSON.stringify(metafile, null, 2)) - - /** @type {import('esbuild').OutputFile} */ - //@ts-ignore - const outputFile = outputFiles.find(x => x.path.endsWith('.js')) - if (outputFile.hash === prevHash) { - // todo also check workers and css - console.log('Ignoring reload as contents the same') - return - } - prevHash = outputFile.hash - let outputText = outputFile.text - //@ts-ignore - if (['inline', 'both'].includes(build.initialOptions.sourcemap)) { - outputText = outputText.slice(0, outputText.indexOf('//# sourceMappingURL=data:application/json;base64,')) - } - console.log(`Done in ${elapsed}ms. Size: ${filesize(outputText.length)} (${build.initialOptions.minify ? 'minified' : 'without minify'})`) - - if (count++ === 0) { - return - } - - writeToClients({ update: { time: elapsed } }) - connectedClients.length = 0 - }) - } - }, - { - name: 'esbuild-readdir', - setup(build) { - build.onResolve({ - filter: /^esbuild-readdir:.+$/, - }, ({ resolveDir, path }) => { - return { - namespace: 'esbuild-readdir', - path, - pluginData: { - resolveDir: join(resolveDir, path.replace(/^esbuild-readdir:/, '')) - }, - } - }) - build.onLoad({ - filter: /.+/, - namespace: 'esbuild-readdir', - }, async ({ pluginData }) => { - const { resolveDir } = pluginData - const files = await fs.promises.readdir(resolveDir) - return { - contents: `module.exports = ${JSON.stringify(files)}`, - resolveDir, - loader: 'js', - } - }) - } - }, - { - name: 'esbuild-import-glob', - setup(build) { - build.onResolve({ - filter: /^esbuild-import-glob\(path:(.+),skipFiles:(.+)\)+$/, - }, ({ resolveDir, path }) => { - return { - namespace: 'esbuild-import-glob', - path, - pluginData: { - resolveDir - }, - } - }) - build.onLoad({ - filter: /.+/, - namespace: 'esbuild-import-glob', - }, async ({ pluginData, path }) => { - const { resolveDir } = pluginData - //@ts-ignore - const [, userPath, skipFiles] = /^esbuild-import-glob\(path:(.+),skipFiles:(.+)\)+$/g.exec(path) - const files = (await fs.promises.readdir(join(resolveDir, userPath))).filter(f => !skipFiles.includes(f)) - return { - contents: `module.exports = { ${files.map(f => `'${f}': require('./${join(userPath, f)}')`).join(',')} }`, - resolveDir, - loader: 'js', - } - }) - } - }, - { - name: 'fix-dynamic-require', - setup(build) { - build.onResolve({ - filter: /1\.14\/chunk/, - }, async ({ resolveDir, path }) => { - if (!resolveDir.includes('prismarine-provider-anvil')) return - return { - namespace: 'fix-dynamic-require', - path, - pluginData: { - resolvedPath: `${join(resolveDir, path)}.js`, - resolveDir - }, - } - }) - build.onLoad({ - filter: /.+/, - namespace: 'fix-dynamic-require', - }, async ({ pluginData: { resolvedPath, resolveDir } }) => { - const resolvedFile = await fs.promises.readFile(resolvedPath, 'utf8') - return { - contents: resolvedFile.replace("require(`prismarine-chunk/src/pc/common/BitArray${noSpan ? 'NoSpan' : ''}`)", "noSpan ? require(`prismarine-chunk/src/pc/common/BitArray`) : require(`prismarine-chunk/src/pc/common/BitArrayNoSpan`)"), - resolveDir, - loader: 'js', - } - }) - } - }, - { - name: 'react-displayname', - setup(build) { - build.onLoad({ - filter: /.tsx$/, - }, async ({ path }) => { - let file = await fs.promises.readFile(path, 'utf8') - const fileName = basename(path, '.tsx') - let replaced = false - const varName = `__${fileName}_COMPONENT` - file = file.replace(/export default /, () => { - replaced = true - return `const ${varName} = ` - }) - if (replaced) { - file += `;${varName}.displayName = '${fileName}';export default ${varName};` - } - - return { - contents: file, - loader: 'tsx', - } - }) - } - }, - polyfillNode({ - polyfills: { - fs: false, - dns: false, - crypto: false, - events: false, - http: false, - stream: false, - buffer: false, - perf_hooks: false, - net: false, - assert: false, - }, - }) -] - -export { plugins, connectedClients as clients, mesherSharedPlugins } +export { mesherSharedPlugins } diff --git a/scripts/gen-texturepack-files.mjs b/scripts/gen-texturepack-files.mjs deleted file mode 100644 index d996236e3..000000000 --- a/scripts/gen-texturepack-files.mjs +++ /dev/null @@ -1,52 +0,0 @@ -//@ts-check -import fs from 'fs' -import minecraftAssets from 'minecraft-assets' - -// why store another data? -// 1. want to make it compatible (at least for now) -// 2. don't want to read generated blockStates as it might change in future, and the current way was faster to implement - -const blockNames = [] -const indexesPerVersion = {} -/** @type {Map} */ -const allBlocksMap = new Map() -const getBlockIndex = (block) => { - if (allBlocksMap.has(block)) { - return allBlocksMap.get(block) - } - - const index = blockNames.length - allBlocksMap.set(block, index) - blockNames.push(block) - return index -} - -// const blocksFull = [] -// const allBlocks = [] -// // we can even optimize it even futher by doing prev-step resolving -// const blocksDiff = {} - -for (const [i, version] of minecraftAssets.versions.reverse().entries()) { - const assets = minecraftAssets(version) - const blocksDir = assets.directory + '/blocks' - const blocks = fs.readdirSync(blocksDir) - indexesPerVersion[version] = blocks.map(block => { - if (!block.endsWith('.png')) return undefined - return getBlockIndex(block) - }).filter(i => i !== undefined) - - // if (!blocksFull.length) { - // // first iter - // blocksFull.push(...blocks) - // } else { - // const missing = blocksFull.map((b, i) => !blocks.includes(b) ? i : -1).filter(i => i !== -1) - // const added = blocks.filter(b => !blocksFull.includes(b)) - // blocksDiff[version] = { - // missing, - // added - // } - // } -} - -fs.mkdirSync('./generated', { recursive: true, }) -fs.writeFileSync('./generated/blocks.json', JSON.stringify({ blockNames: blockNames, indexes: indexesPerVersion })) diff --git a/scripts/genShims.ts b/scripts/genShims.ts new file mode 100644 index 000000000..3fe416b35 --- /dev/null +++ b/scripts/genShims.ts @@ -0,0 +1,43 @@ +import fs from 'fs' +import MinecraftData from 'minecraft-data' +import MCProtocol from 'minecraft-protocol' +import { appReplacableResources } from '../src/resourcesSource' + +const { supportedVersions, defaultVersion } = MCProtocol + +// gen generated/minecraft-data-data.js + +const data = MinecraftData(defaultVersion) +const defaultVersionObj = { + [defaultVersion]: { + version: data.version, + protocol: data.protocol, + } +} + +const mcDataContents = `window.mcData ??= ${JSON.stringify(defaultVersionObj)};module.exports = { pc: window.mcData }` + +fs.writeFileSync('./generated/minecraft-data-data.js', mcDataContents, 'utf8') + +// app resources + +let headerImports = '' +let resourcesContent = 'export const appReplacableResources: { [key: string]: { content: any, resourcePackPath: string, cssVar?: string, cssVarRepeat?: number } } = {\n' + +for (const resource of appReplacableResources) { + const { path, ...rest } = resource + const name = path.split('/').slice(-4).join('_').replace('.png', '').replaceAll('-', '_').replaceAll('.', '_') + headerImports += `import ${name} from '${path.replace('../node_modules/', '')}'\n` + resourcesContent += ` + '${name}': { + content: ${name}, + resourcePackPath: 'minecraft/textures/${path.slice(path.indexOf('other-textures/') + 'other-textures/'.length).split('/').slice(1).join('/')}', + ...${JSON.stringify(rest)} + }, +` +} + +resourcesContent += '}' + +fs.mkdirSync('./src/generated', { recursive: true }) +fs.writeFileSync('./src/generated/resources.ts', headerImports + '\n' + resourcesContent, 'utf8') diff --git a/scripts/generateMoreCollisionShapes.mjs b/scripts/generateMoreCollisionShapes.mjs deleted file mode 100644 index ee1784788..000000000 --- a/scripts/generateMoreCollisionShapes.mjs +++ /dev/null @@ -1,209 +0,0 @@ -//@ts-check -import minecraftData from 'minecraft-data' -import minecraftAssets from 'minecraft-assets' -import fs from 'fs' - -const latestVersion = minecraftData.versions.pc[0] - -const latestData = minecraftData(latestVersion.minecraftVersion) - -// dont touch, these are the ones that are already full box -const fullBoxInteractionShapes = [ - 'dead_bush', - 'cave_vines_plant', - 'grass', - 'tall_seagrass', - 'spruce_sapling', - 'oak_sapling', - 'dark_oak_sapling', - 'birch_sapling', - 'seagrass', - 'nether_portal', - 'tall_grass', - 'lilac', - 'cobweb' -] - -const ignoreStates = [ - 'mangrove_propagule', - 'moving_piston' -] - -// const - -// to fix -const fullBoxInteractionShapesTemp = [ - 'moving_piston', - 'lime_wall_banner', - 'gray_wall_banner', - 'weeping_vines_plant', - 'pumpkin_stem', - 'red_wall_banner', - 'crimson_wall_sign', - 'magenta_wall_banner', - 'melon_stem', - 'gray_banner', - 'spruce_sign', - 'pink_wall_banner', - 'purple_banner', - 'bamboo_sapling', - 'mangrove_sign', - 'cyan_banner', - 'blue_banner', - 'green_wall_banner', - 'yellow_banner', - 'black_wall_banner', - 'green_banner', - 'oak_sign', - 'jungle_sign', - 'yellow_wall_banner', - 'lime_banner', - 'tube_coral', - 'red_banner', - 'magenta_banner', - 'brown_wall_banner', - 'white_wall_banner', -] - -const shapes = latestData.blockCollisionShapes -const fullShape = shapes.shapes[1] -const outputJson = {} - -let interestedBlocksNoStates = [] -let interestedBlocksStates = [] - -const stateIgnoreStates = ['waterlogged'] - -const isNonInteractive = block => block.name.includes('air') || block.name.includes('water') || block.name.includes('lava') || block.name.includes('void') -const interestedBlocks = latestData.blocksArray.filter(block => { - const shapeId = shapes.blocks[block.name] - // console.log('shapeId', shapeId, block.name) - if (!shapeId) return true - const shape = typeof shapeId === 'number' ? shapes.shapes[shapeId] : shapeId - if (shape.length === 0) return true - // console.log(shape) -}).filter(b => !isNonInteractive(b)).filter(b => { - if (fullBoxInteractionShapes.includes(b.name)) { - outputJson[b.name] = fullShape - return false - } - - if (!b.states?.length || ignoreStates.includes(b.name) || b.states.every(s => stateIgnoreStates.every(state => s.name === state))) { - interestedBlocksNoStates.push(b.name) - return false - } else { - interestedBlocksStates.push(b.name) - return false - } -}).map(d => d.name) - -const { blocksStates, blocksModels } = minecraftAssets(latestData.version.minecraftVersion) - -const getShapeFromModel = (block,) => { - const blockStates = JSON.parse(fs.readFileSync('./prismarine-viewer/public/blocksStates/1.19.1.json', 'utf8')) - const blockState = blockStates[block] - const perVariant = {} - for (const [key, variant] of Object.entries(blockState.variants)) { - // const shapes = (Array.isArray(variant) ? variant : [variant]).flatMap((v) => v.model?.elements).filter(Boolean).map(({ from, to }) => [...from, ...to]).reduce((acc, cur) => { - // return [ - // Math.min(acc[0], cur[0]), - // Math.min(acc[1], cur[1]), - // Math.min(acc[2], cur[2]), - // Math.max(acc[3], cur[3]), - // Math.max(acc[4], cur[4]), - // Math.max(acc[5], cur[5]) - // ] - // }) - console.log(variant) - const shapes = (Array.isArray(variant) ? variant : [variant]).flatMap((v) => v.model?.elements).filter(Boolean).map(({ from, to }) => [...from, ...to]) - perVariant[key] = shapes - break - } - return perVariant -} - -// console.log(getShapeFromModel('oak_button')) - -// const addShapeIf = { -// redstone: [ -// ['east', 'up', shape] -// ] -// } - -const needBlocksStated = {} - -const groupedBlocksRules = { - // button: block => block.includes('button'), - // pressure_plate: block => block.includes('pressure_plate'), - // sign: block => block.includes('_sign'), - // sapling: block => block.includes('_sapling'), -} -const groupedBlocksOutput = {} - -outer: for (const interestedBlock of [...interestedBlocksNoStates, ...interestedBlocksStates]) { - for (const [block, func] of Object.entries(groupedBlocksRules)) { - if (func(interestedBlock)) { - groupedBlocksOutput[block] ??= [] - groupedBlocksOutput[block].push(interestedBlock) - continue outer - } - } - - const hasStates = interestedBlocksStates.includes(interestedBlock) - if (hasStates) { - const states = blocksStates[interestedBlock] - if (!states) { - console.log('no states', interestedBlock) - continue - } - if (!states.variants) { - if (!states.multipart) { - console.log('no variants', interestedBlock) - continue - } - let outputStates = {} - for (const { when } of states.multipart) { - if (when) { - for (const [key, value] of Object.entries(when)) { - if (key === 'OR') { - for (const or of value) { - for (const [key, value] of Object.entries(or)) { - const str = `${key}=${value}` - outputStates[str] = true - } - } - continue - } - const str = `${key}=${value}` - outputStates[str] = true - } - } - } - needBlocksStated[interestedBlock] = outputStates - continue - } - if (Object.keys(states.variants).length === 1 && states.variants['']) { - needBlocksStated[interestedBlock] = false - } else { - needBlocksStated[interestedBlock] = Object.fromEntries(Object.entries(states.variants).map(([key, value]) => [key, true])) - } - } else { - needBlocksStated[interestedBlock] = false - } - // let vars = [] - // Object.keys(variants).forEach(variant => { - // if (variant !== '') vars.push(variant) - // }) - // needBlocksVariants.push({ - // block: interestedBlock, - // variants: vars - // }) -} - -fs.writeFileSync('scripts/needBlocks.json', JSON.stringify(needBlocksStated)) - -// console.log(interestedBlocks.includes('lever')) - -// read latest block states - -// read block model elements & combine diff --git a/scripts/optimizeBlockCollisions.ts b/scripts/optimizeBlockCollisions.ts index 8a87b3582..ac5e98668 100644 --- a/scripts/optimizeBlockCollisions.ts +++ b/scripts/optimizeBlockCollisions.ts @@ -49,6 +49,7 @@ for (const version of [...supportedVersions].reverse()) { const data = JSON.parse(fs.readFileSync(dataPath, 'utf8')) data.version = version processData(data) + fs.mkdirSync('./generated', { recursive: true }) fs.writeFileSync('./generated/latestBlockCollisionsShapes.json', JSON.stringify(data), 'utf8') break } diff --git a/scripts/test-texturepack-files.mjs b/scripts/test-texturepack-files.mjs deleted file mode 100644 index 0446a2fe8..000000000 --- a/scripts/test-texturepack-files.mjs +++ /dev/null @@ -1,16 +0,0 @@ -import fs from 'fs' -import minecraftAssets from 'minecraft-assets' - -const gen = JSON.parse(fs.readFileSync('./blocks.json', 'utf8')) - -const version = '1.8.8' -const { blockNames, indexes } = gen - -const blocksActual = indexes[version].map((i) => blockNames[i]) - -const blocksExpected = fs.readdirSync(minecraftAssets(version).directory + '/blocks') -for (const [i, item] of blocksActual.entries()) { - if (item !== blocksExpected[i]) { - console.log('not equal at', i) - } -} diff --git a/scripts/updateHandledPackets.mjs b/scripts/updateHandledPackets.mjs new file mode 100644 index 000000000..080eaf44d --- /dev/null +++ b/scripts/updateHandledPackets.mjs @@ -0,0 +1,60 @@ +import fs from 'fs' +import path from 'path' +import minecraftData from 'minecraft-data' + +const lastVersion = minecraftData.versions.pc[0] +// console.log('last proto ver', lastVersion.minecraftVersion) +const allPackets = minecraftData(lastVersion.minecraftVersion).protocol +const getPackets = ({ types }) => { + return Object.keys(types).map(type => type.replace('packet_', '')) +} +// todo test against all versions +const allFromServerPackets = getPackets(allPackets.play.toClient) +const allToServerPackets = getPackets(allPackets.play.toServer).filter(x => !['packet'].includes(x)) + +const buildFile = './dist/index.js' + +const file = fs.readFileSync(buildFile, 'utf8') + +const packetsReceiveRegex = /client\.on\("(\w+)"/g +const packetsReceiveSend = /client\.write\("(\w+)"/g + +let allSupportedReceive = [...new Set([...file.matchAll(packetsReceiveRegex)].map(x => x[1]))] +let allSupportedSend = [...new Set([...file.matchAll(packetsReceiveSend)].map(x => x[1]))] + +let md = '# Handled Packets\n' + +md += '\n## Server -> Client\n\n' +let notSupportedRows = [] +let supportedRows = [] +for (const packet of allFromServerPackets) { + const includes = allSupportedReceive.includes(packet); + (includes ? supportedRows : notSupportedRows).push(packet) +} + +for (const row of notSupportedRows) { + md += `❌ ${row}\n` +} +for (const row of supportedRows) { + md += `✅ ${row}\n` +} + +md += '\n' + +notSupportedRows = [] +supportedRows = [] + +md += '## Client -> Server\n\n' +for (const packet of allToServerPackets) { + const includes = allSupportedSend.includes(packet); + (includes ? supportedRows : notSupportedRows).push(packet) +} + +for (const row of notSupportedRows) { + md += `❌ ${row}\n` +} +for (const row of supportedRows) { + md += `✅ ${row}\n` +} + +fs.writeFileSync('./docs-assets/handled-packets.md', md) diff --git a/server.js b/server.js index d757024b1..7adae4bbd 100644 --- a/server.js +++ b/server.js @@ -19,9 +19,6 @@ const isProd = process.argv.includes('--prod') app.use(compression()) app.use(netApi({ allowOrigin: '*' })) if (!isProd) { - app.use('/blocksStates', express.static(path.join(__dirname, './prismarine-viewer/public/blocksStates'))) - app.use('/textures', express.static(path.join(__dirname, './prismarine-viewer/public/textures'))) - app.use('/sounds', express.static(path.join(__dirname, './generated/sounds/'))) } // patch config @@ -40,23 +37,24 @@ app.get('/config.json', (req, res, next) => { 'defaultProxy': '', // use current url (this server) }) }) -// add headers to enable shared array buffer -app.use((req, res, next) => { - res.setHeader('Cross-Origin-Opener-Policy', 'same-origin') - res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') - next() -}) -app.use(express.static(path.join(__dirname, './dist'))) +if (isProd) { + // add headers to enable shared array buffer + app.use((req, res, next) => { + res.setHeader('Cross-Origin-Opener-Policy', 'same-origin') + res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp') + next() + }) + app.use(express.static(path.join(__dirname, './dist'))) +} -const portArg = process.argv.indexOf('--port') -const port = (require.main === module ? process.argv[2] : portArg !== -1 ? process.argv[portArg + 1] : undefined) || 8080 +const numArg = process.argv.find(x => x.match(/^\d+$/)) +const port = (require.main === module ? numArg : undefined) || 8080 // Start the server -const server = isProd ? - undefined : +const server = app.listen(port, async function () { - console.log('Server listening on port ' + server.address().port) - if (siModule) { + console.log('Proxy server listening on port ' + server.address().port) + if (siModule && isProd) { const _interfaces = await siModule.networkInterfaces() const interfaces = Array.isArray(_interfaces) ? _interfaces : [_interfaces] let netInterface = interfaces.find(int => int.default) diff --git a/src/basicSounds.ts b/src/basicSounds.ts index 53c86652b..48bdcac61 100644 --- a/src/basicSounds.ts +++ b/src/basicSounds.ts @@ -8,10 +8,10 @@ const sounds: Record = {} // load as many resources on page load as possible instead on demand as user can disable internet connection after he thinks the page is loaded const loadingSounds = [] as string[] const convertedSounds = [] as string[] -export async function loadSound (path: string) { +export async function loadSound (path: string, contents = path) { if (loadingSounds.includes(path)) return true loadingSounds.push(path) - const res = await window.fetch(path) + const res = await window.fetch(contents) if (!res.ok) { const error = `Failed to load sound ${path}` if (isCypress()) throw new Error(error) diff --git a/src/browserfs.ts b/src/browserfs.ts index ebe8acfdd..166919869 100644 --- a/src/browserfs.ts +++ b/src/browserfs.ts @@ -7,7 +7,7 @@ import * as browserfs from 'browserfs' import { options, resetOptions } from './optionsStorage' import { fsState, loadSave } from './loadSave' -import { installTexturePack, installTexturePackFromHandle, updateTexturePackInstalledState } from './texturePack' +import { installTexturePack, installTexturePackFromHandle, updateTexturePackInstalledState } from './resourcePack' import { miscUiState } from './globalState' import { setLoadingScreenStatus } from './utils' const { GoogleDriveFileSystem } = require('google-drive-browserfs/src/backends/GoogleDrive') // disable type checking @@ -531,7 +531,9 @@ export const openFilePicker = (specificCase?: 'resourcepack') => { if (!doContinue) return } if (specificCase === 'resourcepack') { - void installTexturePack(file) + void installTexturePack(file).catch((err) => { + setLoadingScreenStatus(err.message, true) + }) } else { void openWorldZip(file) } diff --git a/src/controls.ts b/src/controls.ts index f4e607a97..bf8239ac0 100644 --- a/src/controls.ts +++ b/src/controls.ts @@ -7,19 +7,20 @@ import { ControMax } from 'contro-max/build/controMax' import { CommandEventArgument, SchemaCommandInput } from 'contro-max/build/types' import { stringStartsWith } from 'contro-max/build/stringUtils' import { UserOverrideCommand, UserOverridesConfig } from 'contro-max/build/types/store' -import { isGameActive, showModal, gameAdditionalState, activeModalStack, hideCurrentModal, miscUiState } from './globalState' +import { isGameActive, showModal, gameAdditionalState, activeModalStack, hideCurrentModal, miscUiState, loadedGameState } from './globalState' import { goFullscreen, pointerLock, reloadChunks } from './utils' import { options } from './optionsStorage' import { openPlayerInventory } from './inventoryWindows' import { chatInputValueGlobal } from './react/Chat' import { fsState } from './loadSave' import { customCommandsConfig } from './customCommands' -import { CustomCommand } from './react/KeybindingsCustom' +import type { CustomCommand } from './react/KeybindingsCustom' import { showOptionsModal } from './react/SelectOption' import widgets from './react/widgets' import { getItemFromBlock } from './botUtils' import { gamepadUiCursorState, moveGamepadCursorByPx } from './react/GamepadUiCursor' -import { updateBinds } from './react/KeybindingsScreenProvider' +import { completeTexturePackInstall, resourcePackState } from './resourcePack' +import { showNotification } from './react/NotificationProvider' export const customKeymaps = proxy(JSON.parse(localStorage.keymap || '{}')) as UserOverridesConfig @@ -353,7 +354,7 @@ contro.on('trigger', ({ command }) => { document.exitPointerLock?.() openPlayerInventory() break - case 'general.drop': + case 'general.drop': { // if (bot.heldItem/* && ctrl */) bot.tossStack(bot.heldItem) bot._client.write('block_dig', { 'status': 4, @@ -365,7 +366,14 @@ contro.on('trigger', ({ command }) => { 'face': 0, sequence: 0 }) + const slot = bot.inventory.hotbarStart + bot.quickBarSlot + const item = bot.inventory.slots[slot] + if (item) { + item.count-- + bot.inventory.updateSlot(slot, item.count > 0 ? item : null!) + } break + } case 'general.chat': showModal({ reactType: 'chat' }) break @@ -451,7 +459,7 @@ export const f3Keybinds = [ mobileTitle: 'Toggle chunk borders', }, { - key: 'KeyT', + key: 'KeyY', async action () { // waypoints const widgetNames = widgets.map(widget => widget.name) @@ -460,6 +468,17 @@ export const f3Keybinds = [ showModal({ reactType: `widget-${widget}` }) }, mobileTitle: 'Open Widget' + }, + { + key: 'KeyT', + async action () { + // TODO! + if (resourcePackState.resourcePackInstalled || loadedGameState.usingServerResourcePack) { + showNotification('Reloading textures...') + await completeTexturePackInstall('default', 'default') + } + }, + mobileTitle: 'Open Widget' } ] @@ -684,3 +703,30 @@ window.addEventListener('keydown', (e) => { } }) // #endregion + +export function updateBinds (commands: any) { + contro.inputSchema.commands.custom = Object.fromEntries(Object.entries(commands?.custom ?? {}).map(([key, value]) => { + return [key, { + keys: [], + gamepad: [], + type: '', + inputs: [] + }] + })) + + for (const [group, actions] of Object.entries(commands)) { + contro.userConfig![group] = Object.fromEntries(Object.entries(actions).map(([key, value]) => { + const newValue = { + keys: value?.keys ?? undefined, + gamepad: value?.gamepad ?? undefined, + } + + if (group === 'custom') { + newValue['type'] = (value).type + newValue['inputs'] = (value).inputs + } + + return [key, newValue] + })) + } +} diff --git a/src/devReload.ts b/src/devReload.ts index 19e502638..f30624e82 100644 --- a/src/devReload.ts +++ b/src/devReload.ts @@ -2,44 +2,11 @@ import { isMobile } from 'prismarine-viewer/viewer/lib/simpleUtils' import { WorldRendererThree } from 'prismarine-viewer/viewer/lib/worldrendererThree' if (process.env.NODE_ENV === 'development') { - if (sessionStorage.lastReload) { - const [rebuild, reloadStart] = sessionStorage.lastReload.split(',') - const now = Date.now() - console.log(`rebuild + reload:`, `${+rebuild} + ${now - reloadStart} = ${((+rebuild + (now - reloadStart)) / 1000).toFixed(1)}s`) - sessionStorage.lastReload = '' - } - - const autoRefresh = () => { - window.noAutoReload ??= false - new EventSource('/esbuild').onmessage = async ({ data: _data }) => { - if (!_data) return - const data = JSON.parse(_data) - if (data.update) { - console.log('[esbuild] Page is outdated') - document.title = `[O] ${document.title}` - if (window.noAutoReload || localStorage.noAutoReload) return - if (localStorage.autoReloadVisible && document.visibilityState !== 'visible') return - sessionStorage.lastReload = `${data.update.time},${Date.now()}` - location.reload() - } - if (data.replace) { - console.log('[esbuild hmr] Reloading', data.replace.type, data.replace.path) - switch (data.replace.type) { - case 'mesher': { - if (!worldView || !viewer.world.version || !(viewer.world instanceof WorldRendererThree)) return - void viewer.world.doHmr() - } - } - } - } - } - autoRefresh() - // mobile devtools if (isMobile()) { // can be changed to require('eruda') //@ts-expect-error void import('https://cdn.skypack.dev/eruda').then(({ default: eruda }) => eruda.init()) - console.log('JS Loaded in', Date.now() - window.startLoad) } } +console.log('JS Loaded in', Date.now() - window.startLoad) diff --git a/src/downloadAndOpenFile.ts b/src/downloadAndOpenFile.ts index 7ac154fcb..57e2f699c 100644 --- a/src/downloadAndOpenFile.ts +++ b/src/downloadAndOpenFile.ts @@ -1,6 +1,6 @@ import prettyBytes from 'pretty-bytes' import { openWorldZip } from './browserfs' -import { getResourcePackName, installTexturePack, resourcePackState, updateTexturePackInstalledState } from './texturePack' +import { getResourcePackNames, installTexturePack, resourcePackState, updateTexturePackInstalledState } from './resourcePack' import { setLoadingScreenStatus } from './utils' export const getFixedFilesize = (bytes: number) => { @@ -18,7 +18,7 @@ const inner = async () => { if (texturepack) { await updateTexturePackInstalledState() if (resourcePackState.resourcePackInstalled) { - if (!confirm(`You are going to install a new resource pack, which will REPLACE the current one: ${await getResourcePackName()} Continue?`)) return + if (!confirm(`You are going to install a new resource pack, which will REPLACE the current one: ${await getResourcePackNames()[0]} Continue?`)) return } } const name = mapUrl.slice(mapUrl.lastIndexOf('/') + 1).slice(-25) diff --git a/src/dragndrop.ts b/src/dragndrop.ts index 034b7b9b0..1f4b0e2b1 100644 --- a/src/dragndrop.ts +++ b/src/dragndrop.ts @@ -65,6 +65,8 @@ async function handleDroppedFile (file: File) { let versionDetected = false for (const [i, _] of Array.from({ length: 32 }).entries()) { for (const [k, _] of Array.from({ length: 32 }).entries()) { + // todo, may use faster reading, but features is not commonly used + // eslint-disable-next-line no-await-in-loop const nbt = await region.read(i, k) chunks[`${i},${k}`] = nbt if (nbt && !versionDetected) { diff --git a/src/globalState.ts b/src/globalState.ts index b7dc1602e..a332258bd 100644 --- a/src/globalState.ts +++ b/src/globalState.ts @@ -130,8 +130,6 @@ export type AppConfig = { export const miscUiState = proxy({ currentDisplayQr: null as string | null, currentTouch: null as boolean | null, - serverIp: null as string | null, - username: '', hasErrors: false, singleplayer: false, flyingSquid: false, @@ -148,6 +146,12 @@ export const miscUiState = proxy({ displaySearchInput: false, }) +export const loadedGameState = proxy({ + username: '', + serverIp: '' as string | null, + usingServerResourcePack: false, +}) + export const isGameActive = (foregroundCheck: boolean) => { if (foregroundCheck && activeModalStack.length) return false return miscUiState.gameLoaded diff --git a/src/globals.d.ts b/src/globals.d.ts index 2b82e7a12..1e6f1baa7 100644 --- a/src/globals.d.ts +++ b/src/globals.d.ts @@ -1,6 +1,5 @@ /// -declare const THREE: typeof import('three') // todo make optional declare const bot: Omit & { world: Omit & { @@ -17,7 +16,7 @@ declare const worldView: import('prismarine-viewer/viewer/lib/worldDataEmitter') declare const localServer: import('flying-squid/dist/index').FullServer & { options } | undefined /** all currently loaded mc data */ declare const mcData: Record -declare const loadedData: import('minecraft-data').IndexedData +declare const loadedData: import('minecraft-data').IndexedData & { sounds: Record } declare const customEvents: import('typed-emitter').default<{ /** Singleplayer load requested */ singleplayer (): void @@ -25,6 +24,7 @@ declare const customEvents: import('typed-emitter').default<{ gameLoaded (): void mineflayerBotCreated (): void search (q: string): void + activateItem (item: Item, slot: number, offhand: boolean): void }> declare const beforeRenderFrame: Array<() => void> diff --git a/src/index.ts b/src/index.ts index fb938aa43..abef5aa90 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,7 +6,7 @@ import './devtools' import './entities' import './globalDomListeners' import initCollisionShapes from './getCollisionShapes' -import { itemsAtlases, onGameLoad } from './inventoryWindows' +import { onGameLoad } from './inventoryWindows' import { supportedVersions } from 'minecraft-protocol' import protocolMicrosoftAuth from 'minecraft-protocol/src/client/microsoftAuth' import microsoftAuthflow from './microsoftAuthflow' @@ -21,7 +21,7 @@ import PrismarineBlock from 'prismarine-block' import PrismarineItem from 'prismarine-item' import { options, watchValue } from './optionsStorage' -import './reactUi.jsx' +import './reactUi' import { contro, onBotCreate } from './controls' import './dragndrop' import { possiblyCleanHandle, resetStateAfterDisconnect } from './browserfs' @@ -51,6 +51,7 @@ import { hideModal, insertActiveModalStack, isGameActive, + loadedGameState, miscUiState, showModal } from './globalState' @@ -71,7 +72,7 @@ import { startLocalServer, unsupportedLocalServerFeatures } from './createLocalS import defaultServerOptions from './defaultLocalServerOptions' import dayCycle from './dayCycle' -import { genTexturePackTextures, watchTexturepackInViewer } from './texturePack' +import { onAppLoad, resourcepackOnWorldLoad } from './resourcePack' import { connectToPeer } from './localServerMultiplayer' import CustomChannelClient from './customClient' import { loadScript } from 'prismarine-viewer/viewer/lib/utils' @@ -100,8 +101,10 @@ import { versionToNumber } from 'prismarine-viewer/viewer/prepare/utils' import packetsPatcher from './packetsPatcher' import { initWebgpuRenderer } from 'prismarine-viewer/examples/webgpuRendererMain' import { addNewStat } from 'prismarine-viewer/examples/newStats' -import { getVersion } from 'prismarine-viewer/viewer/lib/version' // import { ViewerBase } from 'prismarine-viewer/viewer/lib/viewerWrapper' +import blockstatesModels from 'mc-assets/dist/blockStatesModels.json' +import { mainMenuState } from './react/MainMenuRenderApp' +import { ItemsRenderer } from 'mc-assets/dist/itemsRenderer' window.debug = debug window.THREE = THREE @@ -110,11 +113,14 @@ window.beforeRenderFrame = [] // ACTUAL CODE -void registerServiceWorker() +void registerServiceWorker().then(() => { + mainMenuState.serviceWorkerLoaded = true +}) watchFov() initCollisionShapes() initializePacketsReplay() packetsPatcher() +onAppLoad() // Create three.js context, add to page let renderer: THREE.WebGLRenderer @@ -153,46 +159,45 @@ if (isIphone) { // Create viewer const viewer: import('prismarine-viewer/viewer/lib/viewer').Viewer = new Viewer(renderer) window.viewer = viewer -new THREE.TextureLoader().load(itemsPng, (texture) => { - viewer.entities.itemsTexture = texture - // todo unify - viewer.entities.getItemUv = (id) => { - try { - const name = loadedData.items[id]?.name - const uv = itemsAtlases.latest.textures[name] - if (!uv) { - const variant = viewer.world.downloadedBlockStatesData[name]?.variants?.[''] - if (!variant) return - const faces = (Array.isArray(variant) ? variant[0] : variant).model?.elements?.[0]?.faces - const uvBlock = faces?.north?.texture ?? faces?.up?.texture ?? faces?.down?.texture ?? faces?.west?.texture ?? faces?.east?.texture ?? faces?.south?.texture - if (!uvBlock) return - return { - ...uvBlock, - size: Math.abs(uvBlock.su), - texture: viewer.world.material.map - } - } - return { - ...uv, - size: itemsAtlases.latest.size, - texture: viewer.entities.itemsTexture - } - } catch (err) { - reportError?.(err) - return { - u: 0, - v: 0, - size: 16 / viewer.world.material.map!.image.width, - texture: viewer.world.material.map - } +// todo unify +viewer.entities.getItemUv = (idOrName: number | string) => { + try { + const name = typeof idOrName === 'number' ? loadedData.items[idOrName]?.name : idOrName + // TODO + if (!viewer.world.itemsAtlasParser) throw new Error('itemsAtlasParser not loaded yet') + const itemsRenderer = new ItemsRenderer('latest', viewer.world.blockstatesModels, viewer.world.itemsAtlasParser, viewer.world.blocksAtlasParser) + const textureInfo = itemsRenderer.getItemTexture(name) + if (!textureInfo) throw new Error(`Texture not found for item ${name}`) + const tex = 'type' in textureInfo ? textureInfo : textureInfo.left + const [x, y, w, h] = tex.slice + const textureThree = tex.type === 'blocks' ? viewer.world.material.map! : viewer.entities.itemsTexture! + const img = textureThree.image + const [u, v, su, sv] = [x / img.width, y / img.height, (w / img.width), (h / img.height)] + const uvInfo = { + u, + v, + su, + sv + } + return { + ...uvInfo, + texture: textureThree + } + } catch (err) { + reportError?.(err) + return { + u: 0, + v: 0, + size: 16 / viewer.world.material.map!.image.width, + texture: viewer.world.material.map } } -}) +} + viewer.entities.entitiesOptions = { fontFamily: 'mojangles' } watchOptionsAfterViewerInit() -watchTexturepackInViewer(viewer) let mouseMovePostHandle = (e) => { } let lastMouseMove: number @@ -286,6 +291,9 @@ async function connect (connectOptions: ConnectOptions) { miscUiState.flyingSquid = singleplayer || p2pMultiplayer const { renderDistance: renderDistanceSingleplayer, multiplayerRenderDistance } = options const server = cleanConnectIp(connectOptions.server, '25565') + if (connectOptions.proxy?.startsWith(':')) { + connectOptions.proxy = `${location.protocol}//${location.hostname}${connectOptions.proxy}` + } const proxy = cleanConnectIp(connectOptions.proxy, undefined) let { username } = connectOptions @@ -334,6 +342,9 @@ async function connect (connectOptions: ConnectOptions) { } const handleError = (err) => { console.error(err) + if (err === 'ResizeObserver loop completed with undelivered notifications.') { + return + } errorAbortController.abort() if (isCypress()) throw err miscUiState.hasErrors = true @@ -394,7 +405,7 @@ async function connect (connectOptions: ConnectOptions) { await loadScript(`./mc-data/${toMajorVersion(version)}.js`) miscUiState.loadedDataVersion = version try { - await genTexturePackTextures(version) + await resourcepackOnWorldLoad(version) } catch (err) { console.error(err) const doContinue = confirm('Failed to apply texture pack. See errors in the console. Continue?') @@ -402,7 +413,8 @@ async function connect (connectOptions: ConnectOptions) { throw err } } - viewer.setVersion(version) + viewer.world.blockstatesModels = blockstatesModels + viewer.setVersion(version, options.useVersionsTextures === 'latest' ? version : options.useVersionsTextures) } // serverOptions.version = '1.18.1' @@ -410,7 +422,7 @@ async function connect (connectOptions: ConnectOptions) { if (downloadVersion) { await downloadMcData(downloadVersion) } - await initWebgpuRenderer(getVersion(downloadVersion), () => { + await initWebgpuRenderer(() => { renderWrapper.postRender() }) addNewStat('loaded-chunks') @@ -857,13 +869,8 @@ async function connect (connectOptions: ConnectOptions) { // todo onGameLoad(async () => { - if (!viewer.world.downloadedBlockStatesData && !viewer.world.customBlockStatesData) { - await new Promise(resolve => { - viewer.world.renderUpdateEmitter.once('blockStatesDownloaded', () => resolve()) - }) - } - miscUiState.serverIp = server.host as string | null - miscUiState.username = username + loadedGameState.serverIp = server.host ?? null + loadedGameState.username = username }) if (appStatusState.isError) return diff --git a/src/inventoryWindows.ts b/src/inventoryWindows.ts index 4cf252053..5f4596b52 100644 --- a/src/inventoryWindows.ts +++ b/src/inventoryWindows.ts @@ -1,32 +1,29 @@ import { proxy, subscribe } from 'valtio' import { showInventory } from 'minecraft-inventory-gui/web/ext.mjs' -import InventoryGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/inventory.png' -import ChestLikeGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/shulker_box.png' -import LargeChestLikeGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/generic_54.png' -import FurnaceGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/furnace.png' -import CraftingTableGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/crafting_table.png' -import DispenserGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/dispenser.png' -import HopperGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/hopper.png' -import HorseGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/horse.png' -import VillagerGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/villager2.png' -import EnchantingGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/enchanting_table.png' -import AnvilGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/anvil.png' -import BeaconGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/container/beacon.png' -import WidgetsGui from 'minecraft-assets/minecraft-assets/data/1.17.1/gui/widgets.png' - -import Dirt from 'minecraft-assets/minecraft-assets/data/1.17.1/blocks/dirt.png' +import InventoryGui from 'mc-assets/dist/other-textures/latest/gui/container/inventory.png' +import ChestLikeGui from 'mc-assets/dist/other-textures/latest/gui/container/shulker_box.png' +import LargeChestLikeGui from 'mc-assets/dist/other-textures/latest/gui/container/generic_54.png' +import FurnaceGui from 'mc-assets/dist/other-textures/latest/gui/container/furnace.png' +import CraftingTableGui from 'mc-assets/dist/other-textures/latest/gui/container/crafting_table.png' +import DispenserGui from 'mc-assets/dist/other-textures/latest/gui/container/dispenser.png' +import HopperGui from 'mc-assets/dist/other-textures/latest/gui/container/hopper.png' +import HorseGui from 'mc-assets/dist/other-textures/latest/gui/container/horse.png' +import VillagerGui from 'mc-assets/dist/other-textures/latest/gui/container/villager2.png' +import EnchantingGui from 'mc-assets/dist/other-textures/latest/gui/container/enchanting_table.png' +import AnvilGui from 'mc-assets/dist/other-textures/latest/gui/container/anvil.png' +import BeaconGui from 'mc-assets/dist/other-textures/latest/gui/container/beacon.png' +import WidgetsGui from 'mc-assets/dist/other-textures/latest/gui/widgets.png' + +// import Dirt from 'mc-assets/dist/other-textures/latest/blocks/dirt.png' import { RecipeItem } from 'minecraft-data' import { versionToNumber } from 'prismarine-viewer/viewer/prepare/utils' -import itemsPng from 'prismarine-viewer/public/textures/items.png' -import itemsLegacyPng from 'prismarine-viewer/public/textures/items-legacy.png' import _itemsAtlases from 'prismarine-viewer/public/textures/items.json' -import type { ItemsAtlasesOutputJson } from 'prismarine-viewer/viewer/prepare/genItemsAtlas' -import PrismarineBlockLoader from 'prismarine-block' import { flat } from '@xmcl/text-component' import mojangson from 'mojangson' import nbt from 'prismarine-nbt' import { splitEvery, equals } from 'rambda' import PItem, { Item } from 'prismarine-item' +import { ItemsRenderer } from 'mc-assets/dist/itemsRenderer' import Generic95 from '../assets/generic_95.png' import { activeModalStack, hideCurrentModal, hideModal, miscUiState, showModal } from './globalState' import invspriteJson from './invsprite.json' @@ -36,7 +33,6 @@ import { MessageFormatPart } from './botUtils' import { currentScaling } from './scaleInterface' import { descriptionGenerators, getItemDescription } from './itemsDescriptions' -export const itemsAtlases: ItemsAtlasesOutputJson = _itemsAtlases const loadedImagesCache = new Map() const cleanLoadedImagesCache = () => { loadedImagesCache.delete('blocks') @@ -63,28 +59,28 @@ export type BlockStates = Record /** bot version */ let version: string -let PrismarineBlock: typeof PrismarineBlockLoader.Block let PrismarineItem: typeof Item export const allImagesLoadedState = proxy({ value: false }) +let itemsRenderer: ItemsRenderer export const onGameLoad = (onLoad) => { allImagesLoadedState.value = false - let loaded = 0 - const onImageLoaded = () => { - loaded++ - if (loaded === 3) { - onLoad?.() - allImagesLoadedState.value = true - } - } version = bot.version - getImage({ path: 'invsprite' }, onImageLoaded) - getImage({ path: 'items' }, onImageLoaded) - getImage({ path: 'items-legacy' }, onImageLoaded) - PrismarineBlock = PrismarineBlockLoader(version) + + const checkIfLoaded = () => { + if (!viewer.world.itemsAtlasParser) return + itemsRenderer = new ItemsRenderer('latest', viewer.world.blockstatesModels, viewer.world.itemsAtlasParser, viewer.world.blocksAtlasParser) + globalThis.itemsRenderer = itemsRenderer + if (allImagesLoadedState.value) return + onLoad?.() + allImagesLoadedState.value = true + } + viewer.world.renderUpdateEmitter.on('textureDownloaded', checkIfLoaded) + checkIfLoaded() + PrismarineItem = PItem(version) bot.on('windowOpen', (win) => { @@ -144,65 +140,12 @@ export const onGameLoad = (onLoad) => { }) } -export const findTextureInBlockStates = (name) => { - assertDefined(viewer) - const blockStates: BlockStates = viewer.world.customBlockStatesData || viewer.world.downloadedBlockStatesData - const vars = blockStates[name]?.variants - if (!vars) return - let firstVar = Object.values(vars)[0] - if (Array.isArray(firstVar)) firstVar = firstVar[0] - if (!firstVar) return - const elements = firstVar.model?.elements - if (elements?.length !== 1) return - return elements[0].faces -} - -const svSuToCoordinates = (path: string, u, v, su, sv = su) => { - const img = getImage({ path })! - if (!img.width) throw new Error(`Image ${path} is not loaded`) - return [u * img.width, v * img.height, su * img.width, sv * img.height] -} - -const getBlockData = (name) => { - const data = findTextureInBlockStates(name) - if (!data) return - - const getSpriteBlockSide = (side) => { - const d = data[side]?.texture - if (!d) return - const spriteSide = svSuToCoordinates('blocks', d.u, d.v, d.su, d.sv) - const blockSideData = { - slice: spriteSide, - path: 'blocks' - } - return blockSideData - } - - return { - // todo look at grass bug - top: getSpriteBlockSide('up') || getSpriteBlockSide('top'), - left: getSpriteBlockSide('east') || getSpriteBlockSide('side'), - right: getSpriteBlockSide('north') || getSpriteBlockSide('side'), - } -} - -const getInvspriteSlice = (name) => { - const invspriteImg = loadedImagesCache.get('invsprite') - if (!invspriteImg?.width) return - - const { x, y } = invspriteJson[name] ?? /* unknown item */ { x: 0, y: 0 } - const sprite = [x, y, 32, 32] - return sprite -} - const getImageSrc = (path): string | HTMLImageElement => { assertDefined(viewer) switch (path) { case 'gui/container/inventory': return InventoryGui - case 'blocks': return viewer.world.customTexturesDataUrl || viewer.world.downloadedTextureImage - case 'invsprite': return `invsprite.png` - case 'items': return itemsPng - case 'items-legacy': return itemsLegacyPng + case 'blocks': return viewer.world.blocksAtlasParser!.latestImage + case 'items': return viewer.world.itemsAtlasParser!.latestImage case 'gui/container/dispenser': return DispenserGui case 'gui/container/furnace': return FurnaceGui case 'gui/container/crafting_table': return CraftingTableGui @@ -217,7 +160,8 @@ const getImageSrc = (path): string | HTMLImageElement => { case 'gui/container/beacon': return BeaconGui case 'gui/widgets': return WidgetsGui } - return Dirt + // empty texture + return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=' } const getImage = ({ path = undefined as string | undefined, texture = undefined as string | undefined, blockData = undefined as any }, onLoad = () => { }) => { @@ -240,72 +184,28 @@ const getImage = ({ path = undefined as string | undefined, texture = undefined return loadedImagesCache.get(loadPath) } -const getItemVerToRender = (version: string, item: string, itemsMapSortedEntries: any[]) => { - const verNumber = versionToNumber(version) - for (const [itemsVer, items] of itemsMapSortedEntries) { - // 1.18 < 1.18.1 - // 1.13 < 1.13.2 - if (items.includes(item) && verNumber <= versionToNumber(itemsVer)) { - return itemsVer as string - } - } -} - -const isFullBlock = (block: string) => { - const blockData = loadedData.blocksByName[block] - if (!blockData) return false - const pBlock = new PrismarineBlock(blockData.id, 0, 0) - if (pBlock.shapes?.length !== 1) return false - const shape = pBlock.shapes[0]! - return shape[0] === 0 && shape[1] === 0 && shape[2] === 0 && shape[3] === 1 && shape[4] === 1 && shape[5] === 1 -} - type RenderSlot = Pick -const renderSlot = (slot: RenderSlot, skipBlock = false): { texture: string, blockData?, scale?: number, slice?: number[] } | undefined => { +const renderSlot = (slot: RenderSlot, skipBlock = false): { + texture: string, + blockData?: Record, + scale?: number, + slice?: number[] +} | undefined => { const itemName = slot.name const isItem = loadedData.itemsByName[itemName] - const fullBlock = isFullBlock(itemName) - - if (isItem) { - const legacyItemVersion = getItemVerToRender(version, itemName, itemsAtlases.legacyMap) - const vuToSlice = ({ u, v }, size) => [...svSuToCoordinates('items', u, v, size).slice(0, 2), 16, 16] // item size is fixed - if (legacyItemVersion) { - const textureData = itemsAtlases.legacy.textures[`${legacyItemVersion}-${itemName}`]! - return { - texture: 'items-legacy', - slice: vuToSlice(textureData, itemsAtlases.legacy.size) - } - } - const textureData = itemsAtlases.latest.textures[itemName] - if (textureData) { - return { - texture: 'items', - slice: vuToSlice(textureData, itemsAtlases.latest.size) - } - } - } - if (fullBlock && !skipBlock) { - const blockData = getBlockData(itemName) - if (blockData) { - return { - texture: 'blocks', - blockData - } - } - } - const invspriteSlice = getInvspriteSlice(itemName) - if (invspriteSlice) { + + const itemTexture = itemsRenderer.getItemTexture(itemName) ?? itemsRenderer.getItemTexture('item/missing_texture')! + if ('type' in itemTexture) { + // is item return { - texture: 'invsprite', - scale: 0.5, - slice: invspriteSlice + texture: 'items', + slice: itemTexture.slice } - } - console.warn(`No render data for ${itemName}`) - if (isItem) { + } else { + // is block return { texture: 'blocks', - slice: [0, 0, 16, 16] + blockData: itemTexture } } } diff --git a/src/loadSave.ts b/src/loadSave.ts index 7ca454ff6..a0d2fdcbc 100644 --- a/src/loadSave.ts +++ b/src/loadSave.ts @@ -159,6 +159,7 @@ export const loadSave = async (root = '/world') => { // improve compatibility with community saves const rootRemapFiles = ['Warp files'] for (const rootRemapFile of rootRemapFiles) { + // eslint-disable-next-line no-await-in-loop if (await existsViaStats(path.join(root, '..', rootRemapFile))) { forceRedirectPaths[path.join(root, rootRemapFile)] = path.join(root, '..', rootRemapFile) } diff --git a/src/localServerMultiplayer.ts b/src/localServerMultiplayer.ts index ca85c126a..c8e4bc5e5 100644 --- a/src/localServerMultiplayer.ts +++ b/src/localServerMultiplayer.ts @@ -52,7 +52,7 @@ export const openToWanAndCopyJoinLink = async (writeText: (text) => void, doCopy peerInstance = peer peer.on('connection', (connection) => { console.log('connection') - const serverDuplex = new CustomDuplex({}, (data) => connection.send(data)) + const serverDuplex = new CustomDuplex({}, async (data) => connection.send(data)) const client = new Client(true, localServer.options.version, undefined) client.setSocket(serverDuplex) localServer._server.emit('connection', client) diff --git a/src/optionsGuiScheme.tsx b/src/optionsGuiScheme.tsx index 76799a60e..f41d0e0c5 100644 --- a/src/optionsGuiScheme.tsx +++ b/src/optionsGuiScheme.tsx @@ -1,15 +1,16 @@ import { useState } from 'react' import { useSnapshot } from 'valtio' import { openURL } from 'prismarine-viewer/viewer/lib/simpleUtils' -import { miscUiState, openOptionsMenu, showModal } from './globalState' +import { loadedGameState, miscUiState, openOptionsMenu, showModal } from './globalState' import { AppOptions, options } from './optionsStorage' import Button from './react/Button' import { OptionMeta, OptionSlider } from './react/OptionsItems' import Slider from './react/Slider' import { getScreenRefreshRate, setLoadingScreenStatus } from './utils' import { openFilePicker, resetLocalStorageWithoutWorld } from './browserfs' -import { getResourcePackName, resourcePackState, uninstallTexturePack } from './texturePack' +import { completeTexturePackInstall, getResourcePackNames, resourcePackState, uninstallTexturePack } from './resourcePack' import { downloadPacketsReplay, packetsReplaceSessionState } from './packetsReplay' +import { showOptionsModal } from './react/SelectOption' export const guiOptionsScheme: { @@ -119,12 +120,30 @@ export const guiOptionsScheme: { { custom () { const { resourcePackInstalled } = useSnapshot(resourcePackState) - return

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 $ui0vCBC0Q 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%0AxoLqoUyr!Qzd)I!x3Ye2eYsP^+X8oC=`+*?@e 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%0D##Be$i8?WX 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�<#mfnW;YuwYo>K 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

T*k<|@KpgpqpOz4NL4C6L5Q)*M= zO~knZ6Bo(Ns`sIfQz#i=Pw08RKTHiRlLIK~0Qr3-Dg##1I9H=1{mQhac#Q-T8Jd#C zRz)XYy$>;@7AJ{H5T(qOGQantRy1n56GK#$ytd@tjIMP?tpP8>Kx--!P$N{S>5*zw z*{>v08O4wOJu40EBBNO~2_~uH8w12Z;{kfPXNHqh#UxGwSOKk3fjakuay8-A@+}G- zLd}X0;t8MAn_@U&>G&Rvs!2uv0k4144+#d2H7!M!Q`(g9^;W3Yh+1yymrNBkyQ5N> zG`}Y5)$f%Fcx%B3-oo*wqrYaym-z=?b9@wnnw3P)vcsurq!pAc{eGJ3c`Bq=qNouD zE>Dgq)L8Z8)I>FC@R$)p!5L_1AjV|-YU1jA41NaZPQm#IrogB{J!yVRN?aQw*yu3P zVM7j>Rr^*Gh_&Eo;$ouB2PxBL981tG#9C18p1}Os+G%1Dj)X2qmGrl2z~@jkXq9c8 zro=-S^@4b_n!qyN(yp2qZwWR~W);J{pgY^6l7JY4t!&b$u}WQmtyj0bd9>7O309~h z#Ap!}A{B_Bl*p(((5g$?U?eAwl}EV-5T9HxOtJxvBhg^vGn^HqHi#3fC^4+A2VNU# zjaR@z#GxvqK7u}s!%w9lo(SH0kh_F#tDEi z0C>ywcL~6co;9njvLx0cn=33?fUT{JNv*iyU;ZB*RUY<~XD~c^nCkd(nlW(0C$5I7 zVB^Fj-Z&yPM!=agv5avPQTW)A&O=6dDFWM1-OiQ*j_y8)hQQ&n!dOeA(I6P1+04@e zwl1man$FxjC6S4#X;hU9o^%N|8jkHhMl)m_x??|hB~*b}MCvfa8H4c_v6k8Ov-mtR zvt>QDxdY{n@!%U{jFSR`L|G9R5@fV-7m&C{bnN~aI@Xx`-1x8l97Ye~L=9Z6{=`wR zeDYv{xx4mZiUVZEV)G1j24@|9Bw3l*e(t4zT*Gr@#(-1kF*2sIkJbPrCzG; z1?6GqpGRR!uDbAF^>}-U=l*?S0{ndYmvm+@%jrAML}Fy$!Tq2ffMpo zYu@)<&GL#3(Gq0?kAB8K3&3aJ^HMctKe=}BVU~*?{Wbyk)O&tPU3Q35b~UhO6SvPF z!mMc`pIDdEG!2kQBTU`vK4cr4)NJRn7ko_f*x>L%2U2kQx4lsTRAx~J+s@xXpk}z# zryY;*;a5FE0KW6(A5^b9=pS#=kS-s1ZSoC&&PzY2mg0Vy0Q>LRO)+R7QSk`xe)b<~ z2ykroek6Eq`TUKjdUovCMnqG^64-wzsd<0b3!l$Yv*MJOJ|U^DzwrY)TV>4OvX@?+ zl1TkL@TifCz)f%XpiY)kyzNa_;f>*WfBQWG@SZdOL0e^$x!aFW=F0Aa`|w8CwQU;> zGLBb6B9Y^CFepp(fyi}7zCb}>y0MO|RF2(ol>X3>Nt>Xan{U3I%9LDu(RuV4@b4GC zUk|kB`2N3t;R)B{);~!V{4?LZO}mZmvYRK!sEud&dVOvWorxOepj$7p@fDkOwm-|A ze|)rf*sH4NW(T~e+8z;m9Z8wW%B z`;MWieD5_ocTvUE z{v=Mg_2^-8O_l$gz~Li{hzM7F%SEULGGmDm<_^wrtUbm5I&gOy2cP^!^`_*K$E5Y- z)9-zjy6g~JPTzth;{$K|II4lCefJabrsnqR@5Y84s~ORhOwB4{mC1ISEVjAjKR*Xi zc>FUir?P$8>zZV2Vg2Uh2C(n8A5mn1-M9aUc6A32JNLH*VAtC&)5EjJS(slW4-N1E z0-QO$lVB?jauhX@;oS!q)(v*O`4R=V=Fn%*gOT&kJ&#}_dzbdnX$;|TVh)_y+J!NW zz3~tsDDhyI!^6PLZ=J5K&cz(*91b@OlV+_U%g)Z()4bb`Y6Q??N`aP06rF@PS5c&*s9V?ACnp7OHK>TGs3-QmCB z{6Qus)5bk-ID`g=52yCHy?c6K23R4r>WwgWv`Z<+8T3d0tcJ|xEISnM*|R`njn-PP zTN7NL^Dh)AcW~s!yT%ECG474OxN}hee&n1@8iPS&fg$4Rigqa2FgZ!9tho9;?_e;> zGKJdHCLku_LIojEhg3ZuC=?hzF<(hiba@C>|A2yu+D1aG$u)UX<3Sph5JOV(Mj;5f zII>z03@#{@1PT+73WINZR7_Abj;O)OewqqTosAg)V~laKQ-ERg-)g3O z^qY~o_`STWM-P9qQWYF2_L`)?ZG@4H=yHIdz;Y76u$mu;52!8h^+|s~9F%BTff%Gt zy^0}o*a+SzG&5+sB>v|sG!sIRgpN!m$rZp_a7rLj#fU3vSSpc0fs_h^#IUM@PyLL+ zW6{Kfa!Q@UAoEmNx(_Bq+G=POO6H+$T2y6VK*hj#G!Ik~a8{|c#yE$G%9J!{R*`13 z@_>s;3(}@TAGcjVi}YDDZ-kKleHw~MTj7dpb<5W+8HWa zusF3uKVPk~=5-U);p4~&XM~M|S*C}ROq5MRK0)-`iSZCIW{ACal~%(9TIX1864!hm zkv&*BN~RNpxJvyuZUJKsAa)mZY*6b)Vw_$x=m&V?!9|SR`{^5K6T$?AZYBEUY=P8x zrqeT=08)VsI4Q{EG1lp-s8-NfsyIU?M`&onKf{Cl4yVsg%15s83{&i)>bd@nE4JMWSPN)b@)*0)D6Kq_XVVJKnGAj$E zRg9V>04a*s3TG7R5-*0z25M>)rQawaDn;^vA}fU!4)IWnN3Ew8C5BXWwq9s!gJ!qE z(AdWgVWXoaiK?w6YJARQCG_gl*W8`xpRiV^9{uD9@BoAZwiH9Q6%`>E zipCoCcPbjA7*-S}E6;R{n7m0Xiq%LK1yRUiWL;4uK|skUj66Wao zYKG;#896>ejS|FQWW*j7$U;d5G<=CVhYL00ge*pud1$)q#(*Q523C~J2SiIGYoe0j zZG)a&Rp$@x5N=IHy^dRn9*AvBjO3w(s*-5~;)ux+9f(U*crv`#q_YtPr_DOX$H2WH&Lcae^!7-YF7{msKlhJRX0E*N2eC>))R)u z!8fQ(ja_Ng6QVH?5|a%d!7W$n12HREGJ(3Drx}ls#f@0mN;D0WRLzfCV|3YKJ7PqV zpzpHSuSC*D!J}FOF;(nM4KcOFsm76TaANS_()oKb3bPr}O;mo8hHIr%j|GB7WppMA zMyEh6LOBxlTV5CqB8~Jl450al&A1%Kv_KncLY*dPHDckd)m|B6jQhY}-kwxdf8f-0 zS`7L)W0L5S2rX;b(tvK|5y_~G&<`Q8v63qj;&OU*;KPTOVztkG_0kaHE>fYC><0P{r(Wi46YT3#?zW9+`sFt$z<2z9>NTG~I7dHN zp76Kn=WAZ}7M&^`8@FzyU06Q;!*A5%jUmq&_58o*$NyN@4RX#q?Q{s1y?5@0D9q0< z(3|i)=iSLA;OZB?UN=^b_de?nbg3En{1=Oig$=X&=m82-@n>hfP7RSu z&bXL{&$;8KyHSaVG1R8wy8WN0*I4Au^^eFmAQfr?IL(N&gIE#x%`S`0Ic|v?sEDni! zfRF#pw~Q+PAJ#$G#({$YD}hs<{6?LSJGtefe~>EmZ~m}aFI@bS-!1@m|Mq)zYM9od zUc>X!5B|IWy!x`2>2%RVV$yXuxc6vc`+7w)!E2=LE!Vv4Et&;G_X~#@M8n~IN01;G z5j@I!uJ}`}sgYxzK{-Grqft!o`ZM3Cs=}?e@1@BhPTjndNJye@R9tl7>EI(4%TPSm z9{fBNk0}X(+<7=9g3jLhfE_qD zyyIqkJ3t2tpDOvjQM2 z{{HgEYeQ@9x@9+qg0f{|h8PVu+_sOslZ|_QpWBZfVo($u>h#Gquytk%6MI~G)=sJj zH{G?LAdWM(ZAFw6mjm0T+5|Ct^5(nHC`>onWWK_NNmK)eyT>UcqgMqEw%1VbPv3^K zhuMAG3pLi;Ipd=LBLM&Tug}%CbkLYGAh&+*PJ*qN-Y|_up*uf7gXO^PIS|kGQ#RvF z62N7pZD}JLN0tBEZ~A4m_8?R1O2jq@1R85JGp>K}#{^*VFV50(U59l~IvXp(?gM*i zmrWL~y$h-qkGkw}3|+~d)*;G9pP7r!Bnyt)Z@iPqVVhHCchJj+bT$tN1aAAt=O8$m z4_ilcf$Y33H0vhaTMv=Z;gi3e7${GE*>&pUM)uru8y1f-$;R^3)6Rw1L}P}K(d+k6 z4NOh8P)hdhy%|+y{f3=r6pkO;gNRT}HW2IBwsV%scv`cQRHi0mA&K@yVbaWUY`%-n z`wTiM0nj~O;$vW{ojO|%9#{aW*mGA!s1KY_x^On<(EjwgK_@W`tb-U*qTAQ2g^dII zx_H~67(y%t;{?DM4-S8`XCW~H&fcQV> zhB!yB9<@pxBb7krY_bFtn`}!IGEL6Z8WcrwmCz7J797C@q9ireK+4!7F;&LCsB&mU zFkUboG=PkU*cfA+G$dwD7-h{ZK~q&&G?LUmQq?K_=uyo{75!A%*JaKfn&|)f06qN@ zNBw%q9?;0io&5^f$riXKv8>UNXSEr9Ns-h$EIy)zM|^;g5*Q|P7-LrG|6~p_q0wqm z42IZf&>)zgph7f?wT38>d}4yelp~n9;+K%cNYfZ9Nmi~G$ z=27plS%z0nCK)l*m=N#=$Sqa$)cuN9t2wd?Oj-m%A}Waqa59l$s7EP?>ApLmvR}DK zKVPkQ1_Dkqh>=FL%#_&)l<4VU&de~!L`P+mK{HSrSgbsq)@mR)*D9He9`BN>_ewyi zn&{S1!3aUYX_KkJELI~8ZxHnuJW+B?O!uTFP_FS?-!PbArZ)u=sU%hIvf!90XE7n9 zgpMl4WCUG(KE|*EW5Jq5nrl?jgUlkbjSzFJT_U$fh^mM!@qU^jPE+~WH9NWik$}+# zTCHjVxNMQk9RbruQPeAOO>cgn2~n`MAqJs#HJVifTak?_Y(@;=5uh0yncllu-!MbA zW+z%QOKoN_xC0ebFrBp*)GauTa!o^4{2251E28LL2lj6T9 zfHl;{5JV{uyh3S&ppm93uJ)|&6*yz)1k1qK#HtbS#^KGq$4`|vC_S{vKtp222o&uf{S@_k1(2?uUrIgkmwK<^3X!+lyJ3nq&?x*GKdb6*@IY}L4(D(m>g!l2q|#@ zngwc;^k5pwNE5(eg9AHSHC;`SRRk09&f{&GGnp7BLW3Z%sCFgxj;dtVU4)*ok~*?0)~A&fD`Hy`TCQ-(Ma=?h7CET#vsqMR6`2!la6de|q+xfBVG1j;no zZKW5C5(jo!=x zz5Z^B%(MOCGr%a5lWivQ236Kau$+GJ=`7?GQ=29Ux#wX|y^P7)vj5J#7&RDc@C3G; zz606~+8d|I#IpDLTWNa3;kyn}42Dc@YNlt^XoGYz(ZcZSPx>*P=~_6~h6j%oC$9KX;sC6aHRLw9kL~Ru)^H=f3A>@AEml>=LkyAKmg3 zI@z7(1>bfBjmoCLQVe$<-cL~F?t^=bc{yMzUWLeTB7lk#&dk%BH6IX%h&&s zW~Go1n;?;MFFc)S1!Ex^$NN6`0R%W>`>BW+b|2bLcW@h@`qN+5#o2va_SjdisQNp- zgKOURT=jk%k9+o?3&4%ney zSV8SqH`cB7O&WQVZKrI6DBStEJ#?y^XMFeXYFE$VpI`ZS0l576pVYoFE9sCc$4 z&60(r@nc0fyl@Xr3`h4K!4P@IOKwz4!Ju29I>GTyhG@-M-}aZP47uqGw-Msq4El>` zwCp_X5;Sb*F)#RpZtL!2_pNiR_ea_HnyWNgAupks<;-GOpE*AB(zj|q_k7!*yjTEU z^YEY5sUiumc@ug54}CYPH3#qBjq{Nsdk$kp4kjva;NSs*z%!nEC2F8OHGzxp$&Y@V z+|O{qd1nJty#K>jQ5#s$9x+71Tt$pE$Ndrx@X^!MjH7oRCLnz8w?CV1R`Yl7e-}#R zv>j(KHEa@5Y&6W>af~AK>^ra@PaF^YYRSycYgE(9GjZI*Z4f+M^4w{6UQjC ziV1De?+;n&&{9~uXE80ObKu2eW*kvHotqZuMA-0in-ySw@6oiunTD3jDDS5jWlW$_ z&yit=elg(fmpoRpFl44uOn^t6atb}y=7#-y8LBcpyPg`jZts3dYpARN6$YB(y@lZb zhjQu8Q)otIeqn*ySq^p!9Ll!IX&~aotkIZR#X^6`RIlXRT^nfo3WqXO$NN8b3tl4+ zKjmD&aO=dej&wutg>gqOke&#x|T2dm{Bt4vn!N=r!Fge@AYJ=|l02>_t`N8Y3(cnUp znu2bxOD#jLe&3ZUCa__BjmQ+YUw0>B4QE|)+KR>jz+*n}oqA;B0(aka7vNajeKfTh z+}UTTC_$TG?1}9hA)`Fl#rqr%4e0rbJuc~vZ3-L6g5$tkgsem(WHF<>=@7QNnZd8_ zk-hBUnLqP(9q4K3`t9T~XV>ZH(g-P0tr)u9A*f+;vW*yMPqc`!V$a@N2@$reKMjCm z$999MKmv%cd+)6v8K<0f7D0t_sV1W2(=9?4Fta)80_vdfk;6y8D}2Y3CIQ3I(bTBx zfHA`EyC8a=n zcVdY^N0o6@h?;1px`qj$8rD>DW9l1RqcL!@`~KI$1Cv`f(jN3Ets}+&!yzUprj_Wa z!%i3Dg%F`0l!QTv*9;-`R~nOnq_xi(gIiwFtbqnJS`F$tvBt0hM#d&Sn4gHWjX`?@vW8=jMM73#8cMAd z{jA1{qx1#V86>7ksEwm)(n&^2JY{GEtA>fnp>kiZ1EU$n3rJ#VG}lDKMpI9&0Peq# zRxV9oS_BD##p0z}NsdR2NvCGHv2>KkvQ{v$A{UFn($Yz$mnO-Al26-_D!7b%u}AaC zNJ@Gcr8EVLlS_0bjv$Q+E1fk#{WO_&X>c5sRf>KH6FA9}4OtXyRO+}&p>EklG8SpX z34(8815|$XIyiAyNt-l{P3pLrBJQLgH&BL+E3d1lsLYUHJXQuYI8MW~NR{g*q7xWZ zEEy3;%@(`}Lyo5&U8x9G=$LgVZA?&{L<|MNE-STLf~IxEh|o~SWZ&Uk(il(!5h1TF z)59;WY^OiVBm;|rF_c~!(Z z3VZMMF7r(?ZR0{tlt@F5<79yPAsTapr1NE>OH2>VQ1uvNu^}Z0OvrGt0b#iy2n4~p zirg%M(UB!xp4KU!#_9==LW!6VX;eA6k4#9?L0MRgh*uVB1w6reES}B%h%Z87)J4PY zVGbj;{#FpS4;<5#WuaTM(DY1KIkk6`osH~R+{hi=lkUIYPGL9F!eAw^(p0Yw#9*W( zlI$3D#9&EIK`92%XjA21JYs4zfT}?xY5YVCg2Q@6L}>+KsF6IFq!$!GjUkMPgh9>7 z{UqtGL2~`Nl|y$OBzKl`9(w@`+NHDD#bz1nwr!*tg)EN{EUnGkm})A`9b52O z%{k|u1yMLP0;RI=eOKXPWc{v<)CN>ML6t4%?4(^-x^o@!($HV*<9$t}$9%iN$y8w& z5_#pvlG^<#+ji-+cU*Y+B}_}??a%o`ozI8-*gvHn`5SM&jrHA}ojZ4e2DYqU&w5eb zcf}uS9RqiM{w`b{xb$I{F=Hd|zTyvbZnEG<|31C{JwN$pIz6-;U6`lWh9CKdUlV}8 zIrQeFx_;-GI@_P*{PR!2n8+F1w&OFyb$f5XVz}j&JIJHstn*JpC2;P!XA_O(u0w~= z2xo0Q1rt5zo_7w`7`|}RonQ=i9oU}|KSZ1n&N=@KIum_f^v)j@dhp{repszr73u38 z9};E2{P6`!T~+BnaN7|Ya+Gx&+MtHT`5px2AOGO-YOG=5*nX@jx$Cxrs46oX*E5W( zy{>z2J4EIVr#Tol@h#7IpTPS#`-y+3m08E5o_m!>=h$%mIn?4Px;@%qjt{-+Q3CLc zm)@*p+(KP@j0hXHZbHR!Xx|)G0!J6`M2vFwsh3b7Typ7Ssbh&Q1Tr7E?WSv}C9vb7 zZ8Yfc?%%vjJ`Mcl6R*+@!zTOg+)XsX&a-x*8u`L!Zp2}+F(qOC^x;3Fs9~zkunMPa z-$_9E^i@|AC30YIV!}9esCpjr*hf%H;9-w`IJJRns-0SH#8U;&!yfx^TK!o*`;WJf zg@P-d^i;}RdGCimjABr=1QU_by7s{jew>zCzVpf7j`hN!JC9HpWh3iTu_Htb9w#He zbOv0@#oDjDj zJhDVN^c-9m;+>^wGhAJ8_?{sq1~yKv8wo*M3bE{2Tp&Z)Ha&reV_&CBZ48UW5Emos zCMRh6$YN)SC~%~GzDp1WIK88l&%uQRVjbnZxxd3dOm_%&Gt%r_saJqG`<9+Ib z*V2-`oOa$$)CNp+l(FRO^UlI}%iXu`L9pC&>pf`Z*(KZXTH}mGYQw?1=1}iO$wSX6 zXKu&jk>2qknnk8JP9Y+^|7{<~it_j;KZa;3I-L$h?5%u{tDp9M0my%Ti&kcympNN;iK`gqlk^skP?rOqa>WI# z>khc&%+opEZtypszYWg@hQGdF?qJUe38!4(hL3-Yj6fC~MjPzfbv^>j&F?|PjWhs~ zy`gI0v{Nob30RW#;{1}LaTFVfW7m$eiKa<&Y6{he@0FNXbITX5qmsbcmpmMo!!Sl% zo~ZlAz&&>!$BMFT%gEjji_s><5JJ7m7912FW0kT@p+{Y&R)pR{T5e-4C$v~J8V$S{ zx*dpXm;vJiz!=}e;eYDw&v6)U$!sL^l4w&g>2@vqoQg|9jH(hvP{L^AU{2Vz`;at` z)9aLI6;Z{Th!r6QMMXz8V`Gdl#!1}(n`8qhlC1xhy~agAY?{xji8+HIQT*1b0SEDj zr0PE=CJ{lCk5~k&wI)VYx3p%sldb`f7OaSkinR{YZqaWxP=Rcsg;uGrQVDpi(HO9X zq=8~ha!IKI5=f3GF;JO^I&iHFnanZMO{__D#ZUls#FsUGSYo50tvOmL;=wsbW*QWA zNo@jHL(f)ZSx%nSR1#4eD6^zH5CvjTa)J5WGvS39v+T&A7$el7rZP}z#No&^!{Mmw zh%4PmO~2G@o&bvzH4KGX1GzSsDHh6)CM48A*TA3LGdWoB!S$-atRO>7g7~fjE*8! zO;u5G)I`)~AReP2KH!Ww!Nv)6U0OCXzY(FlQk_F;M8G# z1FXe_q~jq`kTt#aQ8(g!g;tZqxSDvkqM$Wpn5MFhDPs`VC-;Y#35QnK3F)E6gRvMX z$>lI&9nP-Wh3fy$-hanQcAa(p`1?8M-dmxo5}+h?hLH9Tmct^WmJpRRqtLrR>6OHUUgC)fni1la6b%t-b(9tsvmRv`G8@vu zQXN?EB^7UQ)-q5xtoIIc9A^yP1!rdBEoq*j!^|HwVUAQ7L)Z2xO+i-*`bkNN0-n4Q zbdQ{{N;BeEoZe}H9Z)enS_yPqMv@z5rc=iH1IjKmdcC0Xua=QK+SX=<&jxHwmZ&Q9 zd(bz~pQsSz?N{STD8*2igu+-_2vuWAffN~*f(a?%7?vi%n9$wHT8~vvsb;7t0^-9p z*j0}=!zjN(O6V%n7r_xq2l9uw|L>_+FnFetl&r|9DLC&@F%)7*Tu$nQiW;0`AQqQo z!@6%>R*WwbOE0k;9IG%}J6dxf)jCyeP$|dorNe8e@pqMy(&iLNpNtGjFwT;eAr;?h zxL5c>5C>)Ia8hDYz(VROXz56Oit~`VY`NQxA4b{5A8meaZbRlBr?!;w(qSoSmcqtP zpS04a(l3}O2W(mDv2IX;c-rZJElYix6~SA_ge#fpw3*5KMKEBllkn zwv>>`GF0qWxs0@|Vx@+62_mD6jg&+{e8>($6Z|lmje$d?BA+~M*dfaG#Vk_^*gRY&1CZ4+OzxQ9 zb&y`wA{*9IuLKo(@xiF4bUf`Rz8`Y9@vr`lY6+9;C&NBg!W5@B$kD!1E_O+LLaW(l zf0jLFG+0Iv`Tx!TqvL~&y$|jsH_CgT{#)9r=3M@7K~4MJ&-@KtpI1@wWY#b}F%dG$ z1k|Qnck3-7r4)}#;D7)4pQv%l;82hGwBV(G|9h(j-H&egab4fuz=8Ys&@Sgu23V7F z-`>4=YnVtTa5!$=b2|p1P$hM6;RR=9^-Fx={m)%}aY_jcSig0WF`4D>Kll^@c*$iqYTvI1DRDSvPT!1W zH-G=uC$IYcOD?-wyE4Ny|9UlvE&1L{uhP?d^X%T;#&nms`Wx4P5z4Es31WjDED75- zZwUtR_ES*tJh*EoYCJplJrE+3!<^sHmQ* zbjks85O9tbEj*r*Af_66q*(6RvlHvru6tj}D_?xJ*7X5??d8wLnnNr!m&lVXy!Cz8 zF_~4^I#)7o2VDA#7t=5U9^Ad3p5MfW7jDw7j&Vw5j4avDum04tscDPd_a9;)TX^rM zZl)*c(GCDHp)^HGya;=ni&S07Gfp{$idW_qS~xLmnVMu^4b37)y-+ylm&3ND_)rc8 zs8I$*$wEHBdC&OxIM#dWCc%s0;KD*EB{q#or#??N7MAs64a&swwVUom z)N}6UjU>a4Gu{;JU1(C6gmynXZ_e7h0TJQuz5AFOtMHaRcdhxbQFS;EJMY?s^Px?v zvpE-BbOz4mT)6HmlA^-xSKotm89VRXLv9LAKR0Bmh)ux4Y3H7TlLDs&Qo{Xr?+PvW z@TgVJIrAKRQqXKJQkoJKLtY+s{5|u-Kcs38^6b*ExxbF{Hf_e50;8eE{nb0pp(mbg z=beVZbN=Qnq&_%Zyia-6Q+7~b*>>)!sPFUSQ@0?+fYZ*{hVvHxZ=MA^$zQ)FSECzw z@T0d2z+k>jp#yfD|E$pIXDIr8$F0|s;1J_*zROZ;H>g2zcy*Zh;T&P4<0B>bl$ps> z5v|c~<#;P4U^OT{()+u;T-VZaEx!ESDq3j0-c%@Pq9{<3?T#Leo51Zk6i4K6s6Pf~8s%#_? zLnq6Is?-|*Sh5uoF)Y>UhzPZM6=RgL)X?u#5(?+2R;t4ifKWFaYU>1_mWVMlstr&> z$91tHbhL|DL$9)d#mYvCcp4&+?+|UO$AnPs)$;N>4aJk_k~V{Sx4J>akepqAD# zW+;RzB^6Uc#8S6Q7^#xygHRi9OGNDOu^T4Anb`@nzhiq}0*m9D=AXj zi1#Jku_+vV3fHBir1S&IUO}Gbh!dQ5h!xT_fy|I58Mczqs7+(D3TaZs)eD>(&@VeQ z`->z9X_=CeurFIANmDk~Ph-(7kyf`ca3$Vs#2M(CHd#ejN^A7ggKndAHInWmQVx41 znLa(;MEVUWjrH-Vl8yDqjKz;v5V6dc z1>Te#9P5Qh4J?;V91u-KTV>r=)iYj_n7P0is@EQ*tY_Min` z*fOzzEtNx)(>Rpb@%{MJa;SO`V+@BT=MZN(G&LK(Zv=6Ux$$|V^vq8zuvl%a;fbq( z@005Wyk_+MQqbjb!^q~yVee0&^fio05ij&u!ioW>sPR}oK`A*kKaEqxvqZ^Z!>?Ct z3p4E@RSqFQjUM6?CUrX%ojq#vs<6NK+KUfiewQ5t7h6fi|%F8)K9<2cs0mu(vTDS`IeGNrw&qwF&!O ziL;hgr9jGpu|^HNvVXkB!D@Q!XF#%%egO#*x?z=uQgeE`ox%^WqNJuu+qbbkLyh9p zQ^=`!F*Jvd#*PNjOlvfhyow;sVi8JLGGH46-$#5MM=-PtzjcKp!jt-x@qUG|eo9(w z!Y2+8(h|nIGmQC?^-I%ut0etlj=VtPghpo)?>&>vIzFjEe+C7d2*wE$?P)ZvV+vU% zBsgZ~pj7H+j9eWmDMm`F=0TE?w$HF_9|R*@L{@3}h!5I9UQ_Bev<$Qeo&jU>070JC zkzf#GK{LjUp=uV%Xkg0?WO^`kw(v8E7i{?ePQjPc;05vfux>>LfE!1>qHb?^yL0pKTBbpgIR4?j$pt$?@6phoo8vjiK?fc z_wYk;Fr$X?@o*zcINp>%+mX@jCiFS;LY%^6&0&LfZX~?0pK*MY2?XZIkHo!jUi$wI(ZP0%M2+Ahwk4`#Z_3`GmoaQ z<-$`aGYx5@sw8PhMK`0AcrT=7LTldwlifOZ{`GA#JO(;)3Z)oo!`Ic0YEN$%wXTwo zVustd@|>AtJ`UuF<%~)XED2Srq$HSOvj51xafI>(e);?*!`E{788bZJqh%hw9dg8& zDah&2rC=1j4t1+R&?^Yst$e(d5)`t9p^oIrF{G;pkiu%E@R7eoN5<@7=a<(6XaGS~ zpJ9tOBnQ`oWCC>fIr_j*xKJj7LiuQ`Oc~zyM|_`&;p<94#T?lGxSE5%?5WRJ z%ODuL#xuw~<*+P4U4_5B?wir3h(t~lLr~q+!w%$Cj$v8D2|e-$vPKV~Bi~=^^P`)y znwS9)d15o0PNT_Tubwdm?>$M9P?jYN)fyr~moCN_oC_-7&B_=eLfZwQqE0=eoYu2o zOxR%rv0kk&d*?@9!_hj7F);%m68VnN1s;6D?tKA|+xyRt);_8`wmc8<%J}w@%fI&Y zM`U>9NlrKG)2z4Xr~PFIK(+1>vGk?DB4kNIwMZz9CvlE}EhtmZQr2crDG(cKT+=kP ztO~WEp;kL96S~#*YE}0YzZLl7o{!?V$-^g(qong4%s^S*b7h5A#u}`6&z*?F`yoD) zuX?X!RVZ4I_1!*b{}}7)uk8gp^83eVL-%-N|N1)-=?}XQ_|V-!Lu!m)(UsvpI&b{l zH)x|)M@o+x%bVZ%j_CM^JdB&)3H|G#?{Tumed~z#{gDe5KzwunM4s3zEiJ7w&^w(D z#u)1LkorFu4DjAluLnckTD$!D(f>tc`Bg+P#;|+$ZmhK|E`|xl`1ttptM{Hxr}LO< z2^NV&BHupD$xL^a`Ju@VY2Nbmdo^yl@2(Jeejw+?>3>(JO}0 zf1`%>!3CTOGaENxoUrG%2bt>DS@^;Ma4`AwjkIhRil7>6t065_k|5lqrD8M)uo*ng zgve>34od4>p(h?;rhGbOc1cz39Vuf0Pjwk6z>n zeeDd>`j7m56rmrzjTs^@TEi4kT@YLGU|DiYF>>eH1fE>umloH zl(HgYy0xB4Sz%Npq{a+8r&tEIPo*fx(+*(3*B|zJH+Fi|yL~V=1Xa}2?sajh)Q_>; zsiiKJ`f6(@FC3*00`Dey_~y=s|M(9z#ZY=fGtEeR$&bAFd#QE%Y?z+p##U(i_s8#j zx88Ht-F)POANmh5x%;8>Pg8(SQl+0HTz$i>54m4IwBr;7=-MiMoAJ#XZ+%=JhaWok zbXDI`iC1yncF$bM6b^L=l3w*hoG((M?vJoc-FI?rK7UKhaAkqAj8#HU;T&- zj~71w3{BD|ANk0CLnM@)Of|Rj&+oW}spj_8SMqR8ixa!~%lG~zOXIu4T#1ZddCl*r z`U$@Fl?P8~dtSa}vu^10IAx+iGBy@^v8p2#&$(wk6YmT+J@5dpYA@=(YQn#?Is)+8 z=@~tB-Fl2kNK`ORIq$r4Xm#2=xNjd$g?^gyvU@r@ThI8HrRE83&->r~r&{-p&OP_B zanlCwKX{Pp^c1s$J{N4;$~Qjr5oTWWLe6~34kjww*t2gh8#iy_z3+d&E-ftZ*0;X( zacuy5D~MRqvV)e#AAe#p1W&EA7&^Z^-k(xQf*7Tmw-K)-l?jZ(Sg(y&M^dljP^yDw zXrEeZAY!ro4iy=kfC2LG=JWm$z8@U`k;sW$XhWlZWZ+wCmtRK?1T*aAyHX=yWz_%3 z%z;QG5{Vppn)3GVzFNQj<-1@|XS%YHbi&eFT%@N;YAQ@jOfc>mOf>3v?>TLJg1hg& ziwzSSS!m89{RU&n27XdLuiGxDaK)`JmbE9WE9PDvC=8lNP*9f9J>26pG&L*4(PKcb zHXz9@wKAn)q9!y!A1UH_R(BMLL{8ASKhZhMBSB1)idQCE z8_3FFCQLR@W8Ff|RP(eo9RO)rXWiVHq(zt;^%GB8R>@DIObO#*P)VVNu$W=pMZ?Un}6$f^t5eT!Fvup z@F44pk{kc|i`@0VeLVlAFQwVbxoxhAb~{}C5C6dFlXd2^j8jiLojnikqB-AWqFUik z-g3DrX}N)B-ZoH=ROB7hVH@~YBNg7v~M%6zh!k~{|C=M zODjI-qUT*qqMqs0<4uD9(pS|>m3(0l5#g#m2Oby4;Rnt?Ra0N`-0!*wi!xmeT^^RY ziZvgx~T zNa&RVEJD6m<(JO>zk1iMTlm`G_f}2B)Q1?%)ESeySZ!0da@lZD6S~5LUeg6$9hF9v ztX5&tuVbR9v+M8g27$Cup;_s$^_*?El+Z>}K#hq?KoVjsG-(d&%eC$Hj1ld$!QKAJV?9KW3ko5d(V9jJb;MBnIPskhVaYl00BY%zGl>_ z=lm^O>CZ3HcOB*zn-mrvT$}|hNYj*q`)4V{VDJywcH|Ae^ILkx=537S@ad2K4~$V> z`0QuU&2ye|)|uq@-N)umj&9iouH@|JJ&&3%ST{Yx=RWg4dB%^tlnb_PV|%Mj>OFHw zjec6^&2RWk-Ei8e{N`_*oJPr0FL;V(6ijGn@7Yf3^d;ry8*f~-obTOnx~h6wN$5f~ zsa-6>Ki>MlNv&_X=utr-F*p^hACQRRttCfDJXF@0!T)9x1Ksk1ofJQH8vR{z;;k71!5uEpj_uE($4<tsFk!?xBt^f8lx(+_~FJI*B zpZrO@P1w7*#J;=lpnJoO{Kyag2@CRm?it*qtwA=8}k+#yEDP_WqvpZ8}x=}B65eSYfu zUVs#R+6tw2H0nWr;r{&x>AQqMyG>z_?o~3#dzhlfcqJuqj($IgT>tbB{Q!MQxpn7$ z3M{E9HOF$@&Xa3@`I7Uts}QsZ0LIEts@pZ;@0#nP0_~(q-_*GF=Gz}p#NCO(iD9gk zk(A1y(*dtcHOBA){azncWvo`gp$rBCRE4Q}h0-gt#ejYh9Le$+PVw*vFTy`#UbW@VV^Y^&pKs6J%+FR>MKQ*~@jD8=E2{q1Fx z?=K!TC8`85K^L9Ck+pf|GoPtRl5qa{=Pw)o0N?u7w*a{I+G~&N08mwa>Zg7R@8P?@ z`^8ve`Mv-01~o>w>gsQu(4<3#Rg*RKH=Og=VDzl%mOeNp8y_bOTc5j!JCr1 z_uormb2^haFeZM7+UffqxXrQj8p7c4HdS=SiDiJ{YKt-1O;Z@Qgszsi788SHH@kgNJAu z%YXW%pJ#W`!<7c-9iRK$-y?E-?UM^He7a8LOZ@tap8=ZljRQS8lCgOGwTK?wy0e{* zQSTM}()T|TfNS>k=t_-?o4J-ET=U@Whdl2UpAVzkp^PH)1;#t9uY}rnl&S%%C2MJy zRJEW^N$N*kR1BctJ=Pc0{eV6Rh^0J%{Xc448w*CM^%ukVtOUcqo(I9nBnyUk)*p~0 zk36LAy<7eX^LdL+fM{Bd_xtZ~{#SGWJf86} zd+?F6GUC5d)qnKfT3+{2jsNm8{9%#5BP0K#jDeAMz_MpPY5_zdkq7{1p1qBQ`*Xf^ z^H(`@+YYX~^&5DtVg!oZbI$|!V#ILTrc<%TP-;o39*d=3ui{<7#&zrHbvon}9BA)B zaI8D!0;W#g!1Y)EBYCmFy781UX+v-I`knDO<0*ZKSH%!&KAn`oDDehH_jvKas22~Z z0*=C#l;TjM%Si!Y@~CLZuo1I~Cpz-bhPQ;4b=KPDdBSL}u_C?y*mm@AzTt=C&6*YI z+V1$OlZHNNnJ~Gujj`r7GS|YW!8l7&CZuJC^+_=CG<3>PF~gDV!+YM4mKn9Y%5-}@ zMb;(BC&}$YXTBKqB&z6eUlAL&S%d^3v4-Bzxwbq77LPiI8d=_h(cIX3kEnn#V9i5L zm%VywS<1Km?JANaVaJm$q)=tc_H9fQbzb~^-$$?0;g+I6rlt|&*s^IODGBp)^Gr-n za@YR-eBtw-=OxekF3x)H#Vp!{-R&hh7QX!DF9#<^a$@&@s`pg!7)sPTG71W8XlJlS z5rZgLJIqQgLn^+*f%B+2{yHm(P$Qw!?~|b6#*U ziT6xb5>!hT3y=50R3(h5W?teDx=SreEOYIy4w5Q&@7(pUqHIZ;l6p_S-$%t$t)^I; zao>FpfDzJK9cN(o>>PrnQmK%jBx51KSFP5E85ocA41lwL_n8Wwd;a+P$3(dD)vtPm z0{q1%KmCLXpZ@&My;1=_@t2;v);GOTjkUb>9q)`` z=7(T>d>mC}a&i(lT=QSA*H;Fe33{b@T%hL$Om(NwGSnW|YBjtR zEG@QBS1@~Uj)VPKDv407TYT2#v)_6j7DtaZkkjcWG}f=3iYy8giWsmpL9C&44vzHx7nO$lHO^#zaPL%dyi|y;ylh}m2?!1NC z_ympm7&;hm$Mx58{`nWsXf$Yghw&wc_UxrzmRJmJ5yqycIparO!re}(HpXy?_i3F}ayGJr(>~XhCEa12|4JsbOJd-D9iu9a^|pma zxk?M#X6(4@Qz2+8U=eksMlh;a5xf_yO#vlyT`EbHQXok(#(Hh6dNQAr7)ve;3oQUO z6dE$2L2}Fm{=sn2G3{Yp|A6yaerhD|LFC|7Jf&5cl7>|-}maV!ydNb0TXKY9%^}! zNF?$^WTCml8SBnu>-NoDcjJxp$VsVj<2~O%Ntv#k!gzg(c58w2Pk$2kKd_5-w?9l( zE;;SgP2B##txRtiXLe~f2fO#v>mCH!n8cA(5_+A2rJ~DV@n|C|D-$YZf|iP}1oeI) zWOs%6Y>23;96doDbqw%cu`-Idnqd@DF@FgCMHl6_Iegc_Wm5b@qZEPHip0o>qav zf>#@^Q&qh4s0D8gK7|~^k{4QO2L1jK$IY;L^ET!V9^{TYZ{s=N^?W>V@7;IN+OwCJ zKKEioES0p%c$NYl*KXmwyn{t!$34%^Q<12Furzy2E*7Z#YFnIa*h7!*8k z|NU$|^RyGQb3_?w?Wq^63G#(u4q2{w-mMMiO4SdI&|%8D9^Vk{mk#Gj7FumGpJVJ8 zXi243MX>aGJ;W#zwTu$wdtUH-yb2T5gal>KZc!MeRE%7V3X81{ilNglaH3Qz z6;zKeg#82OZ`aJ{JpcI@VbwELwOCDufwY81wT6hW)Ma{VjDf{+yC_Q}7^Phvy z>J(qQN^_HO_x%r^)TFyC3kshzR;!b^g!}J*041Z^n82HqfBM%i;Y~u31n1nvPkRa# zms8!e9#QBYTwoyXF>kLP(*bbd`(CIACgz#zEl|-4jkleyTiWZm`%kW2^FW^SJI_{t zyZ_`{kE(U^8<$OCqMm}5DCBh z_Z8sn@A!jiZ)xd>I|lb`+!0M}geEiA%E-v3@TBJ4kK02R+~UvjCcD)-%YA8v)e^Hr~Ug{mr_ z`qXD0)${YZ%Pvua@V+ZQ__(xc+wJzMwEdCj-}LnKs#O2cgLTiIJpgRmwr%*J4WcXU zPJ7koCMH6?TVt$&_nz_b@l|C5i;IhK#uJG|B0#S!*tKsjhZbw3NrEqxT9#4fErf(a zgF6}1X`cCv@8YhTZsvjup3d#J-;H3n;K^rj=Y7}mq91-TpZVOM(PM#x5<`zlW?8ps zGjpvL{lp=qr8Ag6ykZ+3lKZaN4K@Ev z)DI(DK$<2Pgh3}qy^_`};)KQhi_|*uR3RmBL8#DDf zi5PCU!17Fh0p`Cd?TOzcYM>}6~(9~k<4W9h0=P=(4pP8DNfqI2+?%qwS z)na< z)#@xQEgkp#&5NaxcR9^>utvFhVCf|_YV``q8i#L=3X_8tXGsTZ4OjOqy|hZLnjsX& zcK}F=7mv5WrBeFPb`c{(;YAs?d@xuqRD6z8MMx=es8w)+_hpFMdk||$Y(lO=FRkF! zVic+;FqHGOPNJ67domnaCOBhAvUJ(;>Q%{%#i1ApiT2)mj1Ao$yyhh8aeDHRco9Lo zL7c^u7I7(F1Y;6hlCos#V1$MM>TqK4rUIG`oosSKnI4Z>2f(5F0==Y16`@i>J1Obf z-Z2-nd+H#zeDwF&BFkw%qZ8x3ClP~Nqo~JwMOOUZ=;1!4508_m-4l=Z1(-*v)tmTZ zdWb_x&B#L-Zl0*3IE>hEGqOmdF z{vwe`;!Nvs529s@W5f=0n`VuEoR);oF>N8>;8ZMnES=*aMYC_yr_ zYOZ`(Er0ku@upnJHBuEsWmTq(9#uMX^s3vnj2h5M6VlS* zjSZiZP?94ESVQg|E?lZupsJ&JXh>lP2@3AshwI!X6b9PWg1M{$d4J7aA9Z@FjW<}B zo5kk?rpFuPhh|wny^dTgm5C{4AKcCU`yb$`&wD;|trqP;AMkwTi(ke&&qQM!@k-uo zvT1yrR?%fJ$eCz_z$GeFtJUMrNyP+bBOwD|l!fh`$E`7+G}eaCYp{z%EGkf{$DhFb z^Tu265P&gpS}S_|_z(Rc#yk3*CSsIot&Vs@uh+pMG%BISzujvgVyRYY2$p`Q4T)i? z-2!9jwt5tjam}rF;Eme^4sMdB$p0QrBnDAK-9|jn(k#Y4!%-mGQ9#d0BAx z&QLNkIo`l|Pq){n-^;NcjGVj!z}kc=8G~LA?>$+yj_kaKQL!|x>{$O>a z{@quG$p5=8f1?7Ndiog{W4ZR~tHB;^m~WVw0k6FC^2=3Kx%{20m-p7o-!jYyc<9>r zSHAM)de{IzdH`K|*{`UGaOD*r6M*ME?|H*EBZ@wXHGZ#t)hkrIVX_g_C-B9TaBH50Wuz4=}c z&nrtzR$;N-VX50;Q1q$S>zsbtsoZ$`ZB*&g(VQ%^?CRf5h9|KF8#b?_wPzpItj6r( z0)@{hfHEJD*^I6CL!jy14}C9xU(c8feOa5zeY9LT(2QPvH+H|4!H3+--5su7D7 z#UvT+qM%ht`AlEs$h7~JOwCL)H#bjKu_P+gu+&-u=6CJlwrg)>%hR6DShdDPvq^n? zj2o`{HyCfQd(VU9dCvIwIAB=pw5d78%^qU+z4x;DjMJGJpTIjm06E(Qu)W#Est@4U4Xc|UyiaZ>-krUT&6*dmLy zHuY|m$zGL>-3n4bwS-dL8lI;f-gGETpRP^Ft0f2B(J3x_*3Z(bD8+=s7AGGeH#!nv z3qm?-WbJl3UYAq3{TjyBiJIo4L36CZbEGk?svyI3DEr7A0HYhImOiB5NT}uU>Q;>{ z@52Z`vd$-LkFMSyIoSsWxH4b%M6UKw3dRKS6hAuVeszT0ej5hxqfukCverM;QrT68 z`luD)N)f+Nw!reS=Ga*lCTcN6B9X|kpYJB*#5d9gX|+PPC~(Hp9rUmQOWh`S-F+tp zM@fgq^fcIl^_7(Q<~~k2?Gz3i+($)(EU`4Zz2z3=i5R?dIOmy~nxZfTbXTu`U<>jz z$0ZK2ho7g*EnB@uN8*>Ui>`BpsRw-AbRi z@p%>-2XW~kjI=?@q4Bsj`)d{4prD?lA*zp38c3|59tu?)U~GaF7!)~KmW4U!$ju?a z&EUkKi6OVgkHqFnEw)aK)9Z9dl7s{IKfu)b8MdvTVdLgaw5wJ6`GDr3Lma&G4o-Xi z#Vq!^fFVsP^tz!hJcT1kQW}$!Y@C{;bjrS+yJ&UVocZJ(BgeY^ zoC;&rvCtN~Kfs~X8g;x1d0yfNj z(45b1X8CG(Mvf9<8J&U60x=OQB1$LfeA{Pyc!rwY9L10N88 z`PoCH0`GkDn^dgf&3~|VCcq0Wz9=lGUPTOi^!@KvjPPr({Vf4_@{S7-JRiN{PgPZz zm>9=IL5W zp$|POv!0)S#jDhN&tHBvbb)yOMHdHWL}$md(vEeM#&5t6NQ@!x<#-QXl>r_(GsT(&nMkSBD#Q9y7gGN5_%cK+Ym-$H zXP7v1J(KNmc71Cpp7h8vA$TI}-@hM#EnBt?=L>#$?r(D9$N(Si|wue{9LD{GeBCe;}e5VQ#!2@1K2EK zE-!-kpDNPtLy|xdym1o~4a6oawVD_;^t-*|9=ArGlXN>wA>4MubtGkv2j>oQ%7r^< zSwpMnGPQ0Uj_qtc{S=(FR7^@jMzh^yY_f)wB~>v<>F8!Dg*CW#mtL<;={@aM3$0a2 zv-G&zGbv83_4nr5d2!pI(aiR^@ zG3_c?ElG@o?^%Z=$37sw41zjVWL51-DZ?6fvvyZSV=ODrnO8-m#K>v|QDeh{-QamB zN1PEs)nNtH`=bYiSIn^ei4daT7#kE$b#?8%(GweRvg(1L%Qv`D*`U!-V<>>Jqbu&P zr_YE5V}m${4AZcN_3McN_b>)xxaddeT!**Nd%vPaeyuCag9t`+*h1t{dQdu#J@P^5 z6;%i2zr%xhMIYY7W6iAk-$<8YezNFzN^pi9{k#blROZsUM?iGn(x-N)Qtp ztJWFx`^=2bu+&;YeR%$N1|9Yv=+hmvs7_?GyPePlM?B7z2tr~kn>TDE&r7nb%G~@M zNn%-AS~$^JXm|z)cw@kWDGgPh;RgjZS7Tn4(iRlfd`g%VW@{1dsW4yJr=9GKobs5?IllgM!B=9%F@IE z^0bbzt)ShJl`J;qDa*a9mbutCNNe3rnvDmbe;`~FQl3!Ji-?fepta$|phko8zXvna z_!7Wbiw+IZ;j9yHLl>sf46`?j{P=b+j(rb4$l}~QPde{B5(;j)^LD;@`|Vut%x7ZS zUFrhKh7FWrI5a;;y%q$XXJ%$V`?#{8;gsDE?qcSY?MP}Ft5vCO-9}*zS!0Ycv2^pn zakr=9b85ao6uinXc;|z*!5U-2i#aT0?LAgK;&O~=$QnLDuGtkzlN#$D)YO-pwtgKM zjL6yHZ=p&L)t5i@)`IoQ!E4i(3>;6M0r^4?_iXx|0 zYhZlN|M}eC(>GP_nOh_mL*j-`i6jlBD{cVl_~s2akhp>uKK;q79B3y?mZW6j>GuX$ zEvZ(kSX;rX4%J(au$$AA%sBe}9#%coY88?6F@L`~$^kGqkfY;Dsuqi&DtIf{jS0zE zN|w~HKIN2;T&UBzQq%{mlQGUnx3Zy@amT)$bhDiL84bn?&kv^OqN@B$_bwJQN3FV! znRJ?cN38b`-}+Wn=b4z8z#4<9!`Kk1SAp@VNmN)>V-E114~81^_rCuFs|MJIuXvw| z2v2>+Q&IJN_=@+bs&eSSK}2C;aSp%YPWbvuFVRHIvgSa&(ZCQ|Zipn*8{=TiFygPg z=5=onfY1KBuXwjQ53hfHSk4(| zpGAT$tN1T0E#Ppx`!~b;AAJ9NRJ^ifW*wfx+6ce(y4NUPnL9L(^YGSTME~t?exq81 zH^1{80`SQ{|G0_>?|92w6g9l%U8}Vbe*1NoD8qI$Si`%o_=o_kpI(O;VcmueLy?uC zhw{KdEW*^eXX3r`hi|)FOYiypKX{jnCQn9%nduqI6^8C_yzUY;aKc>@e&e!B)qBrk zr-gT(zxY&$@W11&zpvhV?z;0%M1*tCK6BOge*WiPuBvj}jDW?3#Z`Y#&rGj=e{peD ziNMs<)bj76hqU*eR;#sa)Ei@%n3!08??~~$m0brSkx1l;PBqOK3~~mA1tTP0NK8Ve zLSiax+q8vNtI41&FiA?`3c9@|z)`eXSRgS8gR*3Rqn3>^JvBwM*~Hq6W-D}Q>E(UW zdUj&YVl@=bgSBK+4N?;J-M*LcUW292?`6@!x~FZUQ|(f1RLRp4KQ!K!4U)`;0D@%0 zD6b2O>mx&r$4j+nVhbsPFl^_3! z9|JA;+~0h57?4^$>RQcS5cI?17|`wC#efBV{J(x5wpbTxxe21&x!p(8d@DE;yr*01 z@MC}Ycuf;TTI&B6; zPU)cm)Fc5EO;YCa0S0IUnLs?y9P|*IFfqN3R&x;<^pAVYI`t}*Gf!jl8K>bVrr5uD zkPXj%Hq$7HB%Dzj;pmopPY(DKY zobyb~tfy_D+3!#p8($SbJ(3GAe7a5+O@8G?PsM77$l%;A;w=5VWp$5O=JSmQ9=}Dar?dFF{^p?Zv z(3M=++^&LG8r77(HJHLs(drr=I0f%lk>p!`j8yR0Zs;5^%27zku zs_DvZ0e;o_GQ%F4R+7+0!X&7ARAtp^b;CgyYVkua&T_@QRW*oVSOkvn%GzW_M12_0 zH(v4LL)2i!jbfAu;GJKU%I{S%n2?dP;?fSznrtT-wK z%^c1E@V*SGK}SB0 z@sDiBbL6od_39l({zu&ej?5ldIX0sMAQFj0!aX!2qnr0wKeK_k`B_pibO#;IIqh6p zi%V=?zmeUCW~o=ku!*7UcTi)+HAQHD|-iB0j&AYQ0?%aR}6$4g3al*Z!|9SWu$&QcU>LlJ`$5@$*K3H3aSCp>cG zj9@seDMIIoVQ^t(puxElkL23X+}S&jBQs3b5HWK>;14{B&2d`bDzI3&5AP2S9RLRL zN+KNw{WggatSV*JqgmaF(*;J|0z^HDwDH|pjA@5?w-2oXA8KB)eHOcxmgw}G7$b;Ly4@C4G0gATOQqfC%KOdl8SZKCD4c$RbE(JcdnB?Rm;YpH_SVybV z4q4mPDr!X66Tz-pw6qXu2<)kr@e%A z4Q1iLZVpcLxWDrt3(ip4Tw~lAy1gz%54ycJ;)SI{3p6W2dN89k*F9=O?!5bM48cZL z)#cjs4}IXhI=W#Q5w5)Az3RQ^>VLa>mGIp=-~1MJC~tjNh(I?Qb?~7rpTTf&{{aAg z|A?CR554bC6`(OOfr#N_SBB-k{1<*n06z2Q|3edNSZFRFV!7+KJ2A%akq^9EN5-J{ zO1s?x4o9~C@)LiqA$`6?)N}nc*W*{*c)xkoRjX=KRD;U!%(~Ej{!c#~BJi(%#m}m$ za?d??u?!LxDGMo`0RUjLhNxW`~FldmIJeg z5E0(;j(05A{^K26wr)XHsZRvY_(B{QZX4UZO@}X<-hB@{DIa z8xey&LIkl<3px|O|CY;D1>P~-uOm5l@E~42Tek!c`>tKPP_Il(OaRayD#wlZE66If~dkGcqqmT|HV^GGBT`H#%TjT`aRDfZ6pA+?tElhe#D&61F@ zYu{d`rzTiGy`FuC4p9zrwr<|Y?!8O&yvHC^(u`KCML~&_A!WAo9=9}L+qP5abowaD zmJOR|`&np@9+W6)D7jNroGU3-^vxFaAviE3%Q8@*cHtz6rWBb23uz^xQb~tS@5AZR zi7}`*%X z=g{>xu&GjEf2YTJPk9Olmku$paU)YQPN&;qVPSzrqd{5b)V6P>E<#I%x>M$tc9R>! z1y6Yj-a)$@P^ng#>okvA|I?rJRBgB>zxLfvCee}yT?OwF(!~QL9`+RpeJa$`G3**4 zyq3urFFI7_c7by|uznk&1>0>GwVwTFpG}c8cy?=`Du!zw*z=Hs$yq7}k$Vf1uJAnjYM5ltoAzp`F z0u(0+7K0gfqj;>mtK1e-k~!^~g%*cW>}x&%OSYR)m!O{kVI(NCBhRH!XgfP_l7 z#`;#B?Q@e%=Z<`kU=*D9cn@Pmicx4Z4KqEc4}x%ABd=3RhV2-}dbKqi?Sl7;C-hT4 z>=!l5UL09|6(ljMROdtF)gN&)B}B(H)Q#&JsYg~M)a?yhPN+Kk3J;GX)cSiDN)na_ zhSyaQ_qE#pnbDHOphkwGLV?nim?T*}fNUCWVk=x$4h^k0hQ}z>yZB)$Rd7D670@Wv zV^>7-JwuIvBMS3>Qynrnygi|?!(u7tu6%1sb;e3cpLRtzjlAp zBctNR8qA8%SxoS18^OC#f7)<2Sas2g2R;6s$Ls1yy!v7Ll4179C{jQ2%8%6lM-SHJ zv37(=&ylJBD{m^Jp0hCnAQFj0VAtNgY@3|HAat8;>XnQHLy4!8ckzdU+IPJ+MyJ>2 z(1C+AYGe4a#h@I7`*M;XgV0T&^bSF>#!{A!_EM7+OQ+Xkt~YnYLuYi;KAuz76j4R1Z8Z7x0y{64DWT6_KCq^MbNYsYMVbITt#(!kRd?9pH662Oz8;OzQb{IOI z@e%?RL6btf2V>XF06jck8?C+!+oO4yUoE$JJ6yDKc=}y}Z4PDGMsroaJcG3;H9R=Q z`n5Aq8%4=PUQ%%$Fq9}Vj0mbgX$fiHr4KFs3^+ZU6Y7ki2+0n33{DK#1j-W&w2U>z z@VTSYTH?YT=Yu*XCMMXrV+VJ9>su5_N_BdQdNt#~!aTJ~N^^0E_2c7odOa|fyiih!2cryko7616dv6B z0H-WgdF^RG$b6;8|NHgN)0Kp4KXIGf2K??P{1=FMka5o+ULyd% z`+t5%C&qI2edVhR5>Mm&IzFjz&-=b1`_|ZyPaaXL{i#3um>RJxw%V&6lp)gUkE-o{ z(>p><`#UcWs`uVI#2DJG7KR|`C&u!I%Pv!gF88Ou{m$DEb)0`e5RGU|OyLkd@rjSC zs^?X|@XN!<^J`R9Ie*9bc(2@Z*IfXdbKZGiggfuJowXX@wc9Pc*X2m}Z@u<1_3C)m zMbE;ceDW{<7XV-Q!arkCo_F!HKppS;{kNzWxaYom!P@1_g4bXA8nq&ve)^e+82;f4 z|A>h23orj!6%o!l>nxo2y!Bl{t^bv;4BY}YZ{3Plnuml(9PMS&sa_W1!SBCW4SqR-e(>PI zRd@W&8#W?%61Afi%&VB3oCN3it=C#J(| zN1o7DtF@|@fAl&wHnz$sFgZDiF=qL7VPOGd4CCYDu?s*X5_!V1vi?0U3l1KdWoBZU zLAOh4En8+bv1@)72_2nTT3V!9uhH&xFxE0YUZdBZqgRB;)Ofv4tJh-SM_~hD{rdH^ zS}jT~$!tcu(_TFvQ-lJ#jY+{)j zZ!o`SA0`c7%7KZ^>nZ2v>E#2QA&73K7C$)Adr`*tWR?ExLA)ycc87ro%`9W;na`q@ zX8hAt-{iDsJdK(4>%%cFJ&Swx&_6iKLbuQ6?ZfT>)f&^M8OmOtP4!8NPM_}l5_hzl zY=6p=)~tyiql>ZdZwI>6)U#e%Bx2cDROs7`Yj3<7Cx+{H?O*f!-FWlu0?=IQX~PY8 z>2m~Ql&cGeSlDX7%Yf^=qibu&Jsv7PI9|NRcpn7Bm0_T8nE6a7`&J1pz`ZEwQ2ta6 z`UnhPXF@4;L4jgX4A!Jr>7&?TCsjM_S}+t>Rly;_=}Qoi44M>?6LtWMx2ue)Cn+tp zGG%(9!iF^AyaQvj(u8YA7fcyWknsuiyvn*o7-NhMy8+lfKgD?2rPa5XieW=*oUydQ zJtsUn2pIuudpM7MN<+0qTCv;^5f@R+ z@B;QO-27x@@U5|323Z|h_lmK>L9y}z(a}B+quHef738%9Q^#A}dM?WLV2()U2Aqh*wy?F%a~Sj}XB_LuP}n z@gR^X#cHFN@w;aOj)>L13;>Q+1>N5IPe z9jOVhvgO~%nJ_Z=*UAovL?V$V>_j9<==b_mD%13uE#{XN*}i={^=1nl>b-2)xS8AT zzYitUoX(grybF3c{UT>DcZf8r;s*mn6(b3~?tt!~AD-QbAs_hAmF9@RU{+)#gM_Te za5z-Ws^^n89^(z(LZLZj;wZf%bqP{H;u5S+Fq+_3EL^+>Ysq?iwP29-F)rTwBM&k4 zHN&=JT7nkA&>kA#$3sMhHTc2tl$fA_CCAA(alQgl17F8W37Q1OepwN+7r$&W98P96 z%Lb$9%1juKRj3u7nomiR8lD>X8r~eOfzeJg67Q*{2?7kP35&KMsi8;=1EZ)oauHl2 zcq5eJaRNnR=!vJy47oLwHrNR+34b4tQXQ>M7Zu^w+iqdU)1HP$sg5<6m|4$Yc8>4) zt{2iuh5d(SnVOkle0+>0uguKMFtJW33?!8bDqyP_6ZJZ~@7c+q-C^q~+tKkVOWh7q z&DJn?1WZOpYLr?sE#X{t#8B9T5=BoSlHN)}Nvcm1P|qN(1yfx@M*-(NoIpu_KGaPc zA8(MB1^3_oV9;I|3(kYt-fXyU*6N4|-F_btVQiv-LuvJT!ZRM%fk1l5j;FaIK z^fFad{^SE86W}*5{Z$na&OQHp0Pecu4#4w~5B!OWSnBl#B8FybK6EJnOqTMEZ+rta z!Y4lYzlQ4m?^S@-(gGIY&f9N8MELZ_Kc;F9drX&xngOqR)hkq0`P8TWQUE^j$-e~P z)vtP);+6AGJ9Cv*!2Dtpd=bh4d=MvczT~X4&H#06*suydIC?6My#SYEe4P zc@i<~J21P-@p1NN?$SGWjO%i4{ty?7y@`+D;Tm`uHTh|0J zNfFdQzuyfv!hR2oU^K;*j#jsYLwW7%es|TlT3ie*o<`jwKJ)>`K0=U3JGkDLG#6BCE)qP%Bzb{19T;K75- z?|biQw?px1r_+fU0Fg-K3CpVKtoI}s=4TJFZru#K=Jv5?|3OaQehR*yV{OL5p#|_l zfu};o-UIt+X%`1L4U_0bR%5&}Mx~N67z~(OY9V5%*Xy*qEvlx5lfg=ZN!7r|CQqMYyf?w_8y1y3j)5n*sej~Ez`|Tl0Dk6Yep&^Oah^m{e(loNVH1mUhl4n> zqNU$*sjM*=QU34W{1rx&5dSwEI!5Gw#7#Hv6M&z6`LC;(E}#AE6^I>h#rxlb^F>Ir z_R4Sm=6^X{>(60531&2X!SPLNyo8sjerX&Zj?jErYbe*KQdI^p0BpKQ)^I z@PkWDZFs2LEVR{5EV+96&eQiEo1`oba&&Agr2R_|FEH0zqL-8u#;|^79E)SA-NDyV z?AUr}J^0WLkRrzc_4*j+JoPDs2COH_SHnL8vexo6h{B;5hV80`8976u(8%_!HGu}u_)hEuZA z0LNFoHOAss)ZmGPwtCA4*ehlj+7>b3idAa(qnnX6HV8(H3^{9Hg%YS25FOSA>dN)m zWn(Te2JsGS42dx~Wm$333?t?aMZCkQVptu4R@HFv_`|8>V!#hu3c^sOf0&-K*02uh z{=?wG%4o3>RFh%9PsNu7W>_m`N0H}Y#02rnhU?+uJnR*!{%A3N9VJe#{Fe;(T`}UZ z-VGhIqbRq*`!&@6#b9N{@bV60C8Tnhpz6A+_I@ayAqJ#y7-J|)KRlk`hc*39!!Z!C z*fsi_nqjAhmFHDNu>{dRqpO=Sg!8c4=wF%EzcNyPEaARUM!?GNm1Vgc{U2o%9KN~u zhwKm#i9{k#ByJxB2lxf@GCh0CCU(s`T6u@Xg+)?p@ovCkt4&EsjS2>+H74nGmQXDz z4H&VsTV19nC+PKhIFyo{imjm49z}nVo&GDrVDBW9hInz zgtCh;KIQP>I+@^@DDeDx0=$p^;QbY8B@47KMRpzxk~-4f(#eIO8z_&RRN2u$fHRM;=BE zeLJm_c#lzsilvuTaX4z)JE1Np_dT#v0LI)^S}FT{?~A@G1ipGfZ>2gmhKSJW1!qE| zR>dMLb$aAtx%Q@;Pz+b^ntw#`?`v`p-G@EG)u?ne_nt{3~CfCAzGY@LkWlSPh;{>!$GnJMY_xs*?H? zBf@hpdJbX@zy8{wp8x7sy-d9-&wcL27!fYHY^bV#$!iqgve$;pix0i;eQFK7<4tc= zv1YmE|6^CaTYXuw^WM9L!XgfgG0c@th8wXr%P zmIv;>4>8JzuY8Y|9)95$el=(uT=uJ)Si>`)@hprrEG^A}Rc^cWE>tWTLQ#(w(PSM~EIpO{P{O3PE-2a!U6+?Sz5vo;o zFU(W*4wJ)GU;HXh{ekc2{@DZcdR-c6g=7$F=4Grxp`OxtOqR0bOA-g)xb}vJ+=yH5 zy!}y~4BmhL{g2A>nn{hCNf=;AEOgZ(#*q3HNeo?IV60&bgEKE-c!Wg4u# zWk6JK*Dg+jfP~c0Dcubc(ntzOcQ;6fz@VfELxYrvfGE-_-7PI8-R;md!_3({?>X=L zd!GM?|A%w-x0%^{&yM?E_gdGr*0t1LINe36r2x7wEHhTrbR$8^@}_!Iy};+MkK|-G zz4lPPiEGE%a92eaq>!TP8ouN)t{s&heKu9o%gI8R+?4!rg4$OCy|WAgr+0Qsuu!P! zoLsE0k%8F}F&E0iCoJU26kk4~#B}(^Xw|!>FOU6>>{HVeEkQ}l;9E-N`t7Q3ODE!i z)}TI7MzrJfEl@L7;Rn@Lo8yDO7=gvUn5@-lbU-bANNhMYT!(|-fRroF)VP)}IBo3t zAmf>e69YSW*Jp+LE#_waSnfo0Tf2`d?Kbxo)iwhC(MakKdNEejTopuJ8#rH>M^Mjn zUMbU#wQPG?MYrjcN1~^HOxm}?F~{ruxJ|Alc(nTcfT%OQ;HwsnSY5gwf{XdC@Vv3+ zE7C|SJblxr=t7p03v}Ohc0G^z0G~p3a?}fip_HkWI>#9oXYr-93YvpIUHx)?@&2{# zWbE(%@!M5jQ94gfuGUGHR=q2rspFcg33=m>eJ>o-tHUBuOv)cm#cCsel}&g%`~9mO z?^B*gm#nBEO_3XPZL5uTs@qvcErxCRp8 ze0(nRqP$|m&l$bcIIzeR_7&p5*76A*tdBk>fe(chO=kvQLUH-A5(jcp8x>_?3v2xF z(|q_N+B8fGGq~HV{-N)pJJ$Q{PB;w!F8OA=4>O57kdtSAE1nkTVll>@1)>kL^PiBj zr6!>|JdK|Q<$OR!u-pC@d`Pe2I3F392RTY*t_&|u)NGTy>UOW75P$J^q5%2 zA>9-a-pX!{u}rf!o0^V>0FgaVcF#sIBMtSaSO3viS}A zc((GMN|xT|hV8L_kb7(bpzc66zve}rrogOC+`BxnRSgr#E8366eBI-@&H9;BY2em? z-O{(G6#0l>RjV*#lhWPz+A$1#&ki^b?#XOGs~$>4$381QzqE8hX^r)=WGiP!=uk0` zK6$+Y>%wu&^T$$N7vpPEZ0m%{-V|6LBe&xW9d-%cij0_}RDfJifNUAUZ-K=!7Cq>@ zkLyv|y=G+U6Z?8I$+6f{+qB` zn*f9&L;qf-^?;1e5Iy8z9HBAu#^Q3M0M^+8$kmi`f)QD-bKk|ungQwmXrCy6TDr92 z&1J(@>zOl|8-%RBaWWHlY~PV7aEI_$N~KdmjYqJ<%&n~Ovk%Shiu?NXH^>@S!`KX@ z4;^OP*5wFaNxbiR4j>J2+)^x0TCA46qcdVR0?4L3p#b*0)P znC9f6;E&nHiHFA~+|;9;mQdbBY*x*#Cp!twL$9HB3tplKEE)^pm`7=cl1)6Sk{KE=leC4nQ`$oRCE99@UfA;%eJ zTEA~%h*U?ySFE15%=Hn%T1;K{uY6u{H)IQlh`hHl7XQtHLlAuxj`_)t`s-=w(L!V5 z6P1=l@ch8KC-TlyUb&MH`R(e%lLOnjU|OofxfqT7-XsH;z}@e5^7R7B`?RY!clyYJ zin9#b9;d`?($A1E@?I3zuyDhtVg)dLbJ`)Q8yEG@-}a zqKq@v`}Gu9FK7#+OUDJatLsrTlGwmU;wT4w;ayOQb?ys3M`(Xp)+E1_r}e_?Ul&J23w$xgXa!{b-WLH;Ius3rzb1S*BHJ(fD`q7@ z*2h(Sxp(^S9|tSueGW7ic*~zgIJxUv>>qB}_oRl%fGVG^*5%D_oKn`MCA-U)O7eEg z&Q8_h2NhP)=6Idl0oD`Nnc?ZXnbzcQD~6v}fk>eQmKZjXHcCbL>87r7J#YKaQzA7m zN*LvtZDL%$Gk)j#w=S7l+xA)oFK^pgbT4g$fi3zUa{T{V(x4Hs_=Z zSzfWD$XYJh9~Qd0lx)I7rx#`v+JtxJf4PvxfuKL?7Q+*2!_VKRyu{LBqu(Ljuw&Ut zykwm>ruseJb1h{d71u*>i5f2uOMN9op`Oi>hQHy%aCRdQ+1mF4(@&(AFFapPDbr7| zH4wkBX%&C$?e$@VO|wI8{3&6NmKl|#W7%I}A~gciV^5x5b#8>9}L*Bgf?Gg=VmsN@PsyPiV;6Tejbthj#VY z6)pR-1KX#@D|=Ac>sPdV-VMJGii&NeMlupy9HrEkc{!7^@j0aRE=`DPtK&$F_WX44 zjZ?mi3F()=n@bui{Iv5~n>V9)YI3L)-eZ1U9@M!Kb_?a`484{PS0nnUr!RAv^%90S zFl;rOIjqVsHI}VK{lG6Ki>)lqFBbDL$$(GUNLD%`@bTq+DSRkK=BG_e``5s0$Ws6em=M42z4W5Vp$tTK_z}YB`|;YN+L;4jsRuWVEoi zuGd%UaD6U*S50GP()~ShHo{_oU*v`OCq@NZk5eL-$N)=XCJE2L(Mk@RpzD~PEBMlg zMS(%uff1Q)ntHGq)CLTa$ zL-cbx9tfh#RaN!RlTKxKh{ctw2JsO9=+?%Egy3=zx^DPd9~%7B1p>E~e;=GZd%jD$Oi=+{M z#3+pJlE)7Bt-<=fhK-q}y-#z*Ka*!QUh+4A3MIL|B6dJn8!YMa>t)+>13dg-!Z}Oi z;MHzc4r`r71}H7-yEChc-(4F`CM!+0X>T0Aaby>yM6{`M$HKHE}UX^^Qb3Xu#H~GF#lsK zdv_6h<_4^?`frbLGKL#GcpMj{Uo3uvyFR)RywWk zmLk+soNUymvMKFGs_$$ITu4$_3iAU)QYN&Y#LH(m#On02`nv6D%&KzLJ?)}YFvR>& ztl_fNu6+wlNDFt(CZu;S)Il88 zWZ!buRs#qA`iW3B(E>AFh>BLUU0;o|{j`0^jUpXv?$5A6x*t#joKvm2q7FN|)uGZ0iJ!WSB=o!faU(ZuXiGjO_Yno4*Wo4Xb$%x0w{ zrK{x@qxEkNEhYUbY;8kYNV#NAKZ2Bj z8#le<@usEv6TyHCmSVeR^jIN(Q=%fGM-qh&dKeU622M|4?uCuo2IuC+D&2u72NF%O zJ9~sR=-qpefzf+Cekf8FkAFEar~psl;S@m899Tm`3giELdiWAPz!uc%w)frzP3q6# z`{a}Vz2m=rQekjFd3b{Vbu1t%gTXMY^B-UQfA)AE^AJG&*HKa)Nt>{J1_G?2x`FeLJ07$p zL!VzK45voikU?uVpgqV-FJ$6#lmrFNf85t977N`wD9yh=nnY&{5mGV!`bqX(+`#*ziCmC7O)2i z*8dqoK^o#H7Vx5Ii!;{_jY-S!8WoF+tWVjUuY{T-c)tNvQ)^L85w%4xl-mTNUa{T) zy}&u?Zx0XYk{KVs++~1JrWSSU1ocol=F0t;k=F+*GCp&w13Cs0+i7}Lvo%#!&p+)h zg~5)6b2Qr#mzA<#E|G7b;C~xsTh9(qejb(Nm#yBnI;N<0Z*Qh5l3m?{hoT~+5z{8g-*EhTEVS*8dsr{fVA^_`}@0uSe%G1lyC)X0;VrO zf~XEPH6GIRqk_A-Y&Ap(2zg-&70AW^ z95tRl(AOxycYWEaIe_#q(^PM59sfvw)(f`i%tqdAv$Ltn3JzxdY$If-}F?1$CY0tGfV6xsZgz ze&RV5b5ziuV}c;#Dj>U8Fo(7p`H1lEf~E}*Ky?<)e(vXmg3Bded?%BE%gXfa?@A?f zz-28-W8G1h|7UogxjQ(F1m%LS{AJD@>Fov00>!K^_7pM#vtye{Wg#-E14ta`PJZufS8y{xk2Hi)9bwnMp2I?)eQS3 z-)YTUpD_uR7lKP)(PMEggYyi2^zk&V$d?<~`uk@{jRSeAa~-EV+~|LscTvZr4>c@q z-hJ37#PTKIU1;}Xu6V^-qL<4h@p=tK`7w|Zt<<*L`4&CxAS>IVu@(7U|$EH^hox%UAxaYCsh5{Ki84LMs(DhlXUu7L1;=gnk!ZaoSB|M0NnyMQrUke z1AypbGUu;?^F;Hsu$jAUemw5%RYWK5a^RR{Ia;bu)TC~l=1b=TZ|0Ed+TZWg8XvsN zq#6UsAgU89;yUyFW{rdUDIH$}wkBCV1?#U)lan;e&gI!*xy2X0RGzLh$4G$ZstoG~(jg2032^o6^BI2MK9k zl?8*yQ#Yr%uhi58@Z-9&522UAz0kT;KVsUOC(ypjKN zEIKCP(ROKo0tB~A-9Gs+v-XoHz6bfu^O?#pGU9^ieXDYN2Zw0?7R^t)Y4$-E2tIBU zbO%un>+vHRA-(CN#kLs2`-N2umCnlccm*HL9fDsqe&@<@-2yT)1mOZ4Os}nw+{U4~ zcU!E8)5BGHjdbwsS$P^RAopD)#=hsj(i`nP`Fu{=+UAYCuO@2>&&3yc@+Y|l}-X{u1E;~zD6bz4zy z!dB+yKElEp9<^inyuh+1q2VW|j29e6WpOI@@Y6~^+^U;4IfQNcQp9>xWi$NT{OcG` zRj79<Ddm2j%3t~-2owXXgyk09=0Svfh(aZCo~CQ(H1+(gw`Q@gH1vqyJcoVG0U zn$+u--xaYftB^8@sQ}-PQ$V3w4m<8=Wy-6;ZbgOakMk^*wS9?6Cu1Ax*^|f-f z=WiRfc*8u?%a`nr(fC{H;@$D0hYLaL{H7AQq$p4RxqS+XkK3y|n4daX>3BoYalYu; z=|_9?ihP9kWJw+TNq%gz4Gc3ZDi2=`TK?g5C!^+^yTs7Ae92JY?~G00_$fdl`H3ov z4oyUISzdNOs3)`i%$~RHVk&i`rD9}o5GO%7VuY_FchRFI!J&2tFx4OP@`??95JxjU z3;4@|g9b2P4<_mIU`Fa{-WI5NPZvcgCe_o^16J|oWnKU=|Lr0Y9TW5D9g3~i-)3z` zDXbB68Y!s=@)X_n@J-d>K5odCYWBTKsTEV$p&y^)_l14|@`lXa!)sZ^Z`|#d zH;h2N!PEjixv2UjXM?+tq`#hmj}23 zUjrkyEt$B7OpzBI)i;k(sIG2fns-in{V1IQVq1r@ z=#3iNLu9?yP`RpAZcs9_FQbITFCt>!;JK<*ZDbb`lH2mP885uLS^$`gCa#f0G*W>{ z{P@PT4v+gkk|}gFHA$ev^)WS>t)_mSJ6snh0DP|Xb?drWKthgyUPhzb;EfvGXN*RK z89j(RlQTX(-pgt=tmv(7({q{uyD7{KRlRZ^TT=nouPVuscB7^BI5h44i_)Z6SkAs7 zO!igMnc}+a_*oj!6HptQ1RnP~-+7;(Oel8V$fqp-*rcXIE(+=Gy)QYR3rdRiO{{_D zEWy&0d`h+YDqNa{Gw3CQeta;VhCG=3&Y~!*kg{Qk(}i%J2iR^cL2Na?io5RVUKFZo z4p7sYr(8eEWq}w@wNd8)3V3~6%u&WS6_IKP26~DWM!QnTr2892ihmuG>3=%sUd|$ZTy%d`+cSkcjJAGh@5Jz@$}JgxC`d zRLJqg(~GZs$KZ?i?Zo-GA{B=xL)u|aoELGN2Y1e;kflF3w(*RNd`<7S+7}N`zk_eL z^t9I4*w{w1MO;C2bPmD6RE!uvN;U-u1hNXg6h79X=6G6e@WH$3*VNRL+S*!0onAl@ zr{Ykz+~8CyF+@hYaPqm@i)tg5IHpJOZ%@9p`#UZXUiGz$5=tE~)~dTPIw(fZ0tsBX&GjSy`ZpEYn&@wbg_+RguvLKkO1#LT*bX0g_7y@ z^%(m8bEyYeQ^2Dq)_uuNI^XQah0+oLWyQIh#@G=5y5MGGOrE8IHQ@D9t(+9A=;*^y z{Vd>Lrs=X5YsIZP)$u1M9E%G}N^>(h(PX2l3yKTN^QL}TcB%5{F)=A82V9`e#3ZJO zN%Hnp%mPXpI^{zgcN>!gPJr3V97rKJw!pR}bw@ta!%0DVF8`0MTS!eNf56XtXJ?0f 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

R(t8 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М><@Y+~f%xqK?`|GW1~ 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