diff --git a/.github/CONTRIBUTORS.md b/.github/CONTRIBUTORS.md
index 0280bbc8..343fb7e6 100644
--- a/.github/CONTRIBUTORS.md
+++ b/.github/CONTRIBUTORS.md
@@ -42,6 +42,8 @@ Jason Traeder (PapaBeefolini)
Raphaël Duchaîne (duchainer)
+Rich Schiffer (filthyrrrich)
+
Tarun Karki
Wojtek Pe (wojtekpil)
diff --git a/.github/workflows/client-build-tool.yml b/.github/workflows/client-build-tool.yml
index 9d41457f..ef0c528d 100644
--- a/.github/workflows/client-build-tool.yml
+++ b/.github/workflows/client-build-tool.yml
@@ -202,7 +202,8 @@ jobs:
- name: Unit Tests
timeout-minutes: 15
- if: inputs.should-run-unit-tests
+ # disabled until we can fix gut
+ if: false
run: |
chmod +x ./${{ inputs.editor-binary-name }}
./${{ inputs.editor-binary-name }} -s --path ./ addons/gut/gut_cmdln.gd --headless
diff --git a/.github/workflows/deployment-pr.yml b/.github/workflows/deployment-pr.yml
index 714ce51a..2011a227 100644
--- a/.github/workflows/deployment-pr.yml
+++ b/.github/workflows/deployment-pr.yml
@@ -24,7 +24,7 @@ jobs:
editor-binary-name: MirrorGodotEditorWindows.exe
editor-binary-download: MirrorGodotEditorWindows.exe
editor-binary-branch: dev
- editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.dev
+ editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: windows_release_x86_64.exe
template-binary-branch: themirror
@@ -35,8 +35,8 @@ jobs:
bucket-name: no-bucket
os: ${{ github.event.repository.name != 'the-mirror' && 'windows-mirror' || 'windows-latest' }}
# TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side.
- editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorWindows.exe
- template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/windows_release_x86_64.exe
+ editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe
+ template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/windows_release_x86_64.exe
build-macos-client:
name: 🍎 Build MacOS Dev PR
uses: ./.github/workflows/client-build-tool.yml
@@ -50,7 +50,7 @@ jobs:
editor-binary-download: MirrorGodotEditorMac.app.zip
editor-binary-name: MirrorGodotEditorMac.app/Contents/MacOS/Godot
editor-binary-branch: themirror
- editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.dev
+ editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: macos_template.app.zip
template-binary-branch: dev
@@ -61,8 +61,8 @@ jobs:
bucket-name: no-bucket
os: ${{ github.event.repository.name != 'the-mirror' && 'macos-mirror' || 'macos-latest' }}
# TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side.
- editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorMac.app.zip
- template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/macos_template.app.zip
+ editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip
+ template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/macos_template.app.zip
build-linux-client:
name: 🐧 Build Linux Dev PR
uses: ./.github/workflows/client-build-tool.yml
@@ -74,7 +74,7 @@ jobs:
editor-binary-name: MirrorGodotEditorLinux.x86_64
editor-binary-download: MirrorGodotEditorLinux.x86_64
editor-binary-branch: dev
- editor-template-directory: ~/.local/share/godot/export_templates/4.3.dev
+ editor-template-directory: ~/.local/share/godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: linux_release.x86_64
template-binary-branch: themirror
@@ -83,7 +83,7 @@ jobs:
game-export-preset: Linux
game-binary-name: The Mirror Dev.x86_64
bucket-name: no-bucket
- os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-20.04' }}
+ os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-22.04' }}
# TODO: This will be dynamic in future and we can't do that immediately as we have to focus on the deployment side.
- editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorLinux.x86_64
- template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/linux_release.x86_64
\ No newline at end of file
+ editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64
+ template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/linux_release.x86_64
\ No newline at end of file
diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml
index 1ea57bf8..3a21be66 100644
--- a/.github/workflows/deployment.yml
+++ b/.github/workflows/deployment.yml
@@ -37,7 +37,7 @@ jobs:
editor-binary-name: MirrorGodotEditorWindows.exe
editor-binary-download: MirrorGodotEditorWindows.exe
editor-binary-branch: dev
- editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.dev
+ editor-template-directory: ~/AppData/Roaming/Godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: windows_release_x86_64.exe
template-binary-branch: themirror
@@ -65,7 +65,7 @@ jobs:
editor-binary-download: MirrorGodotEditorMac.app.zip
editor-binary-name: MirrorGodotEditorMac.app/Contents/MacOS/Godot
editor-binary-branch: themirror
- editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.dev
+ editor-template-directory: ~/Library/Application\ Support/Godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: macos_template.app.zip
template-binary-branch: dev
@@ -91,7 +91,7 @@ jobs:
editor-binary-name: MirrorGodotEditorLinux.x86_64
editor-binary-download: MirrorGodotEditorLinux.x86_64
editor-binary-branch: dev
- editor-template-directory: ~/.local/share/godot/export_templates/4.3.dev
+ editor-template-directory: ~/.local/share/godot/export_templates/4.3.beta
template-binary-workflow: deployment.yml
template-binary-name: linux_release.x86_64
template-binary-branch: themirror
@@ -100,6 +100,6 @@ jobs:
game-export-preset: Linux
game-binary-name: The Mirror Dev.x86_64
bucket-name: no-bucket
- os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-20.04' }}
+ os: ${{ github.event.repository.name != 'the-mirror' && 'linux-mirror' || 'ubuntu-22.04' }}
editor-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/${{needs.get-or-build-engine.outputs.commit_hash}}/MirrorGodotEditorLinux.x86_64
template-download-url: https://storage.googleapis.com/mirror_native_client_builds/Engine/${{needs.get-or-build-engine.outputs.commit_hash}}/linux_release.x86_64
\ No newline at end of file
diff --git a/.github/workflows/engine.yml b/.github/workflows/engine.yml
index 915bcca4..cd33ef94 100644
--- a/.github/workflows/engine.yml
+++ b/.github/workflows/engine.yml
@@ -278,7 +278,7 @@ jobs:
path: ./godot-engine/bin/${{ matrix.artifact-name }}.zip
destination: ${{ matrix.bucket-name }}/${{steps.vars.outputs.sha_short}}/
build-linux:
- runs-on: ${{ inputs.self-hosted-runner && 'linux-mirror' || 'ubuntu-20.04' }}
+ runs-on: ${{ inputs.self-hosted-runner && 'linux-mirror' || 'ubuntu-22.04' }}
name: ${{ matrix.name }}
environment: ${{ inputs.environment }}
strategy:
@@ -288,7 +288,7 @@ jobs:
- name: Linux Editor
cache-name: linux-editor
target: editor
- sconsflags: arch=x86_64 debug_symbols=no optimize=speed production=yes
+ sconsflags: arch=x86_64 debug_symbols=yes optimize=speed_trace
strip: false
bin: "./bin/godot.linuxbsd.editor.x86_64"
artifact-name: "MirrorGodotEditorLinux.x86_64"
@@ -312,6 +312,12 @@ jobs:
with:
submodules: recursive
+ - name: Check versions of the compiler
+ run: |
+ ldd --version
+ gcc --version
+ cmake --version
+
- name: Get short commit hash
id: vars
run: |
diff --git a/.github/workflows/web-server-build-check.yml b/.github/workflows/web-server-build-check.yml
new file mode 100644
index 00000000..5b1ee3c8
--- /dev/null
+++ b/.github/workflows/web-server-build-check.yml
@@ -0,0 +1,37 @@
+name: Build-Check
+
+on:
+ push:
+ branches: [dev]
+ paths:
+ - "mirror-web-server/**"
+ pull_request:
+ branches: [dev]
+ paths:
+ - "mirror-web-server/**"
+
+jobs:
+ # This runs the same command as GCP build but is far faster since it doesn't deploy to Cloud Run. Can be useful for debugging
+ Build-Command:
+ runs-on: ubuntu-latest
+
+ defaults:
+ run:
+ working-directory: mirror-web-server
+
+ strategy:
+ matrix:
+ node-version: [18.x]
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: "yarn"
+ cache-dependency-path: mirror-web-server/yarn.lock
+
+ - run: yarn install --frozen-lockfile
+ - run: yarn gcp-build
diff --git a/.github/workflows/web-server-tests.yml b/.github/workflows/web-server-tests.yml
new file mode 100644
index 00000000..5f67f601
--- /dev/null
+++ b/.github/workflows/web-server-tests.yml
@@ -0,0 +1,64 @@
+# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node
+# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
+name: Tests
+
+on:
+ push:
+ branches: [dev]
+ paths:
+ - "mirror-web-server/**"
+ pull_request:
+ branches: [dev]
+ paths:
+ - "mirror-web-server/**"
+
+jobs:
+ Unit:
+ runs-on: ubuntu-latest
+
+ defaults:
+ run:
+ working-directory: mirror-web-server
+
+ strategy:
+ matrix:
+ node-version: [18.x]
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: "yarn"
+ cache-dependency-path: mirror-web-server/yarn.lock
+
+ - run: yarn install --frozen-lockfile
+ - run: yarn lint:ci
+ - run: yarn test:ci
+
+ Integration:
+ runs-on: ubuntu-latest
+
+ defaults:
+ run:
+ working-directory: mirror-web-server
+
+ strategy:
+ matrix:
+ node-version: [18.x]
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: "yarn"
+ cache-dependency-path: mirror-web-server/yarn.lock
+
+ - run: yarn install --frozen-lockfile
+ - run: yarn lint:ci
+ - run: yarn test:int:ci
diff --git a/.gitignore b/.gitignore
index dd9312ac..665fe63a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ node_modules
*.arm64
*.app/
*.app.zip
+.vercel
diff --git a/README.md b/README.md
index 23b341de..c63ef022 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,35 @@
-# What is The Mirror and why?
+# Get Started
-![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/13ffc0bd-bef2-4c1d-a12d-f11fdedf7b11)
+The **easiest** way is via our compiled Mirror Official app: [Get Started](https://docs.themirror.space/docs/get-started)
-**_Freedom to own_**: The Mirror is a Roblox & UEFN alternative giving you the freedom to own what you create: an all-in-one game development platform built on Godot.
+## Docs
-If you build on others like Roblox, UEFN/Unreal/Fortnite, and Unity, you don't actually own the full stack of what you build because you don't own the engine.
-
-_We're here to change that_. 3D is arguably the next step of the internet and we can't let it be beholden to an oligopoly of companies that want to own your data and creations. The Mirror gives you the freedom to own what you build.
+[The docs site](https://docs.themirror.space/docs/open-source-code/get-started) (`/mirror-docs`) is our primary source of truth for documentation, not this README. We intend to keep this README slim since documentation is and will continue to be extensive.
-Akin to "Google Docs for game development", The Mirror is both the editor and the game that let's you build with friends in real-time. This saves you a plethora of time: Enjoy not having to write pesky things like infrastructure, backend HTTP routes, asset management, authentication, netsync, and various systems from scratch.
+# Features
-This repo is The Mirror's source code: the Godot app (client/server), the web server, and the docs in one place. We've included everything we can provide to help you build your games as fast as possible.
+- **[(Real) Real-Time Game Development](https://www.themirror.space/blog/real-real-time-game-development)**: Like Inception, the aim is to build worlds in real-time with friends, colleagues, and players. Read more about our approach on our blog [here](https://www.themirror.space/blog/real-real-time-game-development).
+- **All-in-one game development**: The Mirror is both the editor and the game, providing everything you need out-of-the-box to quickly create and play games, digital experiences, virtual worlds, and more.
+- **Editor**: Built-in and networked: A lightweight, real-time, multiplayer editor to build in real-time.
+- **Physics** via [Jolt](https://github.com/jrouwe/JoltPhysics), a AAA physics engine used by Horizon Zero Dawn.
+- **Advanced networking**: Keep your game in sync and rewind when things get out of sync.
+- **Visual scripting**: Even if you don't know how to code, you can implement game logic quickly and easily.
+- **Traditional coding**: GDScript in-world editor so you can live edit your game code. If you're new to GDScript, it's like Python, super newbie-friendly, and is easy to learn.
+- **Material editor**: No need to exit the editor to make changes to your materials: Everything is in real-time
+- **Shader editing**: Real-time shader editing with text will be available in the future
+- **Asset management**: Assets are automatically stored in the cloud or via local storage (self-hosted) so you can simplify your workflows in real-time without needing to restart the editor. Much less hassle and easy collaboration with team members.
+- **Open asset system**: Built around GLTF, The Mirror supports seats, lights, equipables, and custom physics shapes, all direct from Blender.
+- **Mirror UI elements**, including a table class which can easily map _any_ data to UI elements without duplicating state in a performant way.
+- **Collision shape generation**: Convex and concave supported
+- **Audio**: Easily add audio to your game in real-time without opening a separate editor; no need to recompile
+- **Player controllers**: Out-of-the-box FPS (first-person shooter), TPS (third-person shooter), and VR (virtual reality) supported.
+- **VR-ready**: Just put on the tethered headset when playing! We test with Meta Quest 2 and 3.
+- **Intentional architecture**: (Space)Objects are a simple game object abstraction with the aim of supporting **any** type of Godot node in the future.
+- **Bidirectionality with Godot**: Start in The Mirror and end in Godot, or start in Godt and end in The Mirror. Our aim is to make it easy to transition between the two or develop side-by-side: your choice.
+ ![Bidirectionality with Godot](bidirectionality-with-godot.jpg)
+- **Godot plugin:** Coming soon
+
+# Join the Community
**1. Join our [Discord](https://discord.com/invite/CK6fH3Cynk)**
@@ -22,48 +41,40 @@ This repo is The Mirror's source code: the Godot app (client/server), the web se
**5. Follow us on [X/Twitter](https://twitter.com/themirrorgdp)**
-# Features
+# What is The Mirror and why?
+
+![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/13ffc0bd-bef2-4c1d-a12d-f11fdedf7b11)
-- All-in-one game development: The Mirror is both the editor and the game, providing everything you need out-of-the-box to quickly create and play games, digital experiences, virtual worlds, and more.
-- Editor: Built-in and networked: A lightweight, real-time, multiplayer editor to build in real-time.
-- Physics via [Jolt](https://github.com/jrouwe/JoltPhysics), a AAA physics engine used by Horizon Zero Dawn.
-- Advanced networking: Keep your game in sync and rewind when things get out of sync.
-- Visual scripting: Even if you don't know how to code, you can implement game logic quickly and easily.
-- Traditional coding: GDScript in-world editor so you can live edit your game code.
-- Material editor and in-game shader editing.
-- An entire asset system built around GLTF, supporting seats, lights, and custom physics shapes all direct from blender.
-- We have our own UI elements, including a table class which can easily map _any_ data to UI elements without duplicating state in a performant way.
-- Asset imports using GLTFs at runtime in your game.
-- Collision shape generation handling: Convex and concave supported.
-- Easily add audio to your game in real-time without opening the Godot editor.
-- Player controllers out-of-the-box: FPS, TPS, and VR.
-- VR-ready: Tested on Oculus Quest 2.
-- A simple game object abstraction called SpaceObject (this will be refactored with the aim of supporting **any** type of Godot node).
+**_Freedom to own_**: The Mirror is a Roblox & UEFN alternative giving you the freedom to own what you create: an all-in-one game development platform built on Godot.
-# Get Started
+If you build on others like Roblox, UEFN/Unreal/Fortnite, and Unity, you don't actually own the full stack of what you build because you don't own the engine.
+
+_**We're here to change that**_. 3D is arguably the next step of the internet and we can't let it be beholden to an oligopoly of companies that want to own your data and creations. The Mirror gives you the freedom to own what you build.
+
+Akin to "Google Docs for game development", The Mirror is both the editor and the game that let's you build with friends in real-time. This saves you a plethora of time: Enjoy not having to write pesky things like infrastructure, backend HTTP routes, asset management, authentication, netsync, and various systems from scratch.
+
+This repo is The Mirror's source code: the Godot app (client/server), the web server, and the docs in one place. We've included everything we can provide to help you build your games as fast as possible.
+
+## Build the Open-Source Code
1. Git clone the repository (you do **not** need to clone with submodules; they are optional)
2. Download the precompiled Mirror fork of Godot engine (required to use)
-- Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip)
-- Mac: **v buggy**; taking contributions for fixes :) [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip). On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option.
-- Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip)
+- Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe)
+- Mac: **v buggy**; taking contributions for fixes :) [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip). On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option.
+- Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64)
-3. Open the Godot editor (The Mirror fork), click import, and choose the `project.godot` from the `/mirror-godot-app` folder.
-Note that if you see this popup, you can safely ignore it and proceed.
+1. Open the Godot editor (The Mirror fork), click import, and choose the `project.godot` from the `/mirror-godot-app` folder.
+ Note that if you see this popup, you can safely ignore it and proceed.
![image](https://github.com/the-mirror-gdp/the-mirror/assets/11920077/53f84e88-aa31-4245-93af-decdec253168)
4. Close the Godot editor and open it again, to ensure that everything loads correctly, now that all files have been imported.
-6. **Hit play in the Godot editor!**
-7. Create a new Space, and you will automatically join it. Or, join an existing Space.
+5. **Hit play in the Godot editor!**
+6. Create a new Space, and you will automatically join it. Or, join an existing Space.
## Godot Fork
The Mirror is built on a custom fork of Godot and required to use The Mirror's code. The fork is open source and can be found [here](https://github.com/the-mirror-gdp/godot).
-# Documentation
-
-[The docs site](https://docs.themirror.space/docs/open-source-code/get-started) (`/mirror-docs`) is our primary source of truth for documentation, not this README. We intend to keep this README slim since documentation is and will continue to be extensive.
-
-_Analytics Disclaimer: We use posthog and it automatically collects analytics in the open source repo. You can disable this manually by commenting out the `mirror-godot-app/scripts/autoload/analytics/analytics.gd` file methods. We will make this easier in the future to disable. The Mirror Megaverse Inc., a US Delaware C Corp, is the data controller of the Posthog instance. You are free to disable the analytics and even plug in your own Posthog API key to capture the analytics yourself for your games!_
+_Analytics Disclaimer: We use Posthog and Mixpanel and it automatically collects analytics in the open source repo. You can disable this manually by commenting out the `mirror-godot-app/scripts/autoload/analytics/analytics.gd` file methods. We are transitioning from Posthog to Mixpanel and Posthog will be removed in a future release. We will make this easier in the future to disable. The Mirror Megaverse Inc., a US Delaware C Corp, is the data controller of the Posthog and Mixpanel instances. You are free to disable the analytics and even plug in your own Posthog or Mixpanel API keys to capture the analytics yourself for your games!_
diff --git a/bidirectionality-with-godot.jpg b/bidirectionality-with-godot.jpg
new file mode 100644
index 00000000..db9ac5f2
Binary files /dev/null and b/bidirectionality-with-godot.jpg differ
diff --git a/godot-engine b/godot-engine
index e33f01e3..f2020817 160000
--- a/godot-engine
+++ b/godot-engine
@@ -1 +1 @@
-Subproject commit e33f01e34af60499c8856143c71b92f4e5b90f6c
+Subproject commit f20208175ed95017293ae75f190f8ed1dd1ebda2
diff --git a/mirror-docs/.gitignore b/mirror-docs/.gitignore
index b2d6de30..ed3fe720 100644
--- a/mirror-docs/.gitignore
+++ b/mirror-docs/.gitignore
@@ -18,3 +18,4 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+.vercel
diff --git a/mirror-docs/docs/get-started.md b/mirror-docs/docs/get-started.md
index 6fe0ab5c..aa8f12f6 100644
--- a/mirror-docs/docs/get-started.md
+++ b/mirror-docs/docs/get-started.md
@@ -55,4 +55,4 @@ When you run the app, login using these credentials.
![Login](Login.jpg)
-Congratulations, you're in The Mirror. Head to the [Tutorial](/docs/tutorial) next.
+Congratulations, you're in The Mirror. Head to the [Tutorial](/docs/tutorials) next.
diff --git a/mirror-docs/docs/open-source-code/get-started.mdx b/mirror-docs/docs/open-source-code/get-started.mdx
index f5787baa..c741e14c 100644
--- a/mirror-docs/docs/open-source-code/get-started.mdx
+++ b/mirror-docs/docs/open-source-code/get-started.mdx
@@ -9,9 +9,9 @@ sidebar_position: 1
1. Git clone the repository: `git clone https://github.com/the-mirror-gdp/the-mirror.git` (you do **not** need to clone with submodules; they are optional)
2. Download the precompiled Mirror fork of Godot engine (required to use)
-- **Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorWindows.exe)**
-- **Mac: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorMac.app.zip)** **Note: very buggy**; taking contributions for fixes :) On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option.
-- **Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/41ba769a/MirrorGodotEditorLinux.x86_64)**
+- **Windows: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorWindows.exe)**
+- **Mac: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorMac.app.zip)** **Note: very buggy**; taking contributions for fixes :) On Mac you will see a zip file; extract it and open the editor binary with CMD + Right-Click then select the Open option.
+- **Linux: [Download](https://storage.googleapis.com/mirror_native_client_builds/Engine/e33f01e3/MirrorGodotEditorLinux.x86_64)**
3. Open the Godot editor (The Mirror fork you downloaded in step 2), click import, and choose the `project.godot` from the `/mirror-godot-app` folder.
4. Hit play once it loads!
@@ -54,16 +54,16 @@ Try running `chmod +x auto-migrate.sh` from the `mirror-web-server` directory.
## Troubleshooting
-1. I messed up & I can't login
+### 1. I messed up & I can't login
Probably issue with mirror-server configuration files
-Rember to run `docker compose build` after every change to configs!
+Remember to run `docker compose build` after every change to the .env configs! The updates to `.env` won't apply otherwise.
-2. My localhost space is empty (not even a terrrain and environment)
+### 2. My localhost space is empty (not even a terrrain and environment)
-Something went wrong with your migration of DB. After fixes to your dump file make sure to rm container running mongodb (otherwise init script restoring dump will not launch)
+Something went wrong with your migration of DB. After fixes to your dump file, make sure to remove the container running mongodb (otherwise init script restoring dump will not launch)
-3. My database is not empty even though it should be.
+### 3. My database is not empty even though it should be.
Your mongo container maybe stopped but it is not removed. Try `docker rm mongo_container_id`. If this does not help try `docker system prune`
diff --git a/mirror-docs/docs/tutorial.md b/mirror-docs/docs/tutorials.mdx
similarity index 93%
rename from mirror-docs/docs/tutorial.md
rename to mirror-docs/docs/tutorials.mdx
index dc7fabda..6db0ea5a 100644
--- a/mirror-docs/docs/tutorial.md
+++ b/mirror-docs/docs/tutorials.mdx
@@ -1,10 +1,18 @@
---
sidebar_position: 0
-sidebar_label: Tutorial
+sidebar_label: Tutorials
---
+import YouTube from 'react-youtube';
+
# Tutorial
+## Make Games in The Mirror: Tutorial Series
+
+As of May 2024, we're beginning to release videos on our tutorial series, Make Games in The Mirror! Subscribe to our [Youtube](https://www.youtube.com/@themirrorgdp) to stay posted.
+
+
+
## How is The Mirror different?
**Everything in The Mirror is in real-time**. In nearly every other game development platform or engine, you'll need to tediously build and compile your game and wait for it to load, which leads to long feedback cycles.
diff --git a/mirror-docs/docusaurus.config.js b/mirror-docs/docusaurus.config.js
index 59c0cbd6..fa4d1867 100644
--- a/mirror-docs/docusaurus.config.js
+++ b/mirror-docs/docusaurus.config.js
@@ -72,7 +72,7 @@ const config = {
{ name: 'og:title', content: 'Docs | The Mirror' },
{ name: 'og:url', content: 'https://docs.themirror.space/' },
{ name: 'og:image', content: 'https://docs.themirror.space/img/DocsSite.jpg' },
- { name: 'description', content: 'Game Development Platform: The Ultimate Sandbox' },
+ { name: 'description', content: 'Open-Source Roblox & UEFN Alternative' },
{ name: 'og:description', content: 'Game Development Platform: The Ultimate Sandbox' },
{ name: 'twitter:title', content: 'Docs | The Mirror' },
{ name: 'twitter:description', content: 'Game Development Platform: The Ultimate Sandbox' },
@@ -156,6 +156,38 @@ const config = {
textColor: '#06011F',
isCloseable: true,
},
+ algolia: {
+ // The application ID provided by Algolia
+ appId: 'WZDUGEW4O1',
+
+ // Public API key: it is safe to commit it
+ apiKey: 'cee727fb358dbae0ef4cb1c3f4b1da52',
+
+ indexName: 'themirror',
+
+ // Optional: see doc section below
+ contextualSearch: false,
+
+ // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them.
+ externalUrlRegex: 'themirror.space|docs.themirror.space',
+
+ // Optional: Replace parts of the item URLs from Algolia. Useful when using the same search index for multiple deployments using a different baseUrl. You can use regexp or string in the `from` param. For example: localhost:3000 vs myCompany.com/docs
+ replaceSearchResultPathname: {
+ from: '/docs/', // or as RegExp: /\/docs\//
+ to: '/',
+ },
+
+ // Optional: Algolia search parameters
+ searchParameters: {},
+
+ // Optional: path for search page that enabled by default (`false` to disable it)
+ searchPagePath: false, // 2024-05-07 09:23:31 Setting to false because the page was showing empty; TODO fix: see https://github.com/facebook/docusaurus/issues/6693. It requires enabling contextualSearch: true, which was making 0 results appear in the modal too. At least with this, the modal works.
+
+ // Optional: whether the insights feature is enabled or not on Docsearch (`false` by default)
+ insights: true,
+
+ //... other Algolia params
+ },
prism: {
theme: lightCodeTheme,
darkTheme: {
@@ -310,15 +342,7 @@ const config = {
},
},
}),
- // https://github.com/cmfcmf/docusaurus-search-local#usage
- plugins: [
- [
- require.resolve("@cmfcmf/docusaurus-search-local"),
- {
- style: undefined
- }
- ],
- ],
+ plugins: [],
};
module.exports = config;
diff --git a/mirror-docs/package.json b/mirror-docs/package.json
index ec068e93..f1a35000 100644
--- a/mirror-docs/package.json
+++ b/mirror-docs/package.json
@@ -15,7 +15,6 @@
"typecheck": "tsc"
},
"dependencies": {
- "@cmfcmf/docusaurus-search-local": "^1.1.0",
"@docusaurus/core": "^3.2.0",
"@docusaurus/preset-classic": "^3.2.0",
"@mdx-js/react": "^3.0.0",
diff --git a/mirror-docs/vercel.json b/mirror-docs/vercel.json
new file mode 100644
index 00000000..9936715b
--- /dev/null
+++ b/mirror-docs/vercel.json
@@ -0,0 +1,9 @@
+{
+ "redirects": [
+ {
+ "source": "/docs/tutorial",
+ "destination": "/docs/tutorials",
+ "permanent": true
+ }
+ ]
+}
diff --git a/mirror-docs/yarn.lock b/mirror-docs/yarn.lock
index 3008df13..4c5ed305 100644
--- a/mirror-docs/yarn.lock
+++ b/mirror-docs/yarn.lock
@@ -2,14 +2,6 @@
# yarn lockfile v1
-"@algolia/autocomplete-core@1.17.0":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.0.tgz#b9e62d9677dc0ee818bb59d917ff58908356a9a0"
- integrity sha512-6E4sVb5+fGtSQs9mULlxUH84OWFUVZPMapa5dMCtUc7KyDRLY6+X/dA8xbDA8CX5phdBn1plLUET1B6NZnrZuw==
- dependencies:
- "@algolia/autocomplete-plugin-algolia-insights" "1.17.0"
- "@algolia/autocomplete-shared" "1.17.0"
-
"@algolia/autocomplete-core@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7"
@@ -18,24 +10,6 @@
"@algolia/autocomplete-plugin-algolia-insights" "1.9.3"
"@algolia/autocomplete-shared" "1.9.3"
-"@algolia/autocomplete-js@^1.8.2":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-js/-/autocomplete-js-1.17.0.tgz#91f0ef2232646316a26c79dadbeb2e7791de623c"
- integrity sha512-RbD98hXtZOl6VohSAo7kMOFWQHR1x4wWaJFadJradFQ1TAA9hFEyirSIM+yT96UpKkdi08V2EBI+YwZ3/VETvw==
- dependencies:
- "@algolia/autocomplete-core" "1.17.0"
- "@algolia/autocomplete-preset-algolia" "1.17.0"
- "@algolia/autocomplete-shared" "1.17.0"
- htm "^3.1.1"
- preact "^10.13.2"
-
-"@algolia/autocomplete-plugin-algolia-insights@1.17.0":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.0.tgz#dcec9b03a47375860a9f927816a1275d885ebdff"
- integrity sha512-zbWImu+VxBDzUQONEhQXq3OzlipHLEtWbL4Nf/VOb1p1qHG/f96jCegOzzEZVPiQvZpRJnmhCUmsYNHlIBxKWw==
- dependencies:
- "@algolia/autocomplete-shared" "1.17.0"
-
"@algolia/autocomplete-plugin-algolia-insights@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587"
@@ -43,13 +17,6 @@
dependencies:
"@algolia/autocomplete-shared" "1.9.3"
-"@algolia/autocomplete-preset-algolia@1.17.0":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.0.tgz#9d7d9673a922d75dfbedd3119e7ffa76f4c118c6"
- integrity sha512-DhTkMs/9BzThhTU2nSTpQxVxHLzaRDZLid4Tf56D8s9IhEGfmzbNuLRmJNzgAOPv1smHtUErndmC+S9QNMDEJA==
- dependencies:
- "@algolia/autocomplete-shared" "1.17.0"
-
"@algolia/autocomplete-preset-algolia@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da"
@@ -57,146 +24,136 @@
dependencies:
"@algolia/autocomplete-shared" "1.9.3"
-"@algolia/autocomplete-shared@1.17.0":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.0.tgz#7d0a8e504fe555c48df7ae6854d3d6633b0b32f5"
- integrity sha512-7su4KH/2q2Fhud2VujUNhCMbIh7yp6wqWR3UuVje5P3kDRhTotPRmg3iRQi48YRYkk9o+airsrLl+rxJ/9FWng==
-
"@algolia/autocomplete-shared@1.9.3":
version "1.9.3"
resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa"
integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==
-"@algolia/autocomplete-theme-classic@^1.8.2":
- version "1.17.0"
- resolved "https://registry.yarnpkg.com/@algolia/autocomplete-theme-classic/-/autocomplete-theme-classic-1.17.0.tgz#bbd79df8f5240b3ddd3f9cdc9b8273753f15cd25"
- integrity sha512-FsW/J/mG1YIPv93/QQ7KxMVNXAiVi9accGgoK2y3zDz58WpVgUug97SUoQzP4I9EMZAZAHQo0QbWXxpqTWkcOA==
-
-"@algolia/cache-browser-local-storage@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.2.tgz#060d15e89588fcac18e73643201fce0f4f7d5ca0"
- integrity sha512-PvRQdCmtiU22dw9ZcTJkrVKgNBVAxKgD0/cfiqyxhA5+PHzA2WDt6jOmZ9QASkeM2BpyzClJb/Wr1yt2/t78Kw==
+"@algolia/cache-browser-local-storage@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.23.3.tgz#0cc26b96085e1115dac5fcb9d826651ba57faabc"
+ integrity sha512-vRHXYCpPlTDE7i6UOy2xE03zHF2C8MEFjPN2v7fRbqVpcOvAUQK81x3Kc21xyb5aSIpYCjWCZbYZuz8Glyzyyg==
dependencies:
- "@algolia/cache-common" "4.23.2"
+ "@algolia/cache-common" "4.23.3"
-"@algolia/cache-common@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.23.2.tgz#c68706ce34b18377e56e71ac13cce2dd5662dcee"
- integrity sha512-OUK/6mqr6CQWxzl/QY0/mwhlGvS6fMtvEPyn/7AHUx96NjqDA4X4+Ju7aXFQKh+m3jW9VPB0B9xvEQgyAnRPNw==
+"@algolia/cache-common@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.23.3.tgz#3bec79092d512a96c9bfbdeec7cff4ad36367166"
+ integrity sha512-h9XcNI6lxYStaw32pHpB1TMm0RuxphF+Ik4o7tcQiodEdpKK+wKufY6QXtba7t3k8eseirEMVB83uFFF3Nu54A==
-"@algolia/cache-in-memory@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.23.2.tgz#94cd828275d7a12186959bf1b95a13247e103b23"
- integrity sha512-rfbi/SnhEa3MmlqQvgYz/9NNJ156NkU6xFxjbxBtLWnHbpj+qnlMoKd+amoiacHRITpajg6zYbLM9dnaD3Bczw==
+"@algolia/cache-in-memory@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.23.3.tgz#3945f87cd21ffa2bec23890c85305b6b11192423"
+ integrity sha512-yvpbuUXg/+0rbcagxNT7un0eo3czx2Uf0y4eiR4z4SD7SiptwYTpbuS0IHxcLHG3lq22ukx1T6Kjtk/rT+mqNg==
dependencies:
- "@algolia/cache-common" "4.23.2"
+ "@algolia/cache-common" "4.23.3"
-"@algolia/client-account@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.23.2.tgz#b53cb14e730fd8e0a0a227cf650b287b570a08bc"
- integrity sha512-VbrOCLIN/5I7iIdskSoSw3uOUPF516k4SjDD4Qz3BFwa3of7D9A0lzBMAvQEJJEPHWdVraBJlGgdJq/ttmquJQ==
+"@algolia/client-account@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.23.3.tgz#8751bbf636e6741c95e7c778488dee3ee430ac6f"
+ integrity sha512-hpa6S5d7iQmretHHF40QGq6hz0anWEHGlULcTIT9tbUssWUriN9AUXIFQ8Ei4w9azD0hc1rUok9/DeQQobhQMA==
dependencies:
- "@algolia/client-common" "4.23.2"
- "@algolia/client-search" "4.23.2"
- "@algolia/transporter" "4.23.2"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/client-search" "4.23.3"
+ "@algolia/transporter" "4.23.3"
-"@algolia/client-analytics@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.23.2.tgz#7fdcf1cb27f0ae93e5da6beb4e612fc06a880b0c"
- integrity sha512-lLj7irsAztGhMoEx/SwKd1cwLY6Daf1Q5f2AOsZacpppSvuFvuBrmkzT7pap1OD/OePjLKxicJS8wNA0+zKtuw==
+"@algolia/client-analytics@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.23.3.tgz#f88710885278fe6fb6964384af59004a5a6f161d"
+ integrity sha512-LBsEARGS9cj8VkTAVEZphjxTjMVCci+zIIiRhpFun9jGDUlS1XmhCW7CTrnaWeIuCQS/2iPyRqSy1nXPjcBLRA==
dependencies:
- "@algolia/client-common" "4.23.2"
- "@algolia/client-search" "4.23.2"
- "@algolia/requester-common" "4.23.2"
- "@algolia/transporter" "4.23.2"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/client-search" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/transporter" "4.23.3"
-"@algolia/client-common@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.23.2.tgz#e5f86fc2de707eb6bf9f1109b70187dae179c72c"
- integrity sha512-Q2K1FRJBern8kIfZ0EqPvUr3V29ICxCm/q42zInV+VJRjldAD9oTsMGwqUQ26GFMdFYmqkEfCbY4VGAiQhh22g==
+"@algolia/client-common@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.23.3.tgz#891116aa0db75055a7ecc107649f7f0965774704"
+ integrity sha512-l6EiPxdAlg8CYhroqS5ybfIczsGUIAC47slLPOMDeKSVXYG1n0qGiz4RjAHLw2aD0xzh2EXZ7aRguPfz7UKDKw==
dependencies:
- "@algolia/requester-common" "4.23.2"
- "@algolia/transporter" "4.23.2"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/transporter" "4.23.3"
-"@algolia/client-personalization@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.23.2.tgz#0472d9c207402eefcc9c98f7ffba5d26fe8e2fd0"
- integrity sha512-vwPsgnCGhUcHhhQG5IM27z8q7dWrN9itjdvgA6uKf2e9r7vB+WXt4OocK0CeoYQt3OGEAExryzsB8DWqdMK5wg==
+"@algolia/client-personalization@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.23.3.tgz#35fa8e5699b0295fbc400a8eb211dc711e5909db"
+ integrity sha512-3E3yF3Ocr1tB/xOZiuC3doHQBQ2zu2MPTYZ0d4lpfWads2WTKG7ZzmGnsHmm63RflvDeLK/UVx7j2b3QuwKQ2g==
dependencies:
- "@algolia/client-common" "4.23.2"
- "@algolia/requester-common" "4.23.2"
- "@algolia/transporter" "4.23.2"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/transporter" "4.23.3"
-"@algolia/client-search@4.23.2", "@algolia/client-search@^4.12.0":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.23.2.tgz#9b2741f0a209596459f06a44583118207ea287f7"
- integrity sha512-CxSB29OVGSE7l/iyoHvamMonzq7Ev8lnk/OkzleODZ1iBcCs3JC/XgTIKzN/4RSTrJ9QybsnlrN/bYCGufo7qw==
+"@algolia/client-search@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.23.3.tgz#a3486e6af13a231ec4ab43a915a1f318787b937f"
+ integrity sha512-P4VAKFHqU0wx9O+q29Q8YVuaowaZ5EM77rxfmGnkHUJggh28useXQdopokgwMeYw2XUht49WX5RcTQ40rZIabw==
dependencies:
- "@algolia/client-common" "4.23.2"
- "@algolia/requester-common" "4.23.2"
- "@algolia/transporter" "4.23.2"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/transporter" "4.23.3"
"@algolia/events@^4.0.1":
version "4.0.1"
resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950"
integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==
-"@algolia/logger-common@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.23.2.tgz#5441a828f0fad1ceaae3a27caec7b663d40dd27f"
- integrity sha512-jGM49Q7626cXZ7qRAWXn0jDlzvoA1FvN4rKTi1g0hxKsTTSReyYk0i1ADWjChDPl3Q+nSDhJuosM2bBUAay7xw==
-
-"@algolia/logger-console@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.23.2.tgz#fda4252bb02df7c52a92c63f1e357bf7370cc8db"
- integrity sha512-oo+lnxxEmlhTBTFZ3fGz1O8PJ+G+8FiAoMY2Qo3Q4w23xocQev6KqDTA1JQAGPDxAewNA2VBwWOsVXeXFjrI/Q==
- dependencies:
- "@algolia/logger-common" "4.23.2"
-
-"@algolia/recommend@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.23.2.tgz#02bf57f836ced2c850633239d493a0414be76a7f"
- integrity sha512-Q75CjnzRCDzgIlgWfPnkLtrfF4t82JCirhalXkSSwe/c1GH5pWh4xUyDOR3KTMo+YxxX3zTlrL/FjHmUJEWEcg==
- dependencies:
- "@algolia/cache-browser-local-storage" "4.23.2"
- "@algolia/cache-common" "4.23.2"
- "@algolia/cache-in-memory" "4.23.2"
- "@algolia/client-common" "4.23.2"
- "@algolia/client-search" "4.23.2"
- "@algolia/logger-common" "4.23.2"
- "@algolia/logger-console" "4.23.2"
- "@algolia/requester-browser-xhr" "4.23.2"
- "@algolia/requester-common" "4.23.2"
- "@algolia/requester-node-http" "4.23.2"
- "@algolia/transporter" "4.23.2"
-
-"@algolia/requester-browser-xhr@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.2.tgz#2d0a6b642e2a2bbfb2e2ff3d1e82158e3e143def"
- integrity sha512-TO9wLlp8+rvW9LnIfyHsu8mNAMYrqNdQ0oLF6eTWFxXfxG3k8F/Bh7nFYGk2rFAYty4Fw4XUtrv/YjeNDtM5og==
- dependencies:
- "@algolia/requester-common" "4.23.2"
-
-"@algolia/requester-common@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.23.2.tgz#9c2e5da4dc15e65f9b9bbe5bedb419cf23092ef1"
- integrity sha512-3EfpBS0Hri0lGDB5H/BocLt7Vkop0bTTLVUBB844HH6tVycwShmsV6bDR7yXbQvFP1uNpgePRD3cdBCjeHmk6Q==
-
-"@algolia/requester-node-http@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.23.2.tgz#718ae71f58949eab3b5fcfc440be42af41bd640f"
- integrity sha512-SVzgkZM/malo+2SB0NWDXpnT7nO5IZwuDTaaH6SjLeOHcya1o56LSWXk+3F3rNLz2GVH+I/rpYKiqmHhSOjerw==
- dependencies:
- "@algolia/requester-common" "4.23.2"
-
-"@algolia/transporter@4.23.2":
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.23.2.tgz#61e7b9288d4f561b2015ddde689ba31e08c21644"
- integrity sha512-GY3aGKBy+8AK4vZh8sfkatDciDVKad5rTY2S10Aefyjh7e7UGBP4zigf42qVXwU8VOPwi7l/L7OACGMOFcjB0Q==
- dependencies:
- "@algolia/cache-common" "4.23.2"
- "@algolia/logger-common" "4.23.2"
- "@algolia/requester-common" "4.23.2"
+"@algolia/logger-common@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.23.3.tgz#35c6d833cbf41e853a4f36ba37c6e5864920bfe9"
+ integrity sha512-y9kBtmJwiZ9ZZ+1Ek66P0M68mHQzKRxkW5kAAXYN/rdzgDN0d2COsViEFufxJ0pb45K4FRcfC7+33YB4BLrZ+g==
+
+"@algolia/logger-console@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.23.3.tgz#30f916781826c4db5f51fcd9a8a264a06e136985"
+ integrity sha512-8xoiseoWDKuCVnWP8jHthgaeobDLolh00KJAdMe9XPrWPuf1by732jSpgy2BlsLTaT9m32pHI8CRfrOqQzHv3A==
+ dependencies:
+ "@algolia/logger-common" "4.23.3"
+
+"@algolia/recommend@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.23.3.tgz#53d4f194d22d9c72dc05f3f7514c5878f87c5890"
+ integrity sha512-9fK4nXZF0bFkdcLBRDexsnGzVmu4TSYZqxdpgBW2tEyfuSSY54D4qSRkLmNkrrz4YFvdh2GM1gA8vSsnZPR73w==
+ dependencies:
+ "@algolia/cache-browser-local-storage" "4.23.3"
+ "@algolia/cache-common" "4.23.3"
+ "@algolia/cache-in-memory" "4.23.3"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/client-search" "4.23.3"
+ "@algolia/logger-common" "4.23.3"
+ "@algolia/logger-console" "4.23.3"
+ "@algolia/requester-browser-xhr" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/requester-node-http" "4.23.3"
+ "@algolia/transporter" "4.23.3"
+
+"@algolia/requester-browser-xhr@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.23.3.tgz#9e47e76f60d540acc8b27b4ebc7a80d1b41938b9"
+ integrity sha512-jDWGIQ96BhXbmONAQsasIpTYWslyjkiGu0Quydjlowe+ciqySpiDUrJHERIRfELE5+wFc7hc1Q5hqjGoV7yghw==
+ dependencies:
+ "@algolia/requester-common" "4.23.3"
+
+"@algolia/requester-common@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.23.3.tgz#7dbae896e41adfaaf1d1fa5f317f83a99afb04b3"
+ integrity sha512-xloIdr/bedtYEGcXCiF2muajyvRhwop4cMZo+K2qzNht0CMzlRkm8YsDdj5IaBhshqfgmBb3rTg4sL4/PpvLYw==
+
+"@algolia/requester-node-http@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.23.3.tgz#c9f94a5cb96a15f48cea338ab6ef16bbd0ff989f"
+ integrity sha512-zgu++8Uj03IWDEJM3fuNl34s746JnZOWn1Uz5taV1dFyJhVM/kTNw9Ik7YJWiUNHJQXcaD8IXD1eCb0nq/aByA==
+ dependencies:
+ "@algolia/requester-common" "4.23.3"
+
+"@algolia/transporter@4.23.3":
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.23.3.tgz#545b045b67db3850ddf0bbecbc6c84ff1f3398b7"
+ integrity sha512-Wjl5gttqnf/gQKJA+dafnD0Y6Yw97yvfY8R9h0dQltX1GXTgNs1zWgvtWW0tHl1EgMdhAyw189uWiZMnL3QebQ==
+ dependencies:
+ "@algolia/cache-common" "4.23.3"
+ "@algolia/logger-common" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
"@ampproject/remapping@^2.2.0":
version "2.3.0"
@@ -206,7 +163,7 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3":
version "7.24.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
@@ -214,38 +171,38 @@
"@babel/highlight" "^7.24.2"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742"
- integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==
+"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4":
+ version "7.24.4"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a"
+ integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==
-"@babel/core@^7.19.6", "@babel/core@^7.23.3":
- version "7.24.3"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3"
- integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==
+"@babel/core@^7.21.3", "@babel/core@^7.23.3":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a"
+ integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==
dependencies:
"@ampproject/remapping" "^2.2.0"
"@babel/code-frame" "^7.24.2"
- "@babel/generator" "^7.24.1"
+ "@babel/generator" "^7.24.5"
"@babel/helper-compilation-targets" "^7.23.6"
- "@babel/helper-module-transforms" "^7.23.3"
- "@babel/helpers" "^7.24.1"
- "@babel/parser" "^7.24.1"
+ "@babel/helper-module-transforms" "^7.24.5"
+ "@babel/helpers" "^7.24.5"
+ "@babel/parser" "^7.24.5"
"@babel/template" "^7.24.0"
- "@babel/traverse" "^7.24.1"
- "@babel/types" "^7.24.0"
+ "@babel/traverse" "^7.24.5"
+ "@babel/types" "^7.24.5"
convert-source-map "^2.0.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.2.3"
semver "^6.3.1"
-"@babel/generator@^7.23.3", "@babel/generator@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0"
- integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==
+"@babel/generator@^7.23.3", "@babel/generator@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3"
+ integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==
dependencies:
- "@babel/types" "^7.24.0"
+ "@babel/types" "^7.24.5"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
@@ -275,19 +232,19 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz#db58bf57137b623b916e24874ab7188d93d7f68f"
- integrity sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==
+"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723"
+ integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-function-name" "^7.23.0"
- "@babel/helper-member-expression-to-functions" "^7.23.0"
+ "@babel/helper-member-expression-to-functions" "^7.24.5"
"@babel/helper-optimise-call-expression" "^7.22.5"
"@babel/helper-replace-supers" "^7.24.1"
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-split-export-declaration" "^7.24.5"
semver "^6.3.1"
"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5":
@@ -299,10 +256,10 @@
regexpu-core "^5.3.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.1":
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd"
- integrity sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==
+"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2":
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d"
+ integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==
dependencies:
"@babel/helper-compilation-targets" "^7.22.6"
"@babel/helper-plugin-utils" "^7.22.5"
@@ -315,7 +272,7 @@
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167"
integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==
-"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0":
+"@babel/helper-function-name@^7.23.0":
version "7.23.0"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759"
integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==
@@ -330,12 +287,12 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-member-expression-to-functions@^7.23.0":
- version "7.23.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366"
- integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==
+"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475"
+ integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==
dependencies:
- "@babel/types" "^7.23.0"
+ "@babel/types" "^7.24.5"
"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3":
version "7.24.3"
@@ -344,16 +301,16 @@
dependencies:
"@babel/types" "^7.24.0"
-"@babel/helper-module-transforms@^7.23.3":
- version "7.23.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1"
- integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==
+"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545"
+ integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==
dependencies:
"@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-module-imports" "^7.24.3"
+ "@babel/helper-simple-access" "^7.24.5"
+ "@babel/helper-split-export-declaration" "^7.24.5"
+ "@babel/helper-validator-identifier" "^7.24.5"
"@babel/helper-optimise-call-expression@^7.22.5":
version "7.22.5"
@@ -362,10 +319,10 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.24.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a"
- integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a"
+ integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==
"@babel/helper-remap-async-to-generator@^7.22.20":
version "7.22.20"
@@ -385,12 +342,12 @@
"@babel/helper-member-expression-to-functions" "^7.23.0"
"@babel/helper-optimise-call-expression" "^7.22.5"
-"@babel/helper-simple-access@^7.22.5":
- version "7.22.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
- integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba"
+ integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==
dependencies:
- "@babel/types" "^7.22.5"
+ "@babel/types" "^7.24.5"
"@babel/helper-skip-transparent-expression-wrappers@^7.22.5":
version "7.22.5"
@@ -399,22 +356,22 @@
dependencies:
"@babel/types" "^7.22.5"
-"@babel/helper-split-export-declaration@^7.22.6":
- version "7.22.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c"
- integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==
+"@babel/helper-split-export-declaration@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6"
+ integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==
dependencies:
- "@babel/types" "^7.22.5"
+ "@babel/types" "^7.24.5"
-"@babel/helper-string-parser@^7.23.4":
+"@babel/helper-string-parser@^7.24.1":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
-"@babel/helper-validator-identifier@^7.22.20":
- version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
- integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
+ integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
"@babel/helper-validator-option@^7.23.5":
version "7.23.5"
@@ -422,37 +379,45 @@
integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==
"@babel/helper-wrap-function@^7.22.20":
- version "7.22.20"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569"
- integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09"
+ integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==
dependencies:
- "@babel/helper-function-name" "^7.22.5"
- "@babel/template" "^7.22.15"
- "@babel/types" "^7.22.19"
+ "@babel/helper-function-name" "^7.23.0"
+ "@babel/template" "^7.24.0"
+ "@babel/types" "^7.24.5"
-"@babel/helpers@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94"
- integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==
+"@babel/helpers@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a"
+ integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==
dependencies:
"@babel/template" "^7.24.0"
- "@babel/traverse" "^7.24.1"
- "@babel/types" "^7.24.0"
+ "@babel/traverse" "^7.24.5"
+ "@babel/types" "^7.24.5"
"@babel/highlight@^7.24.2":
- version "7.24.2"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26"
- integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e"
+ integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==
dependencies:
- "@babel/helper-validator-identifier" "^7.22.20"
+ "@babel/helper-validator-identifier" "^7.24.5"
chalk "^2.4.2"
js-tokens "^4.0.0"
picocolors "^1.0.0"
-"@babel/parser@^7.24.0", "@babel/parser@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a"
- integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==
+"@babel/parser@^7.24.0", "@babel/parser@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
+ integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
+
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895"
+ integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.20"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1":
version "7.24.1"
@@ -657,12 +622,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-transform-block-scoping@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz#27af183d7f6dad890531256c7a45019df768ac1f"
- integrity sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==
+"@babel/plugin-transform-block-scoping@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a"
+ integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-transform-class-properties@^7.24.1":
version "7.24.1"
@@ -672,27 +637,27 @@
"@babel/helper-create-class-features-plugin" "^7.24.1"
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-transform-class-static-block@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz#4e37efcca1d9f2fcb908d1bae8b56b4b6e9e1cb6"
- integrity sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==
+"@babel/plugin-transform-class-static-block@^7.24.4":
+ version "7.24.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4"
+ integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.24.1"
+ "@babel/helper-create-class-features-plugin" "^7.24.4"
"@babel/helper-plugin-utils" "^7.24.0"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
-"@babel/plugin-transform-classes@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1"
- integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==
+"@babel/plugin-transform-classes@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339"
+ integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
"@babel/helper-compilation-targets" "^7.23.6"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-function-name" "^7.23.0"
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/helper-replace-supers" "^7.24.1"
- "@babel/helper-split-export-declaration" "^7.22.6"
+ "@babel/helper-split-export-declaration" "^7.24.5"
globals "^11.1.0"
"@babel/plugin-transform-computed-properties@^7.24.1":
@@ -703,12 +668,12 @@
"@babel/helper-plugin-utils" "^7.24.0"
"@babel/template" "^7.24.0"
-"@babel/plugin-transform-destructuring@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345"
- integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==
+"@babel/plugin-transform-destructuring@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c"
+ integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-transform-dotall-regex@^7.24.1":
version "7.24.1"
@@ -862,15 +827,15 @@
"@babel/helper-plugin-utils" "^7.24.0"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-transform-object-rest-spread@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff"
- integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==
+"@babel/plugin-transform-object-rest-spread@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef"
+ integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==
dependencies:
"@babel/helper-compilation-targets" "^7.23.6"
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-transform-parameters" "^7.24.1"
+ "@babel/plugin-transform-parameters" "^7.24.5"
"@babel/plugin-transform-object-super@^7.24.1":
version "7.24.1"
@@ -888,21 +853,21 @@
"@babel/helper-plugin-utils" "^7.24.0"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-transform-optional-chaining@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6"
- integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==
+"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f"
+ integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/helper-skip-transparent-expression-wrappers" "^7.22.5"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
-"@babel/plugin-transform-parameters@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510"
- integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==
+"@babel/plugin-transform-parameters@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62"
+ integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-transform-private-methods@^7.24.1":
version "7.24.1"
@@ -912,14 +877,14 @@
"@babel/helper-create-class-features-plugin" "^7.24.1"
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-transform-private-property-in-object@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a"
- integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==
+"@babel/plugin-transform-private-property-in-object@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5"
+ integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
- "@babel/helper-create-class-features-plugin" "^7.24.1"
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-create-class-features-plugin" "^7.24.5"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-transform-property-literals@^7.24.1":
@@ -929,7 +894,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-transform-react-constant-elements@^7.18.12":
+"@babel/plugin-transform-react-constant-elements@^7.21.3":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d"
integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA==
@@ -1025,21 +990,21 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/plugin-transform-typeof-symbol@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7"
- integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==
+"@babel/plugin-transform-typeof-symbol@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12"
+ integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==
dependencies:
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-transform-typescript@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.1.tgz#5c05e28bb76c7dfe7d6c5bed9951324fd2d3ab07"
- integrity sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8"
+ integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.22.5"
- "@babel/helper-create-class-features-plugin" "^7.24.1"
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-create-class-features-plugin" "^7.24.5"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/plugin-syntax-typescript" "^7.24.1"
"@babel/plugin-transform-unicode-escapes@^7.24.1":
@@ -1073,15 +1038,16 @@
"@babel/helper-create-regexp-features-plugin" "^7.22.15"
"@babel/helper-plugin-utils" "^7.24.0"
-"@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.9":
- version "7.24.3"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.3.tgz#f3f138c844ffeeac372597b29c51b5259e8323a3"
- integrity sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==
+"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd"
+ integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==
dependencies:
- "@babel/compat-data" "^7.24.1"
+ "@babel/compat-data" "^7.24.4"
"@babel/helper-compilation-targets" "^7.23.6"
- "@babel/helper-plugin-utils" "^7.24.0"
+ "@babel/helper-plugin-utils" "^7.24.5"
"@babel/helper-validator-option" "^7.23.5"
+ "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1"
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1"
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1"
@@ -1108,12 +1074,12 @@
"@babel/plugin-transform-async-generator-functions" "^7.24.3"
"@babel/plugin-transform-async-to-generator" "^7.24.1"
"@babel/plugin-transform-block-scoped-functions" "^7.24.1"
- "@babel/plugin-transform-block-scoping" "^7.24.1"
+ "@babel/plugin-transform-block-scoping" "^7.24.5"
"@babel/plugin-transform-class-properties" "^7.24.1"
- "@babel/plugin-transform-class-static-block" "^7.24.1"
- "@babel/plugin-transform-classes" "^7.24.1"
+ "@babel/plugin-transform-class-static-block" "^7.24.4"
+ "@babel/plugin-transform-classes" "^7.24.5"
"@babel/plugin-transform-computed-properties" "^7.24.1"
- "@babel/plugin-transform-destructuring" "^7.24.1"
+ "@babel/plugin-transform-destructuring" "^7.24.5"
"@babel/plugin-transform-dotall-regex" "^7.24.1"
"@babel/plugin-transform-duplicate-keys" "^7.24.1"
"@babel/plugin-transform-dynamic-import" "^7.24.1"
@@ -1133,13 +1099,13 @@
"@babel/plugin-transform-new-target" "^7.24.1"
"@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1"
"@babel/plugin-transform-numeric-separator" "^7.24.1"
- "@babel/plugin-transform-object-rest-spread" "^7.24.1"
+ "@babel/plugin-transform-object-rest-spread" "^7.24.5"
"@babel/plugin-transform-object-super" "^7.24.1"
"@babel/plugin-transform-optional-catch-binding" "^7.24.1"
- "@babel/plugin-transform-optional-chaining" "^7.24.1"
- "@babel/plugin-transform-parameters" "^7.24.1"
+ "@babel/plugin-transform-optional-chaining" "^7.24.5"
+ "@babel/plugin-transform-parameters" "^7.24.5"
"@babel/plugin-transform-private-methods" "^7.24.1"
- "@babel/plugin-transform-private-property-in-object" "^7.24.1"
+ "@babel/plugin-transform-private-property-in-object" "^7.24.5"
"@babel/plugin-transform-property-literals" "^7.24.1"
"@babel/plugin-transform-regenerator" "^7.24.1"
"@babel/plugin-transform-reserved-words" "^7.24.1"
@@ -1147,7 +1113,7 @@
"@babel/plugin-transform-spread" "^7.24.1"
"@babel/plugin-transform-sticky-regex" "^7.24.1"
"@babel/plugin-transform-template-literals" "^7.24.1"
- "@babel/plugin-transform-typeof-symbol" "^7.24.1"
+ "@babel/plugin-transform-typeof-symbol" "^7.24.5"
"@babel/plugin-transform-unicode-escapes" "^7.24.1"
"@babel/plugin-transform-unicode-property-regex" "^7.24.1"
"@babel/plugin-transform-unicode-regex" "^7.24.1"
@@ -1180,7 +1146,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.22.5"
"@babel/plugin-transform-react-pure-annotations" "^7.24.1"
-"@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5":
+"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5":
version "7.24.1"
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec"
integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==
@@ -1197,17 +1163,17 @@
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
"@babel/runtime-corejs3@^7.22.6":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.1.tgz#f39707b213441dec645ce8285ae14f281a5077c6"
- integrity sha512-T9ko/35G+Bkl+win48GduaPlhSlOjjE5s1TeiEcD+QpxlLQnoEfb/nO/T+TQqkm+ipFwORn+rB8w14iJ/uD0bg==
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz#d2a5f46a088caf8f3899ad095054f83b0a686194"
+ integrity sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==
dependencies:
core-js-pure "^3.30.2"
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.8.4":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.1.tgz#431f9a794d173b53720e69a6464abc6f0e2a5c57"
- integrity sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c"
+ integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==
dependencies:
regenerator-runtime "^0.14.0"
@@ -1220,45 +1186,31 @@
"@babel/parser" "^7.24.0"
"@babel/types" "^7.24.0"
-"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.1":
- version "7.24.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c"
- integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==
+"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.5":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8"
+ integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==
dependencies:
- "@babel/code-frame" "^7.24.1"
- "@babel/generator" "^7.24.1"
+ "@babel/code-frame" "^7.24.2"
+ "@babel/generator" "^7.24.5"
"@babel/helper-environment-visitor" "^7.22.20"
"@babel/helper-function-name" "^7.23.0"
"@babel/helper-hoist-variables" "^7.22.5"
- "@babel/helper-split-export-declaration" "^7.22.6"
- "@babel/parser" "^7.24.1"
- "@babel/types" "^7.24.0"
+ "@babel/helper-split-export-declaration" "^7.24.5"
+ "@babel/parser" "^7.24.5"
+ "@babel/types" "^7.24.5"
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.20.0", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.4.4":
- version "7.24.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf"
- integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==
+"@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.4.4":
+ version "7.24.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
+ integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==
dependencies:
- "@babel/helper-string-parser" "^7.23.4"
- "@babel/helper-validator-identifier" "^7.22.20"
+ "@babel/helper-string-parser" "^7.24.1"
+ "@babel/helper-validator-identifier" "^7.24.5"
to-fast-properties "^2.0.0"
-"@cmfcmf/docusaurus-search-local@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@cmfcmf/docusaurus-search-local/-/docusaurus-search-local-1.1.0.tgz#3db5d7d6e05985cc3b06cec10436385c53033c69"
- integrity sha512-0IVb/aA0IK8ZlktuxmgXmluXfcSpo6Vdd2nG21y1aOH9nVYnPP231Dn0H8Ng9Qf9ronQQCDWHnuWpYOr9rUrEQ==
- dependencies:
- "@algolia/autocomplete-js" "^1.8.2"
- "@algolia/autocomplete-theme-classic" "^1.8.2"
- "@algolia/client-search" "^4.12.0"
- algoliasearch "^4.12.0"
- cheerio "^1.0.0-rc.9"
- clsx "^1.1.1"
- lunr-languages "^1.4.0"
- mark.js "^8.11.1"
-
"@colors/colors@1.5.0":
version "1.5.0"
resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
@@ -1284,10 +1236,10 @@
"@docsearch/css" "3.6.0"
algoliasearch "^4.19.1"
-"@docusaurus/core@3.2.0", "@docusaurus/core@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.2.0.tgz#10acb993fb76960890d1aa43025245aaa8dcdbbb"
- integrity sha512-WTO6vW4404nhTmK9NL+95nd13I1JveFwZ8iOBYxb4xt+N2S3KzY+mm+1YtWw2vV37FbYfH+w+KrlrRaWuy5Hzw==
+"@docusaurus/core@3.3.2", "@docusaurus/core@^3.2.0":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.3.2.tgz#67b8cd5329b32f47515ecf12eb7aa306dfc69922"
+ integrity sha512-PzKMydKI3IU1LmeZQDi+ut5RSuilbXnA8QdowGeJEgU8EJjmx3rBHNT1LxQxOVqNEwpWi/csLwd9bn7rUjggPA==
dependencies:
"@babel/core" "^7.23.3"
"@babel/generator" "^7.23.3"
@@ -1299,14 +1251,12 @@
"@babel/runtime" "^7.22.6"
"@babel/runtime-corejs3" "^7.22.6"
"@babel/traverse" "^7.22.8"
- "@docusaurus/cssnano-preset" "3.2.0"
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/react-loadable" "5.5.2"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
- "@svgr/webpack" "^6.5.1"
+ "@docusaurus/cssnano-preset" "3.3.2"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
autoprefixer "^10.4.14"
babel-loader "^9.1.3"
babel-plugin-dynamic-import-node "^2.3.3"
@@ -1320,8 +1270,8 @@
copy-webpack-plugin "^11.0.0"
core-js "^3.31.1"
css-loader "^6.8.1"
- css-minimizer-webpack-plugin "^4.2.2"
- cssnano "^5.1.15"
+ css-minimizer-webpack-plugin "^5.0.1"
+ cssnano "^6.1.2"
del "^6.1.1"
detect-port "^1.5.1"
escape-html "^1.0.3"
@@ -1341,7 +1291,7 @@
prompts "^2.4.2"
react-dev-utils "^12.0.1"
react-helmet-async "^1.3.0"
- react-loadable "npm:@docusaurus/react-loadable@5.5.2"
+ react-loadable "npm:@docusaurus/react-loadable@6.0.0"
react-loadable-ssr-addon-v5-slorber "^1.0.1"
react-router "^5.3.4"
react-router-config "^5.1.1"
@@ -1360,32 +1310,32 @@
webpack-merge "^5.9.0"
webpackbar "^5.0.2"
-"@docusaurus/cssnano-preset@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.2.0.tgz#0e0fbf19873a726f92e670b9d511e9f2828d6097"
- integrity sha512-H88RXGUia7r/VF3XfyoA4kbwgpUZcKsObF6VvwBOP91EdArTf6lnHbJ/x8Ca79KS/zf98qaWyBGzW+5ez58Iyw==
+"@docusaurus/cssnano-preset@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.3.2.tgz#fb971b3e89fe6821721782124b430b2795faeb38"
+ integrity sha512-+5+epLk/Rp4vFML4zmyTATNc3Is+buMAL6dNjrMWahdJCJlMWMPd/8YfU+2PA57t8mlSbhLJ7vAZVy54cd1vRQ==
dependencies:
- cssnano-preset-advanced "^5.3.10"
- postcss "^8.4.26"
- postcss-sort-media-queries "^4.4.1"
+ cssnano-preset-advanced "^6.1.2"
+ postcss "^8.4.38"
+ postcss-sort-media-queries "^5.2.0"
tslib "^2.6.0"
-"@docusaurus/logger@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.2.0.tgz#99d2b09478bcba69c964ec0c8600d855fb8e9e0f"
- integrity sha512-Z1R1NcOGXZ8CkIJSvjvyxnuDDSlx/+1xlh20iVTw1DZRjonFmI3T3tTgk40YpXyWUYQpIgAoqqPMpuseMMdgRQ==
+"@docusaurus/logger@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.3.2.tgz#f43f7e08d4f5403be6a7196659490053e248325f"
+ integrity sha512-Ldu38GJ4P8g4guN7d7pyCOJ7qQugG7RVyaxrK8OnxuTlaImvQw33aDRwaX2eNmX8YK6v+//Z502F4sOZbHHCHQ==
dependencies:
chalk "^4.1.2"
tslib "^2.6.0"
-"@docusaurus/mdx-loader@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.2.0.tgz#d17f17ae1bb38255643c82705dda719b23c27831"
- integrity sha512-JtkI5o6R/rJSr1Y23cHKz085aBJCvJw3AYHihJ7r+mBX+O8EuQIynG0e6/XpbSCpr7Ino0U50UtxaXcEbFwg9Q==
+"@docusaurus/mdx-loader@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.3.2.tgz#424e3ffac8bcdeba27d8c0eb84a04736702fc187"
+ integrity sha512-AFRxj/aOk3/mfYDPxE3wTbrjeayVRvNSZP7mgMuUlrb2UlPRbSVAFX1k2RbgAJrnTSwMgb92m2BhJgYRfptN3g==
dependencies:
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
"@mdx-js/mdx" "^3.0.0"
"@slorber/remark-comment" "^1.0.0"
escape-html "^1.0.3"
@@ -1408,32 +1358,31 @@
vfile "^6.0.1"
webpack "^5.88.1"
-"@docusaurus/module-type-aliases@3.2.0", "@docusaurus/module-type-aliases@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.2.0.tgz#ef883d8418f37e551eca72adc409014e720786d4"
- integrity sha512-jRSp9YkvBwwNz6Xgy0RJPsnie+Ebb//gy7GdbkJ2pW2gvvlYKGib2+jSF0pfIzvyZLulfCynS1KQdvDKdSl8zQ==
+"@docusaurus/module-type-aliases@3.3.2", "@docusaurus/module-type-aliases@^3.2.0":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.3.2.tgz#02534449d08d080fd52dc9e046932bb600c38b01"
+ integrity sha512-b/XB0TBJah5yKb4LYuJT4buFvL0MGAb0+vJDrJtlYMguRtsEBkf2nWl5xP7h4Dlw6ol0hsHrCYzJ50kNIOEclw==
dependencies:
- "@docusaurus/react-loadable" "5.5.2"
- "@docusaurus/types" "3.2.0"
+ "@docusaurus/types" "3.3.2"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
"@types/react-router-dom" "*"
react-helmet-async "*"
- react-loadable "npm:@docusaurus/react-loadable@5.5.2"
+ react-loadable "npm:@docusaurus/react-loadable@6.0.0"
-"@docusaurus/plugin-content-blog@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.2.0.tgz#b7b43e71634272a80a9532dc166731332391cb4b"
- integrity sha512-MABqwjSicyHmYEfQueMthPCz18JkVxhK3EGhXTSRWwReAZ0UTuw9pG6+Wo+uXAugDaIcJH28rVZSwTDINPm2bw==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+"@docusaurus/plugin-content-blog@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.3.2.tgz#6496714b071447687ead1472e5756bfb1ae065d0"
+ integrity sha512-fJU+dmqp231LnwDJv+BHVWft8pcUS2xVPZdeYH6/ibH1s2wQ/sLcmUrGWyIv/Gq9Ptj8XWjRPMghlxghuPPoxg==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
cheerio "^1.0.0-rc.12"
feed "^4.2.2"
fs-extra "^11.1.1"
@@ -1445,19 +1394,19 @@
utility-types "^3.10.0"
webpack "^5.88.1"
-"@docusaurus/plugin-content-docs@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.2.0.tgz#6e4f727a0cce301b9d9361bf41ca6a978fe79475"
- integrity sha512-uuqhahmsBnirxOz+SXksnWt7+wc+iN4ntxNRH48BUgo7QRNLATWjHCgI8t6zrMJxK4o+QL9DhLaPDlFHs91B3Q==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/module-type-aliases" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+"@docusaurus/plugin-content-docs@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.3.2.tgz#dadfbb94acfb0b74fae12db51f425c4379e30087"
+ integrity sha512-Dm1ri2VlGATTN3VGk1ZRqdRXWa1UlFubjaEL6JaxaK7IIFqN/Esjpl+Xw10R33loHcRww/H76VdEeYayaL76eg==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/module-type-aliases" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
"@types/react-router-config" "^5.0.7"
combine-promises "^1.1.0"
fs-extra "^11.1.1"
@@ -1467,122 +1416,114 @@
utility-types "^3.10.0"
webpack "^5.88.1"
-"@docusaurus/plugin-content-pages@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.2.0.tgz#df28a6ee6b52c4b292a726f29f39b119756caf44"
- integrity sha512-4ofAN7JDsdb4tODO9OIrizWY5DmEJXr0eu+UDIkLqGP+gXXTahJZv8h2mlxO+lPXGXRCVBOfA14OG1hOYJVPwA==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+"@docusaurus/plugin-content-pages@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.3.2.tgz#04fc18d1925618c1102b111b85e6376442c1b7a9"
+ integrity sha512-EKc9fQn5H2+OcGER8x1aR+7URtAGWySUgULfqE/M14+rIisdrBstuEZ4lUPDRrSIexOVClML82h2fDS+GSb8Ew==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
fs-extra "^11.1.1"
tslib "^2.6.0"
webpack "^5.88.1"
-"@docusaurus/plugin-debug@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.2.0.tgz#643d13d403685c2b9bdb3b65bec8050847b920a3"
- integrity sha512-p6WxtO5XZGz66y6QNQtCJwBefq4S6/w75XaXVvH1/2P9uaijvF7R+Cm2EWQZ5WsvA5wl//DFWblyDHRyVC207Q==
+"@docusaurus/plugin-debug@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.3.2.tgz#bb25fac2cb705eff7857b435219faef907ba949e"
+ integrity sha512-oBIBmwtaB+YS0XlmZ3gCO+cMbsGvIYuAKkAopoCh0arVjtlyPbejzPrHuCoRHB9G7abjNZw7zoONOR8+8LM5+Q==
dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
fs-extra "^11.1.1"
react-json-view-lite "^1.2.0"
tslib "^2.6.0"
-"@docusaurus/plugin-google-analytics@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.2.0.tgz#770151947c0ee49500586e9200631852ab97e23a"
- integrity sha512-//TepJTEyAZSvBwHKEbXHu9xT/VkK3wUil2ZakKvQZYfUC01uWn6A1E3toa8R7WhCy1xPUeIukqmJy1Clg8njQ==
+"@docusaurus/plugin-google-analytics@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.3.2.tgz#6e51ee8593c79172ed2b2ac4d33e300f04bfbc87"
+ integrity sha512-jXhrEIhYPSClMBK6/IA8qf1/FBoxqGXZvg7EuBax9HaK9+kL3L0TJIlatd8jQJOMtds8mKw806TOCc3rtEad1A==
dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
tslib "^2.6.0"
-"@docusaurus/plugin-google-gtag@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.2.0.tgz#65fc7ddc242185c3a10e60308471564075229406"
- integrity sha512-3s6zxlaMMb87MW2Rxy6EnSRDs0WDEQPuHilZZH402C8kOrUnIwlhlfjWZ4ZyLDziGl/Eec/DvD0PVqj0qHRomA==
+"@docusaurus/plugin-google-gtag@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.3.2.tgz#f8126dfe1dfa6e722157d7301430da40b97354ba"
+ integrity sha512-vcrKOHGbIDjVnNMrfbNpRQR1x6Jvcrb48kVzpBAOsKbj9rXZm/idjVAXRaewwobHdOrJkfWS/UJoxzK8wyLRBQ==
dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
"@types/gtag.js" "^0.0.12"
tslib "^2.6.0"
-"@docusaurus/plugin-google-tag-manager@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.2.0.tgz#730c28a43ff5073f595509c6cb77ce4311a2e369"
- integrity sha512-rAKtsJ11vPHA7dTAqWCgyIy7AyFRF/lpI77Zd/4HKgqcIvIayVBvL3QtelhUazfYTLTH6ls6kQ9wjMcIFxRiGg==
+"@docusaurus/plugin-google-tag-manager@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.3.2.tgz#7ce4cf4da6ef177d63bd83beafc4a45428ff01e2"
+ integrity sha512-ldkR58Fdeks0vC+HQ+L+bGFSJsotQsipXD+iKXQFvkOfmPIV6QbHRd7IIcm5b6UtwOiK33PylNS++gjyLUmaGw==
dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
tslib "^2.6.0"
-"@docusaurus/plugin-sitemap@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.2.0.tgz#cae7c92a8631072fff39dd5caf5ea7608c795540"
- integrity sha512-gnWDFt6MStjLkdtt63Lzc+14EPSd8B6mzJGJp9GQMvWDUoMAUijUqpVIHYQq+DPMcI4PJZ5I2nsl5XFf1vOldA==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+"@docusaurus/plugin-sitemap@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.3.2.tgz#f64fba6f03ebc14fdf55434aa2219bf80f752a13"
+ integrity sha512-/ZI1+bwZBhAgC30inBsHe3qY9LOZS+79fRGkNdTcGHRMcdAp6Vw2pCd1gzlxd/xU+HXsNP6cLmTOrggmRp3Ujg==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
fs-extra "^11.1.1"
sitemap "^7.1.1"
tslib "^2.6.0"
"@docusaurus/preset-classic@^3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.2.0.tgz#f64d970eace76c61e4f1b4b7d85d9f69d4a2dd0e"
- integrity sha512-t7tXyk8kUgT7hUqEOgSJnPs+Foem9ucuan/a9QVYaVFCDjp92Sb2FpCY8bVasAokYCjodYe2LfpAoSCj5YDYWg==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/plugin-content-blog" "3.2.0"
- "@docusaurus/plugin-content-docs" "3.2.0"
- "@docusaurus/plugin-content-pages" "3.2.0"
- "@docusaurus/plugin-debug" "3.2.0"
- "@docusaurus/plugin-google-analytics" "3.2.0"
- "@docusaurus/plugin-google-gtag" "3.2.0"
- "@docusaurus/plugin-google-tag-manager" "3.2.0"
- "@docusaurus/plugin-sitemap" "3.2.0"
- "@docusaurus/theme-classic" "3.2.0"
- "@docusaurus/theme-common" "3.2.0"
- "@docusaurus/theme-search-algolia" "3.2.0"
- "@docusaurus/types" "3.2.0"
-
-"@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2":
- version "5.5.2"
- resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz#81aae0db81ecafbdaee3651f12804580868fa6ce"
- integrity sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==
- dependencies:
- "@types/react" "*"
- prop-types "^15.6.2"
-
-"@docusaurus/theme-classic@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.2.0.tgz#4aa229f1a4b1b4c138a5c80089f1d8146f56252c"
- integrity sha512-4oSO5BQOJ5ja7WYdL6jK1n4J96tp+VJHamdwao6Ea252sA3W3vvR0otTflG4p4XVjNZH6hlPQoi5lKW0HeRgfQ==
- dependencies:
- "@docusaurus/core" "3.2.0"
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/module-type-aliases" "3.2.0"
- "@docusaurus/plugin-content-blog" "3.2.0"
- "@docusaurus/plugin-content-docs" "3.2.0"
- "@docusaurus/plugin-content-pages" "3.2.0"
- "@docusaurus/theme-common" "3.2.0"
- "@docusaurus/theme-translations" "3.2.0"
- "@docusaurus/types" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.3.2.tgz#1c89b5f35f9e727a1c91bc03eb25a5b42b7d67a6"
+ integrity sha512-1SDS7YIUN1Pg3BmD6TOTjhB7RSBHJRpgIRKx9TpxqyDrJ92sqtZhomDc6UYoMMLQNF2wHFZZVGFjxJhw2VpL+Q==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/plugin-content-blog" "3.3.2"
+ "@docusaurus/plugin-content-docs" "3.3.2"
+ "@docusaurus/plugin-content-pages" "3.3.2"
+ "@docusaurus/plugin-debug" "3.3.2"
+ "@docusaurus/plugin-google-analytics" "3.3.2"
+ "@docusaurus/plugin-google-gtag" "3.3.2"
+ "@docusaurus/plugin-google-tag-manager" "3.3.2"
+ "@docusaurus/plugin-sitemap" "3.3.2"
+ "@docusaurus/theme-classic" "3.3.2"
+ "@docusaurus/theme-common" "3.3.2"
+ "@docusaurus/theme-search-algolia" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+
+"@docusaurus/theme-classic@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.3.2.tgz#44489580e034a6f5b877ec8bfd1203e226b4a4ab"
+ integrity sha512-gepHFcsluIkPb4Im9ukkiO4lXrai671wzS3cKQkY9BXQgdVwsdPf/KS0Vs4Xlb0F10fTz+T3gNjkxNEgSN9M0A==
+ dependencies:
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/module-type-aliases" "3.3.2"
+ "@docusaurus/plugin-content-blog" "3.3.2"
+ "@docusaurus/plugin-content-docs" "3.3.2"
+ "@docusaurus/plugin-content-pages" "3.3.2"
+ "@docusaurus/theme-common" "3.3.2"
+ "@docusaurus/theme-translations" "3.3.2"
+ "@docusaurus/types" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
"@mdx-js/react" "^3.0.0"
clsx "^2.0.0"
copy-text-to-clipboard "^3.2.0"
@@ -1597,18 +1538,18 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-common@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.2.0.tgz#67f5f1a1e265e1f1a5b9fa7bfb4bf7b98dfcf981"
- integrity sha512-sFbw9XviNJJ+760kAcZCQMQ3jkNIznGqa6MQ70E5BnbP+ja36kGgPOfjcsvAcNey1H1Rkhh3p2Mhf4HVLdKVVw==
- dependencies:
- "@docusaurus/mdx-loader" "3.2.0"
- "@docusaurus/module-type-aliases" "3.2.0"
- "@docusaurus/plugin-content-blog" "3.2.0"
- "@docusaurus/plugin-content-docs" "3.2.0"
- "@docusaurus/plugin-content-pages" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
+"@docusaurus/theme-common@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.3.2.tgz#26f8a6d26ea6c297350887f614c6dac73c2ede4a"
+ integrity sha512-kXqSaL/sQqo4uAMQ4fHnvRZrH45Xz2OdJ3ABXDS7YVGPSDTBC8cLebFrRR4YF9EowUHto1UC/EIklJZQMG/usA==
+ dependencies:
+ "@docusaurus/mdx-loader" "3.3.2"
+ "@docusaurus/module-type-aliases" "3.3.2"
+ "@docusaurus/plugin-content-blog" "3.3.2"
+ "@docusaurus/plugin-content-docs" "3.3.2"
+ "@docusaurus/plugin-content-pages" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
"@types/history" "^4.7.11"
"@types/react" "*"
"@types/react-router-config" "*"
@@ -1618,19 +1559,19 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-search-algolia@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.2.0.tgz#05338b37753dd13899fb0296f2c57130e9893dbf"
- integrity sha512-PgvF4qHoqJp8+GfqClUbTF/zYNOsz4De251IuzXon7+7FAXwvb2qmYtA2nEwyMbB7faKOz33Pxzv+y+153KS/g==
+"@docusaurus/theme-search-algolia@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.3.2.tgz#fe669e756697a2ca79784052e26c43a07ea7e449"
+ integrity sha512-qLkfCl29VNBnF1MWiL9IyOQaHxUvicZp69hISyq/xMsNvFKHFOaOfk9xezYod2Q9xx3xxUh9t/QPigIei2tX4w==
dependencies:
"@docsearch/react" "^3.5.2"
- "@docusaurus/core" "3.2.0"
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/plugin-content-docs" "3.2.0"
- "@docusaurus/theme-common" "3.2.0"
- "@docusaurus/theme-translations" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-validation" "3.2.0"
+ "@docusaurus/core" "3.3.2"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/plugin-content-docs" "3.3.2"
+ "@docusaurus/theme-common" "3.3.2"
+ "@docusaurus/theme-translations" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-validation" "3.3.2"
algoliasearch "^4.18.0"
algoliasearch-helper "^3.13.3"
clsx "^2.0.0"
@@ -1640,18 +1581,18 @@
tslib "^2.6.0"
utility-types "^3.10.0"
-"@docusaurus/theme-translations@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.2.0.tgz#02a0e9bd0ed8cebc21a2f1e5b6d252b0e5ee39a9"
- integrity sha512-VXzZJBuyVEmwUYyud+7IgJQEBRM6R2u/s10Rp3DOP19CBQxeKgHYTKkKhFtDeKMHDassb665kjgOi0YlJfUT6w==
+"@docusaurus/theme-translations@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.3.2.tgz#39ad011573ce963f1eda98ded925971ca57c5a52"
+ integrity sha512-bPuiUG7Z8sNpGuTdGnmKl/oIPeTwKr0AXLGu9KaP6+UFfRZiyWbWE87ti97RrevB2ffojEdvchNujparR3jEZQ==
dependencies:
fs-extra "^11.1.1"
tslib "^2.6.0"
-"@docusaurus/types@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.2.0.tgz#c5bfd000ad4f72e9a7e6beff79905f9ea165fcd3"
- integrity sha512-uG3FfTkkkbZIPPNYx6xRfZHKeGyRd/inIT1cqvYt1FobFLd+7WhRXrSBqwJ9JajJjEAjNioRMVFgGofGf/Wdww==
+"@docusaurus/types@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.3.2.tgz#0e17689512b22209a98f22ee80ac56899e94d390"
+ integrity sha512-5p201S7AZhliRxTU7uMKtSsoC8mgPA9bs9b5NQg1IRdRxJfflursXNVsgc3PcMqiUTul/v1s3k3rXXFlRE890w==
dependencies:
"@mdx-js/mdx" "^3.0.0"
"@types/history" "^4.7.11"
@@ -1663,33 +1604,33 @@
webpack "^5.88.1"
webpack-merge "^5.9.0"
-"@docusaurus/utils-common@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.2.0.tgz#6163a2c415d150d6df73a8aceec6004f0ba3bb06"
- integrity sha512-WEQT5L2lT/tBQgDRgeZQAIi9YJBrwEILb1BuObQn1St3T/4K1gx5fWwOT8qdLOov296XLd1FQg9Ywu27aE9svw==
+"@docusaurus/utils-common@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.3.2.tgz#d17868a55a25186bfdb35de317a3878e867f2005"
+ integrity sha512-QWFTLEkPYsejJsLStgtmetMFIA3pM8EPexcZ4WZ7b++gO5jGVH7zsipREnCHzk6+eDgeaXfkR6UPaTt86bp8Og==
dependencies:
tslib "^2.6.0"
-"@docusaurus/utils-validation@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.2.0.tgz#b53463d9dc6eb335a2ad93ed4b3c397162533e6d"
- integrity sha512-rCzMTqwNrBrEOyU8EaD1fYWdig4TDhfj+YLqB8DY68VUAqSIgbY+yshpqFKB0bznFYNBJbn0bGpvVuImQOa/vA==
+"@docusaurus/utils-validation@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.3.2.tgz#7109888d9c9b23eec787b41341809438f54c2aec"
+ integrity sha512-itDgFs5+cbW9REuC7NdXals4V6++KifgVMzoGOOOSIifBQw+8ULhy86u5e1lnptVL0sv8oAjq2alO7I40GR7pA==
dependencies:
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/utils" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/utils" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
joi "^17.9.2"
js-yaml "^4.1.0"
tslib "^2.6.0"
-"@docusaurus/utils@3.2.0":
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.2.0.tgz#1312221d224eb2cbaaaf53d24efca3e1e976db3e"
- integrity sha512-3rgrE7iL60yV2JQivlcoxUNNTK2APmn+OHLUmTvX2pueIM8DEOCEFHpJO4MiWjFO7V/Wq3iA/W1M03JnjdugVw==
+"@docusaurus/utils@3.3.2":
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.3.2.tgz#2571baccb5b7ed53d50b670094139a31a53558df"
+ integrity sha512-f4YMnBVymtkSxONv4Y8js3Gez9IgHX+Lcg6YRMOjVbq8sgCcdYK1lf6SObAuz5qB/mxiSK7tW0M9aaiIaUSUJg==
dependencies:
- "@docusaurus/logger" "3.2.0"
- "@docusaurus/utils-common" "3.2.0"
- "@svgr/webpack" "^6.5.1"
+ "@docusaurus/logger" "3.3.2"
+ "@docusaurus/utils-common" "3.3.2"
+ "@svgr/webpack" "^8.1.0"
escape-string-regexp "^4.0.0"
file-loader "^6.2.0"
fs-extra "^11.1.1"
@@ -1770,7 +1711,7 @@
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
@@ -1907,111 +1848,111 @@
micromark-util-character "^1.1.0"
micromark-util-symbol "^1.0.1"
-"@svgr/babel-plugin-add-jsx-attribute@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba"
- integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==
+"@svgr/babel-plugin-add-jsx-attribute@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22"
+ integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==
-"@svgr/babel-plugin-remove-jsx-attribute@*":
+"@svgr/babel-plugin-remove-jsx-attribute@8.0.0":
version "8.0.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186"
integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==
-"@svgr/babel-plugin-remove-jsx-empty-expression@*":
+"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0":
version "8.0.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44"
integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==
-"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60"
- integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==
-
-"@svgr/babel-plugin-svg-dynamic-title@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4"
- integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==
-
-"@svgr/babel-plugin-svg-em-dimensions@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217"
- integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==
-
-"@svgr/babel-plugin-transform-react-native-svg@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305"
- integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==
-
-"@svgr/babel-plugin-transform-svg-component@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250"
- integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==
-
-"@svgr/babel-preset@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828"
- integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==
- dependencies:
- "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1"
- "@svgr/babel-plugin-remove-jsx-attribute" "*"
- "@svgr/babel-plugin-remove-jsx-empty-expression" "*"
- "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1"
- "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1"
- "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1"
- "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1"
- "@svgr/babel-plugin-transform-svg-component" "^6.5.1"
-
-"@svgr/core@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a"
- integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==
- dependencies:
- "@babel/core" "^7.19.6"
- "@svgr/babel-preset" "^6.5.1"
- "@svgr/plugin-jsx" "^6.5.1"
+"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27"
+ integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==
+
+"@svgr/babel-plugin-svg-dynamic-title@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0"
+ integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==
+
+"@svgr/babel-plugin-svg-em-dimensions@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501"
+ integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==
+
+"@svgr/babel-plugin-transform-react-native-svg@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754"
+ integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==
+
+"@svgr/babel-plugin-transform-svg-component@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e"
+ integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==
+
+"@svgr/babel-preset@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece"
+ integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==
+ dependencies:
+ "@svgr/babel-plugin-add-jsx-attribute" "8.0.0"
+ "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0"
+ "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0"
+ "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0"
+ "@svgr/babel-plugin-svg-dynamic-title" "8.0.0"
+ "@svgr/babel-plugin-svg-em-dimensions" "8.0.0"
+ "@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
+ "@svgr/babel-plugin-transform-svg-component" "8.0.0"
+
+"@svgr/core@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88"
+ integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
+ dependencies:
+ "@babel/core" "^7.21.3"
+ "@svgr/babel-preset" "8.1.0"
camelcase "^6.2.0"
- cosmiconfig "^7.0.1"
+ cosmiconfig "^8.1.3"
+ snake-case "^3.0.4"
-"@svgr/hast-util-to-babel-ast@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2"
- integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==
+"@svgr/hast-util-to-babel-ast@8.0.0":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4"
+ integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==
dependencies:
- "@babel/types" "^7.20.0"
+ "@babel/types" "^7.21.3"
entities "^4.4.0"
-"@svgr/plugin-jsx@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072"
- integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==
+"@svgr/plugin-jsx@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928"
+ integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==
dependencies:
- "@babel/core" "^7.19.6"
- "@svgr/babel-preset" "^6.5.1"
- "@svgr/hast-util-to-babel-ast" "^6.5.1"
+ "@babel/core" "^7.21.3"
+ "@svgr/babel-preset" "8.1.0"
+ "@svgr/hast-util-to-babel-ast" "8.0.0"
svg-parser "^2.0.4"
-"@svgr/plugin-svgo@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84"
- integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==
+"@svgr/plugin-svgo@8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00"
+ integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==
dependencies:
- cosmiconfig "^7.0.1"
- deepmerge "^4.2.2"
- svgo "^2.8.0"
+ cosmiconfig "^8.1.3"
+ deepmerge "^4.3.1"
+ svgo "^3.0.2"
-"@svgr/webpack@^6.5.1":
- version "6.5.1"
- resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-6.5.1.tgz#ecf027814fc1cb2decc29dc92f39c3cf691e40e8"
- integrity sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==
+"@svgr/webpack@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2"
+ integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==
dependencies:
- "@babel/core" "^7.19.6"
- "@babel/plugin-transform-react-constant-elements" "^7.18.12"
- "@babel/preset-env" "^7.19.4"
+ "@babel/core" "^7.21.3"
+ "@babel/plugin-transform-react-constant-elements" "^7.21.3"
+ "@babel/preset-env" "^7.20.2"
"@babel/preset-react" "^7.18.6"
- "@babel/preset-typescript" "^7.18.6"
- "@svgr/core" "^6.5.1"
- "@svgr/plugin-jsx" "^6.5.1"
- "@svgr/plugin-svgo" "^6.5.1"
+ "@babel/preset-typescript" "^7.21.0"
+ "@svgr/core" "8.1.0"
+ "@svgr/plugin-jsx" "8.1.0"
+ "@svgr/plugin-svgo" "8.1.0"
"@szmarczak/http-timer@^5.0.1":
version "5.0.1"
@@ -2083,9 +2024,9 @@
"@types/estree" "*"
"@types/eslint@*":
- version "8.56.6"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.6.tgz#d5dc16cac025d313ee101108ba5714ea10eb3ed0"
- integrity sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==
+ version "8.56.10"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d"
+ integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@@ -2103,9 +2044,9 @@
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33":
- version "4.17.43"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54"
- integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==
+ version "4.19.0"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa"
+ integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -2193,14 +2134,9 @@
"@types/unist" "*"
"@types/mdx@^2.0.0":
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.12.tgz#38db34cc8999b982beaec01399620bee6c65ef2e"
- integrity sha512-H9VZ9YqE+H28FQVchC83RCs5xQ2J7mAAv6qdDEaWmXEVl3OpdH+xfrSUzQ1lp7U7oSTRZ0RvW08ASPJsYBi7Cw==
-
-"@types/mime@*":
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.4.tgz#2198ac274de6017b44d941e00261d5bc6a0e0a45"
- integrity sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==
+ version "2.0.13"
+ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd"
+ integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==
"@types/mime@^1":
version "1.3.5"
@@ -2220,9 +2156,9 @@
"@types/node" "*"
"@types/node@*":
- version "20.11.30"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f"
- integrity sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==
+ version "20.12.10"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.10.tgz#8f0c3f12b0f075eee1fe20c1afb417e9765bef76"
+ integrity sha512-Eem5pH9pmWBHoGAT8Dr5fdc5rYA+4NAovdM4EktRPVAAiJhmWWfQrA0cFhAbOsQdSfIHjAud6YdkbL69+zSKjw==
dependencies:
undici-types "~5.26.4"
@@ -2247,9 +2183,9 @@
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
"@types/qs@*":
- version "6.9.14"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.14.tgz#169e142bfe493895287bee382af6039795e9b75b"
- integrity sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==
+ version "6.9.15"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce"
+ integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==
"@types/range-parser@*":
version "1.2.7"
@@ -2283,9 +2219,9 @@
"@types/react" "*"
"@types/react@*":
- version "18.2.73"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.73.tgz#0579548ad122660d99e00499d22e33b81e73ed94"
- integrity sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA==
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.1.tgz#fed43985caa834a2084d002e4771e15dfcbdbe8e"
+ integrity sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
@@ -2318,13 +2254,13 @@
"@types/express" "*"
"@types/serve-static@*", "@types/serve-static@^1.13.10":
- version "1.15.5"
- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.5.tgz#15e67500ec40789a1e8c9defc2d32a896f05b033"
- integrity sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==
+ version "1.15.7"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714"
+ integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
dependencies:
"@types/http-errors" "*"
- "@types/mime" "*"
"@types/node" "*"
+ "@types/send" "*"
"@types/sockjs@^0.3.33":
version "0.3.36"
@@ -2574,42 +2510,42 @@ ajv@^6.12.2, ajv@^6.12.5:
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.9.0:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
+ integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
dependencies:
- fast-deep-equal "^3.1.1"
+ fast-deep-equal "^3.1.3"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
- uri-js "^4.2.2"
+ uri-js "^4.4.1"
algoliasearch-helper@^3.13.3:
- version "3.16.3"
- resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.16.3.tgz#38c3a18e278306f565823cc7f3dd706825b4bfb9"
- integrity sha512-1OuJT6sONAa9PxcOmWo5WCAT3jQSpCR9/m5Azujja7nhUQwAUDvaaAYrcmUySsrvHh74usZHbE3jFfGnWtZj8w==
+ version "3.19.0"
+ resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.19.0.tgz#56f9c61f46ecb0a0f7497f127a5d32a94d87e090"
+ integrity sha512-AaSb5DZDMZmDQyIy6lf4aL0OZGgyIdqvLIIvSuVQOIOqfhrYSY7TvotIFI2x0Q3cP3xUpTd7lI1astUC4aXBJw==
dependencies:
"@algolia/events" "^4.0.1"
-algoliasearch@^4.12.0, algoliasearch@^4.18.0, algoliasearch@^4.19.1:
- version "4.23.2"
- resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.23.2.tgz#3b7bc93d98f3965628c73a06cbf9203531324a9d"
- integrity sha512-8aCl055IsokLuPU8BzLjwzXjb7ty9TPcUFFOk0pYOwsE5DMVhE3kwCMFtsCFKcnoPZK7oObm+H5mbnSO/9ioxQ==
- dependencies:
- "@algolia/cache-browser-local-storage" "4.23.2"
- "@algolia/cache-common" "4.23.2"
- "@algolia/cache-in-memory" "4.23.2"
- "@algolia/client-account" "4.23.2"
- "@algolia/client-analytics" "4.23.2"
- "@algolia/client-common" "4.23.2"
- "@algolia/client-personalization" "4.23.2"
- "@algolia/client-search" "4.23.2"
- "@algolia/logger-common" "4.23.2"
- "@algolia/logger-console" "4.23.2"
- "@algolia/recommend" "4.23.2"
- "@algolia/requester-browser-xhr" "4.23.2"
- "@algolia/requester-common" "4.23.2"
- "@algolia/requester-node-http" "4.23.2"
- "@algolia/transporter" "4.23.2"
+algoliasearch@^4.18.0, algoliasearch@^4.19.1:
+ version "4.23.3"
+ resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.23.3.tgz#e09011d0a3b0651444916a3e6bbcba064ec44b60"
+ integrity sha512-Le/3YgNvjW9zxIQMRhUHuhiUjAlKY/zsdZpfq4dlLqg6mEm0nL6yk+7f2hDOtLpxsgE4jSzDmvHL7nXdBp5feg==
+ dependencies:
+ "@algolia/cache-browser-local-storage" "4.23.3"
+ "@algolia/cache-common" "4.23.3"
+ "@algolia/cache-in-memory" "4.23.3"
+ "@algolia/client-account" "4.23.3"
+ "@algolia/client-analytics" "4.23.3"
+ "@algolia/client-common" "4.23.3"
+ "@algolia/client-personalization" "4.23.3"
+ "@algolia/client-search" "4.23.3"
+ "@algolia/logger-common" "4.23.3"
+ "@algolia/logger-console" "4.23.3"
+ "@algolia/recommend" "4.23.3"
+ "@algolia/requester-browser-xhr" "4.23.3"
+ "@algolia/requester-common" "4.23.3"
+ "@algolia/requester-node-http" "4.23.3"
+ "@algolia/transporter" "4.23.3"
ansi-align@^3.0.1:
version "3.0.1"
@@ -2719,7 +2655,7 @@ at-least-node@^1.0.0:
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-autoprefixer@^10.4.12, autoprefixer@^10.4.14:
+autoprefixer@^10.4.14, autoprefixer@^10.4.19:
version "10.4.19"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f"
integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==
@@ -2747,12 +2683,12 @@ babel-plugin-dynamic-import-node@^2.3.3:
object.assign "^4.1.0"
babel-plugin-polyfill-corejs2@^0.4.10:
- version "0.4.10"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz#276f41710b03a64f6467433cab72cbc2653c38b1"
- integrity sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==
+ version "0.4.11"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33"
+ integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==
dependencies:
"@babel/compat-data" "^7.22.6"
- "@babel/helper-define-polyfill-provider" "^0.6.1"
+ "@babel/helper-define-polyfill-provider" "^0.6.2"
semver "^6.3.1"
babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4:
@@ -2764,11 +2700,11 @@ babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4:
core-js-compat "^3.36.1"
babel-plugin-polyfill-regenerator@^0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz#4f08ef4c62c7a7f66a35ed4c0d75e30506acc6be"
- integrity sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e"
+ integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.1"
+ "@babel/helper-define-polyfill-provider" "^0.6.2"
bail@^2.0.0:
version "2.0.2"
@@ -2869,7 +2805,7 @@ braces@^3.0.2, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0:
+browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.22.2, browserslist@^4.23.0:
version "4.23.0"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
@@ -2957,9 +2893,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599:
- version "1.0.30001600"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079"
- integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
+ version "1.0.30001616"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#4342712750d35f71ebba9fcac65e2cf8870013c3"
+ integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==
ccount@^2.0.0:
version "2.0.1"
@@ -3036,7 +2972,7 @@ cheerio-select@^2.1.0:
domhandler "^5.0.3"
domutils "^3.0.1"
-cheerio@^1.0.0-rc.12, cheerio@^1.0.0-rc.9:
+cheerio@^1.0.0-rc.12:
version "1.0.0-rc.12"
resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.12.tgz#788bf7466506b1c6bf5fae51d24a2c4d62e47683"
integrity sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==
@@ -3109,15 +3045,10 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
-clsx@^1.1.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
- integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
-
clsx@^2.0.0, clsx@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb"
- integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999"
+ integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
collapse-white-space@^2.0.0:
version "2.1.0"
@@ -3148,7 +3079,7 @@ color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-colord@^2.9.1:
+colord@^2.9.3:
version "2.9.3"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
@@ -3302,21 +3233,21 @@ copy-webpack-plugin@^11.0.0:
serialize-javascript "^6.0.0"
core-js-compat@^3.31.0, core-js-compat@^3.36.1:
- version "3.36.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.36.1.tgz#1818695d72c99c25d621dca94e6883e190cea3c8"
- integrity sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==
+ version "3.37.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73"
+ integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==
dependencies:
browserslist "^4.23.0"
core-js-pure@^3.30.2:
- version "3.36.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.36.1.tgz#1461c89e76116528b54eba20a0aff30164087a94"
- integrity sha512-NXCvHvSVYSrewP0L5OhltzXeWFJLo2AL2TYnj6iLV3Bw8mM62wAQMNgUCRI6EBu6hVVpbCxmOPlxh1Ikw2PfUA==
+ version "3.37.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.0.tgz#ce99fb4a7cec023fdbbe5b5bd1f06bbcba83316e"
+ integrity sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==
core-js@^3.31.1:
- version "3.36.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578"
- integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==
+ version "3.37.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb"
+ integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug==
core-util-is@~1.0.0:
version "1.0.3"
@@ -3334,18 +3265,7 @@ cosmiconfig@^6.0.0:
path-type "^4.0.0"
yaml "^1.7.2"
-cosmiconfig@^7.0.1:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
- integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.2.1"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.10.0"
-
-cosmiconfig@^8.3.5:
+cosmiconfig@^8.1.3, cosmiconfig@^8.3.5:
version "8.3.6"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3"
integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==
@@ -3371,36 +3291,36 @@ crypto-random-string@^4.0.0:
dependencies:
type-fest "^1.0.1"
-css-declaration-sorter@^6.3.1:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71"
- integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==
+css-declaration-sorter@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024"
+ integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==
css-loader@^6.8.1:
- version "6.10.0"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.10.0.tgz#7c172b270ec7b833951b52c348861206b184a4b7"
- integrity sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba"
+ integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==
dependencies:
icss-utils "^5.1.0"
postcss "^8.4.33"
- postcss-modules-extract-imports "^3.0.0"
- postcss-modules-local-by-default "^4.0.4"
- postcss-modules-scope "^3.1.1"
+ postcss-modules-extract-imports "^3.1.0"
+ postcss-modules-local-by-default "^4.0.5"
+ postcss-modules-scope "^3.2.0"
postcss-modules-values "^4.0.0"
postcss-value-parser "^4.2.0"
semver "^7.5.4"
-css-minimizer-webpack-plugin@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz#79f6199eb5adf1ff7ba57f105e3752d15211eb35"
- integrity sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==
- dependencies:
- cssnano "^5.1.8"
- jest-worker "^29.1.2"
- postcss "^8.4.17"
- schema-utils "^4.0.0"
- serialize-javascript "^6.0.0"
- source-map "^0.6.1"
+css-minimizer-webpack-plugin@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565"
+ integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.18"
+ cssnano "^6.0.1"
+ jest-worker "^29.4.3"
+ postcss "^8.4.24"
+ schema-utils "^4.0.1"
+ serialize-javascript "^6.0.1"
css-select@^4.1.3:
version "4.3.0"
@@ -3424,13 +3344,21 @@ css-select@^5.1.0:
domutils "^3.0.1"
nth-check "^2.0.1"
-css-tree@^1.1.2, css-tree@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
- integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+css-tree@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20"
+ integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==
+ dependencies:
+ mdn-data "2.0.30"
+ source-map-js "^1.0.1"
+
+css-tree@~2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032"
+ integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==
dependencies:
- mdn-data "2.0.14"
- source-map "^0.6.1"
+ mdn-data "2.0.28"
+ source-map-js "^1.0.1"
css-what@^6.0.1, css-what@^6.1.0:
version "6.1.0"
@@ -3442,73 +3370,74 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-cssnano-preset-advanced@^5.3.10:
- version "5.3.10"
- resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz#25558a1fbf3a871fb6429ce71e41be7f5aca6eef"
- integrity sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==
- dependencies:
- autoprefixer "^10.4.12"
- cssnano-preset-default "^5.2.14"
- postcss-discard-unused "^5.1.0"
- postcss-merge-idents "^5.1.1"
- postcss-reduce-idents "^5.2.0"
- postcss-zindex "^5.1.0"
-
-cssnano-preset-default@^5.2.14:
- version "5.2.14"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8"
- integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==
- dependencies:
- css-declaration-sorter "^6.3.1"
- cssnano-utils "^3.1.0"
- postcss-calc "^8.2.3"
- postcss-colormin "^5.3.1"
- postcss-convert-values "^5.1.3"
- postcss-discard-comments "^5.1.2"
- postcss-discard-duplicates "^5.1.0"
- postcss-discard-empty "^5.1.1"
- postcss-discard-overridden "^5.1.0"
- postcss-merge-longhand "^5.1.7"
- postcss-merge-rules "^5.1.4"
- postcss-minify-font-values "^5.1.0"
- postcss-minify-gradients "^5.1.1"
- postcss-minify-params "^5.1.4"
- postcss-minify-selectors "^5.2.1"
- postcss-normalize-charset "^5.1.0"
- postcss-normalize-display-values "^5.1.0"
- postcss-normalize-positions "^5.1.1"
- postcss-normalize-repeat-style "^5.1.1"
- postcss-normalize-string "^5.1.0"
- postcss-normalize-timing-functions "^5.1.0"
- postcss-normalize-unicode "^5.1.1"
- postcss-normalize-url "^5.1.0"
- postcss-normalize-whitespace "^5.1.1"
- postcss-ordered-values "^5.1.3"
- postcss-reduce-initial "^5.1.2"
- postcss-reduce-transforms "^5.1.0"
- postcss-svgo "^5.1.0"
- postcss-unique-selectors "^5.1.1"
-
-cssnano-utils@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861"
- integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==
+cssnano-preset-advanced@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-advanced/-/cssnano-preset-advanced-6.1.2.tgz#82b090872b8f98c471f681d541c735acf8b94d3f"
+ integrity sha512-Nhao7eD8ph2DoHolEzQs5CfRpiEP0xa1HBdnFZ82kvqdmbwVBUr2r1QuQ4t1pi+D1ZpqpcO4T+wy/7RxzJ/WPQ==
+ dependencies:
+ autoprefixer "^10.4.19"
+ browserslist "^4.23.0"
+ cssnano-preset-default "^6.1.2"
+ postcss-discard-unused "^6.0.5"
+ postcss-merge-idents "^6.0.3"
+ postcss-reduce-idents "^6.0.3"
+ postcss-zindex "^6.0.2"
-cssnano@^5.1.15, cssnano@^5.1.8:
- version "5.1.15"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf"
- integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==
+cssnano-preset-default@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz#adf4b89b975aa775f2750c89dbaf199bbd9da35e"
+ integrity sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==
dependencies:
- cssnano-preset-default "^5.2.14"
- lilconfig "^2.0.3"
- yaml "^1.10.2"
+ browserslist "^4.23.0"
+ css-declaration-sorter "^7.2.0"
+ cssnano-utils "^4.0.2"
+ postcss-calc "^9.0.1"
+ postcss-colormin "^6.1.0"
+ postcss-convert-values "^6.1.0"
+ postcss-discard-comments "^6.0.2"
+ postcss-discard-duplicates "^6.0.3"
+ postcss-discard-empty "^6.0.3"
+ postcss-discard-overridden "^6.0.2"
+ postcss-merge-longhand "^6.0.5"
+ postcss-merge-rules "^6.1.1"
+ postcss-minify-font-values "^6.1.0"
+ postcss-minify-gradients "^6.0.3"
+ postcss-minify-params "^6.1.0"
+ postcss-minify-selectors "^6.0.4"
+ postcss-normalize-charset "^6.0.2"
+ postcss-normalize-display-values "^6.0.2"
+ postcss-normalize-positions "^6.0.2"
+ postcss-normalize-repeat-style "^6.0.2"
+ postcss-normalize-string "^6.0.2"
+ postcss-normalize-timing-functions "^6.0.2"
+ postcss-normalize-unicode "^6.1.0"
+ postcss-normalize-url "^6.0.2"
+ postcss-normalize-whitespace "^6.0.2"
+ postcss-ordered-values "^6.0.2"
+ postcss-reduce-initial "^6.1.0"
+ postcss-reduce-transforms "^6.0.2"
+ postcss-svgo "^6.0.3"
+ postcss-unique-selectors "^6.0.4"
+
+cssnano-utils@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.2.tgz#56f61c126cd0f11f2eef1596239d730d9fceff3c"
+ integrity sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==
-csso@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
- integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+cssnano@^6.0.1, cssnano@^6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.1.2.tgz#4bd19e505bd37ee7cf0dc902d3d869f6d79c66b8"
+ integrity sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==
dependencies:
- css-tree "^1.1.2"
+ cssnano-preset-default "^6.1.2"
+ lilconfig "^3.1.1"
+
+csso@^5.0.5:
+ version "5.0.5"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6"
+ integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==
+ dependencies:
+ css-tree "~2.2.0"
csstype@^3.0.2:
version "3.1.3"
@@ -3558,7 +3487,7 @@ deep-extend@^0.6.0:
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-deepmerge@^4.2.2:
+deepmerge@^4.2.2, deepmerge@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
@@ -3775,9 +3704,9 @@ ee-first@1.1.1:
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
electron-to-chromium@^1.4.668:
- version "1.4.722"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz#99ae3484c5fc0f387d39ad98d77e1f259b9f4074"
- integrity sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ==
+ version "1.4.757"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.757.tgz#45f7c9341b538f8c4b9ca8af9692e0ed1a776a44"
+ integrity sha512-jftDaCknYSSt/+KKeXzH3LX5E2CvRLm75P3Hj+J/dv3CL0qUYcOt13d5FN1NiL5IJbbhzHrb3BomeG2tkSlZmw==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -3847,11 +3776,11 @@ es-errors@^1.3.0:
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-module-lexer@^1.2.1:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.0.tgz#4878fee3789ad99e065f975fdd3c645529ff0236"
- integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497"
+ integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==
-escalade@^3.1.1:
+escalade@^3.1.1, escalade@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
@@ -3943,9 +3872,9 @@ estree-util-to-js@^2.0.0:
source-map "^0.7.0"
estree-util-value-to-estree@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.0.1.tgz#0b7b5d6b6a4aaad5c60999ffbc265a985df98ac5"
- integrity sha512-b2tdzTurEIbwRh+mKrEcaWfu1wgb8J1hVsgREg7FFiecWwK/PhO8X0kyc+0bIcKNtD4sqxIdNoRy6/p/TvECEA==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/estree-util-value-to-estree/-/estree-util-value-to-estree-3.1.1.tgz#a007388eca677510f319603a2f279fed6d104a15"
+ integrity sha512-5mvUrF2suuv5f5cGDnDphIy4/gW86z82kl5qG6mM9z04SEQI4FB5Apmaw/TGEf3l55nLtMs5s51dmhUzvAHQCA==
dependencies:
"@types/estree" "^1.0.0"
is-plain-obj "^4.0.0"
@@ -4261,9 +4190,9 @@ fs-extra@^9.0.0:
universalify "^2.0.0"
fs-monkey@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788"
- integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2"
+ integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==
fs.realpath@^1.0.0:
version "1.0.0"
@@ -4545,9 +4474,9 @@ hast-util-parse-selector@^4.0.0:
"@types/hast" "^3.0.0"
hast-util-raw@^9.0.0:
- version "9.0.2"
- resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.2.tgz#39b4a4886bd9f0a5dd42e86d02c966c2c152884c"
- integrity sha512-PldBy71wO9Uq1kyaMch9AHIghtQvIwxBUkv823pKmkTM3oV1JxtsTNYdevMxvUHqcnOAuO65JKU2+0NOxc2ksA==
+ version "9.0.3"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-9.0.3.tgz#87ad66bdd7b1ceb166452bdab7dfb3e9ba640419"
+ integrity sha512-ICWvVOF2fq4+7CMmtCPD5CM4QKjPbHpPotE6+8tDooV0ZuyJVUzHsrNX+O5NaRbieTf0F7FfeBOMAwi6Td0+yQ==
dependencies:
"@types/hast" "^3.0.0"
"@types/unist" "^3.0.0"
@@ -4671,11 +4600,6 @@ hpack.js@^2.1.6:
readable-stream "^2.0.1"
wbuf "^1.1.0"
-htm@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/htm/-/htm-3.1.1.tgz#49266582be0dc66ed2235d5ea892307cc0c24b78"
- integrity sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==
-
html-entities@^2.3.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f"
@@ -4851,7 +4775,7 @@ immer@^9.0.7:
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176"
integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
-import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0:
+import-fresh@^3.1.0, import-fresh@^3.3.0:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -4935,9 +4859,9 @@ ipaddr.js@1.9.1:
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
ipaddr.js@^2.0.1:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f"
- integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
is-alphabetical@^2.0.0:
version "2.0.1"
@@ -5070,11 +4994,6 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
-is-plain-object@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
- integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
-
is-reference@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-3.0.2.tgz#154747a01f45cd962404ee89d43837af2cba247c"
@@ -5155,7 +5074,7 @@ jest-worker@^27.4.5:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest-worker@^29.1.2:
+jest-worker@^29.4.3:
version "29.7.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
@@ -5176,9 +5095,9 @@ jju@^1.1.0:
integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==
joi@^17.9.2:
- version "17.12.2"
- resolved "https://registry.yarnpkg.com/joi/-/joi-17.12.2.tgz#283a664dabb80c7e52943c557aab82faea09f521"
- integrity sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==
+ version "17.13.1"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.1.tgz#9c7b53dc3b44dd9ae200255cc3b398874918a6ca"
+ integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==
dependencies:
"@hapi/hoek" "^9.3.0"
"@hapi/topo" "^5.1.0"
@@ -5309,10 +5228,10 @@ leven@^3.1.0:
read-installed "~3.1.3"
treeify "^1.0.1"
-lilconfig@^2.0.3:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
- integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+lilconfig@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3"
+ integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==
lines-and-columns@^1.1.6:
version "1.2.4"
@@ -5423,16 +5342,6 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-lunr-languages@^1.4.0:
- version "1.14.0"
- resolved "https://registry.yarnpkg.com/lunr-languages/-/lunr-languages-1.14.0.tgz#6e97635f434631729dd0e5654daedd291cd6f2d0"
- integrity sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==
-
-mark.js@^8.11.1:
- version "8.11.1"
- resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5"
- integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==
-
markdown-extensions@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4"
@@ -5660,10 +5569,15 @@ mdast-util-to-string@^4.0.0:
dependencies:
"@types/mdast" "^4.0.0"
-mdn-data@2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
- integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+mdn-data@2.0.28:
+ version "2.0.28"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba"
+ integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==
+
+mdn-data@2.0.30:
+ version "2.0.30"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc"
+ integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
media-typer@0.3.0:
version "0.3.0"
@@ -5698,9 +5612,9 @@ methods@~1.1.2:
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
micromark-core-commonmark@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3"
- integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz#9a45510557d068605c6e9a80f282b2bb8581e43d"
+ integrity sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==
dependencies:
decode-named-character-reference "^1.0.0"
devlop "^1.0.0"
@@ -6061,9 +5975,9 @@ micromark-util-sanitize-uri@^2.0.0:
micromark-util-symbol "^2.0.0"
micromark-util-subtokenize@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581"
- integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz#76129c49ac65da6e479c09d0ec4b5f29ec6eace5"
+ integrity sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==
dependencies:
devlop "^1.0.0"
micromark-util-chunked "^2.0.0"
@@ -6166,9 +6080,9 @@ mimic-response@^4.0.0:
integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==
mini-css-extract-plugin@^2.7.6:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz#75245f3f30ce3a56dbdd478084df6fe475f02dc7"
- integrity sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235"
+ integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==
dependencies:
schema-utils "^4.0.0"
tapable "^2.2.1"
@@ -6321,11 +6235,6 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-normalize-url@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
- integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-
normalize-url@^8.0.0:
version "8.0.1"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a"
@@ -6674,58 +6583,58 @@ pkg-up@^3.1.0:
dependencies:
find-up "^3.0.0"
-postcss-calc@^8.2.3:
- version "8.2.4"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
- integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
+postcss-calc@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6"
+ integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==
dependencies:
- postcss-selector-parser "^6.0.9"
+ postcss-selector-parser "^6.0.11"
postcss-value-parser "^4.2.0"
-postcss-colormin@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f"
- integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==
+postcss-colormin@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d"
+ integrity sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==
dependencies:
- browserslist "^4.21.4"
+ browserslist "^4.23.0"
caniuse-api "^3.0.0"
- colord "^2.9.1"
+ colord "^2.9.3"
postcss-value-parser "^4.2.0"
-postcss-convert-values@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393"
- integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==
+postcss-convert-values@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz#3498387f8efedb817cbc63901d45bd1ceaa40f48"
+ integrity sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==
dependencies:
- browserslist "^4.21.4"
+ browserslist "^4.23.0"
postcss-value-parser "^4.2.0"
-postcss-discard-comments@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696"
- integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==
+postcss-discard-comments@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c"
+ integrity sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==
-postcss-discard-duplicates@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848"
- integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==
+postcss-discard-duplicates@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz#d121e893c38dc58a67277f75bb58ba43fce4c3eb"
+ integrity sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==
-postcss-discard-empty@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c"
- integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==
+postcss-discard-empty@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz#ee39c327219bb70473a066f772621f81435a79d9"
+ integrity sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==
-postcss-discard-overridden@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e"
- integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
+postcss-discard-overridden@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz#4e9f9c62ecd2df46e8fdb44dc17e189776572e2d"
+ integrity sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==
-postcss-discard-unused@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz#8974e9b143d887677304e558c1166d3762501142"
- integrity sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==
+postcss-discard-unused@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-6.0.5.tgz#c1b0e8c032c6054c3fbd22aaddba5b248136f338"
+ integrity sha512-wHalBlRHkaNnNwfC8z+ppX57VhvS+HWgjW508esjdaEYr3Mx7Gnn2xA4R/CKf5+Z9S5qsqC+Uzh4ueENWwCVUA==
dependencies:
- postcss-selector-parser "^6.0.5"
+ postcss-selector-parser "^6.0.16"
postcss-loader@^7.3.3:
version "7.3.4"
@@ -6736,82 +6645,82 @@ postcss-loader@^7.3.3:
jiti "^1.20.0"
semver "^7.5.4"
-postcss-merge-idents@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz#7753817c2e0b75d0853b56f78a89771e15ca04a1"
- integrity sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==
+postcss-merge-idents@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65"
+ integrity sha512-1oIoAsODUs6IHQZkLQGO15uGEbK3EAl5wi9SS8hs45VgsxQfMnxvt+L+zIr7ifZFIH14cfAeVe2uCTa+SPRa3g==
dependencies:
- cssnano-utils "^3.1.0"
+ cssnano-utils "^4.0.2"
postcss-value-parser "^4.2.0"
-postcss-merge-longhand@^5.1.7:
- version "5.1.7"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16"
- integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==
+postcss-merge-longhand@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz#ba8a8d473617c34a36abbea8dda2b215750a065a"
+ integrity sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==
dependencies:
postcss-value-parser "^4.2.0"
- stylehacks "^5.1.1"
+ stylehacks "^6.1.1"
-postcss-merge-rules@^5.1.4:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c"
- integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==
+postcss-merge-rules@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz#7aa539dceddab56019469c0edd7d22b64c3dea9d"
+ integrity sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==
dependencies:
- browserslist "^4.21.4"
+ browserslist "^4.23.0"
caniuse-api "^3.0.0"
- cssnano-utils "^3.1.0"
- postcss-selector-parser "^6.0.5"
+ cssnano-utils "^4.0.2"
+ postcss-selector-parser "^6.0.16"
-postcss-minify-font-values@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b"
- integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==
+postcss-minify-font-values@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz#a0e574c02ee3f299be2846369211f3b957ea4c59"
+ integrity sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-minify-gradients@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c"
- integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==
+postcss-minify-gradients@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz#ca3eb55a7bdb48a1e187a55c6377be918743dbd6"
+ integrity sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==
dependencies:
- colord "^2.9.1"
- cssnano-utils "^3.1.0"
+ colord "^2.9.3"
+ cssnano-utils "^4.0.2"
postcss-value-parser "^4.2.0"
-postcss-minify-params@^5.1.4:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352"
- integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==
+postcss-minify-params@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz#54551dec77b9a45a29c3cb5953bf7325a399ba08"
+ integrity sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==
dependencies:
- browserslist "^4.21.4"
- cssnano-utils "^3.1.0"
+ browserslist "^4.23.0"
+ cssnano-utils "^4.0.2"
postcss-value-parser "^4.2.0"
-postcss-minify-selectors@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6"
- integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==
+postcss-minify-selectors@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz#197f7d72e6dd19eed47916d575d69dc38b396aff"
+ integrity sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==
dependencies:
- postcss-selector-parser "^6.0.5"
+ postcss-selector-parser "^6.0.16"
-postcss-modules-extract-imports@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
- integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
+postcss-modules-extract-imports@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002"
+ integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==
-postcss-modules-local-by-default@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz#7cbed92abd312b94aaea85b68226d3dec39a14e6"
- integrity sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==
+postcss-modules-local-by-default@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f"
+ integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==
dependencies:
icss-utils "^5.0.0"
postcss-selector-parser "^6.0.2"
postcss-value-parser "^4.1.0"
-postcss-modules-scope@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz#32cfab55e84887c079a19bbb215e721d683ef134"
- integrity sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==
+postcss-modules-scope@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5"
+ integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==
dependencies:
postcss-selector-parser "^6.0.4"
@@ -6822,100 +6731,99 @@ postcss-modules-values@^4.0.0:
dependencies:
icss-utils "^5.0.0"
-postcss-normalize-charset@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed"
- integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==
+postcss-normalize-charset@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1"
+ integrity sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==
-postcss-normalize-display-values@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8"
- integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==
+postcss-normalize-display-values@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz#54f02764fed0b288d5363cbb140d6950dbbdd535"
+ integrity sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-positions@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92"
- integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==
+postcss-normalize-positions@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz#e982d284ec878b9b819796266f640852dbbb723a"
+ integrity sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-repeat-style@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2"
- integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==
+postcss-normalize-repeat-style@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz#f8006942fd0617c73f049dd8b6201c3a3040ecf3"
+ integrity sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-string@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228"
- integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==
+postcss-normalize-string@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz#e3cc6ad5c95581acd1fc8774b309dd7c06e5e363"
+ integrity sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-timing-functions@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb"
- integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==
+postcss-normalize-timing-functions@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz#40cb8726cef999de984527cbd9d1db1f3e9062c0"
+ integrity sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-normalize-unicode@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030"
- integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==
+postcss-normalize-unicode@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz#aaf8bbd34c306e230777e80f7f12a4b7d27ce06e"
+ integrity sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==
dependencies:
- browserslist "^4.21.4"
+ browserslist "^4.23.0"
postcss-value-parser "^4.2.0"
-postcss-normalize-url@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc"
- integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==
+postcss-normalize-url@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz#292792386be51a8de9a454cb7b5c58ae22db0f79"
+ integrity sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==
dependencies:
- normalize-url "^6.0.1"
postcss-value-parser "^4.2.0"
-postcss-normalize-whitespace@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa"
- integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==
+postcss-normalize-whitespace@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz#fbb009e6ebd312f8b2efb225c2fcc7cf32b400cd"
+ integrity sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-ordered-values@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38"
- integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==
+postcss-ordered-values@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5"
+ integrity sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==
dependencies:
- cssnano-utils "^3.1.0"
+ cssnano-utils "^4.0.2"
postcss-value-parser "^4.2.0"
-postcss-reduce-idents@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz#c89c11336c432ac4b28792f24778859a67dfba95"
- integrity sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==
+postcss-reduce-idents@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486"
+ integrity sha512-G3yCqZDpsNPoQgbDUy3T0E6hqOQ5xigUtBQyrmq3tn2GxlyiL0yyl7H+T8ulQR6kOcHJ9t7/9H4/R2tv8tJbMA==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-reduce-initial@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6"
- integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==
+postcss-reduce-initial@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz#4401297d8e35cb6e92c8e9586963e267105586ba"
+ integrity sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==
dependencies:
- browserslist "^4.21.4"
+ browserslist "^4.23.0"
caniuse-api "^3.0.0"
-postcss-reduce-transforms@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9"
- integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==
+postcss-reduce-transforms@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz#6fa2c586bdc091a7373caeee4be75a0f3e12965d"
+ integrity sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==
dependencies:
postcss-value-parser "^4.2.0"
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
version "6.0.16"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04"
integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==
@@ -6923,39 +6831,39 @@ postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector
cssesc "^3.0.0"
util-deprecate "^1.0.2"
-postcss-sort-media-queries@^4.4.1:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-4.4.1.tgz#04a5a78db3921eb78f28a1a781a2e68e65258128"
- integrity sha512-QDESFzDDGKgpiIh4GYXsSy6sek2yAwQx1JASl5AxBtU1Lq2JfKBljIPNdil989NcSKRQX1ToiaKphImtBuhXWw==
+postcss-sort-media-queries@^5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97"
+ integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==
dependencies:
- sort-css-media-queries "2.1.0"
+ sort-css-media-queries "2.2.0"
-postcss-svgo@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d"
- integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==
+postcss-svgo@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.3.tgz#1d6e180d6df1fa8a3b30b729aaa9161e94f04eaa"
+ integrity sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==
dependencies:
postcss-value-parser "^4.2.0"
- svgo "^2.7.0"
+ svgo "^3.2.0"
-postcss-unique-selectors@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6"
- integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==
+postcss-unique-selectors@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz#983ab308896b4bf3f2baaf2336e14e52c11a2088"
+ integrity sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==
dependencies:
- postcss-selector-parser "^6.0.5"
+ postcss-selector-parser "^6.0.16"
postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-postcss-zindex@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-5.1.0.tgz#4a5c7e5ff1050bd4c01d95b1847dfdcc58a496ff"
- integrity sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==
+postcss-zindex@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1"
+ integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==
-postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33:
+postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38:
version "8.4.38"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e"
integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==
@@ -6965,17 +6873,17 @@ postcss@^8.4.17, postcss@^8.4.21, postcss@^8.4.26, postcss@^8.4.33:
source-map-js "^1.2.0"
posthog-js@^1.116.6:
- version "1.116.6"
- resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.116.6.tgz#9a5c9f49230a76642f4c44d93b96710f886c2880"
- integrity sha512-rvt8HxzJD4c2B/xsUa4jle8ApdqljeBI2Qqjp4XJMohQf18DXRyM6b96H5/UMs8jxYuZG14Er0h/kEIWeU6Fmw==
+ version "1.130.2"
+ resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.130.2.tgz#b0360d77a4dfbb2bc809a7207253a4f7c2b5340d"
+ integrity sha512-QR/j9Xs/STK3+VJgqiByeXFKT17LGZZvJtrCdgFhwydp8WfisJw7zrSy7rVDjYS0UeKJJ/3cO/qtlXD3dR2+Eg==
dependencies:
fflate "^0.4.8"
preact "^10.19.3"
-preact@^10.13.2, preact@^10.19.3:
- version "10.20.1"
- resolved "https://registry.yarnpkg.com/preact/-/preact-10.20.1.tgz#1bc598ab630d8612978f7533da45809a8298542b"
- integrity sha512-JIFjgFg9B2qnOoGiYMVBtrcFxHqn+dNXbq76bVmcaHYJFYR4lW67AOcXgAYQQTDYXDOg/kTZrKPNCdRgJ2UJmw==
+preact@^10.19.3:
+ version "10.21.0"
+ resolved "https://registry.yarnpkg.com/preact/-/preact-10.21.0.tgz#5b0335c873a1724deb66e517830db4fd310c24f6"
+ integrity sha512-aQAIxtzWEwH8ou+OovWVSVNlFImL7xUCwJX3YMqA3U8iKCNC34999fFOnWjYNsylgfPgMexpbk7WYOLtKr/mxg==
pretty-error@^4.0.0:
version "4.0.0"
@@ -7026,9 +6934,9 @@ prop-types@15.8.1, prop-types@^15.6.2, prop-types@^15.7.2:
react-is "^16.13.1"
property-information@^6.0.0:
- version "6.4.1"
- resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.1.tgz#de8b79a7415fd2107dfbe65758bb2cc9dfcf60ac"
- integrity sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==
+ version "6.5.0"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec"
+ integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==
proto-list@~1.2.1:
version "1.2.4"
@@ -7152,12 +7060,12 @@ react-dev-utils@^12.0.1:
text-table "^0.2.0"
react-dom@^18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
- integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
+ integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
dependencies:
loose-envify "^1.1.0"
- scheduler "^0.23.0"
+ scheduler "^0.23.2"
react-error-overlay@^6.0.11:
version "6.0.11"
@@ -7195,9 +7103,9 @@ react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-json-view-lite@^1.2.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.3.0.tgz#1f1feee6f1b1d75cc498cd57812f441b88b51e21"
- integrity sha512-aN1biKC5v4DQkmQBlZjuMFR09MKZGMPtIg+cut8zEeg2HXd6gl2gRy0n4HMacHf0dznQgo0SVXN7eT8zV3hEuQ==
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz#0ff493245f4550abe5e1f1836f170fa70bb95914"
+ integrity sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA==
react-loadable-ssr-addon-v5-slorber@^1.0.1:
version "1.0.1"
@@ -7206,6 +7114,13 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
dependencies:
"@babel/runtime" "^7.10.3"
+"react-loadable@npm:@docusaurus/react-loadable@6.0.0":
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz#de6c7f73c96542bd70786b8e522d535d69069dc4"
+ integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==
+ dependencies:
+ "@types/react" "*"
+
react-router-config@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988"
@@ -7258,9 +7173,9 @@ react-youtube@^10.1.0:
youtube-player "5.5.2"
react@^18.2.0:
- version "18.2.0"
- resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
- integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ version "18.3.1"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891"
+ integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
dependencies:
loose-envify "^1.1.0"
@@ -7615,10 +7530,10 @@ sax@^1.2.4:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0"
integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
-scheduler@^0.23.0:
- version "0.23.0"
- resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
- integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+scheduler@^0.23.2:
+ version "0.23.2"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
+ integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==
dependencies:
loose-envify "^1.1.0"
@@ -7640,7 +7555,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-schema-utils@^4.0.0:
+schema-utils@^4.0.0, schema-utils@^4.0.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b"
integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==
@@ -7889,6 +7804,14 @@ slide@~1.1.3:
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
integrity sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==
+snake-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c"
+ integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==
+ dependencies:
+ dot-case "^3.0.4"
+ tslib "^2.0.3"
+
sockjs@^0.3.24:
version "0.3.24"
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
@@ -7898,12 +7821,12 @@ sockjs@^0.3.24:
uuid "^8.3.2"
websocket-driver "^0.7.4"
-sort-css-media-queries@2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz#7c85e06f79826baabb232f5560e9745d7a78c4ce"
- integrity sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==
+sort-css-media-queries@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz#aa33cf4a08e0225059448b6c40eddbf9f1c8334c"
+ integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==
-source-map-js@^1.2.0:
+source-map-js@^1.0.1, source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
@@ -7916,7 +7839,7 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0:
+source-map@^0.6.0, source-map@~0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -7964,11 +7887,6 @@ srcset@^4.0.0:
resolved "https://registry.yarnpkg.com/srcset/-/srcset-4.0.0.tgz#336816b665b14cd013ba545b6fe62357f86e65f4"
integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
@@ -8017,9 +7935,9 @@ string_decoder@~1.1.1:
safe-buffer "~5.1.0"
stringify-entities@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8"
- integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3"
+ integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==
dependencies:
character-entities-html4 "^2.0.0"
character-entities-legacy "^3.0.0"
@@ -8088,13 +8006,13 @@ style-to-object@^1.0.0:
dependencies:
inline-style-parser "0.2.3"
-stylehacks@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9"
- integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==
+stylehacks@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.1.1.tgz#543f91c10d17d00a440430362d419f79c25545a6"
+ integrity sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==
dependencies:
- browserslist "^4.21.4"
- postcss-selector-parser "^6.0.4"
+ browserslist "^4.23.0"
+ postcss-selector-parser "^6.0.16"
supports-color@^0.2.0:
version "0.2.0"
@@ -8132,18 +8050,18 @@ svg-parser@^2.0.4:
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
-svgo@^2.7.0, svgo@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
- integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+svgo@^3.0.2, svgo@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d"
+ integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==
dependencies:
"@trysound/sax" "0.2.0"
commander "^7.2.0"
- css-select "^4.1.3"
- css-tree "^1.1.3"
- csso "^4.2.0"
+ css-select "^5.1.0"
+ css-tree "^2.3.1"
+ css-what "^6.1.0"
+ csso "^5.0.5"
picocolors "^1.0.0"
- stable "^0.1.8"
tapable@^1.0.0:
version "1.1.3"
@@ -8167,9 +8085,9 @@ terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9:
terser "^5.26.0"
terser@^5.10.0, terser@^5.15.1, terser@^5.26.0:
- version "5.30.0"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.30.0.tgz#64cb2af71e16ea3d32153f84d990f9be0cdc22bf"
- integrity sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw==
+ version "5.31.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1"
+ integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==
dependencies:
"@jridgewell/source-map" "^0.3.3"
acorn "^8.8.2"
@@ -8264,9 +8182,9 @@ typedarray-to-buffer@^3.1.5:
is-typedarray "^1.0.0"
typescript@^5.4.3:
- version "5.4.3"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff"
- integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==
+ version "5.4.5"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
+ integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
undici-types@~5.26.4:
version "5.26.5"
@@ -8385,11 +8303,11 @@ unpipe@1.0.0, unpipe@~1.0.0:
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
update-browserslist-db@^1.0.13:
- version "1.0.13"
- resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
- integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ version "1.0.15"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97"
+ integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==
dependencies:
- escalade "^3.1.1"
+ escalade "^3.1.2"
picocolors "^1.0.0"
update-notifier@^6.0.2:
@@ -8412,7 +8330,7 @@ update-notifier@^6.0.2:
semver-diff "^4.0.0"
xdg-basedir "^5.1.0"
-uri-js@^4.2.2:
+uri-js@^4.2.2, uri-js@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
@@ -8514,9 +8432,9 @@ web-namespaces@^2.0.0:
integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
webpack-bundle-analyzer@^4.9.0:
- version "4.10.1"
- resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz#84b7473b630a7b8c21c741f81d8fe4593208b454"
- integrity sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==
+ version "4.10.2"
+ resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd"
+ integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==
dependencies:
"@discoveryjs/json-ext" "0.5.7"
acorn "^8.0.4"
@@ -8526,7 +8444,6 @@ webpack-bundle-analyzer@^4.9.0:
escape-string-regexp "^4.0.0"
gzip-size "^6.0.0"
html-escaper "^2.0.2"
- is-plain-object "^5.0.0"
opener "^1.5.2"
picocolors "^1.0.0"
sirv "^2.0.3"
@@ -8703,9 +8620,9 @@ ws@^7.3.1:
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
ws@^8.13.0:
- version "8.16.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4"
- integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==
+ version "8.17.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea"
+ integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==
xdg-basedir@^5.0.1, xdg-basedir@^5.1.0:
version "5.1.0"
@@ -8729,7 +8646,7 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
+yaml@^1.7.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import
index a3eb4791..de1351f6 100644
--- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Bold.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Bold.ttf-9d8fef4d357af5b52cd60af
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import
index ef28dd80..bdde2072 100644
--- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-BoldItalic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-BoldItalic.ttf-4274bf704d3d6b9cd
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import
index 1779af17..ce3e5b91 100644
--- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Italic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Italic.ttf-9989590b02137b799e13d
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import
index 1e2975b1..a567498c 100644
--- a/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/AnonymousPro-Regular.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/AnonymousPro-Regular.ttf-856c843fd6f89964d2ca
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import
index 7d60fb0a..cb05171d 100644
--- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Bold.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Bold.ttf-1f003c66d63ebed70964e77
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import
index 4678c9eb..0a9a7b77 100644
--- a/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-BoldItalic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-BoldItalic.ttf-65ebcc61dd5e1dfa8
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import
index 522e2950..89412fc9 100644
--- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Italic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Italic.ttf-baa9156a73770735a0f72
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import
index 38174660..9fde40b1 100644
--- a/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/CourierPrime-Regular.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/CourierPrime-Regular.ttf-3babe7e4a7a588dfc9a8
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import
index 7548ad04..673d1515 100644
--- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Bold.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Bold.ttf-7c7f734103b58a32491a47881
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import
index 4b609e80..62048b0e 100644
--- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-BoldItalic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-BoldItalic.ttf-227406a33e84448e6aa
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import
index 5899b797..d3ca2728 100644
--- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Italic.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Italic.ttf-f93abf6c25390c85ad5fb6c
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import
index 45a12c8a..9cc75421 100644
--- a/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import
+++ b/mirror-godot-app/addons/gut/fonts/LobsterTwo-Regular.ttf.import
@@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/LobsterTwo-Regular.ttf-f3fcfa01cd671c8da433dd
Rendering=null
antialiasing=1
generate_mipmaps=false
+disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
diff --git a/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg b/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg
index 2e0285b3..93104726 100644
--- a/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg
+++ b/mirror-godot-app/addons/mirror_internal/env_configs/official.cfg
@@ -31,8 +31,8 @@ env_name="official"
auto_updater_bucket_uri="https://storage.googleapis.com/mirror_native_client_builds_prod/AutoUpdater"
integration_test_ids={}
base_url="https://in.themirror.space"
-connection_server="https://api.themirror.space"
-connection_server_ws="wss://api.themirror.space"
+connection_server="https://mirror-web-server-mirror-official-pkmrhxu4na-uc.a.run.app"
+connection_server_ws="wss://mirror-web-server-mirror-official-pkmrhxu4na-uc.a.run.app"
landing_page_url="https://themirror.space"
posthog_api_key="phc_wO5tr7Hle88gRKsDoQIybFqekqTctZ8nXmbokNsCv9b"
mixpanel_api_key="c5e82051367277731c1b1cf0d46d9d57"
diff --git a/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg b/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg
deleted file mode 100644
index 898f2d59..00000000
--- a/mirror-godot-app/addons/mirror_internal/env_configs/temp.cfg
+++ /dev/null
@@ -1,47 +0,0 @@
-[feature_flags]
-preview=true
-hardcoded_servers=false
-user_api_requests=false
-show_advanced_settings=true
-support_pck_uploads=false
-map_builder=true
-os_shell=false
-suicide_keybinding=true
-enable_space_listing_pages=true
-the-mirror-tutorials=true
-always_spin_up_local_server=true
-check_version_on_start=false
-
-[editor]
-run/main_run_args=""
-
-[debug_flags]
-show_web_socket_debug=false
-
-[app_protocol]
-enable_app_protocol=true
-protocol_name="themirror"
-socket_name=".themirror-prod.socket"
-
-[firebase]
-environment_variables/apiKey="AIzaSyAyBah16MgNRJstmFE2BHWkgg-n-xXEWVk"
-environment_variables/authDomain="the-mirror-backend-dev.firebaseapp.com"
-environment_variables/projectId="the-mirror-backend-dev"
-environment_variables/clientId="347945626382-04e3nul0h036h1cbqpdometn98q0kiu4.apps.googleusercontent.com"
-environment_variables/cacheLocation="user://mirror.firebase_cache"
-
-[mirror_secrets]
-WSS_SECRET=""
-
-[mirror]
-env_name="dev"
-auto_updater_bucket_uri="https://storage.googleapis.com/mirror_native_client_builds_prod/AutoUpdater"
-integration_test_ids={}
-base_url="https://dev-in.themirror.space"
-connection_server="https://dev-api.themirror.space"
-connection_server_ws="wss://dev-api.themirror.space"
-landing_page_url="https://themirror.space"
-posthog_api_key="phc_Gz7EZCoYouVnwEFCX1XKPHU4vHi0FTia5gUVKWQtPy1"
-mixpanel_api_key="c5e82051367277731c1b1cf0d46d9d57"
-asset_bucket=""
-zone_server_port=27015
diff --git a/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd b/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd
index 4764dd90..b2ebc55c 100644
--- a/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd
+++ b/mirror-godot-app/creator/selection/inspector/categories/inspector_category_toggle_button.gd
@@ -6,6 +6,10 @@ signal inspector_category_visibility_changed(new_visibility: bool)
@export var expand_speed: float = 10.0
@export var properties: Node
+## The text to show as a tooltip when hovering.
+## Use this instead of Godot's tooltip_text property.
+@export var hover_tooltip_text: String = ""
+
var _is_category_visible: bool = false
var _properties_child: Control
var _plus_texture: TextureRect
@@ -55,3 +59,17 @@ func set_category_visible(new_is_visible):
func _on_toggle_button_pressed():
set_category_visible(not _is_category_visible)
+
+
+func _on_hoverable_button_mouse_entered() -> void:
+ if hover_tooltip_text == "":
+ return
+ GameUI.set_hover_tooltip_text(hover_tooltip_text)
+
+
+func _on_hoverable_button_mouse_exited() -> void:
+ GameUI.hide_hover_tooltip_text()
+
+
+func _on_hoverable_button_pressed() -> void:
+ GameUI.hide_hover_tooltip_text()
diff --git a/mirror-godot-app/creator/selection/inspector/inspector.gd b/mirror-godot-app/creator/selection/inspector/inspector.gd
index 39d73274..0e1b2bcc 100644
--- a/mirror-godot-app/creator/selection/inspector/inspector.gd
+++ b/mirror-godot-app/creator/selection/inspector/inspector.gd
@@ -15,6 +15,7 @@ const _ENVIRONMENT_CATEGORY = preload("res://creator/selection/inspector/categor
const _LIGHT_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_light.tscn")
const _PHYSICS_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_physics.tscn")
const _VISIBILITY_CATEGORY = preload("res://creator/selection/inspector/categories/inspector_visibility.tscn")
+const _SCRIPT_OBJECT_VARS_CATEGORY = preload("res://creator/selection/inspector/script/inspector_script_object_vars.tscn")
const _SCRIPT_INSTANCE_CATEGORY = preload("res://creator/selection/inspector/script/inspector_script_instance.tscn")
const _MODEL_NODES_CATEGORY = preload("res://creator/selection/inspector/nodes/inspector_model_nodes.tscn")
const _EXTRA_NODE_CATEGORY = preload("res://creator/selection/inspector/nodes/inspector_extra_node.tscn")
@@ -43,6 +44,7 @@ var _deletion_target_category: InspectorCategoryBase
@onready var _categories: VBoxContainer = _tab_cont.get_node(^"Properties/MarginContainer/Categories")
@onready var _script_main_vbox: VBoxContainer = _tab_cont.get_node(^"Scripting/MarginContainer/VBoxContainer")
+@onready var _script_obj_vars: Control = _script_main_vbox.get_node(^"ScriptObjectVars")
@onready var _script_instances: VBoxContainer = _script_main_vbox.get_node(^"ScriptInstances")
@onready var _script_add_button: Button = _script_main_vbox.get_node(^"AddScriptButton")
@onready var _model_nodes_main_vbox: VBoxContainer = _tab_cont.get_node(^"Nodes/MarginContainer/VBoxContainer")
@@ -189,6 +191,7 @@ func inspect_nodes(new_nodes: Array[Node], force_rebuild: bool = false) -> void:
# The first step is to delete old categories if they exist.
_remove_old_category_children(_categories)
_remove_old_category_children(_script_instances)
+ _remove_old_category_children(_script_obj_vars)
_remove_old_category_children(_model_nodes)
# Update a few misc things.
_button_sound.refresh()
@@ -278,6 +281,7 @@ func _setup_new_categories(target_nodes: Array[Node]) -> void:
prim_model_cat.request_convert_to_local.connect(_on_request_convert_prim_model_to_local.bind(target_node))
target_node.scripts_changed.connect(_on_scripts_changed)
_setup_script_instances(target_node)
+ _setup_script_obj_vars(target_node)
_script_main_vbox.show()
_tab_cont.tabs_visible = true
_setup_extra_model_nodes(target_node)
@@ -287,6 +291,7 @@ func _setup_new_categories(target_nodes: Array[Node]) -> void:
_tab_cont.current_tab = 1
target_node.scripts_changed.connect(_on_scripts_changed)
_setup_script_instances(target_node)
+ _setup_script_obj_vars(target_node)
_script_main_vbox.show()
else:
_tab_cont.current_tab = 0
@@ -390,6 +395,28 @@ func _setup_script_instances(space_object_or_global_scripts: Node) -> void:
_setup_script_instance(script_instance)
+func _setup_script_obj_vars(space_object_or_global_scripts: Node) -> void:
+ # Set up script object variables inspector, if it has any.
+ var object_variables: Dictionary
+ if space_object_or_global_scripts.has_meta(&"MirrorScriptObjectVariables"):
+ object_variables = space_object_or_global_scripts.get_meta(&"MirrorScriptObjectVariables")
+ if object_variables.is_empty():
+ if not _is_any_script_instance_gdscript(space_object_or_global_scripts):
+ return
+ var obj_var_cat = _SCRIPT_OBJECT_VARS_CATEGORY.instantiate()
+ obj_var_cat.setup(space_object_or_global_scripts, Util.can_local_user_edit_scripts())
+ _script_obj_vars.add_child(obj_var_cat)
+ obj_var_cat.setup_object_vars(object_variables)
+
+
+func _is_any_script_instance_gdscript(space_object_or_global_scripts: Node) -> bool:
+ var script_instances: Array[ScriptInstance] = space_object_or_global_scripts.get_script_instances()
+ for script_inst in script_instances:
+ if script_inst is GDScriptInstance:
+ return true
+ return false
+
+
func _setup_script_instance(script_instance: ScriptInstance) -> void:
var cat: InspectorCategoryBase = _setup_category(script_instance.target_node, _SCRIPT_INSTANCE_CATEGORY, "", _script_instances)
cat.setup(script_instance)
diff --git a/mirror-godot-app/creator/selection/inspector/inspector.tscn b/mirror-godot-app/creator/selection/inspector/inspector.tscn
index 4088a5ca..f111fc80 100644
--- a/mirror-godot-app/creator/selection/inspector/inspector.tscn
+++ b/mirror-godot-app/creator/selection/inspector/inspector.tscn
@@ -92,6 +92,11 @@ metadata/_edit_layout_mode = 1
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer"]
layout_mode = 2
+[node name="ScriptObjectVars" type="MarginContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer/VBoxContainer"]
+layout_mode = 2
+theme_override_constants/margin_top = 0
+theme_override_constants/margin_bottom = 8
+
[node name="ScriptInstances" type="VBoxContainer" parent="VBoxContainer/TabContainer/Scripting/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd
index 84eade0f..8c244112 100644
--- a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd
+++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.gd
@@ -56,11 +56,8 @@ func _setup_parameter(parameter_name: String, parameter_data: Array) -> void:
func _on_parameter_changed(value, which: Control) -> void:
- var parameters_for_entry: Dictionary = _target_script_instance.entry_parameters[_entry_id]
- var param_name = which.label_text
- var param_data = parameters_for_entry[param_name]
- param_data[1] = value
- _target_script_instance.apply_inspector_parameter_values()
+ var param_name: String = which.label_text
+ _target_script_instance.set_inspector_parameter_input_value(_entry_id, param_name, value)
_target_script_instance.script_instance_changed()
@@ -69,12 +66,7 @@ func _on_toggle_button_inspector_category_visibility_changed(new_visibility: boo
func _on_create_parameter(parameter_port_array: Array) -> void:
- for entry_block in _target_script_instance.script_builder.entry_blocks:
- if entry_block.entry_id == _entry_id:
- entry_block.parameters.create_inspector_parameter(parameter_port_array)
- entry_block.reset_entry_output_ports()
- break
- _target_script_instance.sync_script_inst_params_with_script_data()
+ _target_script_instance.create_inspector_parameter_input(_entry_id, parameter_port_array)
_target_script_instance.script_data_contents_changed()
refresh_inspected_nodes.emit()
diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn
index c4c38d3e..b7743cad 100644
--- a/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn
+++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_entry_inputs.tscn
@@ -7,6 +7,9 @@
[node name="InspectorScriptEntryInputs" instance=ExtResource("1_amxtn")]
script = ExtResource("2_adill")
+[node name="ToggleButton" parent="CategoryTitle" index="0" node_paths=PackedStringArray("properties")]
+properties = NodePath("../../Properties")
+
[node name="Text" parent="CategoryTitle/ToggleButton/Name" index="3"]
text = ""
diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd
new file mode 100644
index 00000000..f69376fe
--- /dev/null
+++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.gd
@@ -0,0 +1,72 @@
+extends InspectorCategoryBase
+
+
+const _TRASH_BUTTON = preload("res://creator/selection/inspector/script/entry_input_trash_button.tscn")
+
+var target_node: Node # SpaceObject or SpaceGlobalScripts
+var _is_editable: bool = false
+var _object_vars: Dictionary
+var _property_list: Control
+
+
+## Must run before _ready()
+func setup(target_object: Node, is_editable: bool) -> void:
+ target_node = target_object
+ _property_list = $Properties/MarginContainer/PropertyList
+ _is_editable = is_editable
+
+
+func setup_object_vars(object_vars: Dictionary) -> void:
+ _object_vars = object_vars
+ for obj_var_name in _object_vars:
+ _setup_object_var(obj_var_name, _object_vars[obj_var_name])
+ if _property_list.get_child_count() < 5:
+ if _property_list.get_child_count() != 0:
+ $CategoryTitle/ToggleButton.hover_tooltip_text = ""
+ set_visible_to_maximum_size()
+
+
+func _setup_object_var(obj_var_name: String, obj_var_value: Variant) -> void:
+ var obj_var_type: int = typeof(obj_var_value)
+ if obj_var_type == TYPE_NIL or not obj_var_type in ScriptParameterCreationMenu.INSPECTOR_PRIMITIVE_SCENES:
+ return
+ var obj_var_scene = ScriptParameterCreationMenu.INSPECTOR_PRIMITIVE_SCENES[obj_var_type].instantiate()
+ obj_var_scene.label_text = obj_var_name
+ obj_var_scene.reset_value = Serialization.type_convert_any(_get_default_value_of_obj_var(obj_var_name), obj_var_type)
+ # Be careful, the order matters here! Value editors with setters
+ # that use onready vars can only be used after adding as a child,
+ # and then we need to refresh if a refresh method exists.
+ _property_list.add_child(obj_var_scene)
+ obj_var_scene.current_value = obj_var_value
+ if obj_var_scene.has_method(&"refresh"):
+ obj_var_scene.refresh()
+ obj_var_scene.value_changed.connect(_on_object_var_changed.bind(obj_var_scene))
+ if _is_editable and GameplaySettings.script_show_add_inspector_input:
+ var trash_button: Node = _TRASH_BUTTON.instantiate()
+ obj_var_scene.add_child(trash_button)
+ trash_button.pressed.connect(_on_delete_object_var.bind(obj_var_name))
+
+
+func _on_object_var_changed(value, which: Control) -> void:
+ var obj_var_name: String = which.label_text
+ Zone.script_network_sync.set_variable_on_node(target_node, obj_var_name, value)
+
+
+func _on_delete_object_var(obj_var_name: String) -> void:
+ Zone.script_network_sync.set_variable_on_node(target_node, obj_var_name, null)
+ for child in _property_list.get_children():
+ child.cleanup_and_delete()
+ _property_list.remove_child(child)
+ var vars = target_node.get_meta(&"MirrorScriptObjectVariables")
+ vars.erase(obj_var_name)
+ setup_object_vars(vars)
+
+
+func _get_default_value_of_obj_var(obj_var_name: String) -> Variant:
+ var script_instances: Array[ScriptInstance] = target_node.get_script_instances()
+ for script_inst in script_instances:
+ if script_inst.has_method(&"get_default_value_of_exposed_variable"):
+ var def = script_inst.get_default_value_of_exposed_variable(obj_var_name)
+ if def != null:
+ return def
+ return null
diff --git a/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn
new file mode 100644
index 00000000..fcad62ff
--- /dev/null
+++ b/mirror-godot-app/creator/selection/inspector/script/inspector_script_object_vars.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=3 format=3 uid="uid://bhbojmr3nuwrc"]
+
+[ext_resource type="PackedScene" uid="uid://dkxqj3l0xm8uw" path="res://creator/selection/inspector/categories/inspector_category_base.tscn" id="1_ov2tq"]
+[ext_resource type="Script" path="res://creator/selection/inspector/script/inspector_script_object_vars.gd" id="2_abj1i"]
+
+[node name="InspectorScriptObjectVars" instance=ExtResource("1_ov2tq")]
+script = ExtResource("2_abj1i")
+
+[node name="ToggleButton" parent="CategoryTitle" index="0" node_paths=PackedStringArray("properties")]
+properties = NodePath("../../Properties")
+hover_tooltip_text = "Use @export in GDScript"
+
+[node name="Text" parent="CategoryTitle/ToggleButton/Name" index="3"]
+text = "OBJECT VARIABLES"
+
+[connection signal="mouse_entered" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_mouse_entered"]
+[connection signal="mouse_exited" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_mouse_exited"]
+[connection signal="pressed" from="CategoryTitle/ToggleButton" to="CategoryTitle/ToggleButton" method="_on_hoverable_button_pressed"]
diff --git a/mirror-godot-app/dummy.md b/mirror-godot-app/dummy.md
index 0f785285..3d6ab607 100644
--- a/mirror-godot-app/dummy.md
+++ b/mirror-godot-app/dummy.md
@@ -1,2 +1 @@
-this file is used to force a rebuild in github actions
-.
+this file is used to force a rebuild in github actions..
diff --git a/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import b/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import
index 57f2aca9..38fe88bb 100644
--- a/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import
+++ b/mirror-godot-app/gameplay/space_object/placeholder/error/error_recreation.gltf.import
@@ -29,6 +29,7 @@ animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
import_script/path=""
_subresources={
"materials": {
diff --git a/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import b/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import
index 3eff7127..0077ffea 100644
--- a/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import
+++ b/mirror-godot-app/player/animations/humanoid/humanoid_animations.glb.import
@@ -29,6 +29,7 @@ animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
import_script/path=""
_subresources={
"animations": {
diff --git a/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres b/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres
index 9852a789..054d710e 100644
--- a/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres
+++ b/mirror-godot-app/player/animations/humanoid/rifle_hip_running_forward.tres
@@ -346,7 +346,7 @@ tracks/48/enabled = true
tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase")
tracks/48/interp = 1
tracks/48/loop_wrap = true
-tracks/48/keys = PackedFloat32Array(0, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0333333, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0666667, 1, 0.326463, -0.0769484, 0.00502321, 0.942059, 0.1, 1, 0.248203, -0.0788253, 0.00231859, 0.965493, 0.133333, 1, 0.232453, -0.0972994, -0.00598173, 0.96771, 0.166667, 1, 0.222252, -0.16507, -0.0268306, 0.96054, 0.2, 1, 0.287049, -0.168713, -0.024834, 0.942614, 0.233333, 1, 0.296801, -0.114995, -0.00493449, 0.947977, 0.266667, 1, 0.282065, -0.0713982, 0.00544318, 0.95672, 0.366667, 1, 0.282097, -0.0713935, 0.00544969, 0.95671, 0.4, 1, 0.581845, 0.00720247, 0.0756187, 0.809745, 0.433333, 1, 0.449409, -0.034424, 0.0561659, 0.890894, 0.466667, 1, 0.282023, -0.0975051, -0.00318849, 0.954435, 0.5, 1, 0.274092, -0.0981293, -0.00288162, 0.95668, 0.533333, 1, 0.377064, -0.0928584, -0.00260233, 0.921517)
+tracks/48/keys = PackedFloat32Array(0, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0333333, 1, 0.377063, -0.0928583, -0.00260248, 0.921517, 0.0666667, 1, 0.326463, -0.0769484, 0.00502321, 0.942059, 0.1, 1, 0.248203, -0.0788253, 0.00231859, 0.965493, 0.133333, 1, 0.232453, -0.0972994, -0.00598173, 0.96771, 0.166667, 1, 0.222252, -0.16507, -0.0268306, 0.96054, 0.2, 1, 0.287049, -0.168713, -0.024834, 0.942614, 0.233333, 1, 0.296801, -0.114995, -0.00493449, 0.947977, 0.266667, 1, 0.282065, -0.0713982, 0.00544318, 0.95672, 0.366667, 1, 0.282097, -0.0713935, 0.00544969, 0.95671, 0.4, 1, 0.581845, 0.00720247, 0.0756187, 0.809745, 0.433333, 1, 0.44941, -0.034424, 0.0561659, 0.890894, 0.466667, 1, 0.282023, -0.0975051, -0.00318849, 0.954435, 0.5, 1, 0.274092, -0.0981293, -0.00288162, 0.95668, 0.533333, 1, 0.377064, -0.0928584, -0.00260233, 0.921517)
tracks/49/type = "rotation_3d"
tracks/49/imported = true
tracks/49/enabled = true
diff --git a/mirror-godot-app/player/animations/humanoid/running_forward.tres b/mirror-godot-app/player/animations/humanoid/running_forward.tres
index 89e6f707..e03d8457 100644
--- a/mirror-godot-app/player/animations/humanoid/running_forward.tres
+++ b/mirror-godot-app/player/animations/humanoid/running_forward.tres
@@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201837, -0.0870503, -0.153598, 0.98
tracks/13/type = "rotation_3d"
tracks/13/imported = true
tracks/13/enabled = true
-tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
+tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
tracks/13/interp = 1
tracks/13/loop_wrap = true
-tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0666667, 1, 0.668375, -0.00325838, 0.0968561, 0.737484, 0.1, 1, 0.645165, -0.00593606, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912461, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.0117859, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106599, 0.091923, 0.792691, 0.333333, 1, 0.615871, -0.00920907, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758916, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428558, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164536, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854097, 0.0982995, 0.718411, 0.566667, 1, 0.691031, -0.000566358, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.0007297, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111848, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158245, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197134, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975591, 0.728636)
+tracks/13/keys = PackedFloat32Array(0, 1, 0.00975411, -0.0248017, -0.0847951, 0.996042)
tracks/14/type = "rotation_3d"
tracks/14/imported = true
tracks/14/enabled = true
-tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
+tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
tracks/14/interp = 1
tracks/14/loop_wrap = true
-tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141415, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482917, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483572, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476247, 0.719188)
+tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975406, 0.728636, 0.0666667, 1, 0.668375, -0.00325838, 0.0968561, 0.737484, 0.1, 1, 0.645165, -0.00593606, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912461, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.0117859, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106599, 0.091923, 0.792691, 0.333333, 1, 0.615871, -0.00920907, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758916, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428558, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164536, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854097, 0.0982995, 0.718411, 0.566667, 1, 0.691031, -0.000566358, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.0007297, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111848, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158245, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197134, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975591, 0.728636)
tracks/15/type = "rotation_3d"
tracks/15/imported = true
tracks/15/enabled = true
-tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
+tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
tracks/15/interp = 1
tracks/15/loop_wrap = true
-tracks/15/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198)
+tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141415, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482917, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483572, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476247, 0.719188)
tracks/16/type = "rotation_3d"
tracks/16/imported = true
tracks/16/enabled = true
-tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
+tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
tracks/16/interp = 1
tracks/16/loop_wrap = true
-tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199365, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.022005, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867705, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881563, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232735, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196011, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.018076, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936787, 0.717322)
+tracks/16/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198)
tracks/17/type = "rotation_3d"
tracks/17/imported = true
tracks/17/enabled = true
-tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
+tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
tracks/17/interp = 1
tracks/17/loop_wrap = true
-tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0333333, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448306, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570131, 0.0547033, 0.803566, 0.166667, 1, 0.567386, 0.00671554, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713889, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702995, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673206, 0.052965, 0.822018, 0.3, 1, 0.578165, 0.00628572, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573274, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511419, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447227, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385015, 0.0576579, 0.768731, 0.466667, 1, 0.64989, 0.00329124, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283821, 0.0591901, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596372, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.002483, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594902, 0.744663, 0.666667, 1, 0.660757, 0.00281639, 0.0592285, 0.748255, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655947, 0.00303646, 0.0589525, 0.752496)
+tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199365, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.022005, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867705, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881563, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232735, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196011, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.018076, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936787, 0.717322)
tracks/18/type = "rotation_3d"
tracks/18/imported = true
tracks/18/enabled = true
-tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
+tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
tracks/18/interp = 1
tracks/18/loop_wrap = true
-tracks/18/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421691, -0.00652392, 0.999528)
+tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0333333, 1, 0.655949, 0.00302838, 0.0589128, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448306, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570131, 0.0547033, 0.803566, 0.166667, 1, 0.567386, 0.00671554, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713889, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702995, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673206, 0.052965, 0.822018, 0.3, 1, 0.578165, 0.00628572, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573274, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511419, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447227, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385015, 0.0576579, 0.768731, 0.466667, 1, 0.64989, 0.00329124, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283821, 0.0591901, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596372, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.002483, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594902, 0.744663, 0.666667, 1, 0.660757, 0.00281639, 0.0592285, 0.748255, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655947, 0.00303646, 0.0589525, 0.752496)
tracks/19/type = "rotation_3d"
tracks/19/imported = true
tracks/19/enabled = true
-tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
+tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
tracks/19/interp = 1
tracks/19/loop_wrap = true
-tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776573, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601923, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.0606041, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612097, 0.756221, 0.333333, 1, 0.659494, -0.0784708, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.0797539, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797677, 0.065865, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796548, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.0651749, 0.687702)
+tracks/19/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421691, -0.00652392, 0.999528)
tracks/20/type = "rotation_3d"
tracks/20/imported = true
tracks/20/enabled = true
-tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
+tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
tracks/20/interp = 1
tracks/20/loop_wrap = true
-tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275225, 0.760034, 0.1, 1, 0.623635, -0.052881, -0.000379407, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503362, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606372, 0.820872, 0.2, 1, 0.558161, -0.0492646, -0.000649479, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638456, 0.826386, 0.266667, 1, 0.568497, -0.049844, -0.000608313, 0.821174, 0.3, 1, 0.579711, -0.0504687, -0.000563078, 0.813258, 0.333333, 1, 0.593422, -0.0512281, -0.000507881, 0.80326, 0.366667, 1, 0.608502, -0.0520573, -0.000445204, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380412, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.00031773, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026133, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.00021563, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158812, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173667, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193939, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212513, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.000268102, 0.751471)
+tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796063, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776573, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601923, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.0606041, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612097, 0.756221, 0.333333, 1, 0.659494, -0.0784708, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.0797539, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797677, 0.065865, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796548, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.0651749, 0.687702)
tracks/21/type = "rotation_3d"
tracks/21/imported = true
tracks/21/enabled = true
-tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
+tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
tracks/21/interp = 1
tracks/21/loop_wrap = true
-tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.0066467, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545057, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401893, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442539, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.0054186, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602794, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.00665622, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.00726134, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780151, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.0082368, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852743, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864417, 0.667161, 0.6, 1, 0.73141, -0.134106, 0.00857979, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843094, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809934, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802203, 0.680574)
+tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231745, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275225, 0.760034, 0.1, 1, 0.623635, -0.052881, -0.000379407, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503362, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606372, 0.820872, 0.2, 1, 0.558161, -0.0492646, -0.000649479, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638456, 0.826386, 0.266667, 1, 0.568497, -0.049844, -0.000608313, 0.821174, 0.3, 1, 0.579711, -0.0504687, -0.000563078, 0.813258, 0.333333, 1, 0.593422, -0.0512281, -0.000507881, 0.80326, 0.366667, 1, 0.608502, -0.0520573, -0.000445204, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380412, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.00031773, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026133, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.00021563, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158812, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173667, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193939, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212513, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.000268102, 0.751471)
tracks/22/type = "rotation_3d"
tracks/22/imported = true
tracks/22/enabled = true
-tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
+tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
tracks/22/interp = 1
tracks/22/loop_wrap = true
-tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392577, -0.0055858, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323499, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250133, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319558, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423233, 0.755528, 0.333333, 1, 0.666648, -0.0392155, -0.00551256, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693741, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840883, 0.718113, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433153, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.0434489, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433726, -0.0129176, 0.67495, 0.633333, 1, 0.733429, -0.0431906, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.0429719, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427878, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
+tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578866, 0.00189617, 0.999218)
tracks/23/type = "rotation_3d"
tracks/23/imported = true
tracks/23/enabled = true
-tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
+tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
tracks/23/interp = 1
tracks/23/loop_wrap = true
-tracks/23/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251264, 0.999204)
+tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.0080568, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.0066467, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545057, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401893, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442539, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.0054186, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602794, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.00665622, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.00726134, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780151, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.0082368, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852743, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864417, 0.667161, 0.6, 1, 0.73141, -0.134106, 0.00857979, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843094, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809934, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802203, 0.680574)
tracks/24/type = "rotation_3d"
tracks/24/imported = true
tracks/24/enabled = true
-tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder")
+tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
tracks/24/interp = 1
tracks/24/loop_wrap = true
-tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.510679, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325)
+tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392577, -0.0055858, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323499, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250133, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319558, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423233, 0.755528, 0.333333, 1, 0.666648, -0.0392155, -0.00551256, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693741, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840883, 0.718113, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433153, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.0434489, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433726, -0.0129176, 0.67495, 0.633333, 1, 0.733429, -0.0431906, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.0429719, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427878, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
tracks/25/type = "rotation_3d"
tracks/25/imported = true
tracks/25/enabled = true
-tracks/25/path = NodePath("Armature/Skeleton3D:RightArm")
+tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
tracks/25/interp = 1
tracks/25/loop_wrap = true
-tracks/25/keys = PackedFloat32Array(0, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0333333, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0666667, 1, 0.427513, -0.00279769, 0.108356, 0.897487, 0.1, 1, 0.429059, 0.00546337, 0.101401, 0.89755, 0.133333, 1, 0.426473, 0.008892, 0.0903984, 0.899928, 0.166667, 1, 0.418822, 0.00709637, 0.083521, 0.904191, 0.2, 1, 0.417157, -0.00320663, 0.0763514, 0.905616, 0.233333, 1, 0.41866, -0.0169338, 0.090743, 0.903439, 0.266667, 1, 0.427545, -0.036799, 0.142719, 0.891898, 0.3, 1, 0.438923, -0.05515, 0.183185, 0.877923, 0.333333, 1, 0.451789, -0.0681821, 0.201016, 0.866505, 0.366667, 1, 0.4415, -0.0781936, 0.229303, 0.863935, 0.4, 1, 0.40906, -0.0924556, 0.27506, 0.865138, 0.433333, 1, 0.357862, -0.108799, 0.341268, 0.862342, 0.466667, 1, 0.314828, -0.119529, 0.389537, 0.857238, 0.5, 1, 0.300559, -0.12412, 0.409703, 0.852292, 0.533333, 1, 0.316447, -0.129081, 0.424531, 0.838435, 0.566667, 1, 0.332561, -0.132523, 0.425279, 0.831251, 0.6, 1, 0.342502, -0.128735, 0.396226, 0.842095, 0.633333, 1, 0.355165, -0.11594, 0.34546, 0.860856, 0.666667, 1, 0.382218, -0.0904308, 0.275432, 0.877422, 0.7, 1, 0.408778, -0.055095, 0.196791, 0.88946, 0.733333, 1, 0.422189, -0.031471, 0.163243, 0.891133)
+tracks/25/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251264, 0.999204)
tracks/26/type = "rotation_3d"
tracks/26/imported = true
tracks/26/enabled = true
-tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm")
+tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder")
tracks/26/interp = 1
tracks/26/loop_wrap = true
-tracks/26/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429585, -0.0179811, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440463, -0.800882, 0.596003, 0.166667, 1, 0.0534108, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559945, -0.042949, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634443, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788548, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704396, 0.733333, 1, 0.0274294, -0.0572102, -0.730987, 0.679435)
+tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.510679, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325)
tracks/27/type = "rotation_3d"
tracks/27/imported = true
tracks/27/enabled = true
-tracks/27/path = NodePath("Armature/Skeleton3D:RightHand")
+tracks/27/path = NodePath("Armature/Skeleton3D:RightArm")
tracks/27/interp = 1
tracks/27/loop_wrap = true
-tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.00266074, -0.0418228, 0.99884, 0.133333, 1, 0.00585683, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384397, 0.00889191, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482547, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596982, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338524, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453924, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221374, -0.145362, 0.989027, 0.433333, 1, -0.00832669, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257411, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424878, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170997, 0.997843, 0.666667, 1, 0.0253717, -0.0308429, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802)
+tracks/27/keys = PackedFloat32Array(0, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0333333, 1, 0.422188, -0.031471, 0.163243, 0.891133, 0.0666667, 1, 0.427513, -0.00279769, 0.108356, 0.897487, 0.1, 1, 0.429059, 0.00546337, 0.101401, 0.89755, 0.133333, 1, 0.426473, 0.008892, 0.0903984, 0.899928, 0.166667, 1, 0.418822, 0.00709637, 0.083521, 0.904191, 0.2, 1, 0.417157, -0.00320663, 0.0763514, 0.905616, 0.233333, 1, 0.41866, -0.0169338, 0.090743, 0.903439, 0.266667, 1, 0.427545, -0.036799, 0.142719, 0.891898, 0.3, 1, 0.438923, -0.05515, 0.183185, 0.877923, 0.333333, 1, 0.451789, -0.0681821, 0.201016, 0.866505, 0.366667, 1, 0.4415, -0.0781936, 0.229303, 0.863935, 0.4, 1, 0.40906, -0.0924556, 0.27506, 0.865138, 0.433333, 1, 0.357862, -0.108799, 0.341268, 0.862342, 0.466667, 1, 0.314828, -0.119529, 0.389537, 0.857238, 0.5, 1, 0.300559, -0.12412, 0.409703, 0.852292, 0.533333, 1, 0.316447, -0.129081, 0.424531, 0.838435, 0.566667, 1, 0.332561, -0.132523, 0.425279, 0.831251, 0.6, 1, 0.342502, -0.128735, 0.396226, 0.842095, 0.633333, 1, 0.355165, -0.11594, 0.34546, 0.860856, 0.666667, 1, 0.382218, -0.0904308, 0.275432, 0.877422, 0.7, 1, 0.408778, -0.055095, 0.196791, 0.88946, 0.733333, 1, 0.422189, -0.031471, 0.163243, 0.891133)
tracks/28/type = "rotation_3d"
tracks/28/imported = true
tracks/28/enabled = true
-tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
+tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm")
tracks/28/interp = 1
tracks/28/loop_wrap = true
-tracks/28/keys = PackedFloat32Array(0, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904034, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411956, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026)
+tracks/28/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429585, -0.0179811, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440463, -0.800882, 0.596003, 0.166667, 1, 0.0534108, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559945, -0.042949, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634443, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788548, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704396, 0.733333, 1, 0.0274294, -0.0572102, -0.730987, 0.679435)
tracks/29/type = "rotation_3d"
tracks/29/imported = true
tracks/29/enabled = true
-tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
+tracks/29/path = NodePath("Armature/Skeleton3D:RightHand")
tracks/29/interp = 1
tracks/29/loop_wrap = true
-tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876265, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.020216, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762)
+tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.00266074, -0.0418228, 0.99884, 0.133333, 1, 0.00585683, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384397, 0.00889191, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482547, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596982, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338524, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453924, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221374, -0.145362, 0.989027, 0.433333, 1, -0.00832669, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257411, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424878, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170997, 0.997843, 0.666667, 1, 0.0253717, -0.0308429, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802)
tracks/30/type = "rotation_3d"
tracks/30/imported = true
tracks/30/enabled = true
-tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
+tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
tracks/30/interp = 1
tracks/30/loop_wrap = true
-tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386175, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461123, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406009, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.0344959, -0.0407419, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927)
+tracks/30/keys = PackedFloat32Array(0, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307772, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904034, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411956, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026)
tracks/31/type = "rotation_3d"
tracks/31/imported = true
tracks/31/enabled = true
-tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
+tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
tracks/31/interp = 1
tracks/31/loop_wrap = true
-tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0333333, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181382, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366007, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357458, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164645, -0.0345269, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325856, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346931, 0.682116)
+tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876265, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.020216, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762)
tracks/32/type = "rotation_3d"
tracks/32/imported = true
tracks/32/enabled = true
-tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
+tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
tracks/32/interp = 1
tracks/32/loop_wrap = true
-tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293117, 0.0349869, 0.998198)
+tracks/32/keys = PackedFloat32Array(0, 1, 0.00976307, 0.0248163, 0.0847954, 0.996041)
tracks/33/type = "rotation_3d"
tracks/33/imported = true
tracks/33/enabled = true
-tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
+tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
tracks/33/interp = 1
tracks/33/loop_wrap = true
-tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877365, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694774, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568744, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641638, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.0077124, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940197, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113148, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.067063, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657852, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637295, 0.790657, 0.6, 1, 0.615102, 0.0192207, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153386, -0.0670594, 0.758208, 0.7, 1, 0.663141, 0.0135586, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687974, 0.739728)
+tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386175, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461123, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406009, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.0344959, -0.0407419, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927)
tracks/34/type = "rotation_3d"
tracks/34/imported = true
tracks/34/enabled = true
-tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
+tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
tracks/34/interp = 1
tracks/34/loop_wrap = true
-tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0333333, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0666667, 1, 0.700191, -0.000152041, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424653, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115035, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226937, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229838, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203037, -0.0502508, 0.666157, 0.3, 1, 0.734752, 0.00154514, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915061, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186706, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583958, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134015, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202534, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258363, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309703, -0.04542, 0.770334, 0.6, 1, 0.642367, -0.00281586, -0.045715, 0.765027, 0.633333, 1, 0.657342, -0.00214426, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134192, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668928, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377183, -0.0481113, 0.717165)
+tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0333333, 1, 0.730233, 0.016586, -0.0346923, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181382, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366007, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357458, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164645, -0.0345269, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325856, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346931, 0.682116)
tracks/35/type = "rotation_3d"
tracks/35/imported = true
tracks/35/enabled = true
-tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
+tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
tracks/35/interp = 1
tracks/35/loop_wrap = true
-tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421397, 0.00652642, 0.999528)
+tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293117, 0.0349869, 0.998198)
tracks/36/type = "rotation_3d"
tracks/36/imported = true
tracks/36/enabled = true
-tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1")
+tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
tracks/36/interp = 1
tracks/36/loop_wrap = true
-tracks/36/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723868, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717597, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692948, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.071592, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793)
+tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877365, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694774, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568744, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641638, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.0077124, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940197, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113148, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.067063, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657852, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637295, 0.790657, 0.6, 1, 0.615102, 0.0192207, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153386, -0.0670594, 0.758208, 0.7, 1, 0.663141, 0.0135586, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687974, 0.739728)
tracks/37/type = "rotation_3d"
tracks/37/imported = true
tracks/37/enabled = true
-tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2")
+tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
tracks/37/interp = 1
tracks/37/loop_wrap = true
-tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168005, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591748, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596088, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.0565809, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
+tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0333333, 1, 0.69524, -0.000393996, -0.0481364, 0.717164, 0.0666667, 1, 0.700191, -0.000152041, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424653, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115035, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226937, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229838, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203037, -0.0502508, 0.666157, 0.3, 1, 0.734752, 0.00154514, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915061, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186706, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583958, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134015, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202534, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258363, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309703, -0.04542, 0.770334, 0.6, 1, 0.642367, -0.00281586, -0.045715, 0.765027, 0.633333, 1, 0.657342, -0.00214426, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134192, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668928, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377183, -0.0481113, 0.717165)
tracks/38/type = "rotation_3d"
tracks/38/imported = true
tracks/38/enabled = true
-tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
+tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
tracks/38/interp = 1
tracks/38/loop_wrap = true
-tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350073, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.0338061, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295733, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307075, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775)
+tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421397, 0.00652642, 0.999528)
tracks/39/type = "rotation_3d"
tracks/39/imported = true
tracks/39/enabled = true
-tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
+tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1")
tracks/39/interp = 1
tracks/39/loop_wrap = true
-tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774826, 0.0532492, -0.0244805, 0.629452, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231857, 0.603629, 0.333333, 1, 0.783766, 0.0538747, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247525, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486274, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257222, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254054, 0.647817)
+tracks/39/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723868, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717597, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692948, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.071592, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793)
tracks/40/type = "rotation_3d"
tracks/40/imported = true
tracks/40/enabled = true
-tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
+tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2")
tracks/40/interp = 1
tracks/40/loop_wrap = true
-tracks/40/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204)
+tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168005, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591748, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596088, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.0565809, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
tracks/41/type = "rotation_3d"
tracks/41/imported = true
tracks/41/enabled = true
-tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
+tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3")
tracks/41/interp = 1
tracks/41/loop_wrap = true
-tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.0313259, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547008, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707003, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496813, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482537, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734647, 0.136843, -0.987833, 0.00798016, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.0166121, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
+tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579561, -0.00189737, 0.999218)
tracks/42/type = "rotation_3d"
tracks/42/imported = true
tracks/42/enabled = true
-tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg")
+tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
tracks/42/interp = 1
tracks/42/loop_wrap = true
-tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680975, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406655, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532302, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524162, 0.943736, 0.333333, 1, -0.456528, -0.00687826, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647)
+tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350073, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.0338061, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295733, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307075, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775)
tracks/43/type = "rotation_3d"
tracks/43/imported = true
tracks/43/enabled = true
-tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot")
+tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
tracks/43/interp = 1
tracks/43/loop_wrap = true
-tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207841, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158868, 0.00648578, 0.881786, 0.566667, 1, 0.470291, 0.00700169, -0.00994352, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213991, 0.865528, 0.633333, 1, 0.537694, 0.00718267, -0.0071123, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.0343281, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484)
+tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774826, 0.0532492, -0.0244805, 0.629452, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231857, 0.603629, 0.333333, 1, 0.783766, 0.0538747, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247525, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486274, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257222, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254054, 0.647817)
tracks/44/type = "rotation_3d"
tracks/44/imported = true
tracks/44/enabled = true
-tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase")
+tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
tracks/44/interp = 1
tracks/44/loop_wrap = true
-tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426408, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166896, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.0077208, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.953029, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884654, -0.000505923, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696822, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711176, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930081, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898634, -0.024166, 0.95706)
+tracks/44/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204)
tracks/45/type = "rotation_3d"
tracks/45/imported = true
tracks/45/enabled = true
-tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg")
+tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
tracks/45/interp = 1
tracks/45/loop_wrap = true
-tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0666667, 1, 0.0644894, -0.0232475, -0.997619, 0.00759191, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518425, 0.466667, 1, -0.00956217, 0.457757, 0.888846, 0.0178976, 0.5, 1, -0.0084846, 0.423861, 0.905675, 0.00468156, 0.533333, 1, -0.0113515, 0.406725, 0.913469, 0.00454908, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.039e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969)
+tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.0313259, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547008, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707003, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496813, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482537, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734647, 0.136843, -0.987833, 0.00798016, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.0166121, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
tracks/46/type = "rotation_3d"
tracks/46/imported = true
tracks/46/enabled = true
-tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg")
+tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg")
tracks/46/interp = 1
tracks/46/loop_wrap = true
-tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0333333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.006515, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253454, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876556, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933844, 0.860797, 0.5, 1, -0.269672, 0.0836651, -0.00249726, 0.959308, 0.533333, 1, -0.179705, 0.0268816, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245932, 0.00329864, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455341, 0.000516671, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106456, 0.87131, 0.733333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331)
+tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680975, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406655, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532302, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524162, 0.943736, 0.333333, 1, -0.456528, -0.00687826, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647)
tracks/47/type = "rotation_3d"
tracks/47/imported = true
tracks/47/enabled = true
-tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot")
+tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot")
tracks/47/interp = 1
tracks/47/loop_wrap = true
-tracks/47/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.033259, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780927, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141701, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380237, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315884, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450675, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412582, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995)
+tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207841, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158868, 0.00648578, 0.881786, 0.566667, 1, 0.470291, 0.00700169, -0.00994352, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213991, 0.865528, 0.633333, 1, 0.537694, 0.00718267, -0.0071123, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.0343281, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484)
tracks/48/type = "rotation_3d"
tracks/48/imported = true
tracks/48/enabled = true
-tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase")
+tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase")
tracks/48/interp = 1
tracks/48/loop_wrap = true
-tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664333, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298992, 0.917118, 0.166667, 1, 0.319659, 0.00436587, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730296, 0.00561743, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283044, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127808, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.0148359, 0.0751641, 0.930608)
+tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426408, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166896, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.0077208, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.953029, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884654, -0.000505923, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696822, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711176, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930081, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898634, -0.024166, 0.95706)
tracks/49/type = "rotation_3d"
tracks/49/imported = true
tracks/49/enabled = true
-tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
+tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg")
tracks/49/interp = 1
tracks/49/loop_wrap = true
-tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042)
+tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0666667, 1, 0.0644894, -0.0232475, -0.997619, 0.00759191, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518425, 0.466667, 1, -0.00956217, 0.457757, 0.888846, 0.0178976, 0.5, 1, -0.0084846, 0.423861, 0.905675, 0.00468156, 0.533333, 1, -0.0113515, 0.406725, 0.913469, 0.00454908, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.039e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969)
tracks/50/type = "rotation_3d"
tracks/50/imported = true
tracks/50/enabled = true
-tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
+tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg")
tracks/50/interp = 1
tracks/50/loop_wrap = true
-tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218)
+tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0333333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.006515, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253454, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876556, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933844, 0.860797, 0.5, 1, -0.269672, 0.0836651, -0.00249726, 0.959308, 0.533333, 1, -0.179705, 0.0268816, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245932, 0.00329864, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455341, 0.000516671, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106456, 0.87131, 0.733333, 1, -0.459142, 0.00313712, -0.00686421, 0.888331)
tracks/51/type = "rotation_3d"
tracks/51/imported = true
tracks/51/enabled = true
-tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
+tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot")
tracks/51/interp = 1
tracks/51/loop_wrap = true
-tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041)
+tracks/51/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.033259, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780927, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141701, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380237, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315884, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450675, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412582, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995)
tracks/52/type = "rotation_3d"
tracks/52/imported = true
tracks/52/enabled = true
-tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3")
+tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase")
tracks/52/interp = 1
tracks/52/loop_wrap = true
-tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218)
+tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664333, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298992, 0.917118, 0.166667, 1, 0.319659, 0.00436587, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730296, 0.00561743, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283044, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127808, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.0148359, 0.0751641, 0.930608)
tracks/53/type = "method"
tracks/53/imported = false
tracks/53/enabled = true
diff --git a/mirror-godot-app/player/animations/humanoid/running_forward_left.tres b/mirror-godot-app/player/animations/humanoid/running_forward_left.tres
index 662803f1..2211641a 100644
--- a/mirror-godot-app/player/animations/humanoid/running_forward_left.tres
+++ b/mirror-godot-app/player/animations/humanoid/running_forward_left.tres
@@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201836, -0.0870503, -0.153598, 0.98
tracks/13/type = "rotation_3d"
tracks/13/imported = true
tracks/13/enabled = true
-tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
+tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
tracks/13/interp = 1
tracks/13/loop_wrap = true
-tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213448, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213447, 0.0975407, 0.728637, 0.0666667, 1, 0.668375, -0.00325845, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593605, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912457, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911072, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.0118309, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920904, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758915, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.0059106, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428561, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282619, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164532, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566389, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.00072968, 0.098373, 0.717403, 0.633333, 1, 0.686441, -0.00111854, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212439, 0.0975591, 0.728636)
+tracks/13/keys = PackedFloat32Array(0, 1, 0.00975416, -0.0248017, -0.0847951, 0.996042)
tracks/14/type = "rotation_3d"
tracks/14/imported = true
tracks/14/enabled = true
-tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
+tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
tracks/14/interp = 1
tracks/14/loop_wrap = true
-tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120244, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607544, -0.0120134, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123131, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.014527, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188)
+tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213448, 0.0975406, 0.728636, 0.0333333, 1, 0.677916, -0.00213447, 0.0975407, 0.728637, 0.0666667, 1, 0.668375, -0.00325845, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593605, 0.0951567, 0.758072, 0.133333, 1, 0.616642, -0.00912457, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911072, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.0118309, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920904, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758915, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.0059106, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428561, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282619, 0.097121, 0.734095, 0.5, 1, 0.682034, -0.00164532, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566389, 0.0984679, 0.716086, 0.6, 1, 0.689678, -0.00072968, 0.098373, 0.717403, 0.633333, 1, 0.686441, -0.00111854, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212439, 0.0975591, 0.728636)
tracks/15/type = "rotation_3d"
tracks/15/imported = true
tracks/15/enabled = true
-tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
+tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
tracks/15/interp = 1
tracks/15/loop_wrap = true
-tracks/15/keys = PackedFloat32Array(0, 1, 0.0389578, -0.0293203, -0.0349865, 0.998198)
+tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134934, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.012701, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120244, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607544, -0.0120134, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123131, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126804, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.014527, 0.0478793, 0.715218, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484411, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188)
tracks/16/type = "rotation_3d"
tracks/16/imported = true
tracks/16/enabled = true
-tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
+tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
tracks/16/interp = 1
tracks/16/loop_wrap = true
-tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.086564, 0.798629, 0.233333, 1, 0.597608, -0.0270894, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256128, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207321, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943369, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322)
+tracks/16/keys = PackedFloat32Array(0, 1, 0.0389578, -0.0293203, -0.0349865, 0.998198)
tracks/17/type = "rotation_3d"
tracks/17/imported = true
tracks/17/enabled = true
-tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
+tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
tracks/17/interp = 1
tracks/17/loop_wrap = true
-tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302834, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302836, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345853, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448303, 0.0566731, 0.780881, 0.133333, 1, 0.592669, 0.00570126, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713888, 0.0522623, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673202, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628577, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511421, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447228, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329119, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283811, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.00248303, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281638, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297578, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303654, 0.0589525, 0.752496)
+tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190722, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190722, 0.0936014, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605308, -0.026465, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.086564, 0.798629, 0.233333, 1, 0.597608, -0.0270894, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873315, 0.791062, 0.3, 1, 0.615675, -0.0256128, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245103, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219854, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207321, 0.09233, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939048, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943369, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179754, 0.0943985, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322)
tracks/18/type = "rotation_3d"
tracks/18/imported = true
tracks/18/enabled = true
-tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
+tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
tracks/18/interp = 1
tracks/18/loop_wrap = true
-tracks/18/keys = PackedFloat32Array(0, 1, 0.0297257, 0.00421688, -0.00652399, 0.999528)
+tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302834, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302836, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345853, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448303, 0.0566731, 0.780881, 0.133333, 1, 0.592669, 0.00570126, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713888, 0.0522623, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.00673202, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628577, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.00511421, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447228, 0.0566867, 0.780691, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329119, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283811, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253435, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241661, 0.059788, 0.740365, 0.6, 1, 0.668133, 0.00248303, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281638, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297578, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303654, 0.0589525, 0.752496)
tracks/19/type = "rotation_3d"
tracks/19/imported = true
tracks/19/enabled = true
-tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
+tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
tracks/19/interp = 1
tracks/19/loop_wrap = true
-tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652598, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652598, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635254, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.078169, 0.0612096, 0.756222, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796733, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659434, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702)
+tracks/19/keys = PackedFloat32Array(0, 1, 0.0297257, 0.00421688, -0.00652399, 0.999528)
tracks/20/type = "rotation_3d"
tracks/20/imported = true
tracks/20/enabled = true
-tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
+tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
tracks/20/interp = 1
tracks/20/loop_wrap = true
-tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546984, -0.00023174, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231767, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275238, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379369, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503383, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606368, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649504, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638407, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608263, 0.821174, 0.3, 1, 0.57971, -0.0504688, -0.000563056, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507881, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445214, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380446, 0.779735, 0.433333, 1, 0.638503, -0.0536861, -0.000317728, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.000261345, 0.756753, 0.5, 1, 0.661758, -0.0549278, -0.00021561, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185347, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158885, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173637, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193912, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212541, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750219, 0.733333, 1, 0.657494, -0.0547048, -0.000268063, 0.751471)
+tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796063, 0.0652598, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652598, 0.687701, 0.0666667, 1, 0.709595, -0.0794686, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635254, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619846, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.078169, 0.0612096, 0.756222, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649394, 0.693506, 0.5, 1, 0.722568, -0.0796733, 0.0654539, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659434, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656797, 0.679091, 0.666667, 1, 0.723068, -0.079692, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702)
tracks/21/type = "rotation_3d"
tracks/21/imported = true
tracks/21/enabled = true
-tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
+tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
tracks/21/interp = 1
tracks/21/loop_wrap = true
-tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805682, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805683, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664675, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545055, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401888, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.00412749, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.0044254, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487033, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541874, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602798, 0.72551, 0.4, 1, 0.689632, -0.132154, 0.00665619, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.0072613, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.0078015, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823683, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852744, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.0085798, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843089, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809938, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802201, 0.680574)
+tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546984, -0.00023174, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231767, 0.751472, 0.0666667, 1, 0.647621, -0.0541725, -0.000275238, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379369, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503383, 0.80267, 0.166667, 1, 0.56893, -0.0498674, -0.000606368, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649504, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.000638407, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608263, 0.821174, 0.3, 1, 0.57971, -0.0504688, -0.000563056, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507881, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445214, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380446, 0.779735, 0.433333, 1, 0.638503, -0.0536861, -0.000317728, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.000261345, 0.756753, 0.5, 1, 0.661758, -0.0549278, -0.00021561, 0.747702, 0.533333, 1, 0.668599, -0.05529, -0.000185347, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158885, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173637, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193912, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212541, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.000241535, 0.750219, 0.733333, 1, 0.657494, -0.0547048, -0.000268063, 0.751471)
tracks/22/type = "rotation_3d"
tracks/22/imported = true
tracks/22/enabled = true
-tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
+tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
tracks/22/interp = 1
tracks/22/loop_wrap = true
-tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.00838391, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558577, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323497, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.0022483, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250146, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319552, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423229, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693743, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840893, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121245, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.043449, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
+tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.0057887, 0.00189611, 0.999218)
tracks/23/type = "rotation_3d"
tracks/23/imported = true
tracks/23/enabled = true
-tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
+tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
tracks/23/interp = 1
tracks/23/loop_wrap = true
-tracks/23/keys = PackedFloat32Array(0, 1, 0.025586, 0.0174793, -0.0251263, 0.999204)
+tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805682, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805683, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764208, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664675, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545055, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444291, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401888, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.00412749, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.0044254, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487033, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541874, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602798, 0.72551, 0.4, 1, 0.689632, -0.132154, 0.00665619, 0.711968, 0.433333, 1, 0.703025, -0.13282, 0.0072613, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.0078015, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823683, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852744, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.0085798, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.00843089, 0.671908, 0.666667, 1, 0.724714, -0.133821, 0.00825947, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.00809938, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802201, 0.680574)
tracks/24/type = "rotation_3d"
tracks/24/imported = true
tracks/24/enabled = true
-tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder")
+tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
tracks/24/interp = 1
tracks/24/loop_wrap = true
-tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.463251, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.463251)
+tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427102, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421751, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.00838391, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558577, 0.74366, 0.166667, 1, 0.643982, -0.0378659, -0.00323497, 0.764096, 0.2, 1, 0.633982, -0.0372713, -0.0022483, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250146, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319552, 0.764436, 0.3, 1, 0.653972, -0.0384611, -0.00423229, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400428, -0.00693743, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840893, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982833, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121245, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676022, 0.566667, 1, 0.737746, -0.043449, -0.013059, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121767, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685522, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
tracks/25/type = "rotation_3d"
tracks/25/imported = true
tracks/25/enabled = true
-tracks/25/path = NodePath("Armature/Skeleton3D:RightArm")
+tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
tracks/25/interp = 1
tracks/25/loop_wrap = true
-tracks/25/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335138, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221617, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553498, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380214, 0.0854059, 0.870244, 0.2, 1, 0.483591, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194622, 0.0923897, 0.86943, 0.266667, 1, 0.49311, -0.0386559, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115692, 0.340117, 0.83103, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895)
+tracks/25/keys = PackedFloat32Array(0, 1, 0.025586, 0.0174793, -0.0251263, 0.999204)
tracks/26/type = "rotation_3d"
tracks/26/imported = true
tracks/26/enabled = true
-tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm")
+tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder")
tracks/26/interp = 1
tracks/26/loop_wrap = true
-tracks/26/keys = PackedFloat32Array(0, 1, 0.0274299, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.05721, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179812, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440454, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615823, -0.0253127, -0.822497, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616388, -0.0367601, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.0429489, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510633, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617365, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371626, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435)
+tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.463251, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529407, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.463251)
tracks/27/type = "rotation_3d"
tracks/27/imported = true
tracks/27/enabled = true
-tracks/27/path = NodePath("Armature/Skeleton3D:RightHand")
+tracks/27/path = NodePath("Armature/Skeleton3D:RightArm")
tracks/27/interp = 1
tracks/27/loop_wrap = true
-tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.0026607, -0.0418228, 0.99884, 0.133333, 1, 0.00585673, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889187, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119575, -0.198099, 0.979611, 0.3, 1, 0.0386131, -0.00596975, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.0033852, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453926, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832673, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257418, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424865, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802)
+tracks/27/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335138, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221617, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553498, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380214, 0.0854059, 0.870244, 0.2, 1, 0.483591, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194622, 0.0923897, 0.86943, 0.266667, 1, 0.49311, -0.0386559, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115692, 0.340117, 0.83103, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895)
tracks/28/type = "rotation_3d"
tracks/28/imported = true
tracks/28/enabled = true
-tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
+tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm")
tracks/28/interp = 1
tracks/28/loop_wrap = true
-tracks/28/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416885, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.30787, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026)
+tracks/28/keys = PackedFloat32Array(0, 1, 0.0274299, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.05721, -0.730987, 0.679435, 0.0666667, 1, 0.0246688, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179812, -0.775661, 0.629429, 0.133333, 1, 0.0578759, -0.00440454, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615823, -0.0253127, -0.822497, 0.56486, 0.233333, 1, 0.0676034, -0.0287049, -0.819344, 0.568579, 0.266667, 1, 0.0616388, -0.0367601, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.0429489, -0.783491, 0.617384, 0.333333, 1, 0.0471892, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510633, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617365, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740618, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.707619, 0.69443, 0.633333, 1, 0.0458404, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371626, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435)
tracks/29/type = "rotation_3d"
tracks/29/imported = true
tracks/29/enabled = true
-tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
+tracks/29/path = NodePath("Armature/Skeleton3D:RightHand")
tracks/29/interp = 1
tracks/29/loop_wrap = true
-tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201262, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866743, 0.136175, 0.98668, 0.733333, 1, 0.0201263, 0.0865728, 0.129256, 0.98762)
+tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361606, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.00376824, 0.998946, 0.1, 1, -0.0237054, 0.0026607, -0.0418228, 0.99884, 0.133333, 1, 0.00585673, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889187, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344873, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426751, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119575, -0.198099, 0.979611, 0.3, 1, 0.0386131, -0.00596975, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.0033852, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453926, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832673, -0.00954411, -0.124422, 0.992149, 0.466667, 1, 0.00392398, 0.0021902, -0.0994934, 0.995028, 0.5, 1, 0.0116836, -0.00580875, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699735, 0.997103, 0.566667, 1, -0.00257418, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424865, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.0011541, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361606, 0.0147042, 0.998802)
tracks/30/type = "rotation_3d"
tracks/30/imported = true
tracks/30/enabled = true
-tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
+tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
tracks/30/interp = 1
tracks/30/loop_wrap = true
-tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413035, 0.762927, 0.0333333, 1, 0.644197, -0.0352977, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450533, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.0431439, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.0385631, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927)
+tracks/30/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420998, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416885, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.30787, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406095, -0.30591, 0.900026)
tracks/31/type = "rotation_3d"
tracks/31/imported = true
tracks/31/enabled = true
-tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
+tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
tracks/31/interp = 1
tracks/31/loop_wrap = true
-tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.016586, -0.0346924, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.0164129, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116)
+tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865756, 0.129257, 0.98762, 0.0333333, 1, 0.0201262, 0.0865756, 0.129257, 0.98762, 0.0666667, 1, 0.020139, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876489, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201768, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866743, 0.136175, 0.98668, 0.733333, 1, 0.0201263, 0.0865728, 0.129256, 0.98762)
tracks/32/type = "rotation_3d"
tracks/32/imported = true
tracks/32/enabled = true
-tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
+tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
tracks/32/interp = 1
tracks/32/loop_wrap = true
-tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198)
+tracks/32/keys = PackedFloat32Array(0, 1, 0.00976302, 0.0248162, 0.0847954, 0.996041)
tracks/33/type = "rotation_3d"
tracks/33/imported = true
tracks/33/enabled = true
-tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
+tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
tracks/33/interp = 1
tracks/33/loop_wrap = true
-tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694776, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576307, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.0064164, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771241, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940201, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113149, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153312, -0.0670631, 0.758156, 0.466667, 1, 0.633118, 0.0171399, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639972, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615101, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.745249, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728)
+tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413035, 0.762927, 0.0333333, 1, 0.644197, -0.0352977, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710745, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450533, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.0431439, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623047, -0.0313889, -0.0385695, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313776, -0.0385631, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413034, 0.762927)
tracks/34/type = "rotation_3d"
tracks/34/imported = true
tracks/34/enabled = true
-tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
+tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
tracks/34/interp = 1
tracks/34/loop_wrap = true
-tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393926, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393928, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.00015201, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424646, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115037, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226935, -0.0504461, 0.660947, 0.233333, 1, 0.749262, 0.00229839, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203039, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.049861, 0.676499, 0.333333, 1, 0.722127, 0.000915058, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186701, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583917, -0.0479369, 0.721163, 0.433333, 1, 0.674935, -0.00134013, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202527, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258364, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.00295938, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281582, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134191, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668969, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377186, -0.0481114, 0.717165)
+tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.016586, -0.0346924, 0.682115, 0.0666667, 1, 0.73494, 0.0167267, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.0364541, 0.633157, 0.2, 1, 0.780907, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155707, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324553, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.0164129, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116)
tracks/35/type = "rotation_3d"
tracks/35/imported = true
tracks/35/enabled = true
-tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
+tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
tracks/35/interp = 1
tracks/35/loop_wrap = true
-tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652644, 0.999528)
+tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198)
tracks/36/type = "rotation_3d"
tracks/36/imported = true
tracks/36/enabled = true
-tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1")
+tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
tracks/36/interp = 1
tracks/36/loop_wrap = true
-tracks/36/keys = PackedFloat32Array(0, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717598, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.071379, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709409, -0.0738055, 0.692949, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717662, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709403, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703726, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.66673, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.07275, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736893, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793)
+tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127912, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694776, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576307, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.0064164, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771241, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.00940201, -0.0710963, 0.713582, 0.366667, 1, 0.681566, 0.0113149, -0.0698226, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684407, 0.743568, 0.433333, 1, 0.648435, 0.0153312, -0.0670631, 0.758156, 0.466667, 1, 0.633118, 0.0171399, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186102, -0.0647228, 0.781363, 0.533333, 1, 0.611791, 0.0195977, -0.0639972, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615101, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.745249, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728)
tracks/37/type = "rotation_3d"
tracks/37/imported = true
tracks/37/enabled = true
-tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2")
+tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
tracks/37/interp = 1
tracks/37/loop_wrap = true
-tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182937, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.65911, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174588, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165236, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647952, 0.0543763, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540965, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
+tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393926, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393928, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.00015201, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424646, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115037, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.0018257, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226935, -0.0504461, 0.660947, 0.233333, 1, 0.749262, 0.00229839, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203039, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.049861, 0.676499, 0.333333, 1, 0.722127, 0.000915058, -0.0493113, 0.69, 0.366667, 1, 0.707223, 0.000186701, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583917, -0.0479369, 0.721163, 0.433333, 1, 0.674935, -0.00134013, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202527, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258364, -0.0459559, 0.760605, 0.533333, 1, 0.639129, -0.00295938, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281582, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134191, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668969, -0.0478572, 0.722912, 0.733333, 1, 0.695241, -0.000377186, -0.0481114, 0.717165)
tracks/38/type = "rotation_3d"
tracks/38/imported = true
tracks/38/enabled = true
-tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
+tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
tracks/38/interp = 1
tracks/38/loop_wrap = true
-tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.034115, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591027, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289443, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286097, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316449, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775)
+tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652644, 0.999528)
tracks/39/type = "rotation_3d"
tracks/39/imported = true
tracks/39/enabled = true
-tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
+tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1")
tracks/39/interp = 1
tracks/39/loop_wrap = true
-tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521871, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521871, -0.0254054, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586187, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519257, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484281, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273511, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257223, 0.654098, 0.733333, 1, 0.759581, 0.0521872, -0.0254054, 0.647817)
+tracks/39/keys = PackedFloat32Array(0, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717657, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743453, 0.0717598, -0.0757841, 0.660594, 0.366667, 1, 0.729163, 0.071379, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709409, -0.0738055, 0.692949, 0.433333, 1, 0.698129, 0.0704752, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717662, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709403, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703726, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.66673, 0.0694647, -0.0705909, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.07275, 0.708829, 0.7, 1, 0.711927, 0.0708897, -0.0736893, 0.69477, 0.733333, 1, 0.717654, 0.0710514, -0.0740854, 0.688793)
tracks/40/type = "rotation_3d"
tracks/40/imported = true
tracks/40/enabled = true
-tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
+tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2")
tracks/40/interp = 1
tracks/40/loop_wrap = true
-tracks/40/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204)
+tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166189, 0.716045, 0.0666667, 1, 0.700474, 0.0571447, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180232, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182937, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.65911, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582694, -0.0174588, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170085, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165236, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.015593, 0.748794, 0.5, 1, 0.647952, 0.0543763, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540965, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558266, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
tracks/41/type = "rotation_3d"
tracks/41/imported = true
tracks/41/enabled = true
-tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
+tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3")
tracks/41/interp = 1
tracks/41/loop_wrap = true
-tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239613, 0.968075, 0.0293481, 0.3, 1, -0.0552124, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496817, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147107, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849535, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.067857, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
+tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579559, -0.00189733, 0.999218)
tracks/42/type = "rotation_3d"
tracks/42/imported = true
tracks/42/enabled = true
-tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg")
+tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
tracks/42/interp = 1
tracks/42/loop_wrap = true
-tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.0734671, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680974, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406656, 0.947712, 0.166667, 1, -0.210248, -0.0664878, 0.000532311, 0.975384, 0.2, 1, -0.20373, -0.0217434, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204953, -0.00170942, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524163, 0.943736, 0.333333, 1, -0.456528, -0.00687827, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712827, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346262, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.0072919, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485732, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.0734671, 0.101798, 0.605647)
+tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.034115, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355874, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591027, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328246, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289443, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.0284019, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714118, 0.119623, -0.0286097, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316449, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320575, 0.635775)
tracks/43/type = "rotation_3d"
tracks/43/imported = true
tracks/43/enabled = true
-tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot")
+tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
tracks/43/interp = 1
tracks/43/loop_wrap = true
-tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795857, 0.787484, 0.0666667, 1, 0.625486, -0.000207846, -0.0268606, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.0872051, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978842, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847227, 0.688084, 0.433333, 1, 0.542045, 0.039255, 0.0575828, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648576, 0.881786, 0.566667, 1, 0.470291, 0.00700166, -0.00994354, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213988, 0.865528, 0.633333, 1, 0.537694, 0.00718266, -0.00711224, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484)
+tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521871, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521871, -0.0254054, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586187, 0.266667, 1, 0.803387, 0.0552458, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519257, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272203, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484281, -0.028378, 0.706306, 0.6, 1, 0.7115, 0.0488337, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273511, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518112, -0.0257223, 0.654098, 0.733333, 1, 0.759581, 0.0521872, -0.0254054, 0.647817)
tracks/44/type = "rotation_3d"
tracks/44/imported = true
tracks/44/enabled = true
-tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase")
+tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
tracks/44/interp = 1
tracks/44/loop_wrap = true
-tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.024166, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519542, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426436, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543806, -0.0208247, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366421, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.0130049, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505965, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696821, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611756, -0.00930077, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898635, -0.024166, 0.95706)
+tracks/44/keys = PackedFloat32Array(0, 1, 0.0255872, -0.01748, 0.0251249, 0.999204)
tracks/45/type = "rotation_3d"
tracks/45/imported = true
tracks/45/enabled = true
-tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg")
+tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
tracks/45/interp = 1
tracks/45/loop_wrap = true
-tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.039538, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644895, -0.0232475, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.04508, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.078742, 0.433333, 1, -0.0246849, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956222, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848458, 0.423861, 0.905675, 0.00468155, 0.533333, 1, -0.0113515, 0.406726, 0.913469, 0.00454905, 0.566667, 1, -0.012491, 0.394025, 0.919015, 2.03925e-05, 0.6, 1, 0.0182089, -0.354559, -0.934856, 0.00130756, 0.633333, 1, 0.0227266, -0.356627, -0.933965, 0.00330207, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.0051337, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969)
+tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145149, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317615, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239613, 0.968075, 0.0293481, 0.3, 1, -0.0552124, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496817, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147107, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303423, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849535, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676991, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.067857, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
tracks/46/type = "rotation_3d"
tracks/46/imported = true
tracks/46/enabled = true
-tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg")
+tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg")
tracks/46/interp = 1
tracks/46/loop_wrap = true
-tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313716, -0.00686419, 0.888331, 0.0333333, 1, -0.459142, 0.00313715, -0.00686419, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.00651503, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.00025345, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119298, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876559, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407358, 0.0247846, 0.617739, 0.433333, 1, -0.678619, 0.0504597, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249725, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329862, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183951, 0.986591, 0.633333, 1, -0.281819, 0.00455347, 0.000516675, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313716, -0.00686419, 0.888331)
+tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.0734671, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718039, -0.0680974, 0.062085, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406656, 0.947712, 0.166667, 1, -0.210248, -0.0664878, 0.000532311, 0.975384, 0.2, 1, -0.20373, -0.0217434, -0.00964683, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614308, 0.984063, 0.266667, 1, -0.153767, -0.0204953, -0.00170942, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524163, 0.943736, 0.333333, 1, -0.456528, -0.00687827, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712827, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346262, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.0072919, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.0329099, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485732, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.0734671, 0.101798, 0.605647)
tracks/47/type = "rotation_3d"
tracks/47/imported = true
tracks/47/enabled = true
-tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot")
+tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot")
tracks/47/interp = 1
tracks/47/loop_wrap = true
-tracks/47/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306987, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141703, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219003, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368344, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.030935, -0.0280916, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315885, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.0045067, 0.0183883, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.051505, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995)
+tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516565, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516565, 0.0795857, 0.787484, 0.0666667, 1, 0.625486, -0.000207846, -0.0268606, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.025914, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.0872051, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978842, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969846, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847227, 0.688084, 0.433333, 1, 0.542045, 0.039255, 0.0575828, 0.837454, 0.466667, 1, 0.417045, 0.027933, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648576, 0.881786, 0.566667, 1, 0.470291, 0.00700166, -0.00994354, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.00213988, 0.865528, 0.633333, 1, 0.537694, 0.00718266, -0.00711224, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516565, 0.0795856, 0.787484)
tracks/48/type = "rotation_3d"
tracks/48/imported = true
tracks/48/enabled = true
-tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase")
+tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase")
tracks/48/interp = 1
tracks/48/loop_wrap = true
-tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.0066433, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436588, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730303, 0.00561744, 0.930859, 0.233333, 1, 0.428249, -0.0431, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298553, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457679, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638602, 0.938774, 0.566667, 1, 0.332132, -0.0567951, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.0636259, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678352, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.946189, 0.733333, 1, 0.35791, -0.014836, 0.0751641, 0.930608)
+tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.024166, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292442, 0.0519542, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426436, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543806, -0.0208247, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366421, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949874, 0.4, 1, 0.314272, -0.0306012, -0.0130049, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505965, 0.865927, 0.466667, 1, 0.418454, 0.0248023, 0.01218, 0.907817, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270409, -0.0696821, -0.0285568, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242129, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611756, -0.00930077, 0.95766, 0.666667, 1, 0.290514, -0.0883114, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274547, -0.0898635, -0.024166, 0.95706)
tracks/49/type = "rotation_3d"
tracks/49/imported = true
tracks/49/enabled = true
-tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
+tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg")
tracks/49/interp = 1
tracks/49/loop_wrap = true
-tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042)
+tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214969, 0.0333333, 1, 0.039538, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644895, -0.0232475, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187737, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591498, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.04508, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288645, 0.399343, 0.912958, 0.078742, 0.433333, 1, -0.0246849, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956222, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848458, 0.423861, 0.905675, 0.00468155, 0.533333, 1, -0.0113515, 0.406726, 0.913469, 0.00454905, 0.566667, 1, -0.012491, 0.394025, 0.919015, 2.03925e-05, 0.6, 1, 0.0182089, -0.354559, -0.934856, 0.00130756, 0.633333, 1, 0.0227266, -0.356627, -0.933965, 0.00330207, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.0051337, 0.7, 1, 0.0382455, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214969)
tracks/50/type = "rotation_3d"
tracks/50/imported = true
tracks/50/enabled = true
-tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
+tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg")
tracks/50/interp = 1
tracks/50/loop_wrap = true
-tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218)
+tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313716, -0.00686419, 0.888331, 0.0333333, 1, -0.459142, 0.00313715, -0.00686419, 0.888331, 0.0666667, 1, -0.321819, -0.0375846, -0.00651503, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.00025345, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119298, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876559, -0.0137613, 0.847546, 0.266667, 1, -0.649473, 0.0506432, -0.00867341, 0.758647, 0.3, 1, -0.756318, 0.0421017, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407358, 0.0247846, 0.617739, 0.433333, 1, -0.678619, 0.0504597, 0.0151349, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249725, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313687, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329862, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183951, 0.986591, 0.633333, 1, -0.281819, 0.00455347, 0.000516675, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.0319411, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313716, -0.00686419, 0.888331)
tracks/51/type = "rotation_3d"
tracks/51/imported = true
tracks/51/enabled = true
-tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
+tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot")
tracks/51/interp = 1
tracks/51/loop_wrap = true
-tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041)
+tracks/51/keys = PackedFloat32Array(0, 1, 0.670436, -0.0306987, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420878, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.082636, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386514, 0.0516442, 0.934384, 0.266667, 1, 0.387986, -0.00141703, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399391, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219003, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368344, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.030935, -0.0280916, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.00988061, 0.847581, 0.566667, 1, 0.566946, -0.00315885, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.0045067, 0.0183883, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.051505, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306987, -0.0445175, 0.739995)
tracks/52/type = "rotation_3d"
tracks/52/imported = true
tracks/52/enabled = true
-tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3")
+tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase")
tracks/52/interp = 1
tracks/52/loop_wrap = true
-tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218)
+tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751641, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760794, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.0066433, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436588, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730303, 0.00561744, 0.930859, 0.233333, 1, 0.428249, -0.0431, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.0561309, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301156, 0.908035, 0.333333, 1, 0.399181, -0.0295483, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298553, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437218, 0.934186, 0.5, 1, 0.344986, -0.0457679, 0.0658479, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638602, 0.938774, 0.566667, 1, 0.332132, -0.0567951, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.0636259, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678352, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.946189, 0.733333, 1, 0.35791, -0.014836, 0.0751641, 0.930608)
tracks/53/type = "method"
tracks/53/imported = false
tracks/53/enabled = true
diff --git a/mirror-godot-app/player/animations/humanoid/running_forward_right.tres b/mirror-godot-app/player/animations/humanoid/running_forward_right.tres
index d67fb885..53ae833f 100644
--- a/mirror-godot-app/player/animations/humanoid/running_forward_right.tres
+++ b/mirror-godot-app/player/animations/humanoid/running_forward_right.tres
@@ -98,283 +98,283 @@ tracks/12/keys = PackedFloat32Array(0, 1, 0.0201837, -0.0870503, -0.153598, 0.98
tracks/13/type = "rotation_3d"
tracks/13/imported = true
tracks/13/enabled = true
-tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
+tracks/13/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
tracks/13/interp = 1
tracks/13/loop_wrap = true
-tracks/13/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0666667, 1, 0.668375, -0.0032584, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593607, 0.0951568, 0.758072, 0.133333, 1, 0.616642, -0.00912462, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920902, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758913, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428562, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.0971211, 0.734095, 0.5, 1, 0.682034, -0.00164531, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566363, 0.098468, 0.716086, 0.6, 1, 0.689678, -0.000729711, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111849, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975592, 0.728636)
+tracks/13/keys = PackedFloat32Array(0, 1, 0.00975413, -0.0248017, -0.0847951, 0.996042)
tracks/14/type = "rotation_3d"
tracks/14/imported = true
tracks/14/enabled = true
-tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
+tracks/14/path = NodePath("Armature/Skeleton3D:LeftHandIndex1")
tracks/14/interp = 1
tracks/14/loop_wrap = true
-tracks/14/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134935, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.0127009, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126805, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715219, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484412, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188)
+tracks/14/keys = PackedFloat32Array(0, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0333333, 1, 0.677916, -0.00213445, 0.0975407, 0.728636, 0.0666667, 1, 0.668375, -0.0032584, 0.0968562, 0.737484, 0.1, 1, 0.645165, -0.00593607, 0.0951568, 0.758072, 0.133333, 1, 0.616642, -0.00912462, 0.0930073, 0.781677, 0.166667, 1, 0.592085, -0.011786, 0.0911071, 0.800622, 0.2, 1, 0.581614, -0.012899, 0.0902839, 0.808336, 0.233333, 1, 0.584309, -0.0126136, 0.0904965, 0.806371, 0.266667, 1, 0.591664, -0.011831, 0.091074, 0.800937, 0.3, 1, 0.602559, -0.0106598, 0.0919229, 0.792691, 0.333333, 1, 0.615871, -0.00920902, 0.0929483, 0.782291, 0.366667, 1, 0.630499, -0.00758913, 0.0940593, 0.770433, 0.4, 1, 0.645391, -0.00591056, 0.0951731, 0.757877, 0.433333, 1, 0.659554, -0.00428562, 0.0962155, 0.745461, 0.466667, 1, 0.67206, -0.00282618, 0.0971211, 0.734095, 0.5, 1, 0.682034, -0.00164531, 0.0978332, 0.724745, 0.533333, 1, 0.688638, -0.000854123, 0.0982994, 0.718411, 0.566667, 1, 0.691031, -0.000566363, 0.098468, 0.716086, 0.6, 1, 0.689678, -0.000729711, 0.0983731, 0.717403, 0.633333, 1, 0.686441, -0.00111849, 0.0981454, 0.720531, 0.666667, 1, 0.682559, -0.00158243, 0.0978708, 0.724246, 0.7, 1, 0.679291, -0.00197136, 0.097639, 0.727342, 0.733333, 1, 0.677914, -0.00212436, 0.0975592, 0.728636)
tracks/15/type = "rotation_3d"
tracks/15/imported = true
tracks/15/enabled = true
-tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
+tracks/15/path = NodePath("Armature/Skeleton3D:LeftHandIndex2")
tracks/15/interp = 1
tracks/15/loop_wrap = true
-tracks/15/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198)
+tracks/15/keys = PackedFloat32Array(0, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0333333, 1, 0.693032, -0.0144088, 0.0476245, 0.719188, 0.0666667, 1, 0.683588, -0.0141414, 0.0470275, 0.728214, 0.1, 1, 0.660602, -0.0134935, 0.0455708, 0.749231, 0.133333, 1, 0.632327, -0.0127009, 0.0437745, 0.773359, 0.166667, 1, 0.607962, -0.0120243, 0.0422227, 0.792752, 0.2, 1, 0.597566, -0.0117369, 0.0415593, 0.800656, 0.233333, 1, 0.600242, -0.011811, 0.0417302, 0.798642, 0.266667, 1, 0.607543, -0.0120133, 0.0421962, 0.793074, 0.3, 1, 0.618357, -0.0123132, 0.0428845, 0.78463, 0.333333, 1, 0.631564, -0.0126805, 0.0437246, 0.773986, 0.366667, 1, 0.646069, -0.013086, 0.0446465, 0.76186, 0.4, 1, 0.660828, -0.0135002, 0.0455831, 0.74903, 0.433333, 1, 0.674857, -0.0138961, 0.0464718, 0.736352, 0.466667, 1, 0.687238, -0.0142464, 0.0472554, 0.724754, 0.5, 1, 0.697108, -0.0145269, 0.0478793, 0.715219, 0.533333, 1, 0.70364, -0.0147135, 0.0482916, 0.708761, 0.566667, 1, 0.706007, -0.014781, 0.0484412, 0.706391, 0.6, 1, 0.704669, -0.0147424, 0.0483573, 0.707733, 0.633333, 1, 0.701467, -0.0146506, 0.0481555, 0.710923, 0.666667, 1, 0.697626, -0.0145399, 0.0479139, 0.71471, 0.7, 1, 0.694392, -0.0144475, 0.0477103, 0.717868, 0.733333, 1, 0.693032, -0.0144085, 0.0476248, 0.719188)
tracks/16/type = "rotation_3d"
tracks/16/imported = true
tracks/16/enabled = true
-tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
+tracks/16/path = NodePath("Armature/Skeleton3D:LeftHandIndex3")
tracks/16/interp = 1
tracks/16/loop_wrap = true
-tracks/16/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605307, -0.0264649, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873314, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245104, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219855, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.0923301, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939047, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179753, 0.0943986, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322)
+tracks/16/keys = PackedFloat32Array(0, 1, 0.0389577, -0.0293203, -0.0349865, 0.998198)
tracks/17/type = "rotation_3d"
tracks/17/imported = true
tracks/17/enabled = true
-tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
+tracks/17/path = NodePath("Armature/Skeleton3D:LeftHandMiddle1")
tracks/17/interp = 1
tracks/17/loop_wrap = true
-tracks/17/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448305, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570134, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713885, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.006732, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628578, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.0051142, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447226, 0.0566867, 0.780692, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329118, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283812, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253428, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241667, 0.0597881, 0.740365, 0.6, 1, 0.668133, 0.00248306, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281641, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303648, 0.0589525, 0.752496)
+tracks/17/keys = PackedFloat32Array(0, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0333333, 1, 0.69016, -0.0190721, 0.0936015, 0.717324, 0.0666667, 1, 0.680739, -0.0199366, 0.0929536, 0.726331, 0.1, 1, 0.657811, -0.0220051, 0.0912998, 0.747305, 0.133333, 1, 0.629609, -0.0244462, 0.0892098, 0.771386, 0.166667, 1, 0.605307, -0.0264649, 0.0873637, 0.79074, 0.2, 1, 0.59494, -0.0273043, 0.0865641, 0.798629, 0.233333, 1, 0.597608, -0.0270893, 0.0867706, 0.796619, 0.266667, 1, 0.60489, -0.026499, 0.0873314, 0.791062, 0.3, 1, 0.615675, -0.0256129, 0.0881562, 0.782635, 0.333333, 1, 0.628846, -0.0245104, 0.0891525, 0.772013, 0.366667, 1, 0.643314, -0.0232734, 0.0902327, 0.75991, 0.4, 1, 0.658035, -0.0219855, 0.091316, 0.747107, 0.433333, 1, 0.672028, -0.0207322, 0.0923301, 0.734455, 0.466667, 1, 0.684377, -0.0196012, 0.0932114, 0.72288, 0.5, 1, 0.694222, -0.0186823, 0.0939047, 0.713364, 0.533333, 1, 0.700741, -0.0180761, 0.0943368, 0.70692, 0.566667, 1, 0.703104, -0.0178488, 0.0944861, 0.704556, 0.6, 1, 0.701768, -0.0179753, 0.0943986, 0.705895, 0.633333, 1, 0.698572, -0.0182774, 0.0941963, 0.709077, 0.666667, 1, 0.694738, -0.0186266, 0.0939553, 0.712856, 0.7, 1, 0.691511, -0.0189188, 0.0937521, 0.716007, 0.733333, 1, 0.690152, -0.0190669, 0.0936788, 0.717322)
tracks/18/type = "rotation_3d"
tracks/18/imported = true
tracks/18/enabled = true
-tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
+tracks/18/path = NodePath("Armature/Skeleton3D:LeftHandMiddle2")
tracks/18/interp = 1
tracks/18/loop_wrap = true
-tracks/18/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421692, -0.00652393, 0.999528)
+tracks/18/keys = PackedFloat32Array(0, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0333333, 1, 0.655949, 0.00302835, 0.0589127, 0.752497, 0.0666667, 1, 0.646075, 0.00345845, 0.0582631, 0.761039, 0.1, 1, 0.622088, 0.00448305, 0.056673, 0.780881, 0.133333, 1, 0.592669, 0.00570134, 0.0547034, 0.803566, 0.166667, 1, 0.567386, 0.0067155, 0.0529946, 0.821717, 0.2, 1, 0.556618, 0.00713885, 0.0522624, 0.829092, 0.233333, 1, 0.559389, 0.00702992, 0.0524511, 0.827215, 0.266667, 1, 0.566953, 0.006732, 0.052965, 0.822018, 0.3, 1, 0.578166, 0.00628578, 0.0537243, 0.814125, 0.333333, 1, 0.591875, 0.00573273, 0.0546489, 0.804154, 0.366667, 1, 0.606956, 0.0051142, 0.055661, 0.792767, 0.4, 1, 0.622324, 0.00447226, 0.0566867, 0.780692, 0.433333, 1, 0.636957, 0.00385016, 0.0576578, 0.768731, 0.466667, 1, 0.64989, 0.00329118, 0.0585113, 0.757766, 0.5, 1, 0.660214, 0.00283812, 0.05919, 0.748736, 0.533333, 1, 0.667055, 0.00253428, 0.0596373, 0.742613, 0.566667, 1, 0.669536, 0.00241667, 0.0597881, 0.740365, 0.6, 1, 0.668133, 0.00248306, 0.0597023, 0.741638, 0.633333, 1, 0.664778, 0.00263667, 0.0594901, 0.744663, 0.666667, 1, 0.660757, 0.00281641, 0.0592284, 0.748254, 0.7, 1, 0.657371, 0.00297577, 0.059023, 0.751246, 0.733333, 1, 0.655946, 0.00303648, 0.0589525, 0.752496)
tracks/19/type = "rotation_3d"
tracks/19/imported = true
tracks/19/enabled = true
-tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
+tracks/19/path = NodePath("Armature/Skeleton3D:LeftHandMiddle3")
tracks/19/interp = 1
tracks/19/loop_wrap = true
-tracks/19/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794685, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619847, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612096, 0.756221, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649393, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654538, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656798, 0.679091, 0.666667, 1, 0.723068, -0.0796919, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702)
+tracks/19/keys = PackedFloat32Array(0, 1, 0.0297256, 0.00421692, -0.00652393, 0.999528)
tracks/20/type = "rotation_3d"
tracks/20/imported = true
tracks/20/enabled = true
-tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
+tracks/20/path = NodePath("Armature/Skeleton3D:LeftHandRing1")
tracks/20/interp = 1
tracks/20/loop_wrap = true
-tracks/20/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0666667, 1, 0.647621, -0.0541726, -0.000275294, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379362, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503344, 0.80267, 0.166667, 1, 0.56893, -0.0498675, -0.000606366, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649487, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.00063841, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608324, 0.821174, 0.3, 1, 0.57971, -0.0504687, -0.000563096, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507916, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445178, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380441, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.000317738, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026139, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.000215595, 0.747702, 0.533333, 1, 0.668599, -0.0552899, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158802, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173617, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193947, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212528, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.00024152, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.00026803, 0.751471)
+tracks/20/keys = PackedFloat32Array(0, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0333333, 1, 0.718659, -0.0796064, 0.0652599, 0.687701, 0.0666667, 1, 0.709595, -0.0794685, 0.0647482, 0.697114, 0.1, 1, 0.68749, -0.0790674, 0.0635253, 0.719076, 0.133333, 1, 0.660232, -0.0784882, 0.0619847, 0.744373, 0.166667, 1, 0.63669, -0.0779184, 0.0606277, 0.764774, 0.2, 1, 0.626632, -0.0776572, 0.0600411, 0.773109, 0.233333, 1, 0.629221, -0.0777252, 0.0601924, 0.770984, 0.266667, 1, 0.636285, -0.0779083, 0.060604, 0.765113, 0.3, 1, 0.64674, -0.0781691, 0.0612096, 0.756221, 0.333333, 1, 0.659494, -0.0784709, 0.0619425, 0.745032, 0.366667, 1, 0.673487, -0.0787811, 0.0627379, 0.732306, 0.4, 1, 0.687706, -0.0790719, 0.0635373, 0.718868, 0.433333, 1, 0.701203, -0.0793245, 0.0642868, 0.705613, 0.466667, 1, 0.713097, -0.0795265, 0.0649393, 0.693506, 0.5, 1, 0.722568, -0.0796734, 0.0654538, 0.683567, 0.533333, 1, 0.728831, -0.079754, 0.0658108, 0.676841, 0.566667, 1, 0.731098, -0.0797864, 0.0659433, 0.674375, 0.6, 1, 0.729817, -0.0797676, 0.0658651, 0.675771, 0.633333, 1, 0.726749, -0.0797343, 0.0656798, 0.679091, 0.666667, 1, 0.723068, -0.0796919, 0.0654551, 0.683036, 0.7, 1, 0.719967, -0.0796549, 0.0652654, 0.686325, 0.733333, 1, 0.718665, -0.0796145, 0.065175, 0.687702)
tracks/21/type = "rotation_3d"
tracks/21/imported = true
tracks/21/enabled = true
-tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
+tracks/21/path = NodePath("Armature/Skeleton3D:LeftHandRing2")
tracks/21/interp = 1
tracks/21/loop_wrap = true
-tracks/21/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764199, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664673, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545061, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444281, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401892, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442544, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541865, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602801, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.0066563, 0.711967, 0.433333, 1, 0.703025, -0.13282, 0.00726129, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780149, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823677, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852745, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.00857981, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.0084309, 0.671908, 0.666667, 1, 0.724715, -0.133821, 0.00825945, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.0080994, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802212, 0.680574)
+tracks/21/keys = PackedFloat32Array(0, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0333333, 1, 0.657494, -0.0546983, -0.000231819, 0.751472, 0.0666667, 1, 0.647621, -0.0541726, -0.000275294, 0.760034, 0.1, 1, 0.623635, -0.0528811, -0.000379362, 0.779925, 0.133333, 1, 0.594215, -0.0512708, -0.000503344, 0.80267, 0.166667, 1, 0.56893, -0.0498675, -0.000606366, 0.820872, 0.2, 1, 0.558161, -0.0492645, -0.000649487, 0.828269, 0.233333, 1, 0.560931, -0.04942, -0.00063841, 0.826386, 0.266667, 1, 0.568497, -0.0498439, -0.000608324, 0.821174, 0.3, 1, 0.57971, -0.0504687, -0.000563096, 0.813258, 0.333333, 1, 0.593422, -0.0512282, -0.000507916, 0.80326, 0.366667, 1, 0.608503, -0.0520573, -0.000445178, 0.791843, 0.4, 1, 0.623871, -0.0528949, -0.000380441, 0.779735, 0.433333, 1, 0.638503, -0.053686, -0.000317738, 0.767745, 0.466667, 1, 0.651435, -0.0543785, -0.00026139, 0.756753, 0.5, 1, 0.661759, -0.0549277, -0.000215595, 0.747702, 0.533333, 1, 0.668599, -0.0552899, -0.000185364, 0.741565, 0.566667, 1, 0.671079, -0.0554218, -0.000158802, 0.739312, 0.6, 1, 0.669676, -0.0553424, -0.000173617, 0.740588, 0.633333, 1, 0.666322, -0.055168, -0.000193947, 0.74362, 0.666667, 1, 0.662301, -0.054955, -0.000212528, 0.74722, 0.7, 1, 0.658917, -0.0547825, -0.00024152, 0.750218, 0.733333, 1, 0.657494, -0.0547048, -0.00026803, 0.751471)
tracks/22/type = "rotation_3d"
tracks/22/imported = true
tracks/22/enabled = true
-tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
+tracks/22/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
tracks/22/interp = 1
tracks/22/loop_wrap = true
-tracks/22/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421752, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558584, 0.74366, 0.166667, 1, 0.643982, -0.0378658, -0.00323502, 0.764096, 0.2, 1, 0.633982, -0.0372712, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250139, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319554, 0.764436, 0.3, 1, 0.653972, -0.038461, -0.00423234, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400427, -0.0069375, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840884, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982831, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676021, 0.566667, 1, 0.737747, -0.043449, -0.0130591, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121766, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685523, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
+tracks/22/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578867, 0.00189616, 0.999218)
tracks/23/type = "rotation_3d"
tracks/23/imported = true
tracks/23/enabled = true
-tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
+tracks/23/path = NodePath("Armature/Skeleton3D:LeftHandPinky1")
tracks/23/interp = 1
tracks/23/loop_wrap = true
-tracks/23/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251263, 0.999204)
+tracks/23/keys = PackedFloat32Array(0, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0333333, 1, 0.720344, -0.133627, 0.00805691, 0.680576, 0.0666667, 1, 0.711351, -0.133216, 0.00764199, 0.690054, 0.1, 1, 0.689418, -0.132143, 0.00664673, 0.712177, 0.133333, 1, 0.662364, -0.130695, 0.00545061, 0.737674, 0.166667, 1, 0.638989, -0.129341, 0.00444281, 0.758251, 0.2, 1, 0.629, -0.128736, 0.00401892, 0.766661, 0.233333, 1, 0.631572, -0.128893, 0.0041275, 0.764517, 0.266667, 1, 0.638587, -0.129317, 0.00442544, 0.758593, 0.3, 1, 0.648968, -0.12993, 0.00487034, 0.749623, 0.333333, 1, 0.661631, -0.130653, 0.00541865, 0.738339, 0.366667, 1, 0.675521, -0.131415, 0.00602801, 0.72551, 0.4, 1, 0.689633, -0.132154, 0.0066563, 0.711967, 0.433333, 1, 0.703025, -0.13282, 0.00726129, 0.698614, 0.466667, 1, 0.714826, -0.133377, 0.00780149, 0.686421, 0.5, 1, 0.72422, -0.133799, 0.00823677, 0.676413, 0.533333, 1, 0.730432, -0.134068, 0.00852745, 0.669643, 0.566667, 1, 0.732682, -0.134157, 0.00864419, 0.667161, 0.6, 1, 0.731411, -0.134106, 0.00857981, 0.668566, 0.633333, 1, 0.728367, -0.13398, 0.0084309, 0.671908, 0.666667, 1, 0.724715, -0.133821, 0.00825945, 0.675879, 0.7, 1, 0.721638, -0.133695, 0.0080994, 0.67919, 0.733333, 1, 0.720343, -0.133647, 0.00802212, 0.680574)
tracks/24/type = "rotation_3d"
tracks/24/imported = true
tracks/24/enabled = true
-tracks/24/path = NodePath("Armature/Skeleton3D:RightShoulder")
+tracks/24/path = NodePath("Armature/Skeleton3D:LeftHandPinky2")
tracks/24/interp = 1
tracks/24/loop_wrap = true
-tracks/24/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529408, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325)
+tracks/24/keys = PackedFloat32Array(0, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0333333, 1, 0.725401, -0.0427103, -0.0116965, 0.6869, 0.0666667, 1, 0.716404, -0.0421752, -0.0107197, 0.696327, 0.1, 1, 0.694457, -0.0408694, -0.0083839, 0.718324, 0.133333, 1, 0.667381, -0.0392576, -0.00558584, 0.74366, 0.166667, 1, 0.643982, -0.0378658, -0.00323502, 0.764096, 0.2, 1, 0.633982, -0.0372712, -0.00224833, 0.772446, 0.233333, 1, 0.636557, -0.0374245, -0.00250139, 0.770317, 0.266667, 1, 0.64358, -0.0378424, -0.00319554, 0.764436, 0.3, 1, 0.653972, -0.038461, -0.00423234, 0.755528, 0.333333, 1, 0.666648, -0.0392154, -0.00551261, 0.74432, 0.366667, 1, 0.680551, -0.0400427, -0.0069375, 0.731573, 0.4, 1, 0.694674, -0.0408837, -0.00840884, 0.718112, 0.433333, 1, 0.708075, -0.041682, -0.00982831, 0.704837, 0.466667, 1, 0.719883, -0.042385, -0.0110989, 0.692711, 0.5, 1, 0.729282, -0.0429447, -0.0121246, 0.682757, 0.533333, 1, 0.735496, -0.0433154, -0.0128098, 0.676021, 0.566667, 1, 0.737747, -0.043449, -0.0130591, 0.673552, 0.6, 1, 0.736474, -0.0433725, -0.0129175, 0.67495, 0.633333, 1, 0.733429, -0.0431905, -0.0125797, 0.678276, 0.666667, 1, 0.729775, -0.042972, -0.0121766, 0.682227, 0.7, 1, 0.726697, -0.0427877, -0.0118384, 0.685523, 0.733333, 1, 0.7254, -0.0427158, -0.011713, 0.686901)
tracks/25/type = "rotation_3d"
tracks/25/imported = true
tracks/25/enabled = true
-tracks/25/path = NodePath("Armature/Skeleton3D:RightArm")
+tracks/25/path = NodePath("Armature/Skeleton3D:LeftHandPinky3")
tracks/25/interp = 1
tracks/25/loop_wrap = true
-tracks/25/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221616, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553501, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380212, 0.0854059, 0.870244, 0.2, 1, 0.483592, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194623, 0.0923898, 0.86943, 0.266667, 1, 0.49311, -0.0386558, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115691, 0.340117, 0.831031, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895)
+tracks/25/keys = PackedFloat32Array(0, 1, 0.0255861, 0.0174793, -0.0251263, 0.999204)
tracks/26/type = "rotation_3d"
tracks/26/imported = true
tracks/26/enabled = true
-tracks/26/path = NodePath("Armature/Skeleton3D:RightForeArm")
+tracks/26/path = NodePath("Armature/Skeleton3D:RightShoulder")
tracks/26/interp = 1
tracks/26/loop_wrap = true
-tracks/26/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246689, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179811, -0.775661, 0.62943, 0.133333, 1, 0.0578759, -0.00440458, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.028705, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.042949, -0.783491, 0.617383, 0.333333, 1, 0.0471891, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740617, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.70762, 0.69443, 0.633333, 1, 0.0458403, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435)
+tracks/26/keys = PackedFloat32Array(0, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0333333, 1, 0.571766, -0.428966, 0.5239, 0.46325, 0.0666667, 1, 0.575604, -0.427687, 0.511048, 0.473913, 0.1, 1, 0.580319, -0.423176, 0.507509, 0.476011, 0.133333, 1, 0.578336, -0.424349, 0.512316, 0.472215, 0.166667, 1, 0.579748, -0.422874, 0.511817, 0.472348, 0.2, 1, 0.582452, -0.421655, 0.503277, 0.479238, 0.233333, 1, 0.578485, -0.426293, 0.502268, 0.480995, 0.266667, 1, 0.576664, -0.42736, 0.506907, 0.477354, 0.3, 1, 0.573839, -0.42871, 0.515092, 0.470741, 0.333333, 1, 0.566554, -0.435935, 0.518371, 0.469327, 0.366667, 1, 0.560735, -0.441748, 0.520307, 0.468739, 0.4, 1, 0.554159, -0.444996, 0.535749, 0.455916, 0.433333, 1, 0.537792, -0.462217, 0.534717, 0.459579, 0.466667, 1, 0.535702, -0.465564, 0.529408, 0.464759, 0.5, 1, 0.520606, -0.480062, 0.531237, 0.465078, 0.533333, 1, 0.509167, -0.490646, 0.532611, 0.465124, 0.566667, 1, 0.51068, -0.488498, 0.535636, 0.462245, 0.6, 1, 0.518602, -0.480192, 0.538343, 0.458971, 0.633333, 1, 0.526947, -0.470986, 0.542382, 0.454225, 0.666667, 1, 0.543505, -0.453566, 0.545079, 0.449187, 0.7, 1, 0.559658, -0.439092, 0.535775, 0.454892, 0.733333, 1, 0.571766, -0.428966, 0.5239, 0.46325)
tracks/27/type = "rotation_3d"
tracks/27/imported = true
tracks/27/enabled = true
-tracks/27/path = NodePath("Armature/Skeleton3D:RightHand")
+tracks/27/path = NodePath("Armature/Skeleton3D:RightArm")
tracks/27/interp = 1
tracks/27/loop_wrap = true
-tracks/27/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.0037682, 0.998946, 0.1, 1, -0.0237054, 0.00266068, -0.0418228, 0.99884, 0.133333, 1, 0.00585682, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889189, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344872, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426752, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596977, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338521, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453922, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832675, -0.0095441, -0.124422, 0.992149, 0.466667, 1, 0.00392401, 0.0021902, -0.0994933, 0.995028, 0.5, 1, 0.0116835, -0.00580874, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699736, 0.997103, 0.566667, 1, -0.00257414, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424905, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.00115412, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361605, 0.0147042, 0.998802)
+tracks/27/keys = PackedFloat32Array(0, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0333333, 1, 0.488072, -0.0335139, 0.162464, 0.856895, 0.0666667, 1, 0.4932, -0.00577496, 0.10936, 0.862995, 0.1, 1, 0.494668, 0.00221616, 0.102625, 0.862999, 0.133333, 1, 0.492282, 0.00553501, 0.092007, 0.865542, 0.166667, 1, 0.485147, 0.00380212, 0.0854059, 0.870244, 0.2, 1, 0.483592, -0.00617368, 0.0784748, 0.871747, 0.233333, 1, 0.48495, -0.0194623, 0.0923898, 0.86943, 0.266667, 1, 0.49311, -0.0386558, 0.142561, 0.857336, 0.3, 1, 0.503595, -0.0563376, 0.181478, 0.842784, 0.333333, 1, 0.515495, -0.0688457, 0.198466, 0.830744, 0.366667, 1, 0.505846, -0.0785529, 0.225899, 0.828806, 0.4, 1, 0.475457, -0.0925303, 0.270694, 0.831928, 0.433333, 1, 0.427208, -0.108737, 0.33599, 0.832334, 0.466667, 1, 0.386379, -0.119526, 0.384066, 0.830011, 0.5, 1, 0.372772, -0.12412, 0.404117, 0.826029, 0.533333, 1, 0.387829, -0.128779, 0.417989, 0.811351, 0.566667, 1, 0.403089, -0.13196, 0.418163, 0.803272, 0.6, 1, 0.412559, -0.128201, 0.389678, 0.813333, 0.633333, 1, 0.424646, -0.115691, 0.340117, 0.831031, 0.666667, 1, 0.450303, -0.0907648, 0.271644, 0.845694, 0.7, 1, 0.475429, -0.0564125, 0.195077, 0.855996, 0.733333, 1, 0.488072, -0.0335139, 0.162464, 0.856895)
tracks/28/type = "rotation_3d"
tracks/28/imported = true
tracks/28/enabled = true
-tracks/28/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
+tracks/28/path = NodePath("Armature/Skeleton3D:RightForeArm")
tracks/28/interp = 1
tracks/28/loop_wrap = true
-tracks/28/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420997, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406094, -0.30591, 0.900026)
+tracks/28/keys = PackedFloat32Array(0, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0333333, 1, 0.02743, -0.0572101, -0.730987, 0.679435, 0.0666667, 1, 0.0246689, -0.0412892, -0.74993, 0.659767, 0.1, 1, 0.0429584, -0.0179811, -0.775661, 0.62943, 0.133333, 1, 0.0578759, -0.00440458, -0.800882, 0.596003, 0.166667, 1, 0.0534109, -0.0158552, -0.81653, 0.574609, 0.2, 1, 0.0615824, -0.0253127, -0.822496, 0.56486, 0.233333, 1, 0.0676034, -0.028705, -0.819344, 0.568579, 0.266667, 1, 0.0616387, -0.03676, -0.81292, 0.577937, 0.3, 1, 0.0559946, -0.042949, -0.783491, 0.617383, 0.333333, 1, 0.0471891, -0.0634444, -0.714013, 0.695653, 0.366667, 1, 0.0510632, -0.0882547, -0.646149, 0.75637, 0.4, 1, 0.0617364, -0.106193, -0.625665, 0.77036, 0.466667, 1, 0.0788547, -0.121899, -0.653014, 0.7433, 0.5, 1, 0.0740617, -0.123876, -0.662118, 0.73537, 0.533333, 1, 0.0605096, -0.123841, -0.674849, 0.72497, 0.566667, 1, 0.0568464, -0.117204, -0.690546, 0.711462, 0.6, 1, 0.0528899, -0.11935, -0.70762, 0.69443, 0.633333, 1, 0.0458403, -0.117107, -0.718543, 0.684018, 0.666667, 1, 0.0460265, -0.0917572, -0.710891, 0.69577, 0.7, 1, 0.0371625, -0.0765627, -0.704687, 0.704395, 0.733333, 1, 0.0274295, -0.0572102, -0.730987, 0.679435)
tracks/29/type = "rotation_3d"
tracks/29/imported = true
tracks/29/enabled = true
-tracks/29/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
+tracks/29/path = NodePath("Armature/Skeleton3D:RightHand")
tracks/29/interp = 1
tracks/29/loop_wrap = true
-tracks/29/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0666667, 1, 0.0201391, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876488, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201769, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762)
+tracks/29/keys = PackedFloat32Array(0, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0333333, 1, -0.0295005, -0.0361605, 0.0147043, 0.998802, 0.0666667, 1, -0.0327932, -0.0318942, 0.0037682, 0.998946, 0.1, 1, -0.0237054, 0.00266068, -0.0418228, 0.99884, 0.133333, 1, 0.00585682, 0.0265388, -0.0896469, 0.995603, 0.166667, 1, 0.0384396, 0.00889189, -0.172482, 0.984222, 0.2, 1, 0.0473208, 0.00344872, -0.174226, 0.983562, 0.233333, 1, 0.0482546, 0.00426752, -0.170913, 0.984094, 0.266667, 1, 0.0312281, -0.0119574, -0.198099, 0.979611, 0.3, 1, 0.038613, -0.00596977, -0.145628, 0.988568, 0.333333, 1, 0.0171784, -0.00338521, -0.149521, 0.988604, 0.366667, 1, -0.0208147, -0.00453922, -0.149053, 0.9886, 0.4, 1, -0.0262676, -0.00221376, -0.145362, 0.989027, 0.433333, 1, -0.00832675, -0.0095441, -0.124422, 0.992149, 0.466667, 1, 0.00392401, 0.0021902, -0.0994933, 0.995028, 0.5, 1, 0.0116835, -0.00580874, -0.0894085, 0.99591, 0.533333, 1, 0.011802, -0.0273808, -0.0699736, 0.997103, 0.566667, 1, -0.00257414, -0.0343002, -0.0542044, 0.997937, 0.6, 1, 0.000424905, -0.0507895, -0.0396185, 0.997923, 0.633333, 1, 0.00115412, -0.0633663, -0.0170996, 0.997843, 0.666667, 1, 0.0253717, -0.0308428, -0.0251754, 0.998885, 0.7, 1, -0.0401662, -0.0318933, 0.0113681, 0.998619, 0.733333, 1, -0.0295004, -0.0361605, 0.0147042, 0.998802)
tracks/30/type = "rotation_3d"
tracks/30/imported = true
tracks/30/enabled = true
-tracks/30/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
+tracks/30/path = NodePath("Armature/Skeleton3D:RightHandThumb1")
tracks/30/interp = 1
tracks/30/loop_wrap = true
-tracks/30/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710744, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623048, -0.0313888, -0.0385694, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313775, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413033, 0.762927)
+tracks/30/keys = PackedFloat32Array(0, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0333333, 1, 0.307773, -0.0406094, -0.30591, 0.900026, 0.0666667, 1, 0.307855, -0.0407538, -0.304757, 0.900382, 0.1, 1, 0.308054, -0.0411088, -0.301933, 0.901249, 0.133333, 1, 0.308301, -0.0415547, -0.298388, 0.902324, 0.166667, 1, 0.308526, -0.0419693, -0.29508, 0.903315, 0.2, 1, 0.308669, -0.0422337, -0.292965, 0.903942, 0.566667, 1, 0.30869, -0.0422726, -0.292655, 0.904033, 0.6, 1, 0.308597, -0.0420997, -0.294036, 0.903625, 0.633333, 1, 0.308373, -0.0416886, -0.297328, 0.902643, 0.666667, 1, 0.308102, -0.0411955, -0.301251, 0.901457, 0.7, 1, 0.307871, -0.0407823, -0.304534, 0.900451, 0.733333, 1, 0.307773, -0.0406094, -0.30591, 0.900026)
tracks/31/type = "rotation_3d"
tracks/31/imported = true
tracks/31/enabled = true
-tracks/31/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
+tracks/31/path = NodePath("Armature/Skeleton3D:RightHandThumb2")
tracks/31/interp = 1
tracks/31/loop_wrap = true
-tracks/31/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0666667, 1, 0.73494, 0.0167268, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.036454, 0.633157, 0.2, 1, 0.780908, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155706, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324554, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116)
+tracks/31/keys = PackedFloat32Array(0, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0333333, 1, 0.0201263, 0.0865755, 0.129257, 0.98762, 0.0666667, 1, 0.0201391, 0.0866562, 0.13478, 0.986874, 0.1, 1, 0.0201683, 0.0868615, 0.148283, 0.984916, 0.133333, 1, 0.0202017, 0.0871333, 0.165172, 0.9822, 0.166667, 1, 0.0202325, 0.0874008, 0.180878, 0.979405, 0.2, 1, 0.0202522, 0.0875788, 0.190882, 0.977489, 0.233333, 1, 0.0202553, 0.0876054, 0.192364, 0.977196, 0.366667, 1, 0.0202581, 0.0876264, 0.19357, 0.976955, 0.466667, 1, 0.0202622, 0.0876488, 0.194842, 0.9767, 0.566667, 1, 0.0202616, 0.0876596, 0.19546, 0.976576, 0.6, 1, 0.0202478, 0.0875354, 0.188612, 0.977933, 0.633333, 1, 0.0202159, 0.0872491, 0.172243, 0.980975, 0.666667, 1, 0.0201769, 0.0869274, 0.152643, 0.984244, 0.7, 1, 0.0201416, 0.0866742, 0.136175, 0.986681, 0.733333, 1, 0.0201264, 0.0865728, 0.129256, 0.98762)
tracks/32/type = "rotation_3d"
tracks/32/imported = true
tracks/32/enabled = true
-tracks/32/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
+tracks/32/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
tracks/32/interp = 1
tracks/32/loop_wrap = true
-tracks/32/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198)
+tracks/32/keys = PackedFloat32Array(0, 1, 0.00976307, 0.0248162, 0.0847954, 0.996041)
tracks/33/type = "rotation_3d"
tracks/33/imported = true
tracks/33/enabled = true
-tracks/33/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
+tracks/33/path = NodePath("Armature/Skeleton3D:RightHandIndex1")
tracks/33/interp = 1
tracks/33/loop_wrap = true
-tracks/33/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694775, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641641, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771242, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.009402, -0.0710963, 0.713582, 0.366667, 1, 0.681567, 0.0113148, -0.0698225, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684406, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.0670631, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186101, -0.0647228, 0.781363, 0.533333, 1, 0.611792, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615102, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728)
+tracks/33/keys = PackedFloat32Array(0, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0333333, 1, 0.644197, -0.0352978, -0.0413034, 0.762927, 0.0666667, 1, 0.649361, -0.0362626, -0.0419754, 0.758454, 0.1, 1, 0.661874, -0.0386176, -0.0436122, 0.747348, 0.133333, 1, 0.677291, -0.0415535, -0.0456457, 0.733121, 0.166667, 1, 0.691391, -0.0442744, -0.047524, 0.719556, 0.2, 1, 0.700252, -0.0460029, -0.048714, 0.710744, 0.233333, 1, 0.700811, -0.0461124, -0.0487888, 0.710181, 0.266667, 1, 0.695393, -0.0450532, -0.0480601, 0.715604, 0.3, 1, 0.685554, -0.043144, -0.0467437, 0.725237, 0.333333, 1, 0.672311, -0.0406008, -0.044986, 0.737785, 0.366667, 1, 0.656714, -0.0376434, -0.0429341, 0.751975, 0.4, 1, 0.639886, -0.034496, -0.040742, 0.766613, 0.433333, 1, 0.623048, -0.0313888, -0.0385694, 0.780602, 0.466667, 1, 0.607506, -0.0285568, -0.0365827, 0.792958, 0.5, 1, 0.594646, -0.026238, -0.0349507, 0.802799, 0.533333, 1, 0.585891, -0.0246722, -0.0338462, 0.809307, 0.566667, 1, 0.582666, -0.0240976, -0.0334403, 0.811666, 0.6, 1, 0.589245, -0.0252707, -0.0342689, 0.806832, 0.633333, 1, 0.604768, -0.0280612, -0.0362347, 0.795082, 0.666667, 1, 0.622985, -0.0313775, -0.038563, 0.780652, 0.7, 1, 0.637982, -0.0341425, -0.0404971, 0.768227, 0.733333, 1, 0.644197, -0.0352981, -0.0413033, 0.762927)
tracks/34/type = "rotation_3d"
tracks/34/imported = true
tracks/34/enabled = true
-tracks/34/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
+tracks/34/path = NodePath("Armature/Skeleton3D:RightHandIndex2")
tracks/34/interp = 1
tracks/34/loop_wrap = true
-tracks/34/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.000152005, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424648, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115036, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.00182571, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226936, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229836, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203035, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915066, -0.0493114, 0.69, 0.366667, 1, 0.707223, 0.000186735, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583922, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134017, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202533, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258365, -0.0459558, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281586, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134196, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668985, -0.0478571, 0.722912, 0.733333, 1, 0.695241, -0.000377098, -0.0481114, 0.717165)
+tracks/34/keys = PackedFloat32Array(0, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0333333, 1, 0.730233, 0.0165859, -0.0346923, 0.682116, 0.0666667, 1, 0.73494, 0.0167268, -0.0348883, 0.677027, 0.1, 1, 0.746311, 0.0170724, -0.0353588, 0.664438, 0.133333, 1, 0.760259, 0.0175, -0.0359329, 0.64839, 0.166667, 1, 0.772957, 0.0178917, -0.036454, 0.633157, 0.2, 1, 0.780908, 0.0181381, -0.0367796, 0.623299, 0.233333, 1, 0.781408, 0.0181539, -0.0367998, 0.62267, 0.266667, 1, 0.776551, 0.0180032, -0.0366008, 0.628733, 0.3, 1, 0.767707, 0.0177298, -0.036238, 0.63953, 0.333333, 1, 0.755758, 0.0173625, -0.0357459, 0.653644, 0.366667, 1, 0.741621, 0.0169301, -0.0351621, 0.669683, 0.4, 1, 0.726297, 0.0164646, -0.034527, 0.686316, 0.433333, 1, 0.71089, 0.0159993, -0.0338861, 0.702304, 0.466667, 1, 0.69661, 0.0155706, -0.0332904, 0.716508, 0.5, 1, 0.684753, 0.0152163, -0.0327941, 0.727878, 0.533333, 1, 0.67666, 0.0149754, -0.0324554, 0.735428, 0.566667, 1, 0.673673, 0.0148866, -0.0323301, 0.738172, 0.6, 1, 0.679761, 0.0150677, -0.0325855, 0.732554, 0.633333, 1, 0.69409, 0.0154958, -0.0331862, 0.718956, 0.666667, 1, 0.710835, 0.0159987, -0.0338855, 0.70236, 0.7, 1, 0.724561, 0.016413, -0.0344571, 0.688153, 0.733333, 1, 0.730233, 0.0165854, -0.0346932, 0.682116)
tracks/35/type = "rotation_3d"
tracks/35/imported = true
tracks/35/enabled = true
-tracks/35/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
+tracks/35/path = NodePath("Armature/Skeleton3D:RightHandIndex3")
tracks/35/interp = 1
tracks/35/loop_wrap = true
-tracks/35/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652639, 0.999528)
+tracks/35/keys = PackedFloat32Array(0, 1, 0.0389504, 0.0293116, 0.0349869, 0.998198)
tracks/36/type = "rotation_3d"
tracks/36/imported = true
tracks/36/enabled = true
-tracks/36/path = NodePath("Armature/Skeleton3D:RightHandRing1")
+tracks/36/path = NodePath("Armature/Skeleton3D:RightHandMiddle1")
tracks/36/interp = 1
tracks/36/loop_wrap = true
-tracks/36/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743454, 0.0717598, -0.075784, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692949, 0.433333, 1, 0.698129, 0.0704753, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705908, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708828, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710515, -0.0740854, 0.688793)
+tracks/36/keys = PackedFloat32Array(0, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0333333, 1, 0.669257, 0.0127911, -0.068785, 0.73973, 0.0666667, 1, 0.674337, 0.0121878, -0.0692156, 0.735072, 0.1, 1, 0.686639, 0.0106905, -0.0702482, 0.723518, 0.133333, 1, 0.701781, 0.00877367, -0.0714979, 0.708742, 0.166667, 1, 0.715614, 0.00694775, -0.0726173, 0.694676, 0.2, 1, 0.7243, 0.00576308, -0.0733079, 0.685553, 0.233333, 1, 0.724847, 0.00568746, -0.0733507, 0.68497, 0.266667, 1, 0.719537, 0.00641641, -0.0729305, 0.690584, 0.3, 1, 0.709889, 0.00771242, -0.0721566, 0.700565, 0.333333, 1, 0.696891, 0.009402, -0.0710963, 0.713582, 0.366667, 1, 0.681567, 0.0113148, -0.0698225, 0.72833, 0.4, 1, 0.665015, 0.0133302, -0.0684406, 0.743568, 0.433333, 1, 0.648435, 0.0153313, -0.0670631, 0.758156, 0.466667, 1, 0.633117, 0.01714, -0.0657853, 0.771065, 0.5, 1, 0.620432, 0.0186101, -0.0647228, 0.781363, 0.533333, 1, 0.611792, 0.0195977, -0.0639973, 0.788182, 0.566667, 1, 0.608607, 0.0199589, -0.0637294, 0.790657, 0.6, 1, 0.615102, 0.0192208, -0.0642756, 0.785589, 0.633333, 1, 0.630417, 0.017455, -0.0655597, 0.773286, 0.666667, 1, 0.648374, 0.0153387, -0.0670595, 0.758208, 0.7, 1, 0.663141, 0.0135587, -0.0682872, 0.74525, 0.733333, 1, 0.669257, 0.0128193, -0.0687975, 0.739728)
tracks/37/type = "rotation_3d"
tracks/37/imported = true
tracks/37/enabled = true
-tracks/37/path = NodePath("Armature/Skeleton3D:RightHandRing2")
+tracks/37/path = NodePath("Armature/Skeleton3D:RightHandMiddle2")
tracks/37/interp = 1
tracks/37/loop_wrap = true
-tracks/37/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571446, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180231, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582695, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170086, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.0155931, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558267, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
+tracks/37/keys = PackedFloat32Array(0, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0333333, 1, 0.69524, -0.000393967, -0.0481365, 0.717164, 0.0666667, 1, 0.700191, -0.000152005, -0.0483466, 0.712316, 0.1, 1, 0.712164, 0.000424648, -0.0488771, 0.70031, 0.133333, 1, 0.726879, 0.00115036, -0.0495205, 0.684977, 0.166667, 1, 0.740308, 0.00182571, -0.0501013, 0.670396, 0.2, 1, 0.748732, 0.00226936, -0.050446, 0.660947, 0.233333, 1, 0.749262, 0.00229836, -0.0504667, 0.660344, 0.266667, 1, 0.744114, 0.00203035, -0.0502507, 0.666157, 0.3, 1, 0.734752, 0.00154512, -0.0498611, 0.676499, 0.333333, 1, 0.722127, 0.000915066, -0.0493114, 0.69, 0.366667, 1, 0.707223, 0.000186735, -0.0486554, 0.705314, 0.4, 1, 0.691104, -0.000583922, -0.0479368, 0.721163, 0.433333, 1, 0.674935, -0.00134017, -0.0472076, 0.736364, 0.466667, 1, 0.659979, -0.00202533, -0.0465258, 0.749839, 0.5, 1, 0.647581, -0.00258365, -0.0459558, 0.760605, 0.533333, 1, 0.639129, -0.0029594, -0.0455645, 0.767743, 0.566667, 1, 0.636013, -0.00309705, -0.04542, 0.770334, 0.6, 1, 0.642368, -0.00281586, -0.0457149, 0.765027, 0.633333, 1, 0.657343, -0.00214425, -0.0464065, 0.752159, 0.666667, 1, 0.674877, -0.00134196, -0.0472066, 0.736417, 0.7, 1, 0.68928, -0.000668985, -0.0478571, 0.722912, 0.733333, 1, 0.695241, -0.000377098, -0.0481114, 0.717165)
tracks/38/type = "rotation_3d"
tracks/38/imported = true
tracks/38/enabled = true
-tracks/38/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
+tracks/38/path = NodePath("Armature/Skeleton3D:RightHandMiddle3")
tracks/38/interp = 1
tracks/38/loop_wrap = true
-tracks/38/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355875, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328245, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.028402, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714117, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320574, 0.635775)
+tracks/38/keys = PackedFloat32Array(0, 1, 0.0297285, -0.00421394, 0.00652639, 0.999528)
tracks/39/type = "rotation_3d"
tracks/39/imported = true
tracks/39/enabled = true
-tracks/39/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
+tracks/39/path = NodePath("Armature/Skeleton3D:RightHandRing1")
tracks/39/interp = 1
tracks/39/loop_wrap = true
-tracks/39/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552459, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272202, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706305, 0.6, 1, 0.7115, 0.0488338, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518113, -0.0257223, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254055, 0.647817)
+tracks/39/keys = PackedFloat32Array(0, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0333333, 1, 0.717656, 0.0710711, -0.0740402, 0.688793, 0.0666667, 1, 0.722407, 0.0711914, -0.0743924, 0.683758, 0.1, 1, 0.733898, 0.0715081, -0.075156, 0.671291, 0.133333, 1, 0.748004, 0.0718761, -0.0760819, 0.65539, 0.166667, 1, 0.760853, 0.07219, -0.0769147, 0.640294, 0.2, 1, 0.7689, 0.0723739, -0.0774344, 0.630522, 0.233333, 1, 0.769407, 0.0723869, -0.0774635, 0.629899, 0.266667, 1, 0.764489, 0.0722729, -0.0771519, 0.635909, 0.3, 1, 0.75554, 0.072061, -0.0765747, 0.646609, 0.333333, 1, 0.743454, 0.0717598, -0.075784, 0.660594, 0.366667, 1, 0.729163, 0.0713791, -0.0748407, 0.67648, 0.4, 1, 0.713682, 0.0709408, -0.0738056, 0.692949, 0.433333, 1, 0.698129, 0.0704753, -0.0727525, 0.708771, 0.466667, 1, 0.683721, 0.0700227, -0.0717663, 0.722822, 0.5, 1, 0.671763, 0.0696325, -0.0709402, 0.734066, 0.533333, 1, 0.663604, 0.0693589, -0.0703727, 0.74153, 0.566667, 1, 0.660595, 0.0692587, -0.0701562, 0.744242, 0.6, 1, 0.666731, 0.0694647, -0.0705908, 0.738689, 0.633333, 1, 0.681178, 0.0699411, -0.0715919, 0.725244, 0.666667, 1, 0.698071, 0.0704736, -0.0727501, 0.708828, 0.7, 1, 0.711927, 0.0708897, -0.0736892, 0.69477, 0.733333, 1, 0.717654, 0.0710515, -0.0740854, 0.688793)
tracks/40/type = "rotation_3d"
tracks/40/imported = true
tracks/40/enabled = true
-tracks/40/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
+tracks/40/path = NodePath("Armature/Skeleton3D:RightHandRing2")
tracks/40/interp = 1
tracks/40/loop_wrap = true
-tracks/40/keys = PackedFloat32Array(0, 1, 0.0255871, -0.01748, 0.0251249, 0.999204)
+tracks/40/keys = PackedFloat32Array(0, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0333333, 1, 0.695532, 0.0569102, -0.0166188, 0.716045, 0.0666667, 1, 0.700474, 0.0571446, -0.0168004, 0.711188, 0.1, 1, 0.712426, 0.057759, -0.0171607, 0.699156, 0.133333, 1, 0.727115, 0.0585093, -0.017604, 0.683791, 0.166667, 1, 0.74052, 0.0591749, -0.0180231, 0.669182, 0.2, 1, 0.748927, 0.059583, -0.0182936, 0.659715, 0.233333, 1, 0.749456, 0.0596087, -0.0183106, 0.659111, 0.266667, 1, 0.744318, 0.0593573, -0.0181493, 0.664934, 0.3, 1, 0.734974, 0.058899, -0.0178523, 0.675296, 0.333333, 1, 0.722372, 0.0582695, -0.0174587, 0.688824, 0.366667, 1, 0.707494, 0.0575088, -0.0170086, 0.70417, 0.4, 1, 0.691403, 0.0566757, -0.0165237, 0.720053, 0.433333, 1, 0.675261, 0.0558296, -0.0160391, 0.735288, 0.466667, 1, 0.66033, 0.0550382, -0.0155931, 0.748794, 0.5, 1, 0.647951, 0.0543764, -0.0152245, 0.759586, 0.533333, 1, 0.639513, 0.0539221, -0.0149735, 0.766741, 0.566667, 1, 0.636402, 0.0537577, -0.0148739, 0.769339, 0.6, 1, 0.642746, 0.0540964, -0.0150699, 0.764018, 0.633333, 1, 0.657698, 0.054898, -0.0155159, 0.751119, 0.666667, 1, 0.675203, 0.0558267, -0.0160396, 0.735341, 0.7, 1, 0.689582, 0.056581, -0.0164712, 0.721806, 0.733333, 1, 0.695532, 0.056884, -0.0166619, 0.716046)
tracks/41/type = "rotation_3d"
tracks/41/imported = true
tracks/41/enabled = true
-tracks/41/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
+tracks/41/path = NodePath("Armature/Skeleton3D:RightHandRing3")
tracks/41/interp = 1
tracks/41/loop_wrap = true
-tracks/41/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145148, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317613, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496818, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303424, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676992, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
+tracks/41/keys = PackedFloat32Array(0, 1, 0.0390606, 0.00579563, -0.00189731, 0.999218)
tracks/42/type = "rotation_3d"
tracks/42/imported = true
tracks/42/enabled = true
-tracks/42/path = NodePath("Armature/Skeleton3D:LeftLeg")
+tracks/42/path = NodePath("Armature/Skeleton3D:RightHandPinky1")
tracks/42/interp = 1
tracks/42/loop_wrap = true
-tracks/42/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718038, -0.0680975, 0.0620851, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406657, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532262, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964688, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614306, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524164, 0.943736, 0.333333, 1, -0.456528, -0.00687824, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.03291, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647)
+tracks/42/keys = PackedFloat32Array(0, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0333333, 1, 0.761284, 0.123338, -0.0320305, 0.635774, 0.0666667, 1, 0.76566, 0.123656, -0.0323685, 0.630417, 0.1, 1, 0.77622, 0.124422, -0.0331681, 0.617172, 0.133333, 1, 0.789139, 0.12536, -0.0341149, 0.600317, 0.166667, 1, 0.800866, 0.126169, -0.0350074, 0.584354, 0.2, 1, 0.808189, 0.12667, -0.0355559, 0.574039, 0.233333, 1, 0.808649, 0.126703, -0.0355875, 0.573382, 0.266667, 1, 0.804178, 0.126392, -0.0352612, 0.579724, 0.3, 1, 0.796022, 0.125839, -0.0346356, 0.591028, 0.333333, 1, 0.784977, 0.125062, -0.033806, 0.605828, 0.366667, 1, 0.771872, 0.124117, -0.0328245, 0.622681, 0.4, 1, 0.757624, 0.123059, -0.0317621, 0.640198, 0.433333, 1, 0.743258, 0.121955, -0.0307099, 0.657078, 0.466667, 1, 0.729909, 0.120901, -0.0297425, 0.672109, 0.5, 1, 0.718801, 0.120006, -0.0289442, 0.684168, 0.533333, 1, 0.711209, 0.119384, -0.028402, 0.692187, 0.566667, 1, 0.708404, 0.119152, -0.0282025, 0.695105, 0.6, 1, 0.714117, 0.119623, -0.0286096, 0.689136, 0.633333, 1, 0.727549, 0.120713, -0.0295732, 0.674704, 0.666667, 1, 0.743205, 0.121951, -0.0307074, 0.657139, 0.7, 1, 0.756004, 0.122937, -0.0316448, 0.642139, 0.733333, 1, 0.761285, 0.123321, -0.0320574, 0.635775)
tracks/43/type = "rotation_3d"
tracks/43/imported = true
tracks/43/enabled = true
-tracks/43/path = NodePath("Armature/Skeleton3D:LeftFoot")
+tracks/43/path = NodePath("Armature/Skeleton3D:RightHandPinky2")
tracks/43/interp = 1
tracks/43/loop_wrap = true
-tracks/43/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207878, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.0259139, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969845, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.0279331, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648574, 0.881786, 0.566667, 1, 0.470291, 0.00700172, -0.0099435, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.0021399, 0.865528, 0.633333, 1, 0.537694, 0.00718264, -0.00711229, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484)
+tracks/43/keys = PackedFloat32Array(0, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0333333, 1, 0.759581, 0.0521872, -0.0254053, 0.647817, 0.0666667, 1, 0.764049, 0.0524975, -0.0251389, 0.642527, 0.1, 1, 0.774827, 0.0532493, -0.0244805, 0.629451, 0.133333, 1, 0.788018, 0.0541715, -0.0236452, 0.612808, 0.166667, 1, 0.800002, 0.0550088, -0.0228568, 0.597033, 0.2, 1, 0.807489, 0.0555322, -0.0223487, 0.586837, 0.233333, 1, 0.80796, 0.0555652, -0.0223161, 0.586186, 0.266667, 1, 0.803387, 0.0552459, -0.0226284, 0.592456, 0.3, 1, 0.795051, 0.054663, -0.0231856, 0.603629, 0.333333, 1, 0.783766, 0.0538746, -0.0239169, 0.618253, 0.366667, 1, 0.770384, 0.0529406, -0.0247524, 0.634896, 0.4, 1, 0.755845, 0.0519258, -0.0256241, 0.652185, 0.433333, 1, 0.741194, 0.0509036, -0.0264671, 0.668835, 0.466667, 1, 0.727587, 0.0499549, -0.0272202, 0.683653, 0.5, 1, 0.716269, 0.049166, -0.0278266, 0.695534, 0.533333, 1, 0.708533, 0.0486273, -0.0282303, 0.703434, 0.566667, 1, 0.705678, 0.0484282, -0.028378, 0.706305, 0.6, 1, 0.7115, 0.0488338, -0.0280771, 0.700425, 0.633333, 1, 0.725183, 0.0497875, -0.0273512, 0.686209, 0.666667, 1, 0.741141, 0.0509003, -0.0264709, 0.668894, 0.7, 1, 0.754195, 0.0518113, -0.0257223, 0.654098, 0.733333, 1, 0.759582, 0.0521871, -0.0254055, 0.647817)
tracks/44/type = "rotation_3d"
tracks/44/imported = true
tracks/44/enabled = true
-tracks/44/path = NodePath("Armature/Skeleton3D:LeftToeBase")
+tracks/44/path = NodePath("Armature/Skeleton3D:RightHandPinky3")
tracks/44/interp = 1
tracks/44/loop_wrap = true
-tracks/44/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292444, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426405, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949875, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505973, 0.865927, 0.466667, 1, 0.418454, 0.0248024, 0.0121799, 0.907818, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270408, -0.0696822, -0.0285567, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242128, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930078, 0.95766, 0.666667, 1, 0.290514, -0.0883115, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274548, -0.0898634, -0.0241659, 0.95706)
+tracks/44/keys = PackedFloat32Array(0, 1, 0.0255871, -0.01748, 0.0251249, 0.999204)
tracks/45/type = "rotation_3d"
tracks/45/imported = true
tracks/45/enabled = true
-tracks/45/path = NodePath("Armature/Skeleton3D:RightUpLeg")
+tracks/45/path = NodePath("Armature/Skeleton3D:LeftUpLeg")
tracks/45/interp = 1
tracks/45/loop_wrap = true
-tracks/45/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644894, -0.0232476, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187736, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591499, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288644, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956216, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848459, 0.423861, 0.905675, 0.00468157, 0.533333, 1, -0.0113514, 0.406725, 0.913469, 0.00454904, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.03684e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382456, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968)
+tracks/45/keys = PackedFloat32Array(0, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0333333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584, 0.0666667, 1, -0.0145148, -0.415889, -0.909131, 0.0174921, 0.1, 1, 0.00317613, -0.405295, -0.914083, 0.0133215, 0.133333, 1, -0.031326, 0.346155, 0.937596, 0.0104599, 0.166667, 1, -0.0547007, 0.343259, 0.937554, 0.0131821, 0.2, 1, -0.0526844, 0.337852, 0.939697, 0.00707004, 0.233333, 1, -0.058464, 0.294435, 0.953774, 0.0143141, 0.266667, 1, -0.0674867, 0.239614, 0.968075, 0.0293481, 0.3, 1, -0.0552125, 0.277406, 0.95864, 0.0317379, 0.333333, 1, -0.0243628, 0.276816, 0.960365, 0.0218529, 0.366667, 1, -0.00496818, 0.193252, 0.981037, 0.0139522, 0.4, 1, -0.0147106, -0.0328325, -0.999347, 0.00326609, 0.433333, 1, -0.0482536, 0.106907, -0.992634, 0.0303424, 0.466667, 1, -0.0932611, 0.119302, -0.987615, 0.0410522, 0.5, 1, -0.0849536, 0.148267, -0.984873, 0.0287129, 0.533333, 1, -0.0676992, 0.156793, -0.985251, 0.0106276, 0.566667, 1, -0.0734646, 0.136843, -0.987833, 0.00798017, 0.6, 1, -0.0765707, 0.0803642, -0.99364, 0.0189079, 0.633333, 1, -0.0678569, -0.0124116, -0.99727, 0.0263583, 0.666667, 1, -0.0505272, -0.14221, -0.98789, 0.0359995, 0.7, 1, -0.016612, -0.261886, -0.964319, 0.0350652, 0.733333, 1, -0.0313563, -0.346689, -0.937359, 0.0134584)
tracks/46/type = "rotation_3d"
tracks/46/imported = true
tracks/46/enabled = true
-tracks/46/path = NodePath("Armature/Skeleton3D:RightLeg")
+tracks/46/path = NodePath("Armature/Skeleton3D:LeftLeg")
tracks/46/interp = 1
tracks/46/loop_wrap = true
-tracks/46/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0333333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0666667, 1, -0.321819, -0.0375845, -0.00651501, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253463, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876557, -0.0137614, 0.847546, 0.266667, 1, -0.649473, 0.0506433, -0.00867336, 0.758647, 0.3, 1, -0.756318, 0.0421018, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151348, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249724, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313685, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329865, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455345, 0.000516682, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.031941, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331)
+tracks/46/keys = PackedFloat32Array(0, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0333333, 1, -0.785768, -0.073467, 0.101798, 0.605647, 0.0666667, 1, -0.718038, -0.0680975, 0.0620851, 0.689876, 0.1, 1, -0.557111, -0.0929211, 0.0299918, 0.824678, 0.133333, 1, -0.307925, -0.0837136, 0.00406657, 0.947712, 0.166667, 1, -0.210248, -0.0664877, 0.000532262, 0.975384, 0.2, 1, -0.20373, -0.0217435, -0.00964688, 0.978738, 0.233333, 1, -0.177057, -0.015277, -0.00614306, 0.984063, 0.266667, 1, -0.153767, -0.0204952, -0.00170945, 0.987893, 0.3, 1, -0.330325, -0.0148488, -0.00524164, 0.943736, 0.333333, 1, -0.456528, -0.00687824, -0.0218503, 0.889414, 0.366667, 1, -0.453869, 0.00712824, -0.0198499, 0.890819, 0.4, 1, -0.316795, 0.0346261, 0.00196498, 0.94786, 0.433333, 1, -0.154763, 0.0610141, 0.00729188, 0.986039, 0.466667, 1, -0.20141, 0.0531472, 0.02038, 0.977852, 0.5, 1, -0.233744, 0.055677, 0.0346291, 0.970085, 0.533333, 1, -0.364297, 0.0522034, 0.047221, 0.928619, 0.6, 1, -0.611212, -0.03291, 0.0764212, 0.787081, 0.633333, 1, -0.712572, -0.0754594, 0.112805, 0.688348, 0.666667, 1, -0.796903, -0.0591551, 0.108973, 0.591246, 0.7, 1, -0.822965, -0.0485733, 0.0981031, 0.557445, 0.733333, 1, -0.785768, -0.073467, 0.101798, 0.605647)
tracks/47/type = "rotation_3d"
tracks/47/imported = true
tracks/47/enabled = true
-tracks/47/path = NodePath("Armature/Skeleton3D:RightFoot")
+tracks/47/path = NodePath("Armature/Skeleton3D:LeftFoot")
tracks/47/interp = 1
tracks/47/loop_wrap = true
-tracks/47/keys = PackedFloat32Array(0, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420879, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.0826359, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386512, 0.0516442, 0.934383, 0.266667, 1, 0.387986, -0.001417, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399397, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.0098806, 0.847581, 0.566667, 1, 0.566946, -0.00315883, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450673, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995)
+tracks/47/keys = PackedFloat32Array(0, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0333333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484, 0.0666667, 1, 0.625486, -0.000207878, -0.0268605, 0.779773, 0.1, 1, 0.608828, 0.0296034, 0.0355229, 0.791953, 0.133333, 1, 0.584116, 0.0278867, 0.03352, 0.810498, 0.166667, 1, 0.621423, 0.0222719, 0.0267062, 0.782704, 0.2, 1, 0.651637, 0.0259139, 0.0368677, 0.757192, 0.233333, 1, 0.64296, 0.0266694, 0.0390811, 0.764437, 0.266667, 1, 0.582367, 0.0546564, 0.087205, 0.806385, 0.3, 1, 0.537453, 0.0548337, 0.0839809, 0.837308, 0.333333, 1, 0.654129, 0.0564175, 0.0978841, 0.747897, 0.366667, 1, 0.717304, 0.0523397, 0.0969845, 0.68799, 0.4, 1, 0.719261, 0.0450049, 0.0847226, 0.688084, 0.433333, 1, 0.542045, 0.0392549, 0.0575827, 0.837454, 0.466667, 1, 0.417045, 0.0279331, 0.026096, 0.908082, 0.5, 1, 0.450289, 0.0292092, 0.0279696, 0.891967, 0.533333, 1, 0.471338, 0.0158867, 0.00648574, 0.881786, 0.566667, 1, 0.470291, 0.00700172, -0.0099435, 0.882428, 0.6, 1, 0.500743, 0.0106535, -0.0021399, 0.865528, 0.633333, 1, 0.537694, 0.00718264, -0.00711229, 0.84308, 0.666667, 1, 0.579237, 0.0285691, 0.034328, 0.813935, 0.7, 1, 0.605884, 0.0378552, 0.0532438, 0.792866, 0.733333, 1, 0.608988, 0.0516564, 0.0795856, 0.787484)
tracks/48/type = "rotation_3d"
tracks/48/imported = true
tracks/48/enabled = true
-tracks/48/path = NodePath("Armature/Skeleton3D:RightToeBase")
+tracks/48/path = NodePath("Armature/Skeleton3D:LeftToeBase")
tracks/48/interp = 1
tracks/48/loop_wrap = true
-tracks/48/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760795, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664335, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436586, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730298, 0.00561747, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.056131, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301157, 0.908035, 0.333333, 1, 0.399181, -0.0295484, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437219, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.065848, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.014836, 0.0751642, 0.930608)
+tracks/48/keys = PackedFloat32Array(0, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0333333, 1, 0.274548, -0.0898635, -0.0241659, 0.95706, 0.0666667, 1, 0.261455, 0.00292444, 0.0519541, 0.963812, 0.1, 1, 0.292435, -0.0309963, 0.000426405, 0.955783, 0.133333, 1, 0.302281, -0.0421624, -0.0166895, 0.95214, 0.166667, 1, 0.299478, -0.0330571, -0.00772081, 0.953499, 0.2, 1, 0.297727, -0.062258, -0.0268635, 0.95224, 0.233333, 1, 0.297227, -0.0543805, -0.0208246, 0.95303, 0.266667, 1, 0.300113, -0.0482575, -0.0192872, 0.952487, 0.3, 1, 0.309325, -0.0321986, -0.0136519, 0.950313, 0.333333, 1, 0.309988, -0.0366422, -0.0175651, 0.949872, 0.366667, 1, 0.309094, -0.0419516, -0.0209689, 0.949875, 0.4, 1, 0.314272, -0.0306012, -0.013005, 0.948751, 0.433333, 1, 0.500093, -0.00884653, -0.000505973, 0.865927, 0.466667, 1, 0.418454, 0.0248024, 0.0121799, 0.907818, 0.5, 1, 0.209371, -0.0706945, -0.0344513, 0.974669, 0.533333, 1, 0.270408, -0.0696822, -0.0285567, 0.959796, 0.566667, 1, 0.287737, -0.0713597, -0.0242128, 0.95474, 0.6, 1, 0.296428, -0.0711175, -0.0330963, 0.951829, 0.633333, 1, 0.281173, -0.0611757, -0.00930078, 0.95766, 0.666667, 1, 0.290514, -0.0883115, -0.0402629, 0.951936, 0.7, 1, 0.305287, -0.102224, -0.067631, 0.944339, 0.733333, 1, 0.274548, -0.0898634, -0.0241659, 0.95706)
tracks/49/type = "rotation_3d"
tracks/49/imported = true
tracks/49/enabled = true
-tracks/49/path = NodePath("Armature/Skeleton3D:LeftHandThumb3")
+tracks/49/path = NodePath("Armature/Skeleton3D:RightUpLeg")
tracks/49/interp = 1
tracks/49/loop_wrap = true
-tracks/49/keys = PackedFloat32Array(0, 1, 0.00975412, -0.0248018, -0.084795, 0.996042)
+tracks/49/keys = PackedFloat32Array(0, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0333333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968, 0.0666667, 1, 0.0644894, -0.0232476, -0.997619, 0.00759192, 0.1, 1, -0.096067, -0.125697, 0.987137, 0.023057, 0.133333, 1, -0.13069, -0.187736, 0.972645, 0.0404611, 0.166667, 1, -0.118559, -0.207504, 0.969786, 0.0490017, 0.2, 1, -0.0922439, -0.202339, 0.97333, 0.0563762, 0.233333, 1, -0.0846988, -0.171382, 0.979773, 0.0591499, 0.266667, 1, -0.0682555, -0.104617, 0.990281, 0.0611603, 0.3, 1, -0.0450799, -0.00133708, 0.996715, 0.0672675, 0.366667, 1, -0.0185523, 0.310895, 0.946009, 0.0898199, 0.4, 1, -0.0288644, 0.399343, 0.912958, 0.0787419, 0.433333, 1, -0.0246848, 0.446511, 0.892934, 0.0518426, 0.466667, 1, -0.00956216, 0.457756, 0.888846, 0.0178976, 0.5, 1, -0.00848459, 0.423861, 0.905675, 0.00468157, 0.533333, 1, -0.0113514, 0.406725, 0.913469, 0.00454904, 0.566667, 1, -0.0124911, 0.394025, 0.919015, 2.03684e-05, 0.6, 1, 0.0182089, -0.354559, -0.934855, 0.00130756, 0.633333, 1, 0.0227267, -0.356627, -0.933965, 0.00330203, 0.666667, 1, 0.0345197, -0.366044, -0.929943, 0.00513372, 0.7, 1, 0.0382456, -0.305506, -0.951105, 0.0245278, 0.733333, 1, 0.0395379, -0.192852, -0.980195, 0.0214968)
tracks/50/type = "rotation_3d"
tracks/50/imported = true
tracks/50/enabled = true
-tracks/50/path = NodePath("Armature/Skeleton3D:LeftHandRing3")
+tracks/50/path = NodePath("Armature/Skeleton3D:RightLeg")
tracks/50/interp = 1
tracks/50/loop_wrap = true
-tracks/50/keys = PackedFloat32Array(0, 1, 0.0390567, -0.00578869, 0.0018961, 0.999218)
+tracks/50/keys = PackedFloat32Array(0, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0333333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331, 0.0666667, 1, -0.321819, -0.0375845, -0.00651501, 0.946033, 0.1, 1, -0.162345, -0.103963, -0.000253463, 0.981242, 0.133333, 1, -0.152171, -0.121299, -0.013562, 0.980789, 0.166667, 1, -0.250496, -0.0782871, -0.00119299, 0.964946, 0.2, 1, -0.386403, 0.0204957, -0.0219442, 0.921841, 0.233333, 1, -0.530472, 0.00876557, -0.0137614, 0.847546, 0.266667, 1, -0.649473, 0.0506433, -0.00867336, 0.758647, 0.3, 1, -0.756318, 0.0421018, 0.012223, 0.652734, 0.333333, 1, -0.829515, 0.0322592, 0.0353375, 0.556431, 0.366667, 1, -0.839043, 0.0324939, 0.0372826, 0.541812, 0.4, 1, -0.784936, 0.0407357, 0.0247847, 0.617739, 0.433333, 1, -0.678618, 0.0504598, 0.0151348, 0.732599, 0.466667, 1, -0.5058, 0.0557491, 0.00933843, 0.860797, 0.5, 1, -0.269672, 0.083665, -0.00249724, 0.959308, 0.533333, 1, -0.179705, 0.0268817, 0.00313685, 0.983348, 0.566667, 1, -0.177113, -0.0245931, 0.00329865, 0.983878, 0.6, 1, -0.162172, -0.018313, 0.00183952, 0.986591, 0.633333, 1, -0.281819, 0.00455345, 0.000516682, 0.959457, 0.666667, 1, -0.430109, 0.0182577, 0.0172811, 0.902427, 0.7, 1, -0.489576, 0.031941, 0.0106455, 0.87131, 0.733333, 1, -0.459142, 0.00313709, -0.0068642, 0.888331)
tracks/51/type = "rotation_3d"
tracks/51/imported = true
tracks/51/enabled = true
-tracks/51/path = NodePath("Armature/Skeleton3D:RightHandThumb3")
+tracks/51/path = NodePath("Armature/Skeleton3D:RightFoot")
tracks/51/interp = 1
tracks/51/loop_wrap = true
-tracks/51/keys = PackedFloat32Array(0, 1, 0.00976312, 0.0248163, 0.0847953, 0.996041)
+tracks/51/keys = PackedFloat32Array(0, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0333333, 1, 0.670435, -0.0306986, -0.0445175, 0.739995, 0.0666667, 1, 0.632296, -0.0332589, -0.0434839, 0.772791, 0.1, 1, 0.435565, 0.00780932, 0.0420879, 0.899139, 0.133333, 1, 0.314753, 0.0315059, 0.0977247, 0.943604, 0.166667, 1, 0.316762, 0.0211097, 0.0826359, 0.944663, 0.2, 1, 0.317603, 0.0168444, 0.0772796, 0.944919, 0.233333, 1, 0.352485, 0.00386512, 0.0516442, 0.934383, 0.266667, 1, 0.387986, -0.001417, 0.0444911, 0.92059, 0.3, 1, 0.43679, -0.0169455, 0.0108254, 0.899339, 0.333333, 1, 0.47271, -0.023238, -0.00399397, 0.880903, 0.366667, 1, 0.479194, -0.0300232, -0.0219004, 0.876922, 0.4, 1, 0.475461, -0.0363875, -0.0377795, 0.878172, 0.433333, 1, 0.49373, -0.0380238, -0.0412244, 0.867805, 0.466667, 1, 0.496299, -0.0368345, -0.0392292, 0.866482, 0.5, 1, 0.482541, -0.0309349, -0.0280917, 0.874876, 0.533333, 1, 0.530164, -0.0208613, -0.0098806, 0.847581, 0.566667, 1, 0.566946, -0.00315883, 0.0228546, 0.823432, 0.6, 1, 0.557184, -0.00450673, 0.0183884, 0.830173, 0.633333, 1, 0.501942, -0.0412583, -0.0515051, 0.86238, 0.666667, 1, 0.576378, -0.0450979, -0.0640571, 0.81342, 0.7, 1, 0.662113, -0.0408728, -0.0629455, 0.745636, 0.733333, 1, 0.670436, -0.0306986, -0.0445175, 0.739995)
tracks/52/type = "rotation_3d"
tracks/52/imported = true
tracks/52/enabled = true
-tracks/52/path = NodePath("Armature/Skeleton3D:RightHandRing3")
+tracks/52/path = NodePath("Armature/Skeleton3D:RightToeBase")
tracks/52/interp = 1
tracks/52/loop_wrap = true
-tracks/52/keys = PackedFloat32Array(0, 1, 0.0390606, 0.0057956, -0.00189736, 0.999218)
+tracks/52/keys = PackedFloat32Array(0, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0333333, 1, 0.35791, -0.014836, 0.0751642, 0.930608, 0.0666667, 1, 0.413423, -0.0286848, 0.0760795, 0.906902, 0.1, 1, 0.511837, -0.108027, -0.00664335, 0.852238, 0.133333, 1, 0.390079, -0.0764097, -0.0298993, 0.917118, 0.166667, 1, 0.319659, 0.00436586, -0.0145065, 0.947412, 0.2, 1, 0.365262, -0.00730298, 0.00561747, 0.930859, 0.233333, 1, 0.428249, -0.0430999, 0.0258248, 0.902263, 0.266667, 1, 0.433713, -0.056131, 0.0458334, 0.898132, 0.3, 1, 0.416123, -0.0375184, 0.0301157, 0.908035, 0.333333, 1, 0.399181, -0.0295484, 0.0294608, 0.915922, 0.366667, 1, 0.390225, -0.0308478, 0.0346222, 0.919551, 0.4, 1, 0.39, -0.0298552, 0.0283043, 0.919896, 0.433333, 1, 0.366981, -0.0284897, 0.0394342, 0.928955, 0.466667, 1, 0.352974, -0.0281819, 0.0437219, 0.934186, 0.5, 1, 0.344986, -0.0457678, 0.065848, 0.935176, 0.533333, 1, 0.335655, -0.0442892, 0.0638603, 0.938774, 0.566667, 1, 0.332132, -0.0567952, 0.0750115, 0.938529, 0.6, 1, 0.347087, -0.0605619, 0.063626, 0.93371, 0.633333, 1, 0.332137, -0.0526948, 0.0593416, 0.939887, 0.666667, 1, 0.304876, -0.0187414, 0.0678353, 0.949788, 0.7, 1, 0.31548, -0.0127809, 0.0709526, 0.94619, 0.733333, 1, 0.35791, -0.014836, 0.0751642, 0.930608)
tracks/53/type = "method"
tracks/53/imported = false
tracks/53/enabled = true
diff --git a/mirror-godot-app/player/cameras/camera_manager.tscn b/mirror-godot-app/player/cameras/camera_manager.tscn
index 41c66928..fbd08201 100644
--- a/mirror-godot-app/player/cameras/camera_manager.tscn
+++ b/mirror-godot-app/player/cameras/camera_manager.tscn
@@ -1,10 +1,9 @@
-[gd_scene load_steps=6 format=3 uid="uid://brbtsnjio4p2m"]
+[gd_scene load_steps=5 format=3 uid="uid://brbtsnjio4p2m"]
[ext_resource type="Script" path="res://player/cameras/camera_manager.gd" id="1_sgi5b"]
[ext_resource type="PackedScene" uid="uid://g08bytt518wj" path="res://player/cameras/head/player_head_camera.tscn" id="2_h612i"]
[ext_resource type="PackedScene" uid="uid://h5gnmb66fkgi" path="res://player/cameras/free/free_camera.tscn" id="4_35k1r"]
[ext_resource type="Script" path="res://player/cameras/placement_preview.gd" id="5_h3wxg"]
-[ext_resource type="PackedScene" uid="uid://clraq8sj7pby6" path="res://player/cameras/voxel_viewer/camera_voxel_viewer.tscn" id="6_n4xo0"]
[node name="CameraManager" type="Node"]
script = ExtResource("1_sgi5b")
@@ -23,14 +22,13 @@ audio_listener_enable_3d = true
size = Vector2i(2560, 1440)
render_target_update_mode = 4
-[node name="PlayerHeadCamera" parent="SubViewportContainer/SubViewport" instance=ExtResource("2_h612i")]
+[node name="PlayerHeadCamera" parent="SubViewportContainer/SubViewport" node_paths=PackedStringArray("_camera") instance=ExtResource("2_h612i")]
+_camera = NodePath("CameraRecoilOffset/ThirdPersonCameraArm/ThirdPersonCamera")
-[node name="FreeCamera" parent="SubViewportContainer/SubViewport" instance=ExtResource("4_35k1r")]
+[node name="FreeCamera" parent="SubViewportContainer/SubViewport" node_paths=PackedStringArray("_camera") instance=ExtResource("4_35k1r")]
+_camera = NodePath("Camera")
[node name="PlacementPreview" type="Node3D" parent="SubViewportContainer/SubViewport"]
script = ExtResource("5_h3wxg")
[node name="JoltDebugGeometry3D" type="JoltDebugGeometry3D" parent="SubViewportContainer/SubViewport"]
-
-[node name="CameraVoxelViewer" parent="." node_paths=PackedStringArray("camera_manager") instance=ExtResource("6_n4xo0")]
-camera_manager = NodePath("..")
diff --git a/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import b/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import
index 7c61c7b7..1b9e1acb 100644
--- a/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import
+++ b/mirror-godot-app/player/character_models/astronaut/astronaut_updated.glb.import
@@ -29,6 +29,7 @@ animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
fbx/importer=0
diff --git a/mirror-godot-app/player/vr/hand_l.glb.import b/mirror-godot-app/player/vr/hand_l.glb.import
index 2dc15d6e..25498fcd 100644
--- a/mirror-godot-app/player/vr/hand_l.glb.import
+++ b/mirror-godot-app/player/vr/hand_l.glb.import
@@ -29,6 +29,7 @@ animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
fbx/importer=0
diff --git a/mirror-godot-app/player/vr/hand_r.glb.import b/mirror-godot-app/player/vr/hand_r.glb.import
index b5c7f125..676d0a41 100644
--- a/mirror-godot-app/player/vr/hand_r.glb.import
+++ b/mirror-godot-app/player/vr/hand_r.glb.import
@@ -29,6 +29,7 @@ animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
+animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
fbx/importer=0
diff --git a/mirror-godot-app/project.godot b/mirror-godot-app/project.godot
index 976b0cd9..26392bec 100644
--- a/mirror-godot-app/project.godot
+++ b/mirror-godot-app/project.godot
@@ -82,7 +82,7 @@ global_script_class_icons={
config/name="The Mirror"
config/tags=PackedStringArray("open_source")
run/main_scene="res://scenes/boot_scene.tscn"
-config/features=PackedStringArray("4.3", "e33f01e3", "mirror")
+config/features=PackedStringArray("4.3", "f2020817", "mirror")
boot_splash/bg_color=Color(0.0745098, 0.0862745, 0.184314, 1)
boot_splash/image="res://art/white_logo_slate_bg_with_text.png"
boot_splash/fullsize=false
diff --git a/mirror-godot-app/script/editor/abstract_script_editor.gd b/mirror-godot-app/script/editor/abstract_script_editor.gd
index 9c9a0205..21de7ebb 100644
--- a/mirror-godot-app/script/editor/abstract_script_editor.gd
+++ b/mirror-godot-app/script/editor/abstract_script_editor.gd
@@ -4,6 +4,7 @@ extends Control
signal request_save_script_as_asset(script_instance: ScriptInstance)
signal request_show_entry_creation_dialog(target_node: Node)
+signal request_show_custom_entry_creation_dialog(target_node: Node)
signal request_toggle_variable_editor()
signal request_script_editor_visibility(is_visible: bool)
signal request_track_recently_used_space_script(script_instance: ScriptInstance)
diff --git a/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd b/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd
index 354111b8..3c78cc9c 100644
--- a/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd
+++ b/mirror-godot-app/script/editor/entry_creation/entry_create_dialog.gd
@@ -13,22 +13,39 @@ func _ready() -> void:
func populate_and_show(target_node: Node) -> void:
title = "Create Script Entry"
- _entry_creation_menu.populate_selection_tree(target_node)
+ _entry_creation_menu.populate_selection_tree(target_node, false)
GameUI.grab_input_lock(self)
popup_centered()
_entry_creation_menu.focus_search_bar()
+func populate_and_show_for_custom(target_node: Node) -> void:
+ _entry_creation_menu.populate_selection_tree(target_node, true)
+ _show_custom_entry_menu()
+ GameUI.grab_input_lock(self)
+ _entry_creation_menu.focus_search_bar()
+
+
func _on_confirmed() -> void:
var signal_dict = _entry_creation_menu.get_desired_signal_signature()
if signal_dict == null:
- title = "Create Entry With Custom Signal"
- popup_centered()
+ _show_custom_entry_menu()
return
var block_dict: Dictionary = signal_dict.duplicate(false)
create_entry_block.emit(block_dict)
+func _show_custom_entry_menu() -> void:
+ title = "Create Entry With Custom Signal"
+ popup_centered()
+ _entry_creation_menu.size = Vector2.ZERO
+ size = Vector2i.ZERO
+ await get_tree().process_frame
+ popup_centered()
+ _entry_creation_menu.size = Vector2.ZERO
+ size = Vector2i.ZERO
+
+
func _on_script_entry_creation_menu_confirmed() -> void:
hide()
_on_confirmed()
diff --git a/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd b/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd
index e1ac2bb5..8c97056c 100644
--- a/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd
+++ b/mirror-godot-app/script/editor/entry_creation/entry_creation_menu.gd
@@ -21,15 +21,18 @@ func setup(signal_tree_populator: ScriptEntrySignalTreePopulator) -> void:
_signal_selection.setup(signal_tree_populator)
-func populate_selection_tree(target_node: Node) -> void:
+func populate_selection_tree(target_node: Node, for_custom: bool) -> void:
_target_node = target_node
_custom_signal_parameters.clear()
_add_input_button.show()
_custom_signal_name.text = ""
_signal_parameters_label.text = "Signal Inputs:"
- _signal_selection.populate_selection_tree(target_node)
- _signal_selection.show()
- _custom_signal.hide()
+ if for_custom:
+ _show_custom_entry_menu()
+ else:
+ _signal_selection.populate_selection_tree(target_node)
+ _signal_selection.show()
+ _custom_signal.hide()
func focus_search_bar() -> void:
@@ -43,14 +46,17 @@ func get_desired_signal_signature():
return _get_custom_signal_signature()
+func _show_custom_entry_menu() -> void:
+ _signal_selection.hide()
+ _custom_signal.show()
+
+
func _get_selected_signal_signature():
var signal_dict = _signal_selection.get_selected_signal()
if signal_dict == null:
return null
if String(signal_dict["signal"]) == "custom_signal":
- _signal_selection.hide()
- _custom_signal.show()
- _add_input_button.show()
+ _show_custom_entry_menu()
return null
return signal_dict
@@ -68,10 +74,14 @@ func _get_custom_signal_signature():
if not existing_signature.is_empty():
existing_signature = existing_signature.duplicate()
existing_signature["path"] = "self"
+ existing_signature["type"] = "entry"
return existing_signature
var ret = {
+ "entry_id": "self_" + signal_name + "_" + str(randi() % 1000000),
+ "name": "On " + signal_name.capitalize(),
"path": "self",
"signal": signal_name,
+ "type": "entry",
}
if not _custom_signal_parameters.is_empty():
ret["signalParameters"] = _custom_signal_parameters.duplicate(true)
diff --git a/mirror-godot-app/script/editor/script_editor.gd b/mirror-godot-app/script/editor/script_editor.gd
index 138a42e6..bbf30ebf 100644
--- a/mirror-godot-app/script/editor/script_editor.gd
+++ b/mirror-godot-app/script/editor/script_editor.gd
@@ -227,6 +227,10 @@ func _on_request_show_entry_creation_dialog(target_node: Node) -> void:
_script_entry_creation_dialog.populate_and_show(target_node)
+func _on_request_show_custom_entry_creation_dialog(target_node: Node) -> void:
+ _script_entry_creation_dialog.populate_and_show_for_custom(target_node)
+
+
func _on_script_entry_creation_dialog_create_entry_block(block_json: Dictionary) -> void:
if _gd_script_editor.visible:
if block_json["type"] == "entry":
diff --git a/mirror-godot-app/script/editor/script_editor.tscn b/mirror-godot-app/script/editor/script_editor.tscn
index c12ccb7c..50878897 100644
--- a/mirror-godot-app/script/editor/script_editor.tscn
+++ b/mirror-godot-app/script/editor/script_editor.tscn
@@ -41,11 +41,13 @@ script = ExtResource("7_w8ott")
[connection signal="request_save_script_as_asset" from="VisualScriptEditor" to="." method="_on_request_save_script_as_asset"]
[connection signal="request_script_editor_visibility" from="VisualScriptEditor" to="." method="set_visual_script_editor_visibility"]
+[connection signal="request_show_custom_entry_creation_dialog" from="VisualScriptEditor" to="." method="_on_request_show_custom_entry_creation_dialog"]
[connection signal="request_show_entry_creation_dialog" from="VisualScriptEditor" to="." method="_on_request_show_entry_creation_dialog"]
[connection signal="request_toggle_variable_editor" from="VisualScriptEditor" to="." method="_on_request_toggle_variable_editor"]
[connection signal="request_track_recently_used_space_script" from="VisualScriptEditor" to="." method="_on_request_track_recently_used_space_script"]
[connection signal="request_save_script_as_asset" from="GDScriptEditor" to="." method="_on_request_save_script_as_asset"]
[connection signal="request_script_editor_visibility" from="GDScriptEditor" to="." method="set_gd_script_editor_visibility"]
+[connection signal="request_show_custom_entry_creation_dialog" from="GDScriptEditor" to="." method="_on_request_show_custom_entry_creation_dialog"]
[connection signal="request_show_entry_creation_dialog" from="GDScriptEditor" to="." method="_on_request_show_entry_creation_dialog"]
[connection signal="request_toggle_variable_editor" from="GDScriptEditor" to="." method="_on_request_toggle_variable_editor"]
[connection signal="request_track_recently_used_space_script" from="GDScriptEditor" to="." method="_on_request_track_recently_used_space_script"]
diff --git a/mirror-godot-app/script/gd/gdscript_entry.gd b/mirror-godot-app/script/gd/gdscript_entry.gd
index d03deebe..cbc40af5 100644
--- a/mirror-godot-app/script/gd/gdscript_entry.gd
+++ b/mirror-godot-app/script/gd/gdscript_entry.gd
@@ -174,6 +174,21 @@ func _value_to_gdscript_literal(value: Variant, type_enum: int) -> String:
return str(value)
+func connect_entry_signal(script_instance_object: Object, inst_entry_parameters: Dictionary) -> void:
+ # Trivial case: No inspector parameter inputs, no bindv needed.
+ if inst_entry_parameters.is_empty():
+ entry_node.connect(entry_signal, Callable(script_instance_object, function_name))
+ return
+ # If the user added inspector parameters via "Add Input", we need to bind them to the signal.
+ var insp_inputs: Array = []
+ if inst_entry_parameters.has(entry_id):
+ var params_for_entry: Dictionary = inst_entry_parameters[entry_id]
+ for insp_param_name in params_for_entry:
+ var insp_param_data: Array = params_for_entry[insp_param_name]
+ insp_inputs.append(insp_param_data[1])
+ entry_node.connect(entry_signal, Callable(script_instance_object, function_name).bindv(insp_inputs))
+
+
static func create_node_for_entry_signal(entry_signal: String) -> Node:
if entry_signal == "timeout":
var timer: Timer = Timer.new()
diff --git a/mirror-godot-app/script/gd/gdscript_instance.gd b/mirror-godot-app/script/gd/gdscript_instance.gd
index 89cd2f8f..89f9c9ed 100644
--- a/mirror-godot-app/script/gd/gdscript_instance.gd
+++ b/mirror-godot-app/script/gd/gdscript_instance.gd
@@ -7,16 +7,16 @@ signal gdscript_compile_success()
const _EMPTY_SCRIPT: String = """# Welcome to The Mirror-flavored GDScript!
# This is like normal GDScript, but you must not write class\u200B_name or ext\u200Bends.
+# You can print to the notification area using `Notify.info(title, message)`.
# You may use functions and variables just like you would in normal GDScript.
-# Use `target_object` to refer to the object (SpaceObject or global) the script
-# is attached to instead of `self`, as `self` refers to the script itself.
# The Mirror provides support for multiple scripts per object, you can use
# members of SpaceObject the same way you use inherited members in Godot.
-# For example, `print(position)` will print a SpaceObject's position.
-# You can print to the notification area using `Notify.info(title, message)`.
+# For example, `Notify.info("pos", str(position))` will print a SpaceObject's position.
+# Use `target_object` to refer to the object (SpaceObject or global) the script
+# is attached to instead of `self`, as `self` refers to the script itself.
-# Called when a SpaceObject finishes loading.
+# Called when a SpaceObject and script finish loading.
func _ready() -> void:
pass # Replace with function body.
@@ -26,9 +26,7 @@ func _process(delta: float) -> void:
pass # Replace with function body.
"""
-const _SCRIPT_PREPROCESS_PREFIX: String = """extends Object
-
-signal tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String)
+const _SCRIPT_PREPROCESS_PREFIX: String = """extends TMUserGDScriptBase
func get_object_variable(variable_name: String) -> Variant:
@@ -40,10 +38,12 @@ func has_object_variable(variable_name: String) -> bool:
func set_object_variable(variable_name: String, variable_value: Variant) -> void:
+ if variable_name in self:
+ set(variable_name, variable_value)
Mirror.set_object_variable(target_object, variable_name, variable_value)
-func tween_object_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func tween_object_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
Mirror.tween_object_variable(target_object, variable_name, to_value, duration, trans, easing)
@@ -62,9 +62,16 @@ static var _SCRIPT_TEXT_DENYLIST: Array[RegEx] = [
RegEx.create_from_string("\\bpreload\\b"),
RegEx.create_from_string("\\bOS\\b"),
RegEx.create_from_string("\\bResourceLoader\\b"),
+ RegEx.create_from_string("\\bFileAccess\\b"),
+ RegEx.create_from_string("\\bDirAccess\\b")
]
+static var _EXPOSE_VAR_REGEX: RegEx = RegEx.create_from_string("@export var ([_a-zA-Z][_a-zA-Z0-9]{0,30})\\b[^=\\n]*(= )?([^=\\n]*)")
+static var _EXPRESSION = Expression.new()
+
var _entries: Array[GDScriptEntry] = []
+var _exposed_var_names: PackedStringArray = []
+var _exposed_var_default_values: Dictionary = {}
var _source_code: String
var gdscript_code: TMUserGDScript = TMUserGDScript.new()
var script_instance_object: Object
@@ -153,6 +160,12 @@ func get_default_value_of_entry_inspector_parameter(entry_id: String, parameter_
return null
+func get_default_value_of_exposed_variable(variable_name: String) -> Variant:
+ if _exposed_var_default_values.has(variable_name):
+ return _exposed_var_default_values[variable_name]
+ return null
+
+
func get_entry_line_numbers() -> PackedInt32Array:
var ret := PackedInt32Array()
for entry in _entries:
@@ -177,7 +190,12 @@ func set_source_code(source_code: String) -> void:
func create_entry(entry_json: Dictionary) -> void:
- var new_function_name: String = entry_json["name"].to_snake_case()
+ var new_function_name: String
+ if entry_json.has("name"):
+ new_function_name = entry_json["name"].to_snake_case()
+ else:
+ new_function_name = "on_" + entry_json["signal"]
+ entry_json["function"] = new_function_name
for entry in _entries:
if entry.function_name == new_function_name:
return # We already have an entry for this, no need to make a new entry.
@@ -208,6 +226,15 @@ func _sync_entry_params_with_gdscript_code() -> void:
script_entries_changed.emit()
+func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void:
+ for gdscript_entry in _entries:
+ if gdscript_entry.entry_id == entry_id:
+ gdscript_entry.entry_parameters.create_inspector_parameter(parameter_port_array)
+ _source_code = gdscript_entry.sync_gdscript_code_with_entry(_source_code)
+ break
+ sync_script_inst_params_with_script_data()
+
+
## Ensure the script instance entry inspector parameters match the
## signature of the script's data. Since a script may be used by
## multiple objects, parameters may get out of sync without this code.
@@ -220,10 +247,10 @@ func sync_script_inst_params_with_script_data() -> void:
entry_parameters[entry_id] = new_params
if entry_id in old_entry_parameters:
var old_params: Dictionary = old_entry_parameters[entry_id]
- for old_key in old_params:
- if old_key in new_params:
- var old_param_array: Array = old_params[old_key]
- var new_param_array: Array = new_params[old_key]
+ for param_key in old_params:
+ if param_key in new_params:
+ var old_param_array: Array = old_params[param_key]
+ var new_param_array: Array = new_params[param_key]
new_param_array[1] = old_param_array[1]
entry_parameters.sort()
apply_inspector_parameter_values()
@@ -254,6 +281,7 @@ func _preprocess_and_apply_code() -> void:
error_message_dict["line"] -= _SCRIPT_PREPROCESS_LINE_COUNT
gdscript_compile_error.emit(error_code, error_messages)
return
+ _update_exposed_variables()
gdscript_compile_success.emit()
if not can_execute():
# Don't even init the script if it can't execute.
@@ -261,13 +289,20 @@ func _preprocess_and_apply_code() -> void:
return
# Instantiate the successfully loaded script.
script_instance_object = gdscript_code.new()
+ _sync_exposed_variables_with_spaceobj_spacevars()
+ # Connect the signals.
+ script_instance_object.load_exposed_vars.connect(_on_load_exposed_vars)
+ script_instance_object.save_exposed_vars.connect(_on_save_exposed_vars)
script_instance_object.tmusergdscript_runtime_error.connect(_on_tmusergdscript_runtime_error)
for entry in _entries:
- entry.entry_node.connect(entry.entry_signal, Callable(script_instance_object, entry.function_name))
+ entry.connect_entry_signal(script_instance_object, entry_parameters)
# Supplementary entry callbacks. Keep this in sync with GDScript CodeEdit load_entry_connection_decoration.
if target_node is SpaceObject:
if _source_code.contains("func _ready("):
- target_node.setup_done.connect(Callable(script_instance_object, &"_ready"))
+ if target_node._is_setup:
+ script_instance_object.call(&"_ready")
+ else:
+ target_node.setup_done.connect(Callable(script_instance_object, &"_ready"))
if _source_code.contains("func _physics_process("):
Zone.physics_process_every_frame.connect(Callable(script_instance_object, &"_physics_process"))
if _source_code.contains("func _process("):
@@ -293,6 +328,36 @@ func _sync_gdscript_code_with_entries() -> void:
_source_code = entry.sync_gdscript_code_with_entry(_source_code)
+func _sync_exposed_variables_with_spaceobj_spacevars() -> void:
+ #_update_exposed_variables()
+ for var_name in _exposed_var_names:
+ if Mirror.has_object_variable(target_node, var_name):
+ script_instance_object.set(var_name, Mirror.get_object_variable(target_node, var_name))
+ else:
+ Mirror.set_object_variable(target_node, var_name, script_instance_object.get(var_name))
+
+
+func _on_load_exposed_vars() -> void:
+ for var_name in _exposed_var_names:
+ script_instance_object.set(var_name, Mirror.get_object_variable(target_node, var_name))
+
+
+func _on_save_exposed_vars() -> void:
+ for var_name in _exposed_var_names:
+ Mirror.set_object_variable(target_node, var_name, script_instance_object.get(var_name))
+
+
+func _update_exposed_variables() -> void:
+ _exposed_var_names.clear()
+ var matches: Array[RegExMatch] = _EXPOSE_VAR_REGEX.search_all(_source_code)
+ for mat in matches:
+ var var_name: String = mat.get_string(1)
+ _exposed_var_names.append(var_name)
+ if mat.get_group_count() >= 3:
+ _EXPRESSION.parse(mat.get_string(3))
+ _exposed_var_default_values[var_name] = _EXPRESSION.execute()
+
+
## This method handles runtime error messages similar to VisualScriptInstance's `_on_block_message` method.
func _on_tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String) -> void:
line_num -= _SCRIPT_PREPROCESS_LINE_COUNT
diff --git a/mirror-godot-app/script/gd/mirror_singleton.gd b/mirror-godot-app/script/gd/mirror_singleton.gd
index ca7a093d..03c4ae19 100644
--- a/mirror-godot-app/script/gd/mirror_singleton.gd
+++ b/mirror-godot-app/script/gd/mirror_singleton.gd
@@ -3,6 +3,28 @@ class_name Mirror
extends Object
+# Misc.
+static func get_friendly_name(value: Variant) -> String:
+ if value is SpaceObject:
+ return value.get_space_object_name()
+ elif value is Player:
+ return value.get_player_name()
+ elif value is Node:
+ return value.name
+ elif value == null:
+ return ""
+ elif not is_instance_valid(value):
+ return ""
+ else:
+ # For non-Node objects, str() is the best we can do.
+ return str(value)
+
+
+static func print_in_chat(attached_object: Object, message: String, range_radius: float = INF) -> void:
+ GameUI.chat_ui.send_message_from_object(attached_object, message, range_radius)
+
+
+# Global variables.
static func get_global_variable(variable_name: String) -> Variant:
return Zone.script_network_sync.get_global_variable(variable_name)
@@ -15,10 +37,11 @@ static func set_global_variable(variable_name: String, variable_value: Variant)
Zone.script_network_sync.set_global_variable(variable_name, variable_value)
-static func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+static func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
Zone.script_network_sync.tween_global_variable(variable_name, to_value, duration, trans, easing)
+# Object variables.
static func get_object_variable(variable_object: Object, variable_name: String) -> Variant:
var object_variables = variable_object.get_meta(&"MirrorScriptObjectVariables")
return TMDataUtil.get_variable_by_json_path_string(object_variables, variable_name)
@@ -45,8 +68,31 @@ static func set_object_variable(variable_object: Object, variable_name: String,
Zone.script_network_sync.object_variable_changed.emit(variable_object, variable_name, variable_value)
-static func tween_object_variable(variable_node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+static func tween_object_variable(variable_node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
# Note: Unlike setting a variable, this does not apply immediately.
# Since tweening does not have an effect on the same frame anyway,
# we can afford to wait for the server to only do a synced tween.
Zone.script_network_sync.tween_variable_on_node(variable_node, variable_name, to_value, duration, trans, easing)
+
+
+# Object properties.
+static func get_object_property(property_object: Object, property_name: StringName) -> Variant:
+ return property_object.get(property_name)
+
+
+static func has_object_property(property_object: Object, property_name: StringName) -> bool:
+ return property_name in property_object
+
+
+static func set_object_property(property_object: Object, property_name: StringName, property_value: Variant) -> void:
+ property_object.set(property_name, property_value)
+
+
+static func tween_object_property(property_object: Object, property_name: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
+ if not property_object is Node:
+ Notify.error("Cannot tween object property", "The target object is not a node, but tweening properties is only supported on nodes for now.")
+ return
+ # Note: Unlike setting a property, this does not apply immediately.
+ # Since tweening does not have an effect on the same frame anyway,
+ # we can afford to wait for the server to only do a synced tween.
+ Zone.script_network_sync.tween_property_on_node(property_object, property_name, to_value, duration, trans, easing)
diff --git a/mirror-godot-app/script/gd/tmusergdscript_base.gd b/mirror-godot-app/script/gd/tmusergdscript_base.gd
new file mode 100644
index 00000000..e6b6fcdf
--- /dev/null
+++ b/mirror-godot-app/script/gd/tmusergdscript_base.gd
@@ -0,0 +1,6 @@
+class_name TMUserGDScriptBase extends Object
+
+
+signal load_exposed_vars()
+signal save_exposed_vars()
+signal tmusergdscript_runtime_error(error_str: String, frame_index: int, line_num: int, func_name: String)
diff --git a/mirror-godot-app/script/network_sync.gd b/mirror-godot-app/script/network_sync.gd
index 170de3a4..627b3b7d 100644
--- a/mirror-godot-app/script/network_sync.gd
+++ b/mirror-godot-app/script/network_sync.gd
@@ -314,7 +314,7 @@ func _set_global_variables_network(variables: Dictionary) -> void:
received_variable_data_change.emit()
-func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func tween_global_variable(variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
_net_queue_tweened_global_variables[variable_name] = [to_value, duration, trans, easing]
@@ -338,7 +338,7 @@ func _tween_global_variables_network(tweened_variables: Dictionary) -> void:
## Tween a user variable we store inside of a Dictionary using MethodTweener.
-func _tween_variable_in_dict(variables_dict: Dictionary, variable_name: String, from_value: Variant, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func _tween_variable_in_dict(variables_dict: Dictionary, variable_name: String, from_value: Variant, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
var split_path: PackedStringArray = TMDataUtil.split_json_path_string(variable_name)
var method_callable: Callable = _tween_variable_callback_method.bind(variables_dict, split_path)
var tween: Tween = get_tree().create_tween()
@@ -412,7 +412,7 @@ func _set_property_on_node(node: Node, property: StringName, value: Variant) ->
node.set(property, value)
-func tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
if to_value is Object:
Notify.error("Tween Failed", "Tweening an object is not a sensible operation. Aborting.")
return
@@ -446,7 +446,7 @@ func _tween_properties_on_nodes_network(nodes_tweened_properties: Dictionary) ->
_save_tween_results_for_later(node_path, node_tweened_properties, _set_queue_properties_on_nodes)
-func _tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func _tween_property_on_node(node: Node, property: StringName, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
if not ScriptPropertyRegistration.has_registered_property(property):
return
var tween: Tween = get_tree().create_tween()
@@ -508,13 +508,21 @@ func _set_variable_on_node(node: Node, variable_name: String, variable_value: Va
node.set_meta(&"MirrorScriptObjectVariables", {})
var object_variables: Dictionary = node.get_meta(&"MirrorScriptObjectVariables")
TMDataUtil.set_variable_by_json_path_string(object_variables, variable_name, variable_value)
+ # If this is an exposed script variable, set it in the script.
+ if node.has_method(&"get_script_instances") and Zone.is_host():
+ var script_instances: Array[ScriptInstance] = node.get_script_instances()
+ for script_inst in script_instances:
+ if script_inst is GDScriptInstance and is_instance_valid(script_inst.script_instance_object):
+ var obj = script_inst.script_instance_object
+ if variable_name in obj:
+ obj.set(variable_name, variable_value)
# Keep track of all node variables ever set for use with the variable editor.
var node_path: NodePath = node.get_path()
var node_variables_in_all: Dictionary = _all_set_variables_on_nodes.get_or_add(node_path, {})
TMDataUtil.set_variable_by_json_path_string(node_variables_in_all, variable_name, variable_value)
-func tween_variable_on_node(node: Node, variable: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func tween_variable_on_node(node: Node, variable: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
if to_value is Object:
Notify.error("Tween Failed", "Tweening an Object value is not a sensible operation. Aborting.")
return
@@ -549,7 +557,7 @@ func _tween_variables_on_nodes_network(nodes_tweened_variables: Dictionary) -> v
received_variable_data_change.emit()
-func _tween_variable_on_node(node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType, easing: Tween.EaseType) -> void:
+func _tween_variable_on_node(node: Node, variable_name: String, to_value: Variant, duration: float, trans: Tween.TransitionType = Tween.TRANS_LINEAR, easing: Tween.EaseType = Tween.EASE_IN_OUT) -> void:
if not node.has_meta(&"MirrorScriptObjectVariables"):
node.set_meta(&"MirrorScriptObjectVariables", {})
var object_variables: Dictionary = node.get_meta(&"MirrorScriptObjectVariables")
diff --git a/mirror-godot-app/script/script_instance.gd b/mirror-godot-app/script/script_instance.gd
index 17a75ad8..065d2422 100644
--- a/mirror-godot-app/script/script_instance.gd
+++ b/mirror-godot-app/script/script_instance.gd
@@ -87,8 +87,11 @@ func is_script_instance_setup() -> bool:
func setup(node: Node, script_inst_dict: Dictionary) -> void:
target_node = node
- var script_entity_data: Dictionary = await Net.script_client.get_script_entity(script_id)
- setup_script_entity_data(script_entity_data)
+ var script_entity_data: Dictionary = Net.script_client.get_script_entity(script_id)
+ # If it's empty, we don't have the data yet. The setup_script_entity_data
+ # function will be ran later when we receive the data.
+ if not script_entity_data.is_empty():
+ setup_script_entity_data(script_entity_data)
func setup_script_instance_data(script_inst_dict: Dictionary) -> void:
@@ -145,6 +148,17 @@ func update_script_entity_data_from_network(script_entity_data: Dictionary) -> v
# Parameter methods.
+func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void:
+ assert(false, "This method must be overridden in a derived class.")
+
+
+func set_inspector_parameter_input_value(entry_id: String, param_name: String, new_value: Variant) -> void:
+ var parameters_for_entry: Dictionary = entry_parameters[entry_id]
+ var param_data: Array = parameters_for_entry[param_name]
+ param_data[1] = new_value
+ apply_inspector_parameter_values()
+
+
func _load_entry_parameters_from_json(entry_parameter_json: Dictionary) -> void:
assert(entry_parameters.is_empty(), "This method expects to only be called once. If calling multiple times is needed, add support for that.")
entry_parameters = entry_parameter_json.duplicate(true)
diff --git a/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd b/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd
index 6d92d3aa..eb92a3e2 100644
--- a/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd
+++ b/mirror-godot-app/script/visual/blocks/misc/get_friendly_name.gd
@@ -4,19 +4,7 @@ extends ScriptBlock
func evaluate() -> void:
evaluate_inputs()
var value = inputs[0].value
- if value is SpaceObject:
- outputs[0].value = value.get_space_object_name()
- elif value is Player:
- outputs[0].value = value.get_player_name()
- elif value is Node:
- outputs[0].value = value.name
- elif value == null:
- outputs[0].value = ""
- elif not is_instance_valid(value):
- outputs[0].value = ""
- else:
- # For non-Node objects, str() is the best we can do.
- outputs[0].value = str(value)
+ outputs[0].value = Mirror.get_friendly_name(value)
func get_script_block_type() -> String:
diff --git a/mirror-godot-app/script/visual/blocks/script_block.gd b/mirror-godot-app/script/visual/blocks/script_block.gd
index bca35f36..5824fdc7 100644
--- a/mirror-godot-app/script/visual/blocks/script_block.gd
+++ b/mirror-godot-app/script/visual/blocks/script_block.gd
@@ -109,6 +109,8 @@ func _setup_base(block_json: Dictionary) -> void:
graph_position = Serialization.array_to_vector2(block_json["position"])
if block_json.has("name"):
graph_name = block_json["name"]
+ elif block_json.has("signal"):
+ graph_name = "On " + String(block_json["signal"]).capitalize()
else:
graph_name = String(block_json["type"]).capitalize()
diff --git a/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd b/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd
index c8b5632c..8ea17872 100644
--- a/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd
+++ b/mirror-godot-app/script/visual/editor/block_creation/script_block_creation_dialog.gd
@@ -112,7 +112,7 @@ func _on_confirmed():
var desired_block_json: Dictionary = _script_block_creation_menu.get_desired_block_json()
if desired_block_json.is_empty():
return
- if desired_block_json["type"] == "entry" and not desired_block_json.has("signal"):
+ if desired_block_json["type"] == "entry" and desired_block_json["signal"] == &"custom_signal":
request_show_entry_creation_dialog.emit()
return
create_block.emit(desired_block_json)
diff --git a/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd b/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd
index 9fc965a4..31693517 100644
--- a/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd
+++ b/mirror-godot-app/script/visual/editor/graph/script_editor_graph.gd
@@ -154,7 +154,12 @@ func create_graph_nodes(from_script_instance: ScriptInstance, rezoom: bool = tru
_queue_update_network_script_frames = -1
script_instance = from_script_instance
script_builder = script_instance.script_builder
- assert(get_children().is_empty())
+ # Regression in GraphEdit: https://github.com/godotengine/godot/issues/91857
+ # We need to manually filter out the internal _connection_layer using the node name.
+ var graph_edit_children: Array[Node] = get_children()
+ for child in graph_edit_children:
+ assert(child.name.begins_with("_"), "Expected all children to be cleaned up before `create_graph_nodes` was called (expected `cleanup_and_delete_nodes` to be called first).")
+ #assert(get_children().is_empty())
for comment in script_instance.comments:
create_comment_graph_node(comment)
var script_blocks: Array[ScriptBlock] = script_builder.all_blocks
@@ -603,10 +608,12 @@ func focus_script_block(script_block: ScriptBlock, error_text: String) -> void:
func rezoom_to_show_all_graph_nodes() -> void:
# Keep a 500x500 area near the origin in view.
var rect := Rect2(-100.0, -100.0, 400.0, 400.0)
- for graph_node in get_children():
- var pos: Vector2 = graph_node.position_offset
+ for graph_elem in get_children():
+ if not graph_elem is GraphElement:
+ continue
+ var pos: Vector2 = graph_elem.position_offset
rect = rect.expand(pos)
- rect = rect.expand(pos + graph_node.size)
+ rect = rect.expand(pos + graph_elem.size)
zoom = minf(size.x / rect.size.x, size.y / rect.size.y) * 0.9
scroll_offset = rect.get_center() * zoom - size * 0.5
diff --git a/mirror-godot-app/script/visual/editor/visual_script_editor.gd b/mirror-godot-app/script/visual/editor/visual_script_editor.gd
index dbed5727..ccf8e5e5 100644
--- a/mirror-godot-app/script/visual/editor/visual_script_editor.gd
+++ b/mirror-godot-app/script/visual/editor/visual_script_editor.gd
@@ -148,7 +148,7 @@ func _on_request_block_creation(constraint: int, data_type: int, index: int, fro
func _on_request_entry_creation(where: Vector2) -> void:
_creation_position = where
- request_show_entry_creation_dialog.emit(_script_instance.target_node)
+ request_show_custom_entry_creation_dialog.emit(_script_instance.target_node)
func _on_request_input_value_edit(graph_node: ScriptBlockGraphNode, input_port: ScriptBlock.ScriptBlockInputPort) -> void:
diff --git a/mirror-godot-app/script/visual/visual_script_instance.gd b/mirror-godot-app/script/visual/visual_script_instance.gd
index 24e5c924..09c4cac7 100644
--- a/mirror-godot-app/script/visual/visual_script_instance.gd
+++ b/mirror-godot-app/script/visual/visual_script_instance.gd
@@ -137,6 +137,15 @@ func _create_event_node(entry_block: ScriptBlockEntryBase) -> void:
entry_block.entry_node = event_node
+func create_inspector_parameter_input(entry_id: String, parameter_port_array: Array) -> void:
+ for entry_block in script_builder.entry_blocks:
+ if entry_block.entry_id == entry_id:
+ entry_block.parameters.create_inspector_parameter(parameter_port_array)
+ entry_block.reset_entry_output_ports()
+ break
+ sync_script_inst_params_with_script_data()
+
+
## Ensure the script instance entry inspector parameters match the
## signature of the script's data. Since a script may be used by
## multiple objects, parameters may get out of sync without this code.
diff --git a/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd b/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd
index 00d0608d..8450fef8 100644
--- a/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd
+++ b/mirror-godot-app/scripts/autoload/analytics/analytics_v2.gd
@@ -36,10 +36,14 @@ func track_event(event_type: String, properties:={}) -> void:
## Send a single event to the Mixpanel Analytics service
func _send_track_event(event: AnalyticsEvent, properties := {}) -> void:
+ var version := Util.get_version_string()
+ var release := Util.get_release_name()
var standard_properties = {
"token": api_token,
"distinct_id": event.user_id,
- "env": "open-source"
+ "env": "open-source-v2",
+ "version": version,
+ "release": release
}
if not properties.is_empty():
standard_properties.merge(properties)
@@ -51,16 +55,16 @@ func _send_track_event(event: AnalyticsEvent, properties := {}) -> void:
var promise = self.post_request_ext(TRACK_EVENT, _ANALYTICS_URL_TRACK, data)
var res = await promise.wait_till_fulfilled()
if promise.is_error():
- print("Error sending track event: %s" % [res])
+ print("Error sending track event, promise: %s" % [res])
else:
if (res.has('json_result') and res.json_result.has('status')):
var status = res.json_result.status
# 0 is an error from Mixpanel *EVEN IF* it's 200 HTTP status
if (status == 0):
if (res.json_result.has('error')):
- print("Error sending track event: %s" % [res.json_result.error])
+ print("Error sending track event, json_result error: %s" % [res.json_result.error])
else:
- print("Error sending track event: %s" % [res])
+ print("Error sending track event, other error: %s" % [res])
#1 is success from Mixpanel
if (status == 1):
if _PRINT_ANALYTICS:
diff --git a/mirror-godot-app/scripts/autoload/util_funcs.gd b/mirror-godot-app/scripts/autoload/util_funcs.gd
index cea173fb..83e2bc75 100644
--- a/mirror-godot-app/scripts/autoload/util_funcs.gd
+++ b/mirror-godot-app/scripts/autoload/util_funcs.gd
@@ -105,6 +105,10 @@ static func current_platform_is_windows() -> bool:
return get_current_platform_name() == WIN_NAME
+static func get_release_name() -> String:
+ return "Horizon"
+
+
static func get_simple_platform_name(os_name:String) -> String:
var lower_os_name = os_name.to_lower()
return PLATFORMS.get(lower_os_name, lower_os_name)
diff --git a/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd b/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd
index a8fcf584..d1f399da 100644
--- a/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd
+++ b/mirror-godot-app/ui/common/components/endless_scroll_flow_container.gd
@@ -30,6 +30,7 @@ var _current_item_offset = 0
var _is_already_requesting_next_page = false
var _lowest_known_scroll_position = 0
var _is_fully_loaded = false
+var _configured = false
func clear() -> void:
@@ -69,6 +70,11 @@ func _calculate_max_items_on_screen(forced_size = Vector2.ZERO) -> int:
func _fetch_data(cnt_items_to_fetch: int) -> Array:
+ if not fetch_callable.is_valid():
+ # this could be caused by the data not being initialised before this is called
+ # it happens generally if you're not logged in before populating this.
+ push_error("invalid fetch callable in endless scroll container")
+ return []
assert(fetch_callable.is_valid())
if _is_already_requesting_next_page:
return [] # Some old request is in working...
@@ -112,6 +118,7 @@ func setup(forced_start_size = Vector2.ZERO) -> void:
var items_to_fetch = (preload_pages_in_advance) * _calculate_max_items_on_screen(forced_start_size)
var items_data = await _fetch_data(items_to_fetch)
_populate_items(items_data)
+ _configured = true
func fetch_and_populate(forced_start_size = Vector2.ZERO) -> void:
@@ -125,7 +132,7 @@ func fetch_and_populate(forced_start_size = Vector2.ZERO) -> void:
var offset_modulo = _current_item_offset %items_per_row
if offset_modulo > 0:
items_to_fetch += items_per_row - offset_modulo
- var items_data = await _fetch_data(items_to_fetch)
+ var items_data = await _fetch_data(max(1,items_to_fetch))
_populate_items(items_data)
@@ -175,7 +182,7 @@ func _on_retry_button_pressed() -> void:
func _on_visibility_changed() -> void:
if not visible:
return
- if not get_v_scroll_bar().visible:
+ if not get_v_scroll_bar().visible and _configured:
fetch_and_populate()
diff --git a/mirror-godot-app/ui/global_version_label/version_label.gd b/mirror-godot-app/ui/global_version_label/version_label.gd
index a2f58c34..34a65109 100644
--- a/mirror-godot-app/ui/global_version_label/version_label.gd
+++ b/mirror-godot-app/ui/global_version_label/version_label.gd
@@ -10,9 +10,10 @@ func _ready():
## Sets the version label to the parsed version string.
func _set_version_label() -> void:
var version := Util.get_version_string()
+ var release := Util.get_release_name()
text = ' '.join([
text,
- _release_name(version),
+ release,
"v%s-%s" % [
version,
ProjectSettings.get_setting("mirror/env_name")
@@ -20,6 +21,3 @@ func _set_version_label() -> void:
])
if ProjectSettings.get_setting("feature_flags/large_text_size", false):
add_theme_font_size_override(&"font_size", 22)
-
-func _release_name(version) -> String:
- return "Gravity"
diff --git a/mirror-web-server/.env.example b/mirror-web-server/.env.example
index 2b652048..f326419e 100644
--- a/mirror-web-server/.env.example
+++ b/mirror-web-server/.env.example
@@ -10,7 +10,7 @@ GCP_PROJECT_ID=
# Use this for docker mongodb
MONGODB_URL=mongodb://root:example@mongo:27017/themirror?retryWrites=true&w=majority&authSource=admin
# Use this for local mongodb
-MONGODB_URL=mongodb://127.0.0.1:27017/themirror
+# MONGODB_URL=mongodb://127.0.0.1:27017/themirror
# # Use this for local redis
# REDISHOST=127.0.0.1
@@ -62,4 +62,4 @@ DISABLE_EMAIL=true
ASSET_STORAGE_DRIVER=LOCAL
# if ASSET_STORAGE_DRIVER is not GCP, then this is required
-ASSET_STORAGE_URL=http://localhost:9000/
\ No newline at end of file
+ASSET_STORAGE_URL=http://localhost:9000/
diff --git a/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js b/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js
index 00f3c849..f7ce66e1 100644
--- a/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js
+++ b/mirror-web-server/migrations/themirror/20231129171842-add-isEquipable-property-to-assets.js
@@ -3,6 +3,7 @@ const Piscina = require('piscina')
const os = require('os')
const { ObjectId } = require('mongodb')
+// @ts-ignore
const piscina = new Piscina({
filename: path.resolve(
__dirname,
diff --git a/mirror-web-server/src/asset/asset.controller.ts b/mirror-web-server/src/asset/asset.controller.ts
index 44161d61..8bbae422 100644
--- a/mirror-web-server/src/asset/asset.controller.ts
+++ b/mirror-web-server/src/asset/asset.controller.ts
@@ -784,4 +784,16 @@ export class AssetController {
purchaseOptionId
)
}
+
+ @Get('/space/:spaceId')
+ @FirebaseTokenAuthGuard()
+ public async getAllAssetsBySpaceIdWithRolesCheck(
+ @UserToken('user_id') userId: UserId,
+ @Param('spaceId') spaceId: string
+ ) {
+ return await this.assetService.getAllAssetsBySpaceIdWithRolesCheck(
+ spaceId,
+ userId
+ )
+ }
}
diff --git a/mirror-web-server/src/asset/asset.service.ts b/mirror-web-server/src/asset/asset.service.ts
index 5a99d771..129740c0 100644
--- a/mirror-web-server/src/asset/asset.service.ts
+++ b/mirror-web-server/src/asset/asset.service.ts
@@ -24,6 +24,7 @@ import {
import { FileUploadService } from '../util/file-upload/file-upload.service'
import {
AssetId,
+ SpaceId,
UserId,
aggregationMatchId
} from '../util/mongo-object-id-helpers'
@@ -1342,6 +1343,26 @@ export class AssetService {
return await this._updateAssetTagsByType(assetId, tagType, tags)
}
+ async getAllAssetsBySpaceIdWithRolesCheck(spaceId: SpaceId, userId: UserId) {
+ const pipeline = [
+ { $match: { space: new ObjectId(spaceId) } },
+ {
+ $lookup: {
+ from: 'assets',
+ localField: 'asset',
+ foreignField: '_id',
+ as: 'assetInfo'
+ }
+ },
+ { $unwind: '$assetInfo' },
+ {
+ $replaceRoot: { newRoot: '$assetInfo' }
+ },
+ ...this.roleService.getRoleCheckAggregationPipeline(userId, ROLE.OBSERVER)
+ ]
+ return await this.spaceObjectModel.aggregate(pipeline).exec()
+ }
+
private async _updateAssetTagsByType(
assetId: AssetId,
tagType: TAG_TYPES,
diff --git a/mirror-web-server/src/auth/auth.guard.ts b/mirror-web-server/src/auth/auth.guard.ts
index ec8c0c85..c05f1e98 100644
--- a/mirror-web-server/src/auth/auth.guard.ts
+++ b/mirror-web-server/src/auth/auth.guard.ts
@@ -42,7 +42,10 @@ export class AuthGuardFirebase implements CanActivate {
req['user'] = decodedJwt
}
} catch (error) {
- console.log(error)
+ this.logger.log(
+ `JWT decode error ${error as string}`,
+ AuthGuardFirebase.name
+ )
// do nothing if decoding fails here
}
return true
@@ -88,14 +91,14 @@ export class AuthGuardFirebase implements CanActivate {
} else {
this.logger.error('JWT:', token)
}
- console.log('AuthGuardFirebase: error decoding jwt, returning false')
+ this.logger.log('AuthGuardFirebase: error decoding jwt, returning false')
return false
}
}
async decodeJwt(token) {
return await this.firebaseAuthService.verifyIdToken(
- token.replace('Bearer ', ''),
+ token ? token.replace('Bearer ', '') : '',
true
)
}
diff --git a/mirror-web-server/src/block/block.service.ts b/mirror-web-server/src/block/block.service.ts
index 30ab8568..d241f06b 100644
--- a/mirror-web-server/src/block/block.service.ts
+++ b/mirror-web-server/src/block/block.service.ts
@@ -31,6 +31,8 @@ export class BlockService {
}
remove(id: string): Promise {
- return this.blockModel.findOneAndDelete({ _id: id }).exec()
+ return this.blockModel
+ .findOneAndDelete({ _id: id })
+ .exec() as any as Promise
}
}
diff --git a/mirror-web-server/src/metadata.ts b/mirror-web-server/src/metadata.ts
index ce5795ec..99aad97a 100644
--- a/mirror-web-server/src/metadata.ts
+++ b/mirror-web-server/src/metadata.ts
@@ -19,5 +19,5 @@ export default async () => {
["./space/material-instance/material-instance.schema"]: await import("./space/material-instance/material-instance.schema"),
["./auth/auth.controller"]: await import("./auth/auth.controller")
};
- return { "@nestjs/swagger": { "models": [[import("./custom-data/dto/custom-data.dto"), { "CreateCustomDataDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } }, "ICustomDataKeyValuePairUpdateDto": { patchCustomData: { required: false, type: () => Object }, removeCustomDataKeys: { required: false, type: () => [String] } } }], [import("./roles/dto/create-role.dto"), { "CreateRoleDto": { defaultRole: { required: true, enum: t["./roles/models/role.enum"].ROLE }, creator: { required: true, type: () => String }, users: { required: false, type: () => Object }, userGroups: { required: false, type: () => Object } } }], [import("./util/file-upload/dto/file-upload.dto"), { "FileUploadDto": { path: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./asset/dto/create-asset.dto"), { "CreateAssetDto": { name: { required: true, type: () => String, description: "Required properties", maxLength: 300 }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, defaultRole: { required: false, description: "Optional Properties", enum: t["./roles/models/role.enum"].ROLE }, description: { required: false, type: () => String, maxLength: 5000 }, mirrorPublicLibrary: { required: false, type: () => Boolean }, customData: { required: false, type: () => String }, thirdPartySourceDisplayName: { required: false, type: () => String, description: "START Section: Third Party Source for Mirror Public Library" }, thirdPartySourceUrl: { required: false, type: () => String }, thumbnail: { required: false, type: () => String, description: "END Section: Third Party Source for Mirror Public Library" }, categories: { required: false, type: () => [String], deprecated: true }, currentFile: { required: false, type: () => String, maxLength: 5000 }, fileHash: { required: false, type: () => String, maxLength: 64 }, public: { required: false, type: () => Boolean }, initPositionX: { required: false, type: () => Number }, initPositionY: { required: false, type: () => Number }, initPositionZ: { required: false, type: () => Number }, initRotationX: { required: false, type: () => Number }, initRotationY: { required: false, type: () => Number }, initRotationZ: { required: false, type: () => Number }, initScaleX: { required: false, type: () => Number }, initScaleY: { required: false, type: () => Number }, initScaleZ: { required: false, type: () => Number }, collisionEnabled: { required: false, type: () => Boolean }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, objectColor: { required: false, type: () => Object }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags } }, "CreateMaterialDto": { materialName: { required: false, type: () => String }, materialTransparencyMode: { required: false, type: () => String }, materialTransparencyProperties: { required: false, type: () => String }, textures: { required: false, type: () => String }, parameters: { required: true, type: () => Object }, externalAssetIds: { required: false, type: () => String }, materialType: { required: true, type: () => String }, code: { required: false, type: () => String } }, "CreateTextureDto": { textureImageFileHashMD5: { required: false, type: () => String }, textureLowQualityFileHashMD5: { required: false, type: () => String }, textureImagePropertyAppliesTo: { required: false, type: () => String } }, "CreateMapDto": { mapName: { required: false, type: () => String }, heightmapAssetId: { required: false, type: () => String }, flatMaterialAssetId: { required: false, type: () => String }, cliffMaterialAssetId: { required: false, type: () => String }, mapSize: { required: false, type: () => Number }, mapPrecision: { required: false, type: () => Number }, heightScale: { required: false, type: () => Number }, layerOffset: { required: false, type: () => Number }, flatUVScale: { required: false, type: () => Number }, cliffUVScale: { required: false, type: () => Number }, flatCliffRatio: { required: false, type: () => Number }, flatColor: { required: false, type: () => Object }, cliffColor: { required: false, type: () => Object }, colormapAssetId: { required: false, type: () => String }, colormapStrength: { required: false, type: () => Number } } }], [import("./asset/dto/paginated-search-asset.dto"), { "PaginatedSearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number }, type: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetType: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetTypes: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE, isArray: true }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } }, "PaginatedSearchAssetDtoV2": { populate: { required: true, type: () => [String] }, includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/update-asset.dto"), { "UpdateAssetDto": { __t: { required: false, type: () => Object, description: "@description If a discriminator/subclassed Asset is being updated, then this must be included. Otherwise, the parent Asset will be used, but because Mongoose is NOT typed under the hood, it won't know about the discriminator classes and thus won't work with properties of the discriminator if the discriminator model isn't used.\n@date 2023-06-07 11:24" } }, "AddAssetPurchaseOptionDto": {} }], [import("./asset/dto/upload-asset-file.dto"), { "UploadAssetFileDto": { userId: { required: true, type: () => String }, assetId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/create-user-access-key.dto"), { "CreateUserAccessKeyDto": { token: { required: true, type: () => String }, adminNote: { required: true, type: () => String } } }], [import("./user/dto/update-user.dto"), { "UpdateUserProfileDto": { email: { required: true, type: () => String }, displayName: { required: true, type: () => String }, publicBio: { required: true, type: () => String }, discordUserId: { required: true, type: () => String }, polygonPublicKey: { required: true, type: () => String }, ethereumPublicKey: { required: true, type: () => String }, twitterUsername: { required: true, type: () => String }, githubUsername: { required: true, type: () => String }, instagramUsername: { required: true, type: () => String }, youtubeChannel: { required: true, type: () => String }, artStationUsername: { required: true, type: () => String }, sketchfabUsername: { required: true, type: () => String }, profileImage: { required: true, type: () => String }, coverImage: { required: true, type: () => String } }, "UpdateUserDeepLinkDto": { deepLinkKey: { required: true, type: () => String }, deepLinkValue: { required: true, type: () => String } }, "UpdateUserTermsDto": { termsAgreedtoClosedAlpha: { required: false, type: () => Boolean }, termsAgreedtoGeneralTOSandPP: { required: false, type: () => Boolean } }, "UpdateUserAvatarDto": { avatarUrl: { required: false, type: () => String } }, "UpdateUserTutorialDto": { shownFirstInSpacePopupV1: { required: false, type: () => Boolean }, shownFirstHomeScreenPopupV1: { required: false, type: () => Boolean }, shownWebAppPopupV1: { required: false, type: () => Boolean } }, "UpdateUserAvatarTypeDto": { avatarType: { required: true, type: () => String }, readyPlayerMeUrlGlb: { required: false, type: () => String } }, "AddRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "RemoveRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "UpsertUserEntityActionDto": { forEntity: { required: true, type: () => String }, actionType: { required: true, type: () => String }, entityType: { required: true, type: () => String }, rating: { required: false, type: () => Number, description: "Optional properties", minimum: 1, maximum: 5 } }, "AddUserCartItemToUserCartDto": { purchaseOptionId: { required: true, type: () => String }, forEntity: { required: true, type: () => String }, entityType: { required: true, type: () => String } } }], [import("./user/dto/upload-profile-file.dto"), { "UploadProfileFileDto": { userId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/add-user-sidebar-tag.dto"), { "AddUserSidebarTagDto": { sidebarTag: { required: true, type: () => String } } }], [import("./asset/dto/add-tag-to-asset.dto"), { "AddTagToAssetDto": { assetId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./environment/dto/update-environment.dto"), { "UpdateEnvironmentDto": {} }], [import("./space-object/dto/create-space-object.dto"), { "CreateSpaceObjectDto": { spaceId: { required: true, type: () => String, description: "Required properties", minLength: 24, maxLength: 24 }, name: { required: true, type: () => String, maxLength: 300 }, asset: { required: true, type: () => String }, parentSpaceObject: { required: false, type: () => String }, description: { required: false, type: () => String }, locked: { required: false, type: () => Boolean }, preloadBeforeSpaceStarts: { required: false, type: () => Boolean }, position: { required: false, type: () => Object }, rotation: { required: false, type: () => Object }, scale: { required: false, type: () => Object }, offset: { required: false, type: () => Object }, collisionEnabled: { required: false, type: () => Boolean }, shapeType: { required: false, type: () => String }, bodyType: { required: false, type: () => String }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, castShadows: { required: false, type: () => Boolean }, visibleFrom: { required: false, type: () => Number }, visibleTo: { required: false, type: () => Number }, visibleFromMargin: { required: false, type: () => Number }, visibleToMargin: { required: false, type: () => Number }, materialAssetId: { required: false, type: () => String }, objectColor: { required: false, type: () => Object }, objectTexture: { required: false, type: () => String }, objectTextureSize: { required: false, type: () => Number, deprecated: true }, objectTextureSizeV2: { required: false, type: () => Object }, objectTextureOffset: { required: false, type: () => Object }, objectTextureTriplanar: { required: false, type: () => Boolean }, objectTextureRepeat: { required: false, type: () => Boolean }, audioAutoPlay: { required: false, type: () => Boolean }, audioLoop: { required: false, type: () => Boolean }, audioIsSpatial: { required: false, type: () => Boolean }, audioPitch: { required: false, type: () => Number }, audioBaseVolume: { required: false, type: () => Number }, audioSpatialMaxVolume: { required: false, type: () => Number }, audioSpatialRange: { required: false, type: () => Number }, surfaceMaterialId: { required: false, type: () => [Object] }, scriptEvents: { required: false, type: () => [Object] }, extraNodes: { required: false, type: () => [Object] } } }], [import("./util/dto-generic/batch.dto"), { "Batch": { batch: { required: true } } }], [import("./space-object/dto/update-space-object.dto"), { "UpdateSpaceObjectDto": {} }], [import("./space-object/dto/update-batch-space-object.dto"), { "UpdateBatchSpaceObjectDto": {} }], [import("./space-object/dto/add-tag-to-space-object.dto"), { "AddTagToSpaceObjectDto": { spaceObjectId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./space-object/dto/paginated-search-space-object.dto"), { "PaginatedSearchSpaceObjectDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } } }], [import("./space-object/dto/update-space-object-tags.dto"), { "UpdateSpaceObjectTagsDto": { spaceObjectId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./terrain/dto/create-terrain.dto"), { "CreateTerrainDto": { name: { required: true, type: () => String, maxLength: 300 }, material: { required: false, type: () => String }, description: { required: false, type: () => String, maxLength: 5000 }, public: { required: false, type: () => Boolean }, generator: { required: false, type: () => String }, noiseType: { required: false, type: () => Number }, positionX: { required: false, type: () => Number }, positionY: { required: false, type: () => Number }, positionZ: { required: false, type: () => Number }, heightStart: { required: false, type: () => Number }, heightRange: { required: false, type: () => Number }, seed: { required: false, type: () => Number } } }], [import("./terrain/dto/update-terrain.dto"), { "UpdateTerrainDto": {} }], [import("./space/dto/create-space.dto"), { "CreateSpaceDto": { name: { required: true, type: () => String, maxLength: 300 }, type: { required: true, type: () => String, description: "Optional properties" }, users: { required: false, type: () => Object, description: "START Section: Roles" }, userGroups: { required: false, type: () => Object }, terrain: { required: false, type: () => String, description: "END Section: Roles" }, environment: { required: false, type: () => String }, ownerUserGroup: { required: false, type: () => String }, template: { required: true, type: () => String }, lowerLimitY: { required: false, type: () => Number }, description: { required: false, type: () => String, maxLength: 5000 }, images: { required: false, type: () => [String] }, publicBuildPermissions: { required: false, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags }, maxUsers: { required: false, type: () => Number } } }], [import("./space/dto/update-space.dto"), { "UpdateSpaceDto": { patchCustomData: { required: false, type: () => Object, description: "@description These properties are PATCHED onto custom data (overwrites declared key-value pairs, but doesn't affect other key/value parirs)\n@date 2023-04-05 23:27" }, activeSpaceVersion: { required: false, type: () => String }, removeCustomDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from custom data. Other properties will not be affected\n@date 2023-04-05 23:27" }, patchSpaceVariablesData: { required: false, type: () => Object }, removeSpaceVariablesDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from spaceVariablesData. Other properties will not be affected\n@date 2023-06-05 16:59:26" }, tagsV2: { required: false, type: () => [String] }, scriptIds: { required: false, type: () => [String] }, scriptInstances: { required: false, type: () => [Object] }, materialInstances: { required: false, type: () => [Object] }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, kickRequests: { required: true, type: () => [String] } }, "CreateNewSpaceVersionDto": { updateSpaceWithActiveSpaceVersion: { required: true, type: () => Boolean }, name: { required: true, type: () => String } }, "SpaceCopyFromTemplateDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, maxUsers: { required: false, type: () => Number, default: 24 } } }], [import("./space/dto/upload-space-files.dto"), { "UploadSpaceFilesDto": { spaceId: { required: true, type: () => String }, files: { required: true, type: () => [Object] } } }], [import("./space/dto/paginated-search-space.dto"), { "PaginatedSearchSpaceDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space-variable/dto/space-variables-data.dto"), { "CreateSpaceVariablesDataDocumentDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } } }], [import("./zone/dto/create-zone.dto"), { "CreateZoneDto": { zoneMode: { required: true, type: () => String, maxLength: 100 }, owner: { required: false, type: () => String, description: "@description The UserId of the user who created the zone. It's optional, but we do want this. It's just set to optional for other CreateZoneDto's validation on the cron job.\n@date 2023-06-17 22:42", minLength: 24, maxLength: 24 }, state: { required: true, type: () => String, maxLength: 100 }, ipAddress: { required: true, type: () => String, maxLength: 100 }, port: { required: true, type: () => Number }, uuid: { required: true, type: () => String, maxLength: 100 }, url: { required: true, type: () => String, maxLength: 100 }, gdServerVersion: { required: true, type: () => String, maxLength: 50 }, containerLastRefreshed: { required: false, type: () => Date }, name: { required: false, type: () => String, maxLength: 300 }, description: { required: false, type: () => String }, space: { required: false, type: () => String, description: "Only required if Build mode, but still run validation in case it exists for some reason (such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 }, spaceVersion: { required: false, type: () => String, description: "Only required if Play mode, but still run validation in case it exists for some reason(such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 } } }], [import("./zone/dto/update-zone.dto"), { "UpdateZoneDto": { id: { required: false, type: () => String } } }], [import("./zone/dto/create-play-server.dto"), { "CreatePlayServerDto": { zoneName: { required: false, type: () => String } } }], [import("./space/dto/add-tag-to-space.dto"), { "AddTagToSpaceDto": { spaceId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./mirror-db/dto/update-mirror-db-record.dto"), { "UpdateMirrorDBRecordDto": { recordData: { required: true, type: () => Object } } }], [import("./script-entity/dto/create-script-entity.dto"), { "CreateScriptEntityDto": { blocks: { required: true, type: () => [Object] } } }], [import("./script-entity/dto/update-script-entity.dto"), { "UpdateScriptEntityDto": {} }], [import("./roles/dto/set-user-role-for-one.dto"), { "SetUserRoleForOneDto": { targetUserId: { required: true, type: () => String }, role: { required: true, enum: t["./roles/models/role.enum"].ROLE } }, "RemoveUserRoleForOneDto": { targetUserId: { required: true, type: () => String, maxLength: 24 } } }], [import("./space/dto/update-space-tags.dto"), { "UpdateSpaceTagsDto": { spaceId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./space/dto/populate-space.dto"), { "PopulateSpaceDto": { populateCreator: { required: false, type: () => Boolean }, populateUsersPresent: { required: false, type: () => Boolean } } }], [import("./asset/dto/search-asset.dto"), { "SearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String } } }], [import("./asset/dto/update-asset-tags.dto"), { "UpdateAssetTagsDto": { assetId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./asset/dto/include-soft-deleted-asset.dto"), { "IncludeSoftDeletedAssetDto": { includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/upsert-asset.dto"), { "UpsertAssetDto": { name: { required: true, type: () => String }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, description: { required: true, type: () => String }, owner: { required: true, type: () => String }, initPositionX: { required: true, type: () => Number }, initPositionY: { required: true, type: () => Number }, initPositionZ: { required: true, type: () => Number }, initRotationX: { required: true, type: () => Number }, initRotationY: { required: true, type: () => Number }, initRotationZ: { required: true, type: () => Number }, initScaleX: { required: true, type: () => Number }, initScaleY: { required: true, type: () => Number }, initScaleZ: { required: true, type: () => Number }, collisionEnabled: { required: true, type: () => Boolean }, staticEnabled: { required: true, type: () => Boolean }, massKg: { required: true, type: () => Number }, gravityScale: { required: true, type: () => Number }, objectColor: { required: true, type: () => Object } } }], [import("./user/dto/submit-user-access-key.dto"), { "SubmitUserAccessKeyDto": { key: { required: true, type: () => String } } }], [import("./user/dto/update-user-sidebar-tags.dto"), { "UpdateUserSidebarTagsDto": { sidebarTags: { required: true, type: () => [String] } } }], [import("./user-groups/dto/create-group-users-invite.dto"), { "CreateUserGroupInviteDto": { group: { required: true, type: () => String, description: "Required properties" }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, creator: { required: true, type: () => String }, recipient: { required: true, type: () => String }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-membership.dto"), { "CreateUserGroupMembershipDto": { group: { required: true, type: () => String }, status: { required: true, enum: t["./option-sets/user-group-membership-statuses"].USER_GROUP_MEMBERSHIP_STATUSES }, creator: { required: true, type: () => String }, user: { required: true, type: () => String }, role: { required: true, enum: t["./option-sets/group-users-roles"].GROUP_ROLE }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-request.dto"), { "CreateUserGroupRequestDto": { group: { required: true, type: () => String }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, completedDate: { required: true, type: () => Date }, creator: { required: true, type: () => String }, updatedAt: { required: true, type: () => Date }, createdAt: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group.users.dto"), { "CreateUserGroupDto": { name: { required: true, type: () => String, description: "Required properties" }, public: { required: true, type: () => Boolean }, publicDescription: { required: true, type: () => String, description: "Optional properties" }, primaryContact: { required: true, type: () => String }, moderators: { required: true, type: () => [String] }, owners: { required: true, type: () => [String] }, image: { required: true, type: () => String }, discordUrl: { required: true, type: () => String }, polygonDaoContractPublicKey: { required: true, type: () => String }, ethereumDaoContractPublicKey: { required: true, type: () => String }, twitterUrl: { required: true, type: () => String }, websiteUrl: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./user-groups/dto/update-group.users.dto"), { "UpdateUserGroupDto": {} }], [import("./space/material-instance/dto/create-material-instance.dto"), { "CreateMaterialInstanceDto": { parameters: { required: true, type: () => Object }, spaceId: { required: true, type: () => String } } }], [import("./space/material-instance/dto/update-material-instance.dto"), { "UpdateMaterialInstanceDto": { parameters: { required: true, type: () => Object } } }], [import("./zone/dto/populate-zone-owner.dto"), { "PopulateZoneOwnerDto": { populateOwner: { required: false, type: () => Boolean } } }], [import("./godot-server-override-config/dto/create-godot-server-override-config.dto"), { "CreateGodotServerOverrideConfigDto": { spaceId: { required: true, type: () => String, minLength: 24, maxLength: 24 } } }], [import("./block/dto/create-block.dto"), { "CreateBlockDto": { name: { required: true, type: () => String, description: "Required properties" }, blockType: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional Properties", maxLength: 1000 }, mirrorPublicLibrary: { required: false, type: () => Boolean } } }], [import("./block/dto/update-block.dto"), { "UpdateBlockDto": {} }], [import("./favorite/dto/create-favorite.dto"), { "CreateFavoriteDto": { asset: { required: true, type: () => String }, user: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./favorite/dto/update-favorite.dto"), { "UpdateFavoriteDto": {} }], [import("./stripe/dto/token.dto"), { "AddBank": { token: { required: true, type: () => String } }, "AddCard": { token: { required: true, type: () => String } }, "CardToken": { number: { required: true, type: () => String }, exp_month: { required: true, type: () => String }, exp_year: { required: true, type: () => String }, cvc: { required: true, type: () => String } } }], [import("./stripe/dto/paymentIntent.dto"), { "PaymentIntentDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, payment_method: { required: true, type: () => String } } }], [import("./stripe/dto/transfers.dto"), { "TransfersDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, destination: { required: true, type: () => String } } }], [import("./stripe/dto/subscription.dto"), { "SubscriptionDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, productId: { required: true, type: () => String }, priceId: { required: true, type: () => String }, destination: { required: true, type: () => String } }, "ProductDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String } } }], [import("./stripe/dto/metadata.dto"), { "StripeSubscriptionMetadataDto": { userId: { required: true, type: () => String } } }], [import("./tag/dto/create-tag.dto"), { "CreateTagDto": { name: { required: true, type: () => String }, tagType: { required: true, description: "Optional", enum: t["./option-sets/tag-type"].TAG_TYPE }, mirrorPublicLibrary: { required: true, type: () => Boolean }, public: { required: true, type: () => Boolean }, parentTag: { required: true, type: () => String } }, "CreateThirdPartySourceTagDto": { thirdPartySourceHomePageUrl: { required: true, type: () => String }, thirdPartySourcePublicDescription: { required: true, type: () => String, description: "Optional" }, thirdPartySourceTwitterUrl: { required: true, type: () => String }, thirdPartySourceTMUserId: { required: true, type: () => String } } }], [import("./tag/dto/update-tag.dto"), { "UpdateTagDto": {} }], [import("./user-feedback/dto/create-user-feedback.dto"), { "CreateUserFeedbackItemDto": { name: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional" }, userFeedbackType: { required: false, type: () => String }, USER_FEEDBACK_ITEM_STATUS: { required: false, type: () => String }, public: { required: false, type: () => Boolean } }, "CreateVoteOnUserFeedbackItemDto": { userFeedbackItemId: { required: true, type: () => String }, vote: { required: true, type: () => String } }, "CreateUserFeedbackItemFeatureRequestDto": {}, "CreateUserFeedbackItemBugDto": {} }], [import("./user-feedback/dto/update-user-feedback.dto"), { "UpdateUserFeedbackDto": {} }], [import("./user-feedback/dto/create-user-feedback-comment.dto"), { "CreateUserFeedbackCommentDto": { text: { required: true, type: () => String }, userFeedbackItemId: { required: true, type: () => String } } }], [import("./asset/dto/asset.dto"), { "GetAssetDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } }, "AssetParamsDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space/dto/search-space.dto"), { "SearchSpaceDto": { searchField: { required: true, type: () => String }, searchString: { required: true, type: () => String } } }], [import("./auth/dto/DevLoginUserEmailPassword.dto"), { "DevLoginUserEmailPassword": { email: { required: true, type: () => String }, password: { required: true, type: () => String } } }], [import("./user-groups/dto/search-group.dto"), { "SearchUserGroupDto": { searchField: { required: true, type: () => String }, searchstring: { required: true, type: () => String } } }], [import("./zone/dto/paginated-search-zone.dto"), { "PaginatedSearchZoneDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number } } }], [import("./zone/dto/update-zone-status.dto"), { "UpdateZoneStatusDto": { id: { required: false, type: () => String }, uuid: { required: false, type: () => String }, state: { required: false, type: () => String }, url: { required: false, type: () => String }, version: { required: false, type: () => String }, address: { required: false, type: () => String }, port: { required: false, type: () => Number } } }]], "controllers": [[import("./app.controller"), { "AppController": { "getHello": { type: String }, "getHealth": { type: String }, "throwIntentionalError": {} } }], [import("./space/space.controller"), { "SpaceController": { "getAllPublicForUser": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "getAllPublicForUserV2": { description: "Same as the above but no populate\n@description Retrieves a collection user's public spaces as public data\nid prefix added to prevent wildcard route clashes with file method order", type: [Object] }, "search": { description: "@description Retrieves a collection of space's as public data", type: [t["./space/space.schema"].SpacePublicData] }, "searchV2": { description: "@description Same as the above but no populate\n@date 2023-07-12 23:59", type: [t["./space/space.schema"].SpacePublicData] }, "findAllForMeWhereOwner": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "findAllForMeWhereOwnerPaginatedV2": {}, "findAllForMeWhereOwnerPaginatedV3": { description: "@description This is the same as me-v2, but no populate\n@date 2023-07-12 23:53" }, "getPopularSpaces": { type: [Object] }, "getFavoriteSpaces": { type: [Object] }, "getRecentSpaces": { type: [Object] }, "getSpacesByTags": {}, "addTagToSpaceWithRoleChecks": { type: Object }, "updateSpaceTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromSpaceWithRoleChecks": {}, "findDiscoverSpacesForUser": { type: [Object] }, "findDiscoverSpacesForUserPaginatedV2": { type: Object }, "findDiscoverSpacesForUserPaginatedV3": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: Object }, "findSpaceTemplates": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: [Object] }, "getPublishedSpaces": { description: "@description Returns all Spaces with an activeSpaceVersion\n@date 2023-06-10 22:23" }, "getPublishedSpacesV2": { description: "@description same as get-published-spaces, but no populate\n@date 2023-07-12 23:54" }, "getLatestPublishedSpaceBySpaceId": { type: Object }, "refreshStats": { type: Object }, "findOne": { type: Object }, "findAllForUserV2": { type: [Object] }, "findAllForUser": { type: [Object] }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "clearVoxels": {}, "copy": { type: Object }, "copyFromTemplate": { type: Object }, "remixSpace": { type: Object }, "publish": { type: Object }, "getPublishedSpacesBySpaceId": { type: [Object] }, "uploadPublic": { type: Object }, "restoreSpaceFromSpaceVersion": {}, "setUserRoleForOne": { description: "START Section: Owner permissions for role modification", type: Object }, "removeUserRoleForOne": { type: Object }, "kickMe": { description: "END Section: Owner permissions for role modification", type: Object } } }], [import("./terrain/terrain.controller"), { "TerrainController": { "findAllForUser": { type: [Object] }, "findAllPublic": { type: [Object] }, "findOne": { type: Object }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./util/file-upload/file-upload.controller"), { "FileUploadController": { "batchAssetUploadFromQueueBucket": {} } }], [import("./asset/asset.controller"), { "AssetController": { "search": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "searchV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:49", type: [Object] }, "getMirrorPublicLibraryAssets": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "getMirrorPublicLibraryAssetsV2": { description: "@description Same as getMirrorPublicLibraryAssets, but doesn't populate the fields\n@date 2023-07-12 23:33", type: [Object] }, "create": { type: Object }, "getUserRecentInstancedAssets": { type: [Object] }, "createWithUpload": { type: Object }, "getAssetsForMe": { description: "Get player's created assets\nTODO this needs to be paginated", type: [Object] }, "getAssetsForMeV2": { description: "Same as above but no populate\nTODO this needs to be paginated", type: [Object] }, "getAllAccessibleAssetsOfUser": { description: "Get all player's accessible assets. Accessible assets are assets that are public, or assets that are private but owned by the user.", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getAllAccessibleAssetsOfUserV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:45", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getRecentAssetsForUser": { type: [Object] }, "getRecentAssetsForUserV2": { type: [Object] }, "getPaginatedMyAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMyAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:43", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:41", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "findAllForUser": { type: [Object] }, "findOneAssetUsage": { type: t["./asset/asset.models"].AssetUsageApiResponse }, "getAssetsByTag": {}, "addTagToAssetsWithRoleChecks": { type: Object }, "updateAssetTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromAssetWithRoleChecks": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "undoAssetSoftDelete": { description: "@description This endpoint is used to undo soft delete of an asset.\n(Remove isSoftDeleted and softDeletedAt fields from the asset document)\n\n@date 2023-11-23", type: String }, "upload": { type: Object }, "uploadPublic": { type: Object }, "uploadThumbnail": { type: Object }, "getAsset": {}, "addAssetPurchaseOption": { type: Object }, "deleteAssetPurchaseOption": { type: Object } } }], [import("./user/user.controller"), { "UserController": { "findOne": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: t["./user/user.schema"].UserPublicData }, "findOneWithPublicProfile": { description: "@description Retrieves a Users public profile data including populated\n fields like public assets and public groups", type: t["./user/user.schema"].User }, "search": { description: "@description Retrieves a collection of Users public data", type: [t["./user/user.schema"].UserPublicData] }, "getCurrentUser": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "getUserRecents": { type: Object }, "uploadPublic": { description: "TODO - Would be nice to have 1 file upload endpoint that can handle all entity types and paths\n move logic to service" }, "updateProfile": { type: Object }, "updateUserTutorial": { type: Object }, "updateDeepLink": { type: Object }, "updateAvatar": { type: Object }, "updateTermsAgreedTo": { type: Object }, "updateAvatarType": { type: Object }, "getUserEntityAction": { type: Object }, "getUserEntityActionsByMeForEntity": { type: [Object] }, "upsertUserEntityAction": { type: Object }, "deleteUserEntityAction": { type: Object }, "getMyFriends": { description: "START Section: Friends and friend requests ------------------------------------------------------", type: [t["./user/user.service"].Friend] }, "getMyFriendRequests": { type: [t["./user/user.service"].Friend] }, "acceptFriendRequest": { type: [t["./user/user.service"].Friend] }, "rejectFriendRequest": { type: [t["./user/user.service"].Friend] }, "getSentFriendRequests": { type: [t["./user/user.service"].Friend] }, "sendFriendRequest": { type: t["./user/user.schema"].User }, "removeFriend": { type: [t["./user/user.service"].Friend] }, "getUserCart": { description: "END Section: Friends and friend requests ------------------------------------------------------", type: Object }, "addUserCartItemToUserCart": { type: Object }, "removeAllUserItemsFromCart": { type: Object }, "removeUserCartItemFromUserCart": { type: Object }, "addRpmAvatarUrl": { description: "END Section: Cart ------------------------------------------------------", type: Object }, "createSignUpKey": { type: Object }, "submitUserAccessKey": {}, "removeRpmAvatarUrl": { description: "@description Removes an RPM url from readyPlayerMeAvatarUrls in Mongo", type: Object }, "getUserSidebarTags": { type: [String] }, "addUserSidebarTag": { type: String }, "updateUserSidebarTags": { type: [String] }, "deleteUserSidebarTag": {} } }], [import("./environment/environment.controller"), { "EnvironmentController": { "create": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-groups/user-group.controller"), { "UserGroupController": { "create": { type: Object }, "getAllGroupsForMe": { description: "@description Find all groups for current user", type: Object }, "getAllGroupInvitesForMe": { description: "@description Find all invites for the current user", type: Object }, "findPublicGroupMembershipForOtherUser": { description: "@description This is used for another user, NOT the current user,\nso we only get the PUBLIC groups that the person is a part of\nTODO - add ApiOkResponse type for UserGroupMembership", type: [Object] }, "getGroupMembershipForMe": { description: "@description Find all group members of current user\nTODO - add ApiOkResponse type for UserGroupMembership", type: Object }, "search": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./space/space-godot-server.controller"), { "SpaceGodotServerController": { "getLatestPublishedSpaceBySpaceId": { description: "***************************\n TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\nWe should likely refactor our pattern for classes because order of routes DOES matter in NestJS, so being @Public() up top can cause issues\n**************************", type: Object }, "getActiveSpaceVersionForSpaceBySpaceId": { type: Object }, "updateTerrain": { description: "***************************\n END TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\n**************************" } } }], [import("./mirror-server-config/mirror-server-config.controller"), { "MirrorServerConfigController": { "getConfig": { type: Object }, "setGdServerVersion": { type: Object } } }], [import("./space/material-instance/material-instance.controller"), { "MaterialInstanceController": { "create": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "findOne": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "update": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "delete": { type: String } } }], [import("./zone/zone.controller"), { "ZoneController": { "joinBuildServer": { description: "@description Requests a zone server with a specific space id and launches the server if needed for BUILD MODE", type: Object }, "getPlayServersForSpaceVersionId": { description: "@description gets Play servers for a spaceVersionId", type: [Object] }, "getPlayServersForSpaceId": { description: "@description gets Play servers for a spaceId", type: [Object] }, "joinPlayServerByZoneId": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "joinPlayServerBySpaceId": { description: "@description joins a play server by spaceId, which looks up the activeSpaceVersion and finds the spaceVersion, then returns the zone. If a zone doesn't exist, it will create it", type: Object }, "createPlayServerWithSpaceVersion": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "createPlayServerWithSpace": { type: Object }, "findAllZonesBySpaceId": { description: "@description Get all the Zone entities associated with a space id.", type: [Object] }, "findAllZonesByUserId": { description: "@description Get all the Zone entities associated with a user id.", type: [Object] }, "findOneZone": { description: "@description Retrieves a zone entity.", type: Object }, "updateOneZone": { description: "@description Update the user controlled values of a zone entity (Name, Description, Space)", type: Object }, "stopAllActiveZones": { description: "@description Stops all zone servers and updates their corresponding entities.\nQueries for every active Zone Server, requests that they shut down, and updates corresponding Zone entities." } } }], [import("./godot-server-override-config/godot-server-override-config.controller"), { "GodotServerOverrideConfigController": { "findOne": { type: String }, "findOneAlias": { type: String }, "create": { type: Object } } }], [import("./mirror-db/mirror-db.controller"), { "MirrorDBController": { "getRecordFromMirrorDBById": { type: Object }, "getRecordFromMirrorDBBySpaceId": { type: Object }, "getRecordFromMirrorDBBySpaceVersionId": { type: Object }, "updateRecordInMirrorDBById": { type: Object }, "deleteRecordFromMirrorDBById": { type: String } } }], [import("./script-entity/script-entity.controller"), { "ScriptEntityController": { "getRecentScripts": { type: [Object] }, "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "delete": { type: Object } } }], [import("./space-object/space-object.controller"), { "SpaceObjectController": { "create": { type: Object }, "createAlias": { type: Object }, "copy": { type: Object }, "findAllBySpaceId": { type: [Object] }, "getSpaceObjectsByTag": {}, "updateSpaceObjectTagsByTypeWithRoleChecks": { type: Object }, "addTagToSpaceObjectWithRoleChecks": { type: Object }, "deleteTagFromSpaceObjectWithRoleChecks": {}, "searchSpaceObjectsPaginated": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": {} } }], [import("./auth/auth.controller"), { "AuthController": { "createUserWithEmailPasswordAndType": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************" }, "authedUserCreate": { type: t["./auth/auth.controller"].CreateAuthUserResponse }, "convertAnonymousAccountToFull": {}, "deleteAccount": {} } }], [import("./auth/auth-test.controller"), { "AuthTestController": { "deleteTestAccount": { description: "@description Only used in when NODE_ENV === NODE_ENV.TEST for e2e. Deletes the test account. Checks if the email is an e2e email that ends in @themirror.space. This is a POST so that a body can easily be included (no body in DELETE requests)\n@date 2023-03-16 01:01" } } }], [import("./block/block.controller"), { "BlockController": { "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./favorite/favorite.controller"), { "FavoriteController": { "create": { type: Object }, "findAllForUser": { type: [Object] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./storage/storage.controller"), { "StorageController": { "getClientVersion": { description: "Public endpoint for getting the current version of the client application.", type: Object }, "getClientUrl": { description: "Public endpoint for getting the client application download URL for the target platform parameter.", type: String }, "getClientUrls": { description: "Public endpoint for getting all supported platforms client application download URLs.", type: Object }, "downloadFile": {} } }], [import("./stripe/stripe.controller"), { "StripeController": { "setupIntent": { description: "2023-07-24 11:12:23 Note: I'm commenting these out because it was old code and I don't think we need to expose all these. The implementation also wasn't secure with allowing an userId to be specified." }, "createCustomerAccount": { type: Object }, "createConnectAccount": { type: Object }, "deleteConnectAccount": { type: Object }, "createCard": { type: [Object] }, "getCardsList": { type: Object }, "getStripeAccountInfo": { type: Object }, "addBankAccount": { type: Object }, "deleteCard": { type: [Object] }, "setDefaultPaymentMethod": { type: Object }, "createPaymentIntent": {}, "getPaymentMethods": { type: Object }, "transfersAmount": { type: Object }, "createProduct": { type: Object }, "getAllProductsWithPrice": { type: Object }, "createSubscription": {}, "pauseSubscription": { type: Object }, "resumeSubscription": { type: Object }, "deleteSubscription": { type: Object }, "createDashboardLink": { type: Object }, "createCustomerPortalLink": { type: Object }, "handleStripeWebhook": { type: Object } } }], [import("./tag/tag.controller"), { "TagController": { "create": { type: Object }, "findAllMirrorPublicLibraryTags": { type: [Object] }, "findAllThemeTags": { type: [Object] }, "getTagTypes": { type: [String] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-feedback/user-feedback.controller"), { "UserFeedbackController": { "findNewestPublicUserFeedbackItems": { description: "PUBLICLY ACCESSIBLE ENDPOINTS", type: [Object] }, "findTopPublicUserFeedbackItems": { type: [Object] }, "getUserFeedbackItemTypes": { type: [String] }, "findOne": { type: Object }, "findComments": { type: [Object] }, "findAllPublicUserFeedbackItems": { type: [Object] }, "create": { type: Object }, "voteOnUserFeedbackItem": { type: Object }, "createComment": { type: Object }, "update": { type: Object }, "removeUserFeedbackItem": { type: Object }, "removeComment": { type: Object } } }]] } };
+ return { "@nestjs/swagger": { "models": [[import("./custom-data/dto/custom-data.dto"), { "CreateCustomDataDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } }, "ICustomDataKeyValuePairUpdateDto": { patchCustomData: { required: false, type: () => Object }, removeCustomDataKeys: { required: false, type: () => [String] } } }], [import("./roles/dto/create-role.dto"), { "CreateRoleDto": { defaultRole: { required: true, enum: t["./roles/models/role.enum"].ROLE }, creator: { required: true, type: () => String }, users: { required: false, type: () => Object }, userGroups: { required: false, type: () => Object } } }], [import("./util/file-upload/dto/file-upload.dto"), { "FileUploadDto": { path: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./asset/dto/create-asset.dto"), { "CreateAssetDto": { name: { required: true, type: () => String, description: "Required properties", maxLength: 300 }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, defaultRole: { required: false, description: "Optional Properties", enum: t["./roles/models/role.enum"].ROLE }, description: { required: false, type: () => String, maxLength: 5000 }, mirrorPublicLibrary: { required: false, type: () => Boolean }, customData: { required: false, type: () => String }, thirdPartySourceDisplayName: { required: false, type: () => String, description: "START Section: Third Party Source for Mirror Public Library" }, thirdPartySourceUrl: { required: false, type: () => String }, thumbnail: { required: false, type: () => String, description: "END Section: Third Party Source for Mirror Public Library" }, categories: { required: false, type: () => [String], deprecated: true }, currentFile: { required: false, type: () => String, maxLength: 5000 }, fileHash: { required: false, type: () => String, maxLength: 64 }, public: { required: false, type: () => Boolean }, initPositionX: { required: false, type: () => Number }, initPositionY: { required: false, type: () => Number }, initPositionZ: { required: false, type: () => Number }, initRotationX: { required: false, type: () => Number }, initRotationY: { required: false, type: () => Number }, initRotationZ: { required: false, type: () => Number }, initScaleX: { required: false, type: () => Number }, initScaleY: { required: false, type: () => Number }, initScaleZ: { required: false, type: () => Number }, collisionEnabled: { required: false, type: () => Boolean }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, objectColor: { required: false, type: () => Object }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags } }, "CreateMaterialDto": { materialName: { required: false, type: () => String }, materialTransparencyMode: { required: false, type: () => String }, materialTransparencyProperties: { required: false, type: () => String }, textures: { required: false, type: () => String }, parameters: { required: true, type: () => Object }, externalAssetIds: { required: false, type: () => String }, materialType: { required: true, type: () => String }, code: { required: false, type: () => String } }, "CreateTextureDto": { textureImageFileHashMD5: { required: false, type: () => String }, textureLowQualityFileHashMD5: { required: false, type: () => String }, textureImagePropertyAppliesTo: { required: false, type: () => String } }, "CreateMapDto": { mapName: { required: false, type: () => String }, heightmapAssetId: { required: false, type: () => String }, flatMaterialAssetId: { required: false, type: () => String }, cliffMaterialAssetId: { required: false, type: () => String }, mapSize: { required: false, type: () => Number }, mapPrecision: { required: false, type: () => Number }, heightScale: { required: false, type: () => Number }, layerOffset: { required: false, type: () => Number }, flatUVScale: { required: false, type: () => Number }, cliffUVScale: { required: false, type: () => Number }, flatCliffRatio: { required: false, type: () => Number }, flatColor: { required: false, type: () => Object }, cliffColor: { required: false, type: () => Object }, colormapAssetId: { required: false, type: () => String }, colormapStrength: { required: false, type: () => Number } } }], [import("./asset/dto/paginated-search-asset.dto"), { "PaginatedSearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number }, type: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetType: { required: true, deprecated: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, assetTypes: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE, isArray: true }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } }, "PaginatedSearchAssetDtoV2": { populate: { required: true, type: () => [String] }, includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/update-asset.dto"), { "UpdateAssetDto": { __t: { required: false, type: () => Object, description: "@description If a discriminator/subclassed Asset is being updated, then this must be included. Otherwise, the parent Asset will be used, but because Mongoose is NOT typed under the hood, it won't know about the discriminator classes and thus won't work with properties of the discriminator if the discriminator model isn't used.\n@date 2023-06-07 11:24" } }, "AddAssetPurchaseOptionDto": {} }], [import("./asset/dto/upload-asset-file.dto"), { "UploadAssetFileDto": { userId: { required: true, type: () => String }, assetId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/create-user-access-key.dto"), { "CreateUserAccessKeyDto": { token: { required: true, type: () => String }, adminNote: { required: true, type: () => String } } }], [import("./user/dto/update-user.dto"), { "UpdateUserProfileDto": { email: { required: true, type: () => String }, displayName: { required: true, type: () => String }, publicBio: { required: true, type: () => String }, discordUserId: { required: true, type: () => String }, polygonPublicKey: { required: true, type: () => String }, ethereumPublicKey: { required: true, type: () => String }, twitterUsername: { required: true, type: () => String }, githubUsername: { required: true, type: () => String }, instagramUsername: { required: true, type: () => String }, youtubeChannel: { required: true, type: () => String }, artStationUsername: { required: true, type: () => String }, sketchfabUsername: { required: true, type: () => String }, profileImage: { required: true, type: () => String }, coverImage: { required: true, type: () => String } }, "UpdateUserDeepLinkDto": { deepLinkKey: { required: true, type: () => String }, deepLinkValue: { required: true, type: () => String } }, "UpdateUserTermsDto": { termsAgreedtoClosedAlpha: { required: false, type: () => Boolean }, termsAgreedtoGeneralTOSandPP: { required: false, type: () => Boolean } }, "UpdateUserAvatarDto": { avatarUrl: { required: false, type: () => String } }, "UpdateUserTutorialDto": { shownFirstInSpacePopupV1: { required: false, type: () => Boolean }, shownFirstHomeScreenPopupV1: { required: false, type: () => Boolean }, shownWebAppPopupV1: { required: false, type: () => Boolean } }, "UpdateUserAvatarTypeDto": { avatarType: { required: true, type: () => String }, readyPlayerMeUrlGlb: { required: false, type: () => String } }, "AddRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "RemoveRpmAvatarUrlDto": { rpmAvatarUrl: { required: true, type: () => String } }, "UpsertUserEntityActionDto": { forEntity: { required: true, type: () => String }, actionType: { required: true, type: () => String }, entityType: { required: true, type: () => String }, rating: { required: false, type: () => Number, description: "Optional properties", minimum: 1, maximum: 5 } }, "AddUserCartItemToUserCartDto": { purchaseOptionId: { required: true, type: () => String }, forEntity: { required: true, type: () => String }, entityType: { required: true, type: () => String } } }], [import("./user/dto/upload-profile-file.dto"), { "UploadProfileFileDto": { userId: { required: true, type: () => String }, file: { required: true, type: () => Object } } }], [import("./user/dto/add-user-sidebar-tag.dto"), { "AddUserSidebarTagDto": { sidebarTag: { required: true, type: () => String } } }], [import("./asset/dto/add-tag-to-asset.dto"), { "AddTagToAssetDto": { assetId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./environment/dto/update-environment.dto"), { "UpdateEnvironmentDto": {} }], [import("./space-object/dto/create-space-object.dto"), { "CreateSpaceObjectDto": { spaceId: { required: true, type: () => String, description: "Required properties", minLength: 24, maxLength: 24 }, name: { required: true, type: () => String, maxLength: 300 }, asset: { required: true, type: () => String }, parentSpaceObject: { required: false, type: () => String }, description: { required: false, type: () => String }, locked: { required: false, type: () => Boolean }, preloadBeforeSpaceStarts: { required: false, type: () => Boolean }, position: { required: false, type: () => Object }, rotation: { required: false, type: () => Object }, scale: { required: false, type: () => Object }, offset: { required: false, type: () => Object }, collisionEnabled: { required: false, type: () => Boolean }, shapeType: { required: false, type: () => String }, bodyType: { required: false, type: () => String }, staticEnabled: { required: false, type: () => Boolean }, massKg: { required: false, type: () => Number }, gravityScale: { required: false, type: () => Number }, castShadows: { required: false, type: () => Boolean }, visibleFrom: { required: false, type: () => Number }, visibleTo: { required: false, type: () => Number }, visibleFromMargin: { required: false, type: () => Number }, visibleToMargin: { required: false, type: () => Number }, materialAssetId: { required: false, type: () => String }, objectColor: { required: false, type: () => Object }, objectTexture: { required: false, type: () => String }, objectTextureSize: { required: false, type: () => Number, deprecated: true }, objectTextureSizeV2: { required: false, type: () => Object }, objectTextureOffset: { required: false, type: () => Object }, objectTextureTriplanar: { required: false, type: () => Boolean }, objectTextureRepeat: { required: false, type: () => Boolean }, audioAutoPlay: { required: false, type: () => Boolean }, audioLoop: { required: false, type: () => Boolean }, audioIsSpatial: { required: false, type: () => Boolean }, audioPitch: { required: false, type: () => Number }, audioBaseVolume: { required: false, type: () => Number }, audioSpatialMaxVolume: { required: false, type: () => Number }, audioSpatialRange: { required: false, type: () => Number }, surfaceMaterialId: { required: false, type: () => [Object] }, scriptEvents: { required: false, type: () => [Object] }, extraNodes: { required: false, type: () => [Object] } } }], [import("./util/dto-generic/batch.dto"), { "Batch": { batch: { required: true } } }], [import("./space-object/dto/update-space-object.dto"), { "UpdateSpaceObjectDto": {} }], [import("./space-object/dto/update-batch-space-object.dto"), { "UpdateBatchSpaceObjectDto": {} }], [import("./space-object/dto/add-tag-to-space-object.dto"), { "AddTagToSpaceObjectDto": { spaceObjectId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./space-object/dto/paginated-search-space-object.dto"), { "PaginatedSearchSpaceObjectDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES } } }], [import("./space-object/dto/update-space-object-tags.dto"), { "UpdateSpaceObjectTagsDto": { spaceObjectId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./terrain/dto/create-terrain.dto"), { "CreateTerrainDto": { name: { required: true, type: () => String, maxLength: 300 }, material: { required: false, type: () => String }, description: { required: false, type: () => String, maxLength: 5000 }, public: { required: false, type: () => Boolean }, generator: { required: false, type: () => String }, noiseType: { required: false, type: () => Number }, positionX: { required: false, type: () => Number }, positionY: { required: false, type: () => Number }, positionZ: { required: false, type: () => Number }, heightStart: { required: false, type: () => Number }, heightRange: { required: false, type: () => Number }, seed: { required: false, type: () => Number } } }], [import("./terrain/dto/update-terrain.dto"), { "UpdateTerrainDto": {} }], [import("./space/dto/create-space.dto"), { "CreateSpaceDto": { name: { required: true, type: () => String, maxLength: 300 }, type: { required: true, type: () => String, description: "Optional properties" }, users: { required: false, type: () => Object, description: "START Section: Roles" }, userGroups: { required: false, type: () => Object }, terrain: { required: false, type: () => String, description: "END Section: Roles" }, environment: { required: false, type: () => String }, ownerUserGroup: { required: false, type: () => String }, template: { required: true, type: () => String }, lowerLimitY: { required: false, type: () => Number }, description: { required: false, type: () => String, maxLength: 5000 }, images: { required: false, type: () => [String] }, publicBuildPermissions: { required: false, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, tags: { required: false, type: () => t["./tag/models/tags.schema"].Tags }, maxUsers: { required: false, type: () => Number } } }], [import("./space/dto/update-space.dto"), { "UpdateSpaceDto": { patchCustomData: { required: false, type: () => Object, description: "@description These properties are PATCHED onto custom data (overwrites declared key-value pairs, but doesn't affect other key/value parirs)\n@date 2023-04-05 23:27" }, activeSpaceVersion: { required: false, type: () => String }, removeCustomDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from custom data. Other properties will not be affected\n@date 2023-04-05 23:27" }, patchSpaceVariablesData: { required: false, type: () => Object }, removeSpaceVariablesDataKeys: { required: false, type: () => [String], description: "@description These properties are deleted from spaceVariablesData. Other properties will not be affected\n@date 2023-06-05 16:59:26" }, tagsV2: { required: false, type: () => [String] }, scriptIds: { required: false, type: () => [String] }, scriptInstances: { required: false, type: () => [Object] }, materialInstances: { required: false, type: () => [Object] }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, kickRequests: { required: true, type: () => [String] } }, "CreateNewSpaceVersionDto": { updateSpaceWithActiveSpaceVersion: { required: true, type: () => Boolean }, name: { required: true, type: () => String } }, "SpaceCopyFromTemplateDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String }, publicBuildPermissions: { required: true, enum: t["./option-sets/build-permissions"].BUILD_PERMISSIONS }, maxUsers: { required: false, type: () => Number, default: 24 } } }], [import("./space/dto/upload-space-files.dto"), { "UploadSpaceFilesDto": { spaceId: { required: true, type: () => String }, files: { required: true, type: () => [Object] } } }], [import("./space/dto/paginated-search-space.dto"), { "PaginatedSearchSpaceDto": { field: { required: false, type: () => String }, search: { required: false, type: () => String }, sortKey: { required: false, type: () => String }, sortDirection: { required: false, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: false, type: () => Number }, perPage: { required: false, type: () => Number }, tag: { required: false, type: () => [String] }, tagType: { required: false, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space-variable/dto/space-variables-data.dto"), { "CreateSpaceVariablesDataDocumentDto": { data: { required: true, type: () => Object, description: "@description We intentionally use a \"data\" property here so that other keys can be added in the future and the dto doesn't assume that everything in the dto should be saved to the database\nWe also want to be able to store top-level key:value pairs that the user doesn't have free reign access to.\n@date 2023-03-03 00:12" } } }], [import("./zone/dto/create-zone.dto"), { "CreateZoneDto": { zoneMode: { required: true, type: () => String, maxLength: 100 }, owner: { required: false, type: () => String, description: "@description The UserId of the user who created the zone. It's optional, but we do want this. It's just set to optional for other CreateZoneDto's validation on the cron job.\n@date 2023-06-17 22:42", minLength: 24, maxLength: 24 }, state: { required: true, type: () => String, maxLength: 100 }, ipAddress: { required: true, type: () => String, maxLength: 100 }, port: { required: true, type: () => Number }, uuid: { required: true, type: () => String, maxLength: 100 }, url: { required: true, type: () => String, maxLength: 100 }, gdServerVersion: { required: true, type: () => String, maxLength: 50 }, containerLastRefreshed: { required: false, type: () => Date }, name: { required: false, type: () => String, maxLength: 300 }, description: { required: false, type: () => String }, space: { required: false, type: () => String, description: "Only required if Build mode, but still run validation in case it exists for some reason (such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 }, spaceVersion: { required: false, type: () => String, description: "Only required if Play mode, but still run validation in case it exists for some reason(such as manual zone/server creation on the scaler without validation via mirror-server)", minLength: 24, maxLength: 24 } } }], [import("./zone/dto/update-zone.dto"), { "UpdateZoneDto": { id: { required: false, type: () => String } } }], [import("./zone/dto/create-play-server.dto"), { "CreatePlayServerDto": { zoneName: { required: false, type: () => String } } }], [import("./space/dto/add-tag-to-space.dto"), { "AddTagToSpaceDto": { spaceId: { required: true, type: () => String }, tagName: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, thirdPartySourceHomePageUrl: { required: true, type: () => String } } }], [import("./mirror-db/dto/update-mirror-db-record.dto"), { "UpdateMirrorDBRecordDto": { recordData: { required: true, type: () => Object } } }], [import("./script-entity/dto/create-script-entity.dto"), { "CreateScriptEntityDto": { blocks: { required: true, type: () => [Object] } } }], [import("./script-entity/dto/update-script-entity.dto"), { "UpdateScriptEntityDto": {} }], [import("./roles/dto/set-user-role-for-one.dto"), { "SetUserRoleForOneDto": { targetUserId: { required: true, type: () => String }, role: { required: true, enum: t["./roles/models/role.enum"].ROLE } }, "RemoveUserRoleForOneDto": { targetUserId: { required: true, type: () => String, maxLength: 24 } } }], [import("./space/dto/update-space-tags.dto"), { "UpdateSpaceTagsDto": { spaceId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./space/dto/populate-space.dto"), { "PopulateSpaceDto": { populateCreator: { required: false, type: () => Boolean }, populateUsersPresent: { required: false, type: () => Boolean } } }], [import("./asset/dto/search-asset.dto"), { "SearchAssetDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String } } }], [import("./asset/dto/update-asset-tags.dto"), { "UpdateAssetTagsDto": { assetId: { required: true, type: () => String }, tagType: { required: true, enum: t["./tag/models/tag-types.enum"].TAG_TYPES }, tags: { required: true, type: () => Object } } }], [import("./asset/dto/include-soft-deleted-asset.dto"), { "IncludeSoftDeletedAssetDto": { includeSoftDeleted: { required: false, type: () => Boolean } } }], [import("./asset/dto/upsert-asset.dto"), { "UpsertAssetDto": { name: { required: true, type: () => String }, assetType: { required: true, enum: t["./option-sets/asset-type"].ASSET_TYPE }, description: { required: true, type: () => String }, owner: { required: true, type: () => String }, initPositionX: { required: true, type: () => Number }, initPositionY: { required: true, type: () => Number }, initPositionZ: { required: true, type: () => Number }, initRotationX: { required: true, type: () => Number }, initRotationY: { required: true, type: () => Number }, initRotationZ: { required: true, type: () => Number }, initScaleX: { required: true, type: () => Number }, initScaleY: { required: true, type: () => Number }, initScaleZ: { required: true, type: () => Number }, collisionEnabled: { required: true, type: () => Boolean }, staticEnabled: { required: true, type: () => Boolean }, massKg: { required: true, type: () => Number }, gravityScale: { required: true, type: () => Number }, objectColor: { required: true, type: () => Object } } }], [import("./user/dto/submit-user-access-key.dto"), { "SubmitUserAccessKeyDto": { key: { required: true, type: () => String } } }], [import("./user/dto/update-user-sidebar-tags.dto"), { "UpdateUserSidebarTagsDto": { sidebarTags: { required: true, type: () => [String] } } }], [import("./user-groups/dto/create-group-users-invite.dto"), { "CreateUserGroupInviteDto": { group: { required: true, type: () => String, description: "Required properties" }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, creator: { required: true, type: () => String }, recipient: { required: true, type: () => String }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-membership.dto"), { "CreateUserGroupMembershipDto": { group: { required: true, type: () => String }, status: { required: true, enum: t["./option-sets/user-group-membership-statuses"].USER_GROUP_MEMBERSHIP_STATUSES }, creator: { required: true, type: () => String }, user: { required: true, type: () => String }, role: { required: true, enum: t["./option-sets/group-users-roles"].GROUP_ROLE }, expirationDate: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group-users-request.dto"), { "CreateUserGroupRequestDto": { group: { required: true, type: () => String }, unlimited: { required: true, type: () => Boolean }, used: { required: true, type: () => Boolean }, status: { required: true, enum: t["./option-sets/user-group-invite-statuses"].USER_GROUP_INVITE_STATUSES }, completed: { required: true, type: () => Boolean }, completedDate: { required: true, type: () => Date }, creator: { required: true, type: () => String }, updatedAt: { required: true, type: () => Date }, createdAt: { required: true, type: () => Date } } }], [import("./user-groups/dto/create-group.users.dto"), { "CreateUserGroupDto": { name: { required: true, type: () => String, description: "Required properties" }, public: { required: true, type: () => Boolean }, publicDescription: { required: true, type: () => String, description: "Optional properties" }, primaryContact: { required: true, type: () => String }, moderators: { required: true, type: () => [String] }, owners: { required: true, type: () => [String] }, image: { required: true, type: () => String }, discordUrl: { required: true, type: () => String }, polygonDaoContractPublicKey: { required: true, type: () => String }, ethereumDaoContractPublicKey: { required: true, type: () => String }, twitterUrl: { required: true, type: () => String }, websiteUrl: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./user-groups/dto/update-group.users.dto"), { "UpdateUserGroupDto": {} }], [import("./space/material-instance/dto/create-material-instance.dto"), { "CreateMaterialInstanceDto": { parameters: { required: true, type: () => Object }, spaceId: { required: true, type: () => String } } }], [import("./space/material-instance/dto/update-material-instance.dto"), { "UpdateMaterialInstanceDto": { parameters: { required: true, type: () => Object } } }], [import("./zone/dto/populate-zone-owner.dto"), { "PopulateZoneOwnerDto": { populateOwner: { required: false, type: () => Boolean } } }], [import("./godot-server-override-config/dto/create-godot-server-override-config.dto"), { "CreateGodotServerOverrideConfigDto": { spaceId: { required: true, type: () => String, minLength: 24, maxLength: 24 } } }], [import("./block/dto/create-block.dto"), { "CreateBlockDto": { name: { required: true, type: () => String, description: "Required properties" }, blockType: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional Properties", maxLength: 1000 }, mirrorPublicLibrary: { required: false, type: () => Boolean } } }], [import("./block/dto/update-block.dto"), { "UpdateBlockDto": {} }], [import("./favorite/dto/create-favorite.dto"), { "CreateFavoriteDto": { asset: { required: true, type: () => String }, user: { required: true, type: () => String }, creator: { required: true, type: () => String } } }], [import("./favorite/dto/update-favorite.dto"), { "UpdateFavoriteDto": {} }], [import("./stripe/dto/token.dto"), { "AddBank": { token: { required: true, type: () => String } }, "AddCard": { token: { required: true, type: () => String } }, "CardToken": { number: { required: true, type: () => String }, exp_month: { required: true, type: () => String }, exp_year: { required: true, type: () => String }, cvc: { required: true, type: () => String } } }], [import("./stripe/dto/paymentIntent.dto"), { "PaymentIntentDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, payment_method: { required: true, type: () => String } } }], [import("./stripe/dto/transfers.dto"), { "TransfersDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, destination: { required: true, type: () => String } } }], [import("./stripe/dto/subscription.dto"), { "SubscriptionDto": { amount: { required: true, type: () => Number }, currency: { required: true, type: () => String }, productId: { required: true, type: () => String }, priceId: { required: true, type: () => String }, destination: { required: true, type: () => String } }, "ProductDto": { name: { required: true, type: () => String }, description: { required: true, type: () => String } } }], [import("./stripe/dto/metadata.dto"), { "StripeSubscriptionMetadataDto": { userId: { required: true, type: () => String } } }], [import("./tag/dto/create-tag.dto"), { "CreateTagDto": { name: { required: true, type: () => String }, tagType: { required: true, description: "Optional", enum: t["./option-sets/tag-type"].TAG_TYPE }, mirrorPublicLibrary: { required: true, type: () => Boolean }, public: { required: true, type: () => Boolean }, parentTag: { required: true, type: () => String } }, "CreateThirdPartySourceTagDto": { thirdPartySourceHomePageUrl: { required: true, type: () => String }, thirdPartySourcePublicDescription: { required: true, type: () => String, description: "Optional" }, thirdPartySourceTwitterUrl: { required: true, type: () => String }, thirdPartySourceTMUserId: { required: true, type: () => String } } }], [import("./tag/dto/update-tag.dto"), { "UpdateTagDto": {} }], [import("./user-feedback/dto/create-user-feedback.dto"), { "CreateUserFeedbackItemDto": { name: { required: true, type: () => String }, description: { required: false, type: () => String, description: "Optional" }, userFeedbackType: { required: false, type: () => String }, USER_FEEDBACK_ITEM_STATUS: { required: false, type: () => String }, public: { required: false, type: () => Boolean } }, "CreateVoteOnUserFeedbackItemDto": { userFeedbackItemId: { required: true, type: () => String }, vote: { required: true, type: () => String } }, "CreateUserFeedbackItemFeatureRequestDto": {}, "CreateUserFeedbackItemBugDto": {} }], [import("./user-feedback/dto/update-user-feedback.dto"), { "UpdateUserFeedbackDto": {} }], [import("./user-feedback/dto/create-user-feedback-comment.dto"), { "CreateUserFeedbackCommentDto": { text: { required: true, type: () => String }, userFeedbackItemId: { required: true, type: () => String } } }], [import("./asset/dto/asset.dto"), { "GetAssetDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } }, "AssetParamsDto": { startItem: { required: true, type: () => Number }, numberOfItems: { required: true, type: () => Number } } }], [import("./space/dto/search-space.dto"), { "SearchSpaceDto": { searchField: { required: true, type: () => String }, searchString: { required: true, type: () => String } } }], [import("./auth/dto/DevLoginUserEmailPassword.dto"), { "DevLoginUserEmailPassword": { email: { required: true, type: () => String }, password: { required: true, type: () => String } } }], [import("./user-groups/dto/search-group.dto"), { "SearchUserGroupDto": { searchField: { required: true, type: () => String }, searchstring: { required: true, type: () => String } } }], [import("./zone/dto/paginated-search-zone.dto"), { "PaginatedSearchZoneDto": { field: { required: true, type: () => String }, search: { required: true, type: () => String }, sortKey: { required: true, type: () => String }, sortDirection: { required: true, enum: t["./util/pagination/pagination.interface"].SORT_DIRECTION }, page: { required: true, type: () => Number }, perPage: { required: true, type: () => Number } } }], [import("./zone/dto/update-zone-status.dto"), { "UpdateZoneStatusDto": { id: { required: false, type: () => String }, uuid: { required: false, type: () => String }, state: { required: false, type: () => String }, url: { required: false, type: () => String }, version: { required: false, type: () => String }, address: { required: false, type: () => String }, port: { required: false, type: () => Number } } }]], "controllers": [[import("./app.controller"), { "AppController": { "getHello": { type: String }, "getHealth": { type: String }, "throwIntentionalError": {} } }], [import("./space/space.controller"), { "SpaceController": { "getAllPublicForUser": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "getAllPublicForUserV2": { description: "Same as the above but no populate\n@description Retrieves a collection user's public spaces as public data\nid prefix added to prevent wildcard route clashes with file method order", type: [Object] }, "search": { description: "@description Retrieves a collection of space's as public data", type: [t["./space/space.schema"].SpacePublicData] }, "searchV2": { description: "@description Same as the above but no populate\n@date 2023-07-12 23:59", type: [t["./space/space.schema"].SpacePublicData] }, "findAllForMeWhereOwner": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "findAllForMeWhereOwnerPaginatedV2": {}, "findAllForMeWhereOwnerPaginatedV3": { description: "@description This is the same as me-v2, but no populate\n@date 2023-07-12 23:53" }, "getPopularSpaces": { type: [Object] }, "getFavoriteSpaces": { type: [Object] }, "getRecentSpaces": { type: [Object] }, "getSpacesByTags": {}, "addTagToSpaceWithRoleChecks": { type: Object }, "updateSpaceTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromSpaceWithRoleChecks": {}, "findDiscoverSpacesForUser": { type: [Object] }, "findDiscoverSpacesForUserPaginatedV2": { type: Object }, "findDiscoverSpacesForUserPaginatedV3": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: Object }, "findSpaceTemplates": { description: "@description This is the same as discover-v2, but no populate\n@date 2023-07-12 23:53", type: [Object] }, "getPublishedSpaces": { description: "@description Returns all Spaces with an activeSpaceVersion\n@date 2023-06-10 22:23" }, "getPublishedSpacesV2": { description: "@description same as get-published-spaces, but no populate\n@date 2023-07-12 23:54" }, "getLatestPublishedSpaceBySpaceId": { type: Object }, "refreshStats": { type: Object }, "findOne": { type: Object }, "findAllForUserV2": { type: [Object] }, "findAllForUser": { type: [Object] }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "clearVoxels": {}, "copy": { type: Object }, "copyFromTemplate": { type: Object }, "remixSpace": { type: Object }, "publish": { type: Object }, "getPublishedSpacesBySpaceId": { type: [Object] }, "uploadPublic": { type: Object }, "restoreSpaceFromSpaceVersion": {}, "setUserRoleForOne": { description: "START Section: Owner permissions for role modification", type: Object }, "removeUserRoleForOne": { type: Object }, "getAssetsListPerSpace": { description: "END Section: Owner permissions for role modification", type: [Object] }, "kickMe": { type: Object } } }], [import("./terrain/terrain.controller"), { "TerrainController": { "findAllForUser": { type: [Object] }, "findAllPublic": { type: [Object] }, "findOne": { type: Object }, "create": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./util/file-upload/file-upload.controller"), { "FileUploadController": { "batchAssetUploadFromQueueBucket": {} } }], [import("./asset/asset.controller"), { "AssetController": { "search": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: [Object] }, "searchV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:49", type: [Object] }, "getMirrorPublicLibraryAssets": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: [Object] }, "getMirrorPublicLibraryAssetsV2": { description: "@description Same as getMirrorPublicLibraryAssets, but doesn't populate the fields\n@date 2023-07-12 23:33", type: [Object] }, "create": { type: Object }, "getUserRecentInstancedAssets": { type: [Object] }, "createWithUpload": { type: Object }, "getAssetsForMe": { description: "Get player's created assets\nTODO this needs to be paginated", type: [Object] }, "getAssetsForMeV2": { description: "Same as above but no populate\nTODO this needs to be paginated", type: [Object] }, "getAllAccessibleAssetsOfUser": { description: "Get all player's accessible assets. Accessible assets are assets that are public, or assets that are private but owned by the user.", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getAllAccessibleAssetsOfUserV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:45", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getRecentAssetsForUser": { type: [Object] }, "getRecentAssetsForUserV2": { type: [Object] }, "getPaginatedMyAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMyAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:43", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssets": { type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "getPaginatedMirrorAssetsV2": { description: "@description Same as above but no populate\n@date 2023-07-12 23:41", type: t["./asset/asset.controller"].AssetFullDataPaginatedResponse }, "findAllForUser": { type: [Object] }, "findOneAssetUsage": { type: t["./asset/asset.models"].AssetUsageApiResponse }, "getAssetsByTag": {}, "addTagToAssetsWithRoleChecks": { type: Object }, "updateAssetTagsByTypeWithRoleChecks": { type: Object }, "deleteTagFromAssetWithRoleChecks": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object }, "undoAssetSoftDelete": { description: "@description This endpoint is used to undo soft delete of an asset.\n(Remove isSoftDeleted and softDeletedAt fields from the asset document)\n\n@date 2023-11-23", type: String }, "upload": { type: Object }, "uploadPublic": { type: Object }, "uploadThumbnail": { type: Object }, "getAsset": {}, "addAssetPurchaseOption": { type: Object }, "deleteAssetPurchaseOption": { type: Object }, "getAllAssetsBySpaceIdWithRolesCheck": { type: [Object] } } }], [import("./user/user.controller"), { "UserController": { "findOne": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************", type: t["./user/user.schema"].UserPublicData }, "findOneWithPublicProfile": { description: "@description Retrieves a Users public profile data including populated\n fields like public assets and public groups", type: t["./user/user.schema"].User }, "search": { description: "@description Retrieves a collection of Users public data", type: [t["./user/user.schema"].UserPublicData] }, "getCurrentUser": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "getUserRecents": { type: Object }, "uploadPublic": { description: "TODO - Would be nice to have 1 file upload endpoint that can handle all entity types and paths\n move logic to service" }, "updateProfile": { type: Object }, "updateUserTutorial": { type: Object }, "updateDeepLink": { type: Object }, "updateAvatar": { type: Object }, "updateTermsAgreedTo": { type: Object }, "updateAvatarType": { type: Object }, "getUserEntityAction": { type: Object }, "getUserEntityActionsByMeForEntity": { type: [Object] }, "upsertUserEntityAction": { type: Object }, "deleteUserEntityAction": { type: Object }, "getMyFriends": { description: "START Section: Friends and friend requests ------------------------------------------------------", type: [t["./user/user.service"].Friend] }, "getMyFriendRequests": { type: [t["./user/user.service"].Friend] }, "acceptFriendRequest": { type: [t["./user/user.service"].Friend] }, "rejectFriendRequest": { type: [t["./user/user.service"].Friend] }, "getSentFriendRequests": { type: [t["./user/user.service"].Friend] }, "sendFriendRequest": { type: t["./user/user.schema"].User }, "removeFriend": { type: [t["./user/user.service"].Friend] }, "getUserCart": { description: "END Section: Friends and friend requests ------------------------------------------------------", type: Object }, "addUserCartItemToUserCart": { type: Object }, "removeAllUserItemsFromCart": { type: Object }, "removeUserCartItemFromUserCart": { type: Object }, "addRpmAvatarUrl": { description: "END Section: Cart ------------------------------------------------------", type: Object }, "createSignUpKey": { type: Object }, "submitUserAccessKey": {}, "removeRpmAvatarUrl": { description: "@description Removes an RPM url from readyPlayerMeAvatarUrls in Mongo", type: Object }, "getUserSidebarTags": { type: [String] }, "addUserSidebarTag": { type: String }, "updateUserSidebarTags": { type: [String] }, "deleteUserSidebarTag": {} } }], [import("./environment/environment.controller"), { "EnvironmentController": { "create": { description: "*********************\n AUTH REQUIRED ENDPOINTS\n********************", type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-groups/user-group.controller"), { "UserGroupController": { "create": { type: Object }, "getAllGroupsForMe": { description: "@description Find all groups for current user", type: Object }, "getAllGroupInvitesForMe": { description: "@description Find all invites for the current user", type: Object }, "findPublicGroupMembershipForOtherUser": { description: "@description This is used for another user, NOT the current user,\nso we only get the PUBLIC groups that the person is a part of\nTODO - add ApiOkResponse type for UserGroupMembership", type: [Object] }, "getGroupMembershipForMe": { description: "@description Find all group members of current user\nTODO - add ApiOkResponse type for UserGroupMembership", type: Object }, "search": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./space/space-godot-server.controller"), { "SpaceGodotServerController": { "getLatestPublishedSpaceBySpaceId": { description: "***************************\n TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\nWe should likely refactor our pattern for classes because order of routes DOES matter in NestJS, so being @Public() up top can cause issues\n**************************", type: Object }, "getActiveSpaceVersionForSpaceBySpaceId": { type: Object }, "updateTerrain": { description: "***************************\n END TEMP: AUTHED ENDPOINT UP HERE FOR 2023-03-17 13:53:32 RELEASE ISSUE\n**************************" } } }], [import("./mirror-server-config/mirror-server-config.controller"), { "MirrorServerConfigController": { "getConfig": { type: Object }, "setGdServerVersion": { type: Object } } }], [import("./space/material-instance/material-instance.controller"), { "MaterialInstanceController": { "create": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "findOne": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "update": { type: t["./space/material-instance/material-instance.schema"].MaterialInstance }, "delete": { type: String } } }], [import("./zone/zone.controller"), { "ZoneController": { "joinBuildServer": { description: "@description Requests a zone server with a specific space id and launches the server if needed for BUILD MODE", type: Object }, "getPlayServersForSpaceVersionId": { description: "@description gets Play servers for a spaceVersionId", type: [Object] }, "getPlayServersForSpaceId": { description: "@description gets Play servers for a spaceId", type: [Object] }, "joinPlayServerByZoneId": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "joinPlayServerBySpaceId": { description: "@description joins a play server by spaceId, which looks up the activeSpaceVersion and finds the spaceVersion, then returns the zone. If a zone doesn't exist, it will create it", type: Object }, "createPlayServerWithSpaceVersion": { description: "@description joins a play server by spaceVersionId and returns the active session", type: Object }, "createPlayServerWithSpace": { type: Object }, "findAllZonesBySpaceId": { description: "@description Get all the Zone entities associated with a space id.", type: [Object] }, "findAllZonesByUserId": { description: "@description Get all the Zone entities associated with a user id.", type: [Object] }, "findOneZone": { description: "@description Retrieves a zone entity.", type: Object }, "updateOneZone": { description: "@description Update the user controlled values of a zone entity (Name, Description, Space)", type: Object }, "stopAllActiveZones": { description: "@description Stops all zone servers and updates their corresponding entities.\nQueries for every active Zone Server, requests that they shut down, and updates corresponding Zone entities." } } }], [import("./godot-server-override-config/godot-server-override-config.controller"), { "GodotServerOverrideConfigController": { "findOne": { type: String }, "findOneAlias": { type: String }, "create": { type: Object } } }], [import("./mirror-db/mirror-db.controller"), { "MirrorDBController": { "getRecordFromMirrorDBById": { type: Object }, "getRecordFromMirrorDBBySpaceId": { type: Object }, "getRecordFromMirrorDBBySpaceVersionId": { type: Object }, "updateRecordInMirrorDBById": { type: Object }, "deleteRecordFromMirrorDBById": { type: String } } }], [import("./script-entity/script-entity.controller"), { "ScriptEntityController": { "getRecentScripts": { type: [Object] }, "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "delete": { type: Object } } }], [import("./space-object/space-object.controller"), { "SpaceObjectController": { "create": { type: Object }, "createAlias": { type: Object }, "copy": { type: Object }, "findAllBySpaceId": { type: [Object] }, "findAllBySpaceIdWithRolesCheck": { type: [Object] }, "getSpaceObjectsByTag": {}, "updateSpaceObjectTagsByTypeWithRoleChecks": { type: Object }, "addTagToSpaceObjectWithRoleChecks": { type: Object }, "deleteTagFromSpaceObjectWithRoleChecks": {}, "searchSpaceObjectsPaginated": {}, "findOne": { type: Object }, "update": { type: Object }, "remove": {} } }], [import("./auth/auth.controller"), { "AuthController": { "createUserWithEmailPasswordAndType": { description: "***************************\n PUBLICLY ACCESSIBLE ENDPOINTS\n**************************" }, "authedUserCreate": { type: t["./auth/auth.controller"].CreateAuthUserResponse }, "convertAnonymousAccountToFull": {}, "deleteAccount": {} } }], [import("./auth/auth-test.controller"), { "AuthTestController": { "deleteTestAccount": { description: "@description Only used in when NODE_ENV === NODE_ENV.TEST for e2e. Deletes the test account. Checks if the email is an e2e email that ends in @themirror.space. This is a POST so that a body can easily be included (no body in DELETE requests)\n@date 2023-03-16 01:01" } } }], [import("./block/block.controller"), { "BlockController": { "create": { type: Object }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./favorite/favorite.controller"), { "FavoriteController": { "create": { type: Object }, "findAllForUser": { type: [Object] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./storage/storage.controller"), { "StorageController": { "getClientVersion": { description: "Public endpoint for getting the current version of the client application.", type: Object }, "getClientUrl": { description: "Public endpoint for getting the client application download URL for the target platform parameter.", type: String }, "getClientUrls": { description: "Public endpoint for getting all supported platforms client application download URLs.", type: Object }, "downloadFile": {} } }], [import("./stripe/stripe.controller"), { "StripeController": { "setupIntent": { description: "2023-07-24 11:12:23 Note: I'm commenting these out because it was old code and I don't think we need to expose all these. The implementation also wasn't secure with allowing an userId to be specified." }, "createCustomerAccount": { type: Object }, "createConnectAccount": { type: Object }, "deleteConnectAccount": { type: Object }, "createCard": { type: [Object] }, "getCardsList": { type: Object }, "getStripeAccountInfo": { type: Object }, "addBankAccount": { type: Object }, "deleteCard": { type: [Object] }, "setDefaultPaymentMethod": { type: Object }, "createPaymentIntent": {}, "getPaymentMethods": { type: Object }, "transfersAmount": { type: Object }, "createProduct": { type: Object }, "getAllProductsWithPrice": { type: Object }, "createSubscription": {}, "pauseSubscription": { type: Object }, "resumeSubscription": { type: Object }, "deleteSubscription": { type: Object }, "createDashboardLink": { type: Object }, "createCustomerPortalLink": { type: Object }, "handleStripeWebhook": { type: Object } } }], [import("./tag/tag.controller"), { "TagController": { "create": { type: Object }, "findAllMirrorPublicLibraryTags": { type: [Object] }, "findAllThemeTags": { type: [Object] }, "getTagTypes": { type: [String] }, "findOne": { type: Object }, "update": { type: Object }, "remove": { type: Object } } }], [import("./user-feedback/user-feedback.controller"), { "UserFeedbackController": { "findNewestPublicUserFeedbackItems": { description: "PUBLICLY ACCESSIBLE ENDPOINTS", type: [Object] }, "findTopPublicUserFeedbackItems": { type: [Object] }, "getUserFeedbackItemTypes": { type: [String] }, "findOne": { type: Object }, "findComments": { type: [Object] }, "findAllPublicUserFeedbackItems": { type: [Object] }, "create": { type: Object }, "voteOnUserFeedbackItem": { type: Object }, "createComment": { type: Object }, "update": { type: Object }, "removeUserFeedbackItem": { type: Object }, "removeComment": { type: Object } } }]] } };
};
\ No newline at end of file
diff --git a/mirror-web-server/src/roles/models/role.enum.ts b/mirror-web-server/src/roles/models/role.enum.ts
index fbfd8447..e6093cc1 100644
--- a/mirror-web-server/src/roles/models/role.enum.ts
+++ b/mirror-web-server/src/roles/models/role.enum.ts
@@ -14,7 +14,7 @@ export enum ROLE {
// can create/read, but not update/delete
CONTRIBUTOR = 400,
- // the user is a provider
+ // the user is a provider
PROVIDER = 150,
// Entity, e.g. a Space, can be entered/observed
diff --git a/mirror-web-server/src/space-object/space-object.controller.ts b/mirror-web-server/src/space-object/space-object.controller.ts
index dfd04c0b..00ed9ada 100644
--- a/mirror-web-server/src/space-object/space-object.controller.ts
+++ b/mirror-web-server/src/space-object/space-object.controller.ts
@@ -103,7 +103,10 @@ export class SpaceObjectController {
copyDto.to
)
}
-
+ /**
+ * @deprecated This method is deprecated and will be removed in future versions. Use `findAllBySpaceIdWithRolesCheck` instead.
+ * @Get('space/:id')
+ */
@Get('space/:id')
@ApiParam({ name: 'id', type: 'string', required: true })
public async findAllBySpaceId(@Param('id') spaceId: SpaceId) {
@@ -113,6 +116,21 @@ export class SpaceObjectController {
return await this.spaceObjectService.findAllBySpaceIdAdmin(spaceId)
}
+ @Get('space-v2/:id')
+ @ApiParam({ name: 'id', type: 'string', required: true })
+ public async findAllBySpaceIdWithRolesCheck(
+ @Param('id') spaceId: SpaceId,
+ userId: UserId
+ ) {
+ if (!spaceId || spaceId == 'undefined') {
+ throw new BadRequestException('Invalid spaceId')
+ }
+ return await this.spaceObjectService.findAllBySpaceIdWithRolesCheck(
+ spaceId,
+ userId
+ )
+ }
+
@Get('tag')
@ApiOkResponse({ type: SpaceObject })
public async getSpaceObjectsByTag(
diff --git a/mirror-web-server/src/space-object/space-object.service.ts b/mirror-web-server/src/space-object/space-object.service.ts
index fbe26394..49a1fa2b 100644
--- a/mirror-web-server/src/space-object/space-object.service.ts
+++ b/mirror-web-server/src/space-object/space-object.service.ts
@@ -282,6 +282,17 @@ export class SpaceObjectService implements IRoleConsumer {
.exec()
}
+ public async findAllBySpaceIdWithRolesCheck(
+ spaceId: SpaceId,
+ userId: UserId
+ ) {
+ const space = await this.spaceService.getSpace(spaceId)
+ if (!this.spaceService.canFindWithRolesCheck(userId, space)) {
+ throw new NotFoundException('Not found or insufficient permissions')
+ }
+ return this.findAllBySpaceIdAdmin(spaceId)
+ }
+
public getAllBySpaceIdPaginatedAdmin(
spaceId: SpaceId,
pagination: PaginationInterface,
diff --git a/mirror-web-server/src/space/space.controller.ts b/mirror-web-server/src/space/space.controller.ts
index 07489758..abfe03b2 100644
--- a/mirror-web-server/src/space/space.controller.ts
+++ b/mirror-web-server/src/space/space.controller.ts
@@ -705,6 +705,18 @@ export class SpaceController {
* END Section: Owner permissions for role modification
*/
+ @Get('assets-list/:spaceId')
+ @FirebaseTokenAuthGuard()
+ public async getAssetsListPerSpace(
+ @UserToken('user_id') userId: UserId,
+ @Param('spaceId') spaceId: SpaceId
+ ) {
+ return await this.spaceService.getAssetsListPerSpaceWithRolesCheck(
+ userId,
+ spaceId
+ )
+ }
+
@Post(':id/kickme')
@FirebaseTokenAuthGuard()
@ApiOkResponse({ type: SpacePublicData })
diff --git a/mirror-web-server/src/space/space.gateway.ts b/mirror-web-server/src/space/space.gateway.ts
index 964e7abc..157f38a4 100644
--- a/mirror-web-server/src/space/space.gateway.ts
+++ b/mirror-web-server/src/space/space.gateway.ts
@@ -15,7 +15,8 @@ enum ZoneSpaceWsMessage {
UPDATE = 'zone_update_space',
UPDATE_SPACE_VARIABLES = 'zone_update_space_variables',
PUBLISH = 'zone_publish_space',
- GET_SPACE_VERSION = 'zone_get_space_version'
+ GET_SPACE_VERSION = 'zone_get_space_version',
+ GET_ASSETS = 'zone_get_space_assets'
}
@WebSocketGateway()
@@ -27,6 +28,14 @@ export class SpaceGateway {
private readonly logger: Logger
) {}
+ @SubscribeMessage(ZoneSpaceWsMessage.GET_ASSETS)
+ public getAssetsListPerSpaceWithRolesCheck(
+ @MessageBody('id') id: string,
+ @MessageBody('userId') userId: string
+ ) {
+ return this.spaceService.getAssetsListPerSpaceWithRolesCheck(userId, id)
+ }
+
@SubscribeMessage(ZoneSpaceWsMessage.GET_ONE)
public findOne(@MessageBody('id') id: string) {
this.logger.log(
diff --git a/mirror-web-server/src/space/space.service.ts b/mirror-web-server/src/space/space.service.ts
index 2a8d70de..4e3a7897 100644
--- a/mirror-web-server/src/space/space.service.ts
+++ b/mirror-web-server/src/space/space.service.ts
@@ -91,6 +91,7 @@ import {
import { MirrorDBService } from '../mirror-db/mirror-db.service'
import { ScriptEntityService } from '../script-entity/script-entity.service'
import { RemixSpaceDto } from './dto/remix-space-dto'
+import { AssetDocument } from '../asset/asset.schema'
/**
* @description This mirrors _standardPopulateFields and should be kept up to date with it. However, this "populate a lot of things" approach is deprecated
@@ -204,7 +205,7 @@ export class SpaceService implements IRoleConsumer {
case BUILD_PERMISSIONS.MANAGER:
return ROLE.MANAGER
default:
- return ROLE.OBSERVER // default to observer
+ return ROLE.NO_ROLE // default to no role
}
}
@@ -275,7 +276,7 @@ export class SpaceService implements IRoleConsumer {
}
})
createdSpace.publicBuildPermissions =
- createSpaceDto.publicBuildPermissions || BUILD_PERMISSIONS.OBSERVER // default to observer
+ createSpaceDto.publicBuildPermissions || BUILD_PERMISSIONS.PRIVATE // default to private
createdSpace.role = role
createdSpace.maxUsers = createSpaceDto.maxUsers || 24
@@ -429,6 +430,7 @@ export class SpaceService implements IRoleConsumer {
matchFilter.$and = andFilter
matchFilter.$and.push({ isTMTemplate: { $exists: false } })
+ matchFilter.$and.push({ activeSpaceVersion: { $exists: true } })
if (userId) {
matchFilter.$and.push({ [`role.users.${userId}`]: { $ne: ROLE.OWNER } })
}
@@ -1698,7 +1700,7 @@ export class SpaceService implements IRoleConsumer {
newDescription && (space.description = newDescription)
space.maxUsers = maxUsers || 24
space.publicBuildPermissions =
- publicBuildPermissions || BUILD_PERMISSIONS.OBSERVER // default to observer
+ publicBuildPermissions || BUILD_PERMISSIONS.PRIVATE // default to private
if (terrainId) space.terrain = terrainId as any
space.environment = environmentId as any
@@ -2078,6 +2080,76 @@ export class SpaceService implements IRoleConsumer {
.exec()
}
+ // get all assets in a space
+ public async getAssetsListPerSpaceWithRolesCheck(
+ userId: UserId,
+ spaceId: SpaceId
+ ): Promise {
+ const space = await this.getSpace(spaceId)
+
+ if (!this.canFindWithRolesCheck(userId, space)) {
+ throw new NotFoundException('Not found or insufficient permissions')
+ }
+
+ const aggregate = [
+ {
+ $match: {
+ space: new ObjectId(spaceId)
+ }
+ },
+ {
+ $lookup: {
+ from: 'assets',
+ localField: 'asset',
+ foreignField: '_id',
+ as: 'asset'
+ }
+ },
+ {
+ $unwind: '$asset'
+ },
+ {
+ $replaceRoot: { newRoot: '$asset' }
+ }
+ ]
+
+ return await this.spaceObjectModel.aggregate(aggregate).exec()
+ }
+
+ public async getAssetsListPerSpaceAdmin(
+ spaceId: SpaceId
+ ): Promise {
+ const space = await this.getSpace(spaceId)
+
+ if (!space) {
+ throw new NotFoundException('Not found')
+ }
+
+ const aggregate = [
+ {
+ $match: {
+ space: new ObjectId(spaceId)
+ }
+ },
+ {
+ $lookup: {
+ from: 'assets',
+ localField: 'asset',
+ foreignField: '_id',
+ as: 'asset'
+ }
+ },
+ {
+ $unwind: '$asset'
+ },
+ {
+ $replaceRoot: { newRoot: '$asset' }
+ }
+ ]
+
+ return await this.spaceObjectModel.aggregate(aggregate).exec()
+ }
+
public async kickUserByAdmin(user_id: UserId, space_id: SpaceId) {
const space = await this.getSpace(space_id)
if (!space) {
diff --git a/mirror-web-server/src/tag/tag.service.ts b/mirror-web-server/src/tag/tag.service.ts
index a70f46f1..9ed4b7e9 100644
--- a/mirror-web-server/src/tag/tag.service.ts
+++ b/mirror-web-server/src/tag/tag.service.ts
@@ -143,6 +143,8 @@ export class TagService {
}
remove(id: string): Promise {
- return this.tagModel.findOneAndDelete({ _id: id }).exec()
+ return this.tagModel
+ .findOneAndDelete({ _id: id })
+ .exec() as any as Promise
}
}
diff --git a/mirror-web-server/src/user/user.service.ts b/mirror-web-server/src/user/user.service.ts
index 000fcde9..f3dd3b5c 100644
--- a/mirror-web-server/src/user/user.service.ts
+++ b/mirror-web-server/src/user/user.service.ts
@@ -191,18 +191,18 @@ export class UserService {
}
async ensureMirrorUserExists(token: string) {
- const decodedToken = await this.firebaseAuthService.verifyIdToken(token)
- const firebaseUID = decodedToken.uid
+ try {
+ const decodedToken = await this.firebaseAuthService.verifyIdToken(token)
+ const firebaseUID = decodedToken.uid
- const _id = new mongo.ObjectId()
+ const _id = new mongo.ObjectId()
- if (!decodedToken) {
- throw new NotFoundException('User not found')
- }
+ if (!decodedToken) {
+ throw new NotFoundException('User not found')
+ }
- const user = await this.userModel.findOne({ firebaseUID }).exec()
+ const user = await this.userModel.findOne({ firebaseUID }).exec()
- try {
if (!user) {
const displayName = this._generateUniqueUsername()
const userModel = new this.userModel({
diff --git a/setup-linux.sh b/setup-linux.sh
index 3bec8f53..fcde1ddf 100755
--- a/setup-linux.sh
+++ b/setup-linux.sh
@@ -1,3 +1,4 @@
#!/bin/bash
-curl -o "MirrorGodotEditorLinux.x86_64" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip"
-echo "If you do not have wget installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorLinux.x86_64.zip"
\ No newline at end of file
+https://storage.googleapis.com/mirror_native_client_builds/Engine/353b6bf1/MirrorGodotEditorLinux.x86_64.zip
+curl -o "MirrorGodotEditorLinux.x86_64" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64"
+echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorLinux.x86_64"
diff --git a/setup-mac.sh b/setup-mac.sh
index b0b804c6..a728175d 100755
--- a/setup-mac.sh
+++ b/setup-mac.sh
@@ -1,3 +1,3 @@
#!/bin/bash
-curl -o "MirrorGodotEditorMac.app.zip" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip"
-echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorMac.app.zip.zip"
\ No newline at end of file
+curl -o "MirrorGodotEditorMac.app.zip" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip"
+echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorMac.app.zip"
diff --git a/setup-win.sh b/setup-win.sh
index ee2d3b08..d5f943c2 100755
--- a/setup-win.sh
+++ b/setup-win.sh
@@ -1,3 +1,3 @@
#!/bin/bash
-curl -o "MirrorGodotEditorWindows.exe" "https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip"
-echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/latest-editor/MirrorGodotEditorWindows.exe.zip"
\ No newline at end of file
+curl -o "MirrorGodotEditorWindows.exe" "https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe"
+echo "If you do not have curl installed, you can install it or download from here https://storage.googleapis.com/mirror_native_client_builds/Engine/f2020817/MirrorGodotEditorWindows.exe"
diff --git a/vercel.json b/vercel.json
new file mode 100644
index 00000000..9936715b
--- /dev/null
+++ b/vercel.json
@@ -0,0 +1,9 @@
+{
+ "redirects": [
+ {
+ "source": "/docs/tutorial",
+ "destination": "/docs/tutorials",
+ "permanent": true
+ }
+ ]
+}