diff --git a/.github/workflows/release_linux_packages.yml b/.github/workflows/release_linux_packages.yml new file mode 100644 index 0000000000..d52e742053 --- /dev/null +++ b/.github/workflows/release_linux_packages.yml @@ -0,0 +1,96 @@ +name: Release Linux native packages + +# Builds native Linux packages by compiling BambuStudio from source in each +# distribution's own container (so the binary links against that distro's system +# libraries), then uploads the resulting .deb / .rpm / .pkg.tar.zst to the +# release. This is the "proper" native package path (not an AppImage wrapper): +# the GTK/GLib/X11/etc. libraries are declared as package dependencies and used +# from the system rather than bundled. See issue #11321. +# +# Heavy job (full deps + slicer build per distro), so it only runs on release +# publish or manual dispatch, with the dependency build cached between runs. + +on: + release: + types: [published] + workflow_dispatch: + inputs: + tag: + description: 'Release tag to attach packages to (e.g. v02.07.01.62)' + required: true + type: string + +permissions: + contents: write + +jobs: + build: + name: ${{ matrix.name }} + runs-on: ubuntu-24.04 + timeout-minutes: 240 + container: + image: ${{ matrix.image }} + strategy: + fail-fast: false + matrix: + include: + - name: Debian .deb + image: debian:trixie + bootstrap: apt-get update -qq && apt-get install -y --no-install-recommends sudo git git-lfs curl ca-certificates xz-utils + package_script: scripts/build_deb.sh + glob: build/*.deb + - name: Fedora .rpm + image: fedora:42 + bootstrap: dnf install -y sudo git git-lfs curl rpm-build xz + package_script: scripts/build_rpm.sh + glob: build/*.rpm + - name: Arch .pkg.tar.zst + image: archlinux:latest + bootstrap: pacman -Sy --noconfirm --needed sudo git git-lfs curl base-devel + package_script: scripts/build_pkg_arch.sh + glob: build/*.pkg.tar.zst + env: + TAG: ${{ github.event.release.tag_name || inputs.tag }} + steps: + - name: Bootstrap container + run: | + ${{ matrix.bootstrap }} + git config --global --add safe.directory '*' + + - name: Checkout + uses: actions/checkout@v4 + with: + lfs: true + fetch-depth: 0 + + - name: Cache built dependencies + id: cache-deps + uses: actions/cache@v4 + with: + path: deps/build/destdir + key: native-pkg-deps-${{ matrix.image }}-${{ hashFiles('deps/CMakeLists.txt', 'deps/**/*.cmake') }} + + - name: Install build dependencies + run: ./BuildLinux.sh -u + + - name: Build dependencies + if: steps.cache-deps.outputs.cache-hit != 'true' + run: ./BuildLinux.sh -d + + - name: Build BambuStudio + run: | + export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) + ./BuildLinux.sh -s + # Assemble build/package/ (binary + libs + resources) that the + # packaging scripts consume. + (cd build && ./src/BuildLinuxImage.sh -i) + + - name: Build native package + run: bash ${{ matrix.package_script }} + + - name: Upload package to the release + uses: softprops/action-gh-release@v2 + with: + tag_name: ${{ env.TAG }} + files: ${{ matrix.glob }} + fail_on_unmatched_files: true diff --git a/resources/images/helio_icon_dark.svg b/resources/images/helio_icon_dark.svg index 790cb76207..22a3cb3d2f 100644 --- a/resources/images/helio_icon_dark.svg +++ b/resources/images/helio_icon_dark.svg @@ -1,3 +1,3 @@ - + diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.2 nozzle.json index 20e69622e7..fe784bc6a3 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.2 nozzle.json @@ -156,10 +156,10 @@ "20" ], "supertack_plate_temp": [ - "60" + "70" ], "supertack_plate_temp_initial_layer": [ - "60" + "70" ], "compatible_printers": [ "Bambu Lab X2D 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.4 nozzle.json index a3d79d05fa..fce554a30a 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D 0.4 nozzle.json @@ -138,10 +138,10 @@ "20" ], "supertack_plate_temp": [ - "60" + "70" ], "supertack_plate_temp_initial_layer": [ - "60" + "70" ], "compatible_printers": [ "Bambu Lab X2D 0.4 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D.json index abcd8e98cb..64334c6206 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X2D.json @@ -138,10 +138,10 @@ "20" ], "supertack_plate_temp": [ - "60" + "70" ], "supertack_plate_temp_initial_layer": [ - "60" + "70" ], "compatible_printers": [ "Bambu Lab X2D 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.2 nozzle.json index 7745d8f761..65d104f2b8 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.2 nozzle.json @@ -144,10 +144,10 @@ "20" ], "supertack_plate_temp": [ - "40" + "45" ], "supertack_plate_temp_initial_layer": [ - "40" + "45" ], "compatible_printers": [ "Bambu Lab X2D 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.4 nozzle.json index b61f818f2e..5bca28c83a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D 0.4 nozzle.json @@ -123,10 +123,10 @@ "20" ], "supertack_plate_temp": [ - "40" + "45" ], "supertack_plate_temp_initial_layer": [ - "40" + "45" ], "compatible_printers": [ "Bambu Lab X2D 0.4 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D.json index 20fe5f1936..74027a06b6 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL X2D.json @@ -123,10 +123,10 @@ "20" ], "supertack_plate_temp": [ - "40" + "45" ], "supertack_plate_temp_initial_layer": [ - "40" + "45" ], "compatible_printers": [ "Bambu Lab X2D 0.6 nozzle", diff --git a/resources/profiles/BBL/machine/Bambu Lab H2D Pro 0.4 nozzle template change_filament_gcode.json b/resources/profiles/BBL/machine/Bambu Lab H2D Pro 0.4 nozzle template change_filament_gcode.json index 71fa3b5e87..c16193497a 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2D Pro 0.4 nozzle template change_filament_gcode.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2D Pro 0.4 nozzle template change_filament_gcode.json @@ -1,5 +1,5 @@ { "name": "Bambu Lab H2D Pro 0.4 nozzle template change_filament_gcode", "instantiation": "false", - "change_filament_gcode": ";======== H2D Pro filament ========\n;===== 20251031 =====\nM993 A2 B2 C2 ; nozzle cam detection allow status save.\nM993 A0 B0 C0 ; nozzle cam detection not allowed.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K0 ;disable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620 S[next_extruder]A\nM1002 gcode_claim_action : 4\nM204 S9000\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_extruder] == \"PLA\") || (filament_type[current_extruder] == \"PLA-CF\") || (filament_type[current_extruder] == \"PETG\")) && (nozzle_diameter[current_extruder] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG\")) && (nozzle_diameter[next_extruder] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n{endif}\n\n{if long_retraction_when_cut}\nM620.11 P1 I[current_extruder] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 P0 I[current_extruder] E0\n{endif}\n\n{if long_retraction_when_ec}\nM620.11 K1 I[current_extruder] R{retraction_distance_when_ec} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 K0 I[current_extruder] R0\n{endif}\n\nM628 S1\n{if filament_type[current_extruder] == \"TPU\"}\nM620.11 S0 L0 I[current_extruder] E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\n{if (filament_type[current_extruder] == \"PA\") || (filament_type[current_extruder] == \"PA-GF\")}\nM620.11 S1 L0 I[current_extruder] R4 D2 E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 S1 L0 I[current_extruder] R10 D8 E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{endif}\n{endif}\nM629\n\n{if filament_type[current_extruder] == \"TPU\" || filament_type[next_extruder] == \"TPU\"}\nM620.11 H2 C331\n{else}\nM620.11 H0\n{endif}\n\nT[next_extruder]\n\n;deretract\n{if filament_type[next_extruder] == \"TPU\"}\n{else}\n{if (filament_type[next_extruder] == \"PA\") || (filament_type[next_extruder] == \"PA-GF\")}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\n\nSYNC T{ceil(flush_length / 125) * 5}\n\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_extruder]}\n\nM400\nM83\n{if next_extruder < 255}\n\nM620.10 R{retract_length_toolchange[filament_map[next_extruder]-1]}\nM628 S0\n;VM109 S[new_filament_temp]\nM629\nM400\n\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_extruder]-1]}\n\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n\nM993 A3 B3 C3 ; nozzle cam detection allow status restore.\n\n{if (filament_type[next_extruder] == \"TPU\")}\nM1015.3 S1;enable tpu clog detect\n{else}\nM1015.3 S0;disable tpu clog detect\n{endif}\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620.6 I[next_extruder] W1 ;enable ams air printing detect\nM1002 gcode_claim_action : 0" + "change_filament_gcode": ";======== H2D Pro filament ========\n;===== 20251031 =====\nM993 A2 B2 C2 ; nozzle cam detection allow status save.\nM993 A0 B0 C0 ; nozzle cam detection not allowed.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K0 ;disable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620 S[next_extruder]A\nM1002 gcode_claim_action : 4\nM204 S9000\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_extruder] == \"PLA\") || (filament_type[current_extruder] == \"PLA-CF\") || (filament_type[current_extruder] == \"PETG\")) && (nozzle_diameter[current_extruder] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG\")) && (nozzle_diameter[next_extruder] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n{endif}\n\n{if long_retraction_when_cut}\nM620.11 P1 I[current_extruder] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 P0 I[current_extruder] E0\n{endif}\n\n{if long_retraction_when_ec}\nM620.11 K1 I[current_extruder] R{retraction_distance_when_ec} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 K0 I[current_extruder] R0\n{endif}\n\nM628 S1\n{if filament_type[current_extruder] == \"TPU\"}\nM620.11 S0 L0 I[current_extruder] E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\n{if (filament_type[current_extruder] == \"PA\") || (filament_type[current_extruder] == \"PA-GF\")}\nM620.11 S1 L0 I[current_extruder] R4 D2 E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 S1 L0 I[current_extruder] R10 D8 E-{retraction_distances_when_cut[current_extruder]} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{endif}\n{endif}\nM629\n\n{if filament_type[current_extruder] == \"TPU\" || filament_type[next_extruder] == \"TPU\"}\nM620.11 H2 C331\n{else}\nM620.11 H0\n{endif}\n\nT[next_extruder]\n\n;deretract\n{if filament_type[next_extruder] == \"TPU\"}\n{else}\n{if (filament_type[next_extruder] == \"PA\") || (filament_type[next_extruder] == \"PA-GF\")}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\n\nSYNC T{ceil(flush_length / 125) * 5}\n\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_extruder]}\n\nM400\nM83\n{if next_extruder < 255}\n\nM620.10 R[new_retract_length_toolchange]\nM628 S0\n;VM109 S[new_filament_temp]\nM629\nM400\n\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R[new_retract_length_toolchange]\n\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n\nM993 A3 B3 C3 ; nozzle cam detection allow status restore.\n\n{if (filament_type[next_extruder] == \"TPU\")}\nM1015.3 S1;enable tpu clog detect\n{else}\nM1015.3 S0;disable tpu clog detect\n{endif}\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620.6 I[next_extruder] W1 ;enable ams air printing detect\nM1002 gcode_claim_action : 0" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab H2S 0.4 nozzle template change_filament_gcode.json b/resources/profiles/BBL/machine/Bambu Lab H2S 0.4 nozzle template change_filament_gcode.json index 75df4e906d..65f22418c0 100644 --- a/resources/profiles/BBL/machine/Bambu Lab H2S 0.4 nozzle template change_filament_gcode.json +++ b/resources/profiles/BBL/machine/Bambu Lab H2S 0.4 nozzle template change_filament_gcode.json @@ -1,5 +1,5 @@ { "name": "Bambu Lab H2S 0.4 nozzle template change_filament_gcode", "instantiation": "false", - "change_filament_gcode": ";===== machine: H2S filament_change =====\n;===== date: 2026/01/28 =====\n\nM993 A2 B2 C2 ; nozzle cam detection allow status save.\nM993 A0 B0 C0 ; nozzle cam detection not allowed.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K0 ;disable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620 S[next_extruder]A\nM1002 gcode_claim_action : 4\nM204 S9000\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\nM620.10 A0 F{flush_volumetric_speeds[current_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\nM620.10 A1 F{flush_volumetric_speeds[next_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n\n{if long_retraction_when_cut}\nM620.11 P1 I[current_extruder] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 P0 I[current_extruder] E0\n{endif}\n\n\n{if filament_type[current_extruder] == \"TPU\" || filament_type[next_extruder] == \"TPU\"}\nM620.11 H2 C331\n{else}\nM620.11 H0\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_extruder]}\n\nT[next_extruder]\n\n\n; VFLUSH_START\n\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\n\nSYNC T{ceil(flush_length / 125) * 5}\n\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_extruder]}\n\nM400\nM83\n{if next_extruder < 255}\n\nM620.10 R{retract_length_toolchange[filament_map[next_extruder]-1]}\nM628 S0\n;VM109 S[new_filament_temp]\n\nM629\nM400\n\n;prime_tower_interface\n{if is_prime_tower_interface && filament_tower_interface_purge_volume !=0}\nG150.1\nM620.13 W0 L{filament_tower_interface_purge_volume} T{filament_tower_interface_print_temp} R0.0\n{endif}\n;prime_tower_interface\n\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_extruder]-1]}\n\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_extruder]-1]}\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\nM1002 set_flag powerloss_resume_flag=0\nM623\n\nM993 A3 B3 C3 ; nozzle cam detection allow status restore.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620.6 I[next_extruder] W1 ;enable ams air printing detect\nM1002 gcode_claim_action : 0\n" + "change_filament_gcode": ";===== machine: H2S filament_change =====\n;===== date: 2026/01/28 =====\n\nM993 A2 B2 C2 ; nozzle cam detection allow status save.\nM993 A0 B0 C0 ; nozzle cam detection not allowed.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K0 ;disable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620 S[next_extruder]A\nM1002 gcode_claim_action : 4\nM204 S9000\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\nM620.10 A0 F{flush_volumetric_speeds[current_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[current_extruder]} T{flush_temperatures[current_extruder]} P[old_filament_temp] S1\nM620.10 A1 F{flush_volumetric_speeds[next_extruder]/2.4053*60*0.8} L[flush_length] H{nozzle_diameter[next_extruder]} T{flush_temperatures[next_extruder]} P[new_filament_temp] S1\n\n{if long_retraction_when_cut}\nM620.11 P1 I[current_extruder] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_extruder]/2.4053*60), 200)}\n{else}\nM620.11 P0 I[current_extruder] E0\n{endif}\n\n\n{if filament_type[current_extruder] == \"TPU\" || filament_type[next_extruder] == \"TPU\"}\nM620.11 H2 C331\n{else}\nM620.11 H0\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_extruder]}\n\nT[next_extruder]\n\n\n; VFLUSH_START\n\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\n\nSYNC T{ceil(flush_length / 125) * 5}\n\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_extruder]}\n\nM400\nM83\n{if next_extruder < 255}\n\nM620.10 R[new_retract_length_toolchange]\nM628 S0\n;VM109 S[new_filament_temp]\n\nM629\nM400\n\n;prime_tower_interface\n{if is_prime_tower_interface && filament_tower_interface_purge_volume !=0}\nG150.1\nM620.13 W0 L{filament_tower_interface_purge_volume} T{filament_tower_interface_print_temp} R0.0\n{endif}\n;prime_tower_interface\n\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R[new_retract_length_toolchange]\n\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_extruder]/2.4} A0.4 R[new_retract_length_toolchange]\nM400\n{if wipe_avoid_perimeter}\nG1 Y320 F30000\nG1 X{wipe_avoid_pos_x} F30000\n{endif}\nG1 Y295 F30000\nG1 Y265 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\nM1002 set_flag powerloss_resume_flag=0\nM623\n\nM993 A3 B3 C3 ; nozzle cam detection allow status restore.\n\n{if (filament_type[next_extruder] == \"PLA\") || (filament_type[next_extruder] == \"PETG\")\n || (filament_type[next_extruder] == \"PLA-CF\") || (filament_type[next_extruder] == \"PETG-CF\")}\nM1015.4 S1 K1 H[nozzle_diameter] ;enable E air printing detect\n{else}\nM1015.4 S0 ; disable E air printing detect\n{endif}\n\nM620.6 I[next_extruder] W1 ;enable ams air printing detect\nM1002 gcode_claim_action : 0\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab P2S 0.4 nozzle template change_filament_gcode.json b/resources/profiles/BBL/machine/Bambu Lab P2S 0.4 nozzle template change_filament_gcode.json index a4ea3c45fd..07206060b6 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P2S 0.4 nozzle template change_filament_gcode.json +++ b/resources/profiles/BBL/machine/Bambu Lab P2S 0.4 nozzle template change_filament_gcode.json @@ -1,5 +1,5 @@ { "name": "Bambu Lab P2S 0.4 nozzle template change_filament_gcode", "instantiation": "false", - "change_filament_gcode": ";======== P2S filament_change gcode ==========\n;===== 2026/05/15 =====\n\nM620 S[next_filament_id]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_filament_id] == 0 || z_hop_types[current_filament_id] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\n\n;nozzle_change_gcode\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_filament_id] == \"PLA\") || (filament_type[current_filament_id] == \"PLA-CF\") || (filament_type[current_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[next_nozzle_id] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_filament_id]}\n\n{if long_retraction_when_cut}\nM620.11 P1 L0 I[current_filament_id] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 P0 L0 I[current_filament_id] E0\n{endif}\n\nM620.11 K0 I[current_filament_id] R0\n\n\nT[next_filament_id]\n\n;deretract\n{if filament_type[next_filament_id] == \"TPU\"}\n{else}\n{if filament_type[next_filament_id] == \"PA\"}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\nSYNC T{ceil(flush_length / 80) * 5}\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_filament_id]}\n\nM400\nM83\n{if next_filament_id < 255}\nM620.10 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\nM628 S0\n;VM109 S[new_filament_temp]\n\nM629\nM400\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\nM400\nG1 Y247 F30000\nG1 Y217 F18000\n\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\n\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\nM621 S[next_filament_id]A\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\nM400\nG1 Y247 F30000\nG1 Y217 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\nM1002 set_flag powerloss_resume_flag=0\nM623\n\n{if (filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PETG\")\n || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG-CF\")}\nM1015.4 S1 K1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;enable E air printing detect\n{else}\nM1015.4 S0 K0 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;disable E air printing detect\n{endif}\n\nM620.6 I[next_filament_id] W1 ;enable ams air printing detect\n\nG1 Y256 F18000\n\n{if (overall_chamber_temperature < 40)}\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n {if (min_vitrification_temperature <= 50)}\n M106 P2 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer aux fan\n {endif}\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n {if (min_vitrification_temperature <= 50)}\n M106 P2 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n {endif}\n{else}\n {if (min_vitrification_temperature <= 50)}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.2 chamber autocooling\n {else}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling\n {endif}\n {endif}\n{endif}\n{endif}\n\nM622.1 S0\nM1002 judge_flag ventobox_replace_aux1_fan_flag\nM622 J0\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n M106 P10 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer left aux fan\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n M106 P10 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n{else}\n M106 P10 S{additional_cooling_fan_speed[next_filament_id]*255.0/100.0};set left aux fan\n{endif}\nM623\n\n;not set fan changing filament" + "change_filament_gcode": ";======== P2S filament_change gcode ==========\n;===== 2026/05/15 =====\n\nM620 S[next_filament_id]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_filament_id] == 0 || z_hop_types[current_filament_id] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\n\n;nozzle_change_gcode\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_filament_id] == \"PLA\") || (filament_type[current_filament_id] == \"PLA-CF\") || (filament_type[current_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[next_nozzle_id] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_filament_id]}\n\n{if long_retraction_when_cut}\nM620.11 P1 L0 I[current_filament_id] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 P0 L0 I[current_filament_id] E0\n{endif}\n\nM620.11 K0 I[current_filament_id] R0\n\n\nT[next_filament_id]\n\n;deretract\n{if filament_type[next_filament_id] == \"TPU\"}\n{else}\n{if filament_type[next_filament_id] == \"PA\"}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\nSYNC T{ceil(flush_length / 80) * 5}\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_filament_id]}\n\nM400\nM83\n{if next_filament_id < 255}\nM620.10 R[new_retract_length_toolchange]\nM628 S0\n;VM109 S[new_filament_temp]\n\nM629\nM400\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R[new_retract_length_toolchange]\nM400\nG1 Y247 F30000\nG1 Y217 F18000\n\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\n\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\nM621 S[next_filament_id]A\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R[new_retract_length_toolchange]\nM400\nG1 Y247 F30000\nG1 Y217 F18000\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\nM1002 set_flag powerloss_resume_flag=0\nM623\n\n{if (filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PETG\")\n || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG-CF\")}\nM1015.4 S1 K1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;enable E air printing detect\n{else}\nM1015.4 S0 K0 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;disable E air printing detect\n{endif}\n\nM620.6 I[next_filament_id] W1 ;enable ams air printing detect\n\nG1 Y256 F18000\n\n{if (overall_chamber_temperature < 40)}\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n {if (min_vitrification_temperature <= 50)}\n M106 P2 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer aux fan\n {endif}\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n {if (min_vitrification_temperature <= 50)}\n M106 P2 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n {endif}\n{else}\n {if (min_vitrification_temperature <= 50)}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.2 chamber autocooling\n {else}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling\n {endif}\n {endif}\n{endif}\n{endif}\n\nM622.1 S0\nM1002 judge_flag ventobox_replace_aux1_fan_flag\nM622 J0\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n M106 P10 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer left aux fan\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n M106 P10 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n{else}\n M106 P10 S{additional_cooling_fan_speed[next_filament_id]*255.0/100.0};set left aux fan\n{endif}\nM623\n\n;not set fan changing filament" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X2D 0.4 nozzle template change_filament_gcode.json b/resources/profiles/BBL/machine/Bambu Lab X2D 0.4 nozzle template change_filament_gcode.json index e2ae935dc0..6be02a3d9e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X2D 0.4 nozzle template change_filament_gcode.json +++ b/resources/profiles/BBL/machine/Bambu Lab X2D 0.4 nozzle template change_filament_gcode.json @@ -1,5 +1,5 @@ { "name": "Bambu Lab X2D 0.4 nozzle template change_filament_gcode", "instantiation": "false", - "change_filament_gcode": "======== X2D filament_change gcode ==========\n;===== 2026/05/15 =====\n\nM620 S[next_filament_id]A B H[next_hotend]\n;M204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_filament_id] == 0 || z_hop_types[current_filament_id] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\n\n;nozzle_change_gcode\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_filament_id] == \"PLA\") || (filament_type[current_filament_id] == \"PLA-CF\") || (filament_type[current_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[next_nozzle_id] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_filament_id]}\n\n{if long_retraction_when_cut}\nM620.11 P1 L0 I[current_filament_id] B[current_hotend] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 P0 L0 I[current_filament_id] B[current_hotend] E0\n{endif}\n\n{if long_retraction_when_ec}\nM620.11 K1 I[current_filament_id] B[current_hotend] R{retraction_distance_when_ec} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 K0 I[current_filament_id] B[current_hotend] R0\n{endif}\n\nM620.22 I[next_filament_id] P1 ; enable remote extruder runout auto purge.\n\nT[next_filament_id] H[next_hotend]\n\n;deretract\n{if filament_type[next_filament_id] == \"TPU\"}\n{else}\n{if filament_type[next_filament_id] == \"PA\"}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\nSYNC T{ceil(flush_length / 125) * 5}\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_filament_id]}\n\nM400\nM83\n{if next_filament_id < 255}\nM620.10 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\nM628 S0\n;VM109 S[new_filament_temp]\nM629\nM400\n\n;prime_tower_interface\n{if is_prime_tower_interface && filament_tower_interface_purge_volume !=0}\nG150.1\nM620.13 W0 L{filament_tower_interface_purge_volume} T{filament_tower_interface_print_temp} R0.0\n{endif}\n;prime_tower_interface\n\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\n\nM400\n\nG1 Z{max_layer_z + 3.0} F3000\n\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\n\nM621 S[next_filament_id]A B\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R{retract_length_toolchange[filament_map[next_filament_id]-1]}\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM1002 set_flag powerloss_resume_flag=0\nM623\n\nM620.6 I[next_filament_id] H[next_hotend] W1 ;enable ams air printing detect\n\n{if (filament_type[next_filament_id] == \"TPU\")}\nM1015.3 S1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]};enable tpu clog detect\n{else}\nM1015.3 S0;disable tpu clog detect\n{endif}\n\n{if (filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PETG\")\n || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG-CF\")}\nM1015.4 S1 K1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;enable E air printing detect\n{else}\nM1015.4 S0 K0 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;disable E air printing detect\n{endif}\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\n\nG1 Y256 F18000\n\n\n{if (overall_chamber_temperature < 40)}\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n M106 P2 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer fan\n\tM106 P10 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer fan\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n M106 P2 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n\tM106 P10 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n{else}\n {if (min_vitrification_temperature <= 50)}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R30 S35 U{max_additional_fan/100.0} V1.0 O40; set PLA/TPU ND0.2 chamber autocooling\n {else}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling\n {endif}\n {else}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R35 S45 U{max_additional_fan/100.0} V0.5 O50; set PETG ND0.2 chamber autocooling\n {else}\n M142 P1 R35 S50 U{max_additional_fan/100.0} V0.5 O55; set PETG ND0.4 chamber autocooling\n {endif}\n {endif}\n{endif}\n{endif}\n;not set fan changing filament" + "change_filament_gcode": "======== X2D filament_change gcode ==========\n;===== 2026/05/15 =====\n\nM620 S[next_filament_id]A B H[next_hotend]\n;M204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_filament_id] == 0 || z_hop_types[current_filament_id] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\n\n;nozzle_change_gcode\n\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\n\n{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\n\n{if ((filament_type[current_filament_id] == \"PLA\") || (filament_type[current_filament_id] == \"PLA-CF\") || (filament_type[current_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\nM620.10 A0 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{else}\nM620.10 A0 F{flush_volumetric_speeds[current_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[current_nozzle_id]} T{flush_temperatures[current_filament_id]} P[old_filament_temp] S1\n{endif}\n\n{if ((filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG\")) && (nozzle_diameter_at_nozzle_id[next_nozzle_id] == 0.2)}\nM620.10 A1 F74.8347 L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{else}\nM620.10 A1 F{flush_volumetric_speeds[next_filament_id]/2.4053*60} L[flush_length] H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} T{flush_temperatures[next_filament_id]} P[new_filament_temp] S1\n{endif}\n\nM620.15 C{new_filament_temp - filament_cooling_before_tower[next_filament_id]}\n\n{if long_retraction_when_cut}\nM620.11 P1 L0 I[current_filament_id] B[current_hotend] E-{retraction_distance_when_cut} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 P0 L0 I[current_filament_id] B[current_hotend] E0\n{endif}\n\n{if long_retraction_when_ec}\nM620.11 K1 I[current_filament_id] B[current_hotend] R{retraction_distance_when_ec} F{max((flush_volumetric_speeds[current_filament_id]/2.4053*60), 200)}\n{else}\nM620.11 K0 I[current_filament_id] B[current_hotend] R0\n{endif}\n\nM620.22 I[next_filament_id] P1 ; enable remote extruder runout auto purge.\n\nT[next_filament_id] H[next_hotend]\n\n;deretract\n{if filament_type[next_filament_id] == \"TPU\"}\n{else}\n{if filament_type[next_filament_id] == \"PA\"}\n;VG1 E1 F{max(new_filament_e_feedrate, 200)}\n;VG1 E1 F{max(new_filament_e_feedrate/2, 100)}\n{else}\n;VG1 E4 F{max(new_filament_e_feedrate, 200)}\n;VG1 E4 F{max(new_filament_e_feedrate/2, 100)}\n{endif}\n{endif}\n\n; VFLUSH_START\n{if flush_length>41.5}\n;VG1 E41.5 F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n;VG1 E{flush_length-41.5} F{new_filament_e_feedrate}\n{else}\n;VG1 E{flush_length} F{min(old_filament_e_feedrate,new_filament_e_feedrate)}\n{endif}\nSYNC T{ceil(flush_length / 125) * 5}\n; VFLUSH_END\n\nM1002 set_filament_type:{filament_type[next_filament_id]}\n\nM400\nM83\n{if next_filament_id < 255}\nM620.10 R[new_retract_length_toolchange]\nM628 S0\n;VM109 S[new_filament_temp]\nM629\nM400\n\n;prime_tower_interface\n{if is_prime_tower_interface && filament_tower_interface_purge_volume !=0}\nG150.1\nM620.13 W0 L{filament_tower_interface_purge_volume} T{filament_tower_interface_print_temp} R0.0\n{endif}\n;prime_tower_interface\n\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R[new_retract_length_toolchange]\n\nM400\n\nG1 Z{max_layer_z + 3.0} F3000\n\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\n\n\nM621 S[next_filament_id]A B\n\nM622.1 S0 ;for prev version, default skip\nM1002 judge_flag powerloss_resume_flag\nM622 J1\nM983.3 F{filament_max_volumetric_speed[next_filament_id]/2.4} A0.4 R[new_retract_length_toolchange]\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM1002 set_flag powerloss_resume_flag=0\nM623\n\nM620.6 I[next_filament_id] H[next_hotend] W1 ;enable ams air printing detect\n\n{if (filament_type[next_filament_id] == \"TPU\")}\nM1015.3 S1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]};enable tpu clog detect\n{else}\nM1015.3 S0;disable tpu clog detect\n{endif}\n\n{if (filament_type[next_filament_id] == \"PLA\") || (filament_type[next_filament_id] == \"PETG\")\n || (filament_type[next_filament_id] == \"PLA-CF\") || (filament_type[next_filament_id] == \"PETG-CF\")}\nM1015.4 S1 K1 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;enable E air printing detect\n{else}\nM1015.4 S0 K0 H{nozzle_diameter_at_nozzle_id[next_nozzle_id]} ;disable E air printing detect\n{endif}\n\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[travel_acceleration]\n{endif}\n\nG1 Y256 F18000\n\n\n{if (overall_chamber_temperature < 40)}\n{if (layer_num + 1 <= close_additional_fan_first_x_layers[next_filament_id])}\n M106 P2 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer fan\n\tM106 P10 S{first_x_layer_fan_speed[next_filament_id]*255.0/100.0 };set first x_layer fan\n{elsif (layer_num + 1 < additional_fan_full_speed_layer[next_filament_id] && additional_fan_full_speed_layer[next_filament_id] > close_additional_fan_first_x_layers[next_filament_id])}\n M106 P2 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n\tM106 P10 S{(first_x_layer_fan_speed[next_filament_id] + (additional_cooling_fan_speed[next_filament_id] - first_x_layer_fan_speed[next_filament_id]) * (layer_num + 1 - close_additional_fan_first_x_layers[next_filament_id]) / max(additional_fan_full_speed_layer[next_filament_id] - close_additional_fan_first_x_layers[next_filament_id], 1)) * 255.0/100.0}\n{else}\n {if (min_vitrification_temperature <= 50)}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R30 S35 U{max_additional_fan/100.0} V1.0 O40; set PLA/TPU ND0.2 chamber autocooling\n {else}\n M142 P1 R30 S40 U{max_additional_fan/100.0} V1.0 O45; set PLA/TPU ND0.4 chamber autocooling\n {endif}\n {else}\n {if (nozzle_diameter_at_nozzle_id[current_nozzle_id] == 0.2)}\n M142 P1 R35 S45 U{max_additional_fan/100.0} V0.5 O50; set PETG ND0.2 chamber autocooling\n {else}\n M142 P1 R35 S50 U{max_additional_fan/100.0} V0.5 O55; set PETG ND0.4 chamber autocooling\n {endif}\n {endif}\n{endif}\n{endif}\n;not set fan changing filament" } \ No newline at end of file diff --git a/resources/web/device_page/assets/index.css b/resources/web/device_page/assets/index.css new file mode 100644 index 0000000000..9186fad76e --- /dev/null +++ b/resources/web/device_page/assets/index.css @@ -0,0 +1 @@ +/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-600:oklch(57.7% .245 27.325);--color-green-200:oklch(92.5% .084 155.995);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wider:.05em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-fm-base:#1a1a1a;--color-fm-sidebar:#222;--color-fm-inner:#ffffff0a;--color-fm-inner2:#ffffff0f;--color-fm-input:#ffffff14;--color-fm-hover:#ffffff14;--color-fm-selected:#ffffff1f;--color-fm-border:#ffffff1f;--color-fm-border-focus:#ffffff29;--color-fm-text-strong:#fff;--color-fm-text-primary:#fffc;--color-fm-text-secondary:#fff9;--color-fm-text-detail:#fff6;--color-fm-text-gray:#fff3;--color-fm-brand:#2cad00;--color-fm-brand-hover:#34c400;--color-fm-danger:#e04040;--color-fm-warning:#ed7417}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-2{inset:calc(var(--spacing) * 2)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-\[1px\]{top:-1px}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-7{top:calc(var(--spacing) * 7)}.top-8{top:calc(var(--spacing) * 8)}.top-9\/44{top:20.4545%}.top-32{top:calc(var(--spacing) * 32)}.top-56{top:calc(var(--spacing) * 56)}.top-\[0\.5rem\]{top:.5rem}.top-\[0\.75rem\]{top:.75rem}.top-\[0\.375rem\]{top:.375rem}.top-\[0\.625rem\]{top:.625rem}.top-\[0\.3125rem\]{top:.3125rem}.top-\[1\.375rem\]{top:1.375rem}.top-\[1rem\]{top:1rem}.top-\[2\.6rem\]{top:2.6rem}.top-\[2\.75rem\]{top:2.75rem}.top-\[2\.875rem\]{top:2.875rem}.top-\[2rem\]{top:2rem}.top-\[3\.1rem\]{top:3.1rem}.top-\[3\.5rem\]{top:3.5rem}.top-\[3\.9rem\]{top:3.9rem}.top-\[3\.8125rem\]{top:3.8125rem}.top-\[5\.5rem\]{top:5.5rem}.top-\[5px\]{top:5px}.top-\[5rem\]{top:5rem}.top-\[6\.875rem\]{top:6.875rem}.top-\[6rem\]{top:6rem}.top-\[7\.1875rem\]{top:7.1875rem}.top-\[10rem\]{top:10rem}.top-\[11px\]{top:11px}.top-\[18rem\]{top:18rem}.top-\[20rem\]{top:20rem}.top-\[80px\]{top:80px}.top-\[132px\]{top:132px}.top-\[453px\]{top:453px}.top-\[calc\(100\%\+8px\)\]{top:calc(100% + 8px)}.-right-\[1px\]{right:-1px}.right-0{right:calc(var(--spacing) * 0)}.right-2{right:calc(var(--spacing) * 2)}.right-4{right:calc(var(--spacing) * 4)}.right-6{right:calc(var(--spacing) * 6)}.right-\[-2rem\]{right:-2rem}.right-\[0\.2rem\]{right:.2rem}.right-\[0\.75rem\]{right:.75rem}.right-\[0\.125rem\]{right:.125rem}.right-\[0\.375rem\]{right:.375rem}.right-\[0\.3125rem\]{right:.3125rem}.right-\[1\.25rem\]{right:1.25rem}.right-\[1rem\]{right:1rem}.right-\[5rem\]{right:5rem}.right-\[8rem\]{right:8rem}.right-\[12px\]{right:12px}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-6{bottom:calc(var(--spacing) * 6)}.bottom-9\/44{bottom:20.4545%}.bottom-\[0\.5rem\]{bottom:.5rem}.bottom-\[0\.625rem\]{bottom:.625rem}.bottom-\[1\.25rem\]{bottom:1.25rem}.bottom-\[3\.75rem\]{bottom:3.75rem}.bottom-\[4\.25rem\]{bottom:4.25rem}.bottom-\[4px\]{bottom:4px}.bottom-\[5px\]{bottom:5px}.bottom-\[10rem\]{bottom:10rem}.left-0{left:calc(var(--spacing) * 0)}.left-1{left:calc(var(--spacing) * 1)}.left-1\/2{left:50%}.left-4{left:calc(var(--spacing) * 4)}.left-\[0\.2rem\]{left:.2rem}.left-\[0\.25rem\]{left:.25rem}.left-\[0\.125rem\]{left:.125rem}.left-\[0\.375rem\]{left:.375rem}.left-\[0\.3125rem\]{left:.3125rem}.left-\[1\.25rem\]{left:1.25rem}.left-\[1\.75rem\]{left:1.75rem}.left-\[1rem\]{left:1rem}.left-\[2\.25rem\]{left:2.25rem}.left-\[4\.625rem\]{left:4.625rem}.left-\[5px\]{left:5px}.left-\[5rem\]{left:5rem}.left-\[8rem\]{left:8rem}.left-\[9\.625rem\]{left:9.625rem}.left-\[18px\]{left:18px}.left-\[19\.875rem\]{left:19.875rem}.left-\[45px\]{left:45px}.left-\[55\%\]{left:55%}.left-\[208px\]{left:208px}.left-\[228px\]{left:228px}.left-\[334px\]{left:334px}.left-\[438px\]{left:438px}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[1000\]{z-index:1000}.z-\[1100\]{z-index:1100}.z-\[2000\]{z-index:2000}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.m-\[0\.25rem\]{margin:.25rem}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-\[0\.5rem\]{margin-top:.5rem}.mt-\[0\.25rem\]{margin-top:.25rem}.mt-\[0\.75rem\]{margin-top:.75rem}.mt-\[0\.375rem\]{margin-top:.375rem}.mt-\[1px\]{margin-top:1px}.mt-\[4px\]{margin-top:4px}.mt-\[6px\]{margin-top:6px}.mt-\[46px\]{margin-top:46px}.mt-auto{margin-top:auto}.mr-auto{margin-right:auto}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-\[0\.5rem\]{margin-bottom:.5rem}.mb-\[0\.25rem\]{margin-bottom:.25rem}.mb-auto{margin-bottom:auto}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-\[0\.5rem\]{margin-left:.5rem}.ml-\[0\.25rem\]{margin-left:.25rem}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[1\/2\]{aspect-ratio:1/2}.aspect-square{aspect-ratio:1}.size-\[5px\]{width:5px;height:5px}.size-\[8px\]{width:8px;height:8px}.size-\[18px\]{width:18px;height:18px}.size-\[24px\]{width:24px;height:24px}.size-\[40px\]{width:40px;height:40px}.size-\[56px\]{width:56px;height:56px}.size-full{width:100%;height:100%}.h-0{height:calc(var(--spacing) * 0)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-9\/44{height:20.4545%}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-64{height:calc(var(--spacing) * 64)}.h-\[0\.5rem\]{height:.5rem}.h-\[0\.25rem\]{height:.25rem}.h-\[0\.75rem\]{height:.75rem}.h-\[0\.375rem\]{height:.375rem}.h-\[0\.0625rem\]{height:.0625rem}.h-\[0\.625rem\]{height:.625rem}.h-\[1\.5rem\]{height:1.5rem}.h-\[1\.25rem\]{height:1.25rem}.h-\[1\.75rem\]{height:1.75rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[1\.375rem\]{height:1.375rem}.h-\[1\.875rem\]{height:1.875rem}.h-\[1rem\]{height:1rem}.h-\[2\.25rem\]{height:2.25rem}.h-\[2\.875rem\]{height:2.875rem}.h-\[2px\]{height:2px}.h-\[2rem\]{height:2rem}.h-\[3\.5rem\]{height:3.5rem}.h-\[3\.25rem\]{height:3.25rem}.h-\[3\.125rem\]{height:3.125rem}.h-\[3rem\]{height:3rem}.h-\[4rem\]{height:4rem}.h-\[5rem\]{height:5rem}.h-\[6\.5rem\]{height:6.5rem}.h-\[6px\]{height:6px}.h-\[7rem\]{height:7rem}.h-\[9\.5rem\]{height:9.5rem}.h-\[9\.875rem\]{height:9.875rem}.h-\[10\.5rem\]{height:10.5rem}.h-\[11px\]{height:11px}.h-\[13rem\]{height:13rem}.h-\[16px\]{height:16px}.h-\[16rem\]{height:16rem}.h-\[18px\]{height:18px}.h-\[20\.8125rem\]{height:20.8125rem}.h-\[22px\]{height:22px}.h-\[24px\]{height:24px}.h-\[25rem\]{height:25rem}.h-\[26px\]{height:26px}.h-\[28px\]{height:28px}.h-\[30px\]{height:30px}.h-\[32px\]{height:32px}.h-\[40px\]{height:40px}.h-\[46px\]{height:46px}.h-\[60px\]{height:60px}.h-\[60rem\]{height:60rem}.h-\[80rem\]{height:80rem}.h-\[92rem\]{height:92rem}.h-\[110px\]{height:110px}.h-\[124px\]{height:124px}.h-\[200px\]{height:200px}.h-\[220px\]{height:220px}.h-\[333px\]{height:333px}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[calc\(100vh-40px\)\]{max-height:calc(100vh - 40px)}.max-h-\[calc\(100vh-80px\)\]{max-height:calc(100vh - 80px)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-\[20\.8125rem\]{min-height:20.8125rem}.min-h-\[25rem\]{min-height:25rem}.min-h-\[36px\]{min-height:36px}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-60{width:calc(var(--spacing) * 60)}.w-\[0\.75rem\]{width:.75rem}.w-\[0\.375rem\]{width:.375rem}.w-\[0\.3125rem\]{width:.3125rem}.w-\[1\.5rem\]{width:1.5rem}.w-\[1\.25rem\]{width:1.25rem}.w-\[1\.75rem\]{width:1.75rem}.w-\[1\.125rem\]{width:1.125rem}.w-\[1\.375rem\]{width:1.375rem}.w-\[1rem\]{width:1rem}.w-\[2\.25rem\]{width:2.25rem}.w-\[2px\]{width:2px}.w-\[2rem\]{width:2rem}.w-\[3\.5rem\]{width:3.5rem}.w-\[3\.25rem\]{width:3.25rem}.w-\[3\.6875rem\]{width:3.6875rem}.w-\[3rem\]{width:3rem}.w-\[4\.5rem\]{width:4.5rem}.w-\[4\.25rem\]{width:4.25rem}.w-\[5rem\]{width:5rem}.w-\[6\.25rem\]{width:6.25rem}.w-\[6\.3125rem\]{width:6.3125rem}.w-\[8\.75rem\]{width:8.75rem}.w-\[8rem\]{width:8rem}.w-\[9\.75rem\]{width:9.75rem}.w-\[9\.3125rem\]{width:9.3125rem}.w-\[9\.5625rem\]{width:9.5625rem}.w-\[10\.25rem\]{width:10.25rem}.w-\[10\.6875rem\]{width:10.6875rem}.w-\[13\.75rem\]{width:13.75rem}.w-\[16\.375rem\]{width:16.375rem}.w-\[18\.75rem\]{width:18.75rem}.w-\[18px\]{width:18px}.w-\[22px\]{width:22px}.w-\[24rem\]{width:24rem}.w-\[30px\]{width:30px}.w-\[32px\]{width:32px}.w-\[34\.125rem\]{width:34.125rem}.w-\[35rem\]{width:35rem}.w-\[37\.5rem\]{width:37.5rem}.w-\[45px\]{width:45px}.w-\[56rem\]{width:56rem}.w-\[58rem\]{width:58rem}.w-\[65px\]{width:65px}.w-\[70px\]{width:70px}.w-\[74px\]{width:74px}.w-\[90px\]{width:90px}.w-\[106px\]{width:106px}.w-\[164px\]{width:164px}.w-\[200px\]{width:200px}.w-\[224px\]{width:224px}.w-\[260px\]{width:260px}.w-\[360px\]{width:360px}.w-\[420px\]{width:420px}.w-\[480px\]{width:480px}.w-\[520px\]{width:520px}.w-\[546px\]{width:546px}.w-\[644px\]{width:644px}.w-\[1106px\]{width:1106px}.w-\[1140px\]{width:1140px}.w-full{width:100%}.w-px{width:1px}.max-w-8{max-width:calc(var(--spacing) * 8)}.max-w-\[90vw\]{max-width:90vw}.max-w-\[95vw\]{max-width:95vw}.max-w-\[360px\]{max-width:360px}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-12{min-width:calc(var(--spacing) * 12)}.min-w-\[18\.75rem\]{min-width:18.75rem}.min-w-\[24rem\]{min-width:24rem}.min-w-\[120px\]{min-width:120px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.origin-center{transform-origin:50%}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-full{--tw-translate-x:100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-none{list-style-type:none}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.grid-cols-\[7rem_1fr\]{grid-template-columns:7rem 1fr}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.gap-0{gap:calc(var(--spacing) * 0)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-\[0\.5rem\]{gap:.5rem}.gap-\[0\.25rem\]{gap:.25rem}.gap-\[0\.75rem\]{gap:.75rem}.gap-\[1\.5rem\]{gap:1.5rem}.gap-\[1\.25rem\]{gap:1.25rem}.gap-\[1px\]{gap:1px}.gap-\[1rem\]{gap:1rem}.gap-\[2px\]{gap:2px}.gap-\[3px\]{gap:3px}.gap-\[4px\]{gap:4px}.gap-\[6px\]{gap:6px}.gap-\[8px\]{gap:8px}.gap-\[10px\]{gap:10px}.gap-\[12px\]{gap:12px}.gap-\[13px\]{gap:13px}.gap-\[16px\]{gap:16px}.gap-\[24px\]{gap:24px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-\[0\.125rem\]>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.125rem * var(--tw-space-y-reverse));margin-block-end:calc(.125rem * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-black\/5>:not(:last-child)){border-color:#0000000d}@supports (color:color-mix(in lab,red,red)){:where(.divide-black\/5>:not(:last-child)){border-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.self-center{align-self:center}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[0\.5rem\]{border-radius:.5rem}.rounded-\[0\.75rem\]{border-radius:.75rem}.rounded-\[0\.375rem\]{border-radius:.375rem}.rounded-\[0\.625rem\]{border-radius:.625rem}.rounded-\[1\.5rem\]{border-radius:1.5rem}.rounded-\[2\.5rem\]{border-radius:2.5rem}.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-\[8px\]{border-radius:8px}.rounded-\[8rem\]{border-radius:8rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[16px\]{border-radius:16px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.rounded-t-\[0\.5rem\]{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-\[0\.75rem\]{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-t-\[0\.625rem\]{border-top-left-radius:.625rem;border-top-right-radius:.625rem}.rounded-t-\[6px\]{border-top-left-radius:6px;border-top-right-radius:6px}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-b-2xl{border-bottom-right-radius:var(--radius-2xl);border-bottom-left-radius:var(--radius-2xl)}.rounded-b-\[0\.625rem\]{border-bottom-right-radius:.625rem;border-bottom-left-radius:.625rem}.rounded-b-\[6px\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-2{border-top-style:var(--tw-border-style);border-top-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.\!border-fm-brand{border-color:var(--color-fm-brand)!important}.border-\[\#1F1F1F\]{border-color:#1f1f1f}.border-\[\#2E2E2E\]{border-color:#2e2e2e}.border-\[\#16A34A\]{border-color:#16a34a}.border-\[\#424242\]{border-color:#424242}.border-\[\#C2C2C2\]{border-color:#c2c2c2}.border-\[\#D5D5D5\]{border-color:#d5d5d5}.border-\[\#DBDBDB\]{border-color:#dbdbdb}.border-\[\#E4E4E4\]{border-color:#e4e4e4}.border-\[\#E5E7EB\]{border-color:#e5e7eb}.border-\[\#EBEBEB\]{border-color:#ebebeb}.border-\[\#f5b84b\]\/40{border-color:#f5b84b66}.border-\[\#ff6b6b\]\/40{border-color:#ff6b6b66}.border-black\/10{border-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.border-black\/10{border-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.border-black\/20{border-color:#0003}@supports (color:color-mix(in lab,red,red)){.border-black\/20{border-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.border-current{border-color:currentColor}.border-fm-border{border-color:var(--color-fm-border)}.border-fm-border-focus{border-color:var(--color-fm-border-focus)}.border-fm-border-focus\/15{border-color:#ffffff06}@supports (color:color-mix(in lab,red,red)){.border-fm-border-focus\/15{border-color:color-mix(in oklab,var(--color-fm-border-focus) 15%,transparent)}}.border-fm-border-focus\/30{border-color:#ffffff0c}@supports (color:color-mix(in lab,red,red)){.border-fm-border-focus\/30{border-color:color-mix(in oklab,var(--color-fm-border-focus) 30%,transparent)}}.border-fm-border-focus\/50{border-color:#ffffff15}@supports (color:color-mix(in lab,red,red)){.border-fm-border-focus\/50{border-color:color-mix(in oklab,var(--color-fm-border-focus) 50%,transparent)}}.border-fm-border\/70{border-color:#ffffff16}@supports (color:color-mix(in lab,red,red)){.border-fm-border\/70{border-color:color-mix(in oklab,var(--color-fm-border) 70%,transparent)}}.border-fm-brand{border-color:var(--color-fm-brand)}.border-fm-danger{border-color:var(--color-fm-danger)}.border-fm-danger\/60{border-color:#e0404099}@supports (color:color-mix(in lab,red,red)){.border-fm-danger\/60{border-color:color-mix(in oklab,var(--color-fm-danger) 60%,transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-transparent{border-color:#0000}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.\!bg-\[rgba\(44\,173\,0\,0\.08\)\]{background-color:#2cad0014!important}.\!bg-fm-brand{background-color:var(--color-fm-brand)!important}.bg-\[\#1F1F1F\]{background-color:#1f1f1f}.bg-\[\#50e81d\]{background-color:#50e81d}.bg-\[\#555\]{background-color:#555}.bg-\[\#121212\]{background-color:#121212}.bg-\[\#141414\]{background-color:#141414}.bg-\[\#242424\]{background-color:#242424}.bg-\[\#424242\]{background-color:#424242}.bg-\[\#AFAFAF\]{background-color:#afafaf}.bg-\[\#B6F34F\]{background-color:#b6f34f}.bg-\[\#BDBDBD\]{background-color:#bdbdbd}.bg-\[\#CECECE\]{background-color:#cecece}.bg-\[\#D3D3D3\]{background-color:#d3d3d3}.bg-\[\#D9EFE1\]{background-color:#d9efe1}.bg-\[\#DBDBDB\]{background-color:#dbdbdb}.bg-\[\#EAF8F0\]{background-color:#eaf8f0}.bg-\[\#EBEBEB\]{background-color:#ebebeb}.bg-\[\#EDEDED\]{background-color:#ededed}.bg-\[\#EEEEEE\]{background-color:#eee}.bg-\[\#F7F7F7\]{background-color:#f7f7f7}.bg-\[\#F8F8F8\]{background-color:#f8f8f8}.bg-\[\#FF8181\]{background-color:#ff8181}.bg-\[\#d9373b\]{background-color:#d9373b}.bg-\[\#f5b84b\]\/10{background-color:#f5b84b1a}.bg-\[\#ff6b6b\]{background-color:#ff6b6b}.bg-\[\#ff6b6b\]\/10{background-color:#ff6b6b1a}.bg-\[\#ff6b6b\]\/15{background-color:#ff6b6b26}.bg-\[rgb\(194\,194\,194\)\]{background-color:#c2c2c2}.bg-\[rgb\(235\,235\,235\)\]{background-color:#ebebeb}.bg-\[rgb\(248\,248\,248\)\]{background-color:#f8f8f8}.bg-\[rgba\(80\,232\,29\,0\.3\)\]{background-color:#50e81d4d}.bg-\[rgba\(80\,232\,29\,0\.5\)\]{background-color:#50e81d80}.bg-\[rgba\(80\,232\,29\,0\.15\)\]{background-color:#50e81d26}.bg-\[rgba\(80\,232\,29\,0\.75\)\]{background-color:#50e81dbf}.bg-\[rgba\(224\,64\,64\,0\.08\)\]{background-color:#e0404014}.bg-black{background-color:var(--color-black)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black) 20%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-200{background-color:var(--color-blue-200)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-current{background-color:currentColor}.bg-fm-base{background-color:var(--color-fm-base)}.bg-fm-base\/70{background-color:#1a1a1ab3}@supports (color:color-mix(in lab,red,red)){.bg-fm-base\/70{background-color:color-mix(in oklab,var(--color-fm-base) 70%,transparent)}}.bg-fm-border{background-color:var(--color-fm-border)}.bg-fm-brand{background-color:var(--color-fm-brand)}.bg-fm-brand\/15{background-color:#2cad0026}@supports (color:color-mix(in lab,red,red)){.bg-fm-brand\/15{background-color:color-mix(in oklab,var(--color-fm-brand) 15%,transparent)}}.bg-fm-brand\/40{background-color:#2cad0066}@supports (color:color-mix(in lab,red,red)){.bg-fm-brand\/40{background-color:color-mix(in oklab,var(--color-fm-brand) 40%,transparent)}}.bg-fm-danger{background-color:var(--color-fm-danger)}.bg-fm-hover{background-color:var(--color-fm-hover)}.bg-fm-inner{background-color:var(--color-fm-inner)}.bg-fm-inner2{background-color:var(--color-fm-inner2)}.bg-fm-input{background-color:var(--color-fm-input)}.bg-fm-selected{background-color:var(--color-fm-selected)}.bg-fm-sidebar{background-color:var(--color-fm-sidebar)}.bg-fm-warning{background-color:var(--color-fm-warning)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-green-200{background-color:var(--color-green-200)}.bg-green-500{background-color:var(--color-green-500)}.bg-red-200{background-color:var(--color-red-200)}.bg-red-300{background-color:var(--color-red-300)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white) 4%,transparent)}}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[0\.5rem\]{padding:.5rem}.p-\[0\.75rem\]{padding:.75rem}.p-\[1\.5rem\]{padding:1.5rem}.p-\[1rem\]{padding:1rem}.p-\[4px\]{padding:4px}.p-\[8px\]{padding:8px}.p-\[14px\]{padding:14px}.p-\[24px\]{padding:24px}.\!px-4{padding-inline:calc(var(--spacing) * 4)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-\[0\.5rem\]{padding-inline:.5rem}.px-\[0\.75rem\]{padding-inline:.75rem}.px-\[0\.875rem\]{padding-inline:.875rem}.px-\[1rem\]{padding-inline:1rem}.px-\[2px\]{padding-inline:2px}.px-\[8px\]{padding-inline:8px}.px-\[10px\]{padding-inline:10px}.px-\[12px\]{padding-inline:12px}.px-\[14px\]{padding-inline:14px}.px-\[16px\]{padding-inline:16px}.px-\[18px\]{padding-inline:18px}.px-\[32px\]{padding-inline:32px}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-\[0\.5rem\]{padding-block:.5rem}.py-\[0\.75rem\]{padding-block:.75rem}.py-\[0\.375rem\]{padding-block:.375rem}.py-\[0\.625rem\]{padding-block:.625rem}.py-\[1px\]{padding-block:1px}.py-\[2px\]{padding-block:2px}.py-\[4px\]{padding-block:4px}.py-\[5px\]{padding-block:5px}.py-\[6px\]{padding-block:6px}.py-\[8px\]{padding-block:8px}.py-\[14px\]{padding-block:14px}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-\[0\.5rem\]{padding-top:.5rem}.pt-\[0\.75rem\]{padding-top:.75rem}.pt-\[8px\]{padding-top:8px}.pt-\[15px\]{padding-top:15px}.pr-\[4px\]{padding-right:4px}.pr-\[8px\]{padding-right:8px}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-\[1rem\]{padding-bottom:1rem}.pb-\[4px\]{padding-bottom:4px}.pb-\[9px\]{padding-bottom:9px}.pb-\[24px\]{padding-bottom:24px}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-\[0\.25rem\]{padding-left:.25rem}.pl-\[6px\]{padding-left:6px}.pl-\[8px\]{padding-left:8px}.pl-\[24px\]{padding-left:24px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-\[\'HarmonyOS_Sans_SC\'\,-apple-system\,\'Segoe_UI\'\,sans-serif\]{font-family:HarmonyOS Sans SC,-apple-system,Segoe UI,sans-serif}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.875rem\]{font-size:.875rem}.text-\[0\.8125rem\]{font-size:.8125rem}.text-\[1\.125rem\]{font-size:1.125rem}.text-\[1rem\]{font-size:1rem}.text-\[2rem\]{font-size:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[18px\]{font-size:18px}.text-\[28px\]{font-size:28px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\[0\.875rem\]{--tw-leading:.875rem;line-height:.875rem}.leading-\[1\.3\]{--tw-leading:1.3;line-height:1.3}.leading-\[1\.5rem\]{--tw-leading:1.5rem;line-height:1.5rem}.leading-\[1\.25rem\]{--tw-leading:1.25rem;line-height:1.25rem}.leading-\[1\.125rem\]{--tw-leading:1.125rem;line-height:1.125rem}.leading-\[1\.375rem\]{--tw-leading:1.375rem;line-height:1.375rem}.leading-\[1rem\]{--tw-leading:1rem;line-height:1rem}.leading-\[12px\]{--tw-leading:12px;line-height:12px}.leading-\[14px\]{--tw-leading:14px;line-height:14px}.leading-\[16px\]{--tw-leading:16px;line-height:16px}.leading-\[18px\]{--tw-leading:18px;line-height:18px}.leading-\[19px\]{--tw-leading:19px;line-height:19px}.leading-\[22px\]{--tw-leading:22px;line-height:22px}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-\[\#50e81d\]{color:#50e81d!important}.\!text-white{color:var(--color-white)!important}.text-\[\#1F1F1F\]{color:#1f1f1f}.text-\[\#2B2B2B\]{color:#2b2b2b}.text-\[\#4B5563\]{color:#4b5563}.text-\[\#6B6B6B\]{color:#6b6b6b}.text-\[\#6B7280\]{color:#6b7280}.text-\[\#50e81d\]{color:#50e81d}.text-\[\#111\]{color:#111}.text-\[\#262E30\]{color:#262e30}.text-\[\#323A3D\]{color:#323a3d}.text-\[\#333\]{color:#333}.text-\[\#444\]{color:#444}.text-\[\#15803D\]{color:#15803d}.text-\[\#d6d6d6\]{color:#d6d6d6}.text-\[\#f5b84b\]{color:#f5b84b}.text-\[\#ff2b00\]{color:#ff2b00}.text-\[\#ff6b6b\]{color:#ff6b6b}.text-black{color:var(--color-black)}.text-black\/60{color:#0009}@supports (color:color-mix(in lab,red,red)){.text-black\/60{color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.text-black\/70{color:#000000b3}@supports (color:color-mix(in lab,red,red)){.text-black\/70{color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.text-black\/80{color:#000c}@supports (color:color-mix(in lab,red,red)){.text-black\/80{color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.text-fm-brand{color:var(--color-fm-brand)}.text-fm-danger{color:var(--color-fm-danger)}.text-fm-text-detail{color:var(--color-fm-text-detail)}.text-fm-text-gray{color:var(--color-fm-text-gray)}.text-fm-text-primary{color:var(--color-fm-text-primary)}.text-fm-text-secondary{color:var(--color-fm-text-secondary)}.text-fm-text-strong{color:var(--color-fm-text-strong)}.text-fm-warning{color:var(--color-fm-warning)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-green-600{color:var(--color-green-600)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.accent-fm-brand{accent-color:var(--color-fm-brand)}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-95{opacity:.95}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0\.5rem_1\.5rem_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 .5rem 1.5rem var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0\.25rem_1rem_rgba\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 .25rem 1rem var(--tw-shadow-color,#0000000f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0\.375rem_1rem_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 .375rem 1rem var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_\#2E2E2E_inset\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#2e2e2e) inset;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_12px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_4px_20px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 4px 20px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_8px_24px_rgba\(0\,0\,0\,0\.4\)\]{--tw-shadow:0 8px 24px var(--tw-shadow-color,#0006);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_10px_24px_rgba\(0\,0\,0\,0\.24\)\,0_2px_6px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#0000003d), 0 2px 6px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_28px_rgba\(0\,0\,0\,0\.2\)\,0_2px_8px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0 12px 28px var(--tw-shadow-color,#0003), 0 2px 8px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_12px_32px_rgba\(0\,0\,0\,0\.5\)\]{--tw-shadow:0 12px 32px var(--tw-shadow-color,#00000080);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0px_8px_24px_0px_rgba\(0\,0\,0\,0\.12\)\]{--tw-shadow:0px 8px 24px 0px var(--tw-shadow-color,#0000001f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:inset 0 0 0 1px var(--tw-shadow-color,#00000005);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-fm-text-detail::placeholder{color:var(--color-fm-text-detail)}.after\:block:after{content:var(--tw-content);display:block}.after\:size-\[11px\]:after{content:var(--tw-content);width:11px;height:11px}.after\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.first\:mt-0:first-child{margin-top:calc(var(--spacing) * 0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.empty\:hidden:empty{display:none}@media(hover:hover){.hover\:border-fm-text-secondary:hover{border-color:var(--color-fm-text-secondary)}.hover\:border-green-500:hover{border-color:var(--color-green-500)}.hover\:bg-\[\#bf2f33\]:hover{background-color:#bf2f33}.hover\:bg-black\/5:hover{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/5:hover{background-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.hover\:bg-black\/\[0\.02\]:hover{background-color:#00000005}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/\[0\.02\]:hover{background-color:color-mix(in oklab,var(--color-black) 2%,transparent)}}.hover\:bg-black\/\[0\.05\]:hover{background-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/\[0\.05\]:hover{background-color:color-mix(in oklab,var(--color-black) 5%,transparent)}}.hover\:bg-fm-brand-hover:hover{background-color:var(--color-fm-brand-hover)}.hover\:bg-fm-hover:hover{background-color:var(--color-fm-hover)}.hover\:bg-fm-inner:hover{background-color:var(--color-fm-inner)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:stroke-green-500:hover{stroke:var(--color-green-500)}.hover\:stroke-2:hover{stroke-width:2px}.hover\:text-\[\#1F1F1F\]:hover{color:#1f1f1f}.hover\:text-fm-brand-hover:hover{color:var(--color-fm-brand-hover)}.hover\:text-fm-text-primary:hover{color:var(--color-fm-text-primary)}.hover\:text-fm-text-strong:hover{color:var(--color-fm-text-strong)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:text-green-500:hover{color:var(--color-green-500)}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-\[0_0\.5rem_1\.25rem_rgba\(0\,0\,0\,0\.08\)\]:hover{--tw-shadow:0 .5rem 1.25rem var(--tw-shadow-color,#00000014);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\:border-\[\#16A34A\]:focus{border-color:#16a34a}.focus\:border-black\/40:focus{border-color:#0006}@supports (color:color-mix(in lab,red,red)){.focus\:border-black\/40:focus{border-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.focus\:shadow-\[0_0_0_1px_var\(--color-fm-brand\)\]:focus{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--color-fm-brand));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-black\/10:focus{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.focus\:ring-black\/10:focus{--tw-ring-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.focus\:ring-black\/20:focus{--tw-ring-color:#0003}@supports (color:color-mix(in lab,red,red)){.focus\:ring-black\/20:focus{--tw-ring-color:color-mix(in oklab, var(--color-black) 20%, transparent)}}.focus\:ring-fm-brand:focus{--tw-ring-color:var(--color-fm-brand)}.focus\:ring-gray-200:focus{--tw-ring-color:var(--color-gray-200)}.focus\:ring-gray-300:focus{--tw-ring-color:var(--color-gray-300)}.focus\:ring-offset-1:focus{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-black\/10:focus-visible{--tw-ring-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-black\/10:focus-visible{--tw-ring-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.active\:translate-y-\[0\.0625rem\]:active{--tw-translate-y:.0625rem;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\:bg-black\/10:active{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.active\:bg-black\/10:active{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.active\:bg-black\/\[0\.10\]:active{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.active\:bg-black\/\[0\.10\]:active{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.active\:bg-gray-100:active{background-color:var(--color-gray-100)}.active\:shadow-\[0_0\.125rem_0\.5rem_rgba\(0\,0\,0\,0\.05\)\]:active{--tw-shadow:0 .125rem .5rem var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-fm-text-gray:disabled{color:var(--color-fm-text-gray)}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}@media(prefers-color-scheme:dark){.dark\:border-neutral-700{border-color:var(--color-neutral-700)}}.\[\&\.active\]\:text-green-500.active{color:var(--color-green-500)}.\[\&\>span\]\:flex-1>span{flex:1}.\[\&\>span\]\:text-center>span{text-align:center}.\[\&\>svg\]\:h-4>svg{height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:w-4>svg{width:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-fm-text-secondary>svg{color:var(--color-fm-text-secondary)}html[data-theme=light] .\[html\[data-theme\=light\]_\&\]\:bg-fm-sidebar{background-color:var(--color-fm-sidebar)}html[data-theme=light] .\[html\[data-theme\=light\]_\&\]\:bg-white{background-color:var(--color-white)}}[data-theme=light]{--color-fm-base:#f5f5f5;--color-fm-sidebar:#fff;--color-fm-inner:#00000008;--color-fm-inner2:#0000000d;--color-fm-input:#0000000f;--color-fm-hover:#0000000f;--color-fm-selected:#0000001a;--color-fm-border:#0000001a;--color-fm-border-focus:#0003;--color-fm-text-strong:#1a1a1a;--color-fm-text-primary:#000c;--color-fm-text-secondary:#0000008c;--color-fm-text-detail:#00000059;--color-fm-text-gray:#0000002e;--color-fm-brand:#2cad00;--color-fm-brand-hover:#34c400;--color-fm-danger:#d32f2f;--color-fm-warning:#e65100}html,body,#root{margin:calc(var(--spacing) * 0);height:100%;padding:calc(var(--spacing) * 0)}.slot-id-text{--tw-leading:1.25rem;color:var(--color-gray-900);font-size:.875rem;line-height:1.25rem}.slot-filament-text{--tw-leading:1.25rem;color:var(--color-gray-900);font-size:.75rem;line-height:1.25rem}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fm-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.25)}to{opacity:1;transform:scale(1)}}.fm-sort-icon{display:inline-block;width:11px;margin-left:4px;opacity:.3}.fm-sort-icon:after{content:"⇅";font-size:10px}th.sort-asc .fm-sort-icon:after{content:"↑";opacity:1}th.sort-desc .fm-sort-icon:after{content:"↓";opacity:1}.fm-section-bar:before{content:"";display:inline-block;width:2px;height:16px;border-radius:10px;background:#50e81d;flex-shrink:0}.fm-select-arrow{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:24px;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='rgba(255,255,255,0.5)' stroke-width='1.2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}[data-theme=light] .fm-select-arrow{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='rgba(0,0,0,0.5)' stroke-width='1.2'/%3E%3C/svg%3E")}.fm-native-form select,.fm-native-form textarea,.fm-native-form input[type=date],.fm-native-form input[type=color]{color-scheme:dark}.fm-native-form option{background:#2a2a2a;color:#fff}[data-theme=light] .fm-native-form select,[data-theme=light] .fm-native-form textarea,[data-theme=light] .fm-native-form input[type=date],[data-theme=light] .fm-native-form input[type=color]{color-scheme:light}[data-theme=light] .fm-native-form option{background:#fff;color:#1a1a1a}[data-theme=light] .fm-ams-wrap-bg{background:#e8e8e8}[data-theme=light] .fm-slot-header-bg{background:#e0e0e0;color:#333} diff --git a/resources/web/device_page/assets/index.js b/resources/web/device_page/assets/index.js new file mode 100644 index 0000000000..2beff8c64e --- /dev/null +++ b/resources/web/device_page/assets/index.js @@ -0,0 +1,20 @@ +function e(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}function t(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))t(e);new MutationObserver(e=>{for(const n of e)if("childList"===n.type)for(const e of n.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&t(e)}).observe(document,{childList:!0,subtree:!0})}function t(e){if(e.ep)return;e.ep=!0;const t=function(e){const t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?t.credentials="include":"anonymous"===e.crossOrigin?t.credentials="omit":t.credentials="same-origin",t}(e);fetch(e.href,t)}}();var n,r,o={exports:{}},a={};var i,s,l=(r||(r=1,o.exports=function(){if(n)return a;n=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function r(t,n,r){var o=null;if(void 0!==r&&(o=""+r),void 0!==n.key&&(o=""+n.key),"key"in n)for(var a in r={},n)"key"!==a&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:e,type:t,key:o,ref:void 0!==n?n:null,props:r}}return a.Fragment=t,a.jsx=r,a.jsxs=r,a}()),o.exports),c={exports:{}},u={};function d(){if(i)return u;i=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),h=Symbol.iterator;var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,v={};function y(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||m}function x(){}function b(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||m}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},x.prototype=y.prototype;var w=b.prototype=new x;w.constructor=b,g(w,y.prototype),w.isPureReactComponent=!0;var S=Array.isArray;function k(){}var C={H:null,A:null,T:null,S:null},N=Object.prototype.hasOwnProperty;function j(t,n,r){var o=r.ref;return{$$typeof:e,type:t,key:n,ref:void 0!==o?o:null,props:r}}function _(t){return"object"==typeof t&&null!==t&&t.$$typeof===e}var E=/\/+/g;function P(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function R(n,r,o,a,i){var s=typeof n;"undefined"!==s&&"boolean"!==s||(n=null);var l,c,u=!1;if(null===n)u=!0;else switch(s){case"bigint":case"string":case"number":u=!0;break;case"object":switch(n.$$typeof){case e:case t:u=!0;break;case f:return R((u=n._init)(n._payload),r,o,a,i)}}if(u)return i=i(n),u=""===a?"."+P(n,0):a,S(i)?(o="",null!=u&&(o=u.replace(E,"$&/")+"/"),R(i,r,o,"",function(e){return e})):null!=i&&(_(i)&&(l=i,c=o+(null==i.key||n&&n.key===i.key?"":(""+i.key).replace(E,"$&/")+"/")+u,i=j(l.type,c,l.props)),r.push(i)),1;u=0;var d,p=""===a?".":a+":";if(S(n))for(var m=0;m>>1,a=e[r];if(!(0>>1;ro(l,n))co(u,l)?(e[r]=u,e[c]=n,r=c):(e[r]=l,e[s]=n,r=s);else{if(!(co(u,n)))break e;e[r]=u,e[c]=n,r=c}}}return t}function o(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(e.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var a=performance;e.unstable_now=function(){return a.now()}}else{var i=Date,s=i.now();e.unstable_now=function(){return i.now()-s}}var l=[],c=[],u=1,d=null,f=3,p=!1,h=!1,m=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,y="function"==typeof clearTimeout?clearTimeout:null,x="undefined"!=typeof setImmediate?setImmediate:null;function b(e){for(var o=n(c);null!==o;){if(null===o.callback)r(c);else{if(!(o.startTime<=e))break;r(c),o.sortIndex=o.expirationTime,t(l,o)}o=n(c)}}function w(e){if(m=!1,b(e),!h)if(null!==n(l))h=!0,k||(k=!0,S());else{var t=n(c);null!==t&&L(w,t.startTime-e)}}var S,k=!1,C=-1,N=5,j=-1;function _(){return!(!g&&e.unstable_now()-jt&&_());){var i=d.callback;if("function"==typeof i){d.callback=null,f=d.priorityLevel;var s=i(d.expirationTime<=t);if(t=e.unstable_now(),"function"==typeof s){d.callback=s,b(t),o=!0;break t}d===n(l)&&r(l),b(t)}else r(l);d=n(l)}if(null!==d)o=!0;else{var u=n(c);null!==u&&L(w,u.startTime-t),o=!1}}break e}finally{d=null,f=a,p=!1}o=void 0}}finally{o?S():k=!1}}}if("function"==typeof x)S=function(){x(E)};else if("undefined"!=typeof MessageChannel){var P=new MessageChannel,R=P.port2;P.port1.onmessage=E,S=function(){R.postMessage(null)}}else S=function(){v(E,0)};function L(t,n){C=v(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125i?(r.sortIndex=a,t(c,r),null===n(l)&&r===n(c)&&(m?(y(C),C=-1):m=!0,L(w,a-i))):(r.sortIndex=s,t(l,r),h||p||(h=!0,k||(k=!0,S()))),r},e.unstable_shouldYield=_,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}}(w)),w)),b.exports}var k,C,N,j,_={exports:{}},E={};function P(){if(k)return E;k=1;var e=f();function t(e){var t="https://react.dev/errors/"+e;if(1B||(e.current=z[B],z[B]=null,B--)}function U(e,t){B++,z[B]=e.current,e.current=t}var V,H,K=$(null),q=$(null),G=$(null),Q=$(null);function Y(e,t){switch(U(G,t),U(q,e),U(K,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?xd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=bd(t=xd(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}W(K),U(K,e)}function X(){W(K),W(q),W(G)}function J(e){null!==e.memoizedState&&U(Q,e);var t=K.current,n=bd(t,e.type);t!==n&&(U(q,e),U(K,n))}function Z(e){q.current===e&&(W(K),W(q)),Q.current===e&&(W(Q),pf._currentValue=I)}function ee(e){if(void 0===V)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);V=t&&t[1]||"",H=-1)":-1--o||l[r]!==c[o]){var u="\n"+l[r].replace(" at new "," at ");return e.displayName&&u.includes("")&&(u=u.replace("",e.displayName)),u}}while(1<=r&&0<=o);break}}}finally{te=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?ee(n):""}function re(e,t){switch(e.tag){case 26:case 27:case 5:return ee(e.type);case 16:return ee("Lazy");case 13:return e.child!==t&&null!==t?ee("Suspense Fallback"):ee("Suspense");case 19:return ee("SuspenseList");case 0:case 15:return ne(e.type,!1);case 11:return ne(e.type.render,!1);case 1:return ne(e.type,!0);case 31:return ee("Activity");default:return""}}function oe(e){try{var t="",n=null;do{t+=re(e,n),n=e,e=e.return}while(e);return t}catch(r){return"\nError generating stack: "+r.message+"\n"+r.stack}}var ae=Object.prototype.hasOwnProperty,ie=e.unstable_scheduleCallback,se=e.unstable_cancelCallback,le=e.unstable_shouldYield,ce=e.unstable_requestPaint,ue=e.unstable_now,de=e.unstable_getCurrentPriorityLevel,fe=e.unstable_ImmediatePriority,pe=e.unstable_UserBlockingPriority,he=e.unstable_NormalPriority,me=e.unstable_LowPriority,ge=e.unstable_IdlePriority,ve=e.log,ye=e.unstable_setDisableYieldValue,xe=null,be=null;function we(e){if("function"==typeof ve&&ye(e),be&&"function"==typeof be.setStrictMode)try{be.setStrictMode(xe,e)}catch(t){}}var Se=Math.clz32?Math.clz32:function(e){return 0===(e>>>=0)?32:31-(ke(e)/Ce|0)|0},ke=Math.log,Ce=Math.LN2;var Ne=256,je=262144,_e=4194304;function Ee(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 16777216:case 33554432:return 62914560&e;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Pe(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var s=134217727&r;return 0!==s?0!==(r=s&~a)?o=Ee(r):0!==(i&=s)?o=Ee(i):n||0!==(n=s&~e)&&(o=Ee(n)):0!==(s=r&~a)?o=Ee(s):0!==i?o=Ee(i):n||0!==(n=r&~e)&&(o=Ee(n)),0===o?0:0!==t&&t!==o&&0===(t&a)&&((a=o&-o)>=(n=t&-t)||32===a&&4194048&n)?t:o}function Re(e,t){return 0===(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function Le(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function Fe(){var e=_e;return!(62914560&(_e<<=1))&&(_e=4194304),e}function Ae(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Me(e,t){e.pendingLanes|=t,268435456!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Te(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-Se(t);e.entangledLanes|=t,e.entanglements[r]=1073741824|e.entanglements[r]|261930&n}function De(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Se(n),o=1<=En),Ln=String.fromCharCode(32),Fn=!1;function An(e,t){switch(e){case"keyup":return-1!==jn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Mn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Tn=!1;var Dn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function On(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Dn[e.type]:"textarea"===t}function In(e,t,n,r){Ot?It?It.push(r):It=[r]:Ot=r,0<(t=ad(t,"onChange")).length&&(n=new on("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var zn=null,Bn=null;function $n(e){Xu(e,0)}function Wn(e){if(gt(et(e)))return e}function Un(e,t){if("change"===e)return t}var Vn=!1;if(Ut){var Hn;if(Ut){var Kn="oninput"in document;if(!Kn){var qn=document.createElement("div");qn.setAttribute("oninput","return;"),Kn="function"==typeof qn.oninput}Hn=Kn}else Hn=!1;Vn=Hn&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=nr(r)}}function or(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?or(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function ar(e){for(var t=vt((e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window).document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=vt((e=t.contentWindow).document)}return t}function ir(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var sr=Ut&&"documentMode"in document&&11>=document.documentMode,lr=null,cr=null,ur=null,dr=!1;function fr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;dr||null==lr||lr!==vt(r)||("selectionStart"in(r=lr)&&ir(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},ur&&tr(ur,r)||(ur=r,0<(r=ad(cr,"onSelect")).length&&(t=new on("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=lr)))}function pr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var hr={animationend:pr("Animation","AnimationEnd"),animationiteration:pr("Animation","AnimationIteration"),animationstart:pr("Animation","AnimationStart"),transitionrun:pr("Transition","TransitionRun"),transitionstart:pr("Transition","TransitionStart"),transitioncancel:pr("Transition","TransitionCancel"),transitionend:pr("Transition","TransitionEnd")},mr={},gr={};function vr(e){if(mr[e])return mr[e];if(!hr[e])return e;var t,n=hr[e];for(t in n)if(n.hasOwnProperty(t)&&t in gr)return mr[e]=n[t];return e}Ut&&(gr=document.createElement("div").style,"AnimationEvent"in window||(delete hr.animationend.animation,delete hr.animationiteration.animation,delete hr.animationstart.animation),"TransitionEvent"in window||delete hr.transitionend.transition);var yr=vr("animationend"),xr=vr("animationiteration"),br=vr("animationstart"),wr=vr("transitionrun"),Sr=vr("transitionstart"),kr=vr("transitioncancel"),Cr=vr("transitionend"),Nr=new Map,jr="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function _r(e,t){Nr.set(e,t),at(t,[e])}jr.push("scrollEnd");var Er="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},Pr=[],Rr=0,Lr=0;function Fr(){for(var e=Rr,t=Lr=Rr=0;t>=i,o-=i,oo=1<<32-Se(t)+o|n<p?(h=d,d=null):h=d.sibling;var m=g(r,d,s[p],l);if(null===m){null===d&&(d=h);break}e&&d&&null===m.alternate&&t(r,d),a=i(m,a,p),null===u?c=m:u.sibling=m,u=m,d=h}if(p===s.length)return n(r,d),ho&&io(r,p),c;if(null===d){for(;ph?(m=p,p=null):m=p.sibling;var x=g(a,p,y.value,c);if(null===x){null===p&&(p=m);break}e&&p&&null===x.alternate&&t(a,p),s=i(x,s,h),null===d?u=x:d.sibling=x,d=x,p=m}if(y.done)return n(a,p),ho&&io(a,h),u;if(null===p){for(;!y.done;h++,y=l.next())null!==(y=f(a,y.value,c))&&(s=i(y,s,h),null===d?u=y:d.sibling=y,d=y);return ho&&io(a,h),u}for(p=o(p);!y.done;h++,y=l.next())null!==(y=v(p,a,h,y.value,c))&&(e&&null!==y.alternate&&p.delete(null===y.key?h:y.key),s=i(y,s,h),null===d?u=y:d.sibling=y,d=y);return e&&p.forEach(function(e){return t(a,e)}),ho&&io(a,h),u}(l,c,u=x.call(u),d)}if("function"==typeof u.then)return y(l,c,fa(u),d);if(u.$$typeof===b)return y(l,c,Do(l,u),d);ha(l,u)}return"string"==typeof u&&""!==u||"number"==typeof u||"bigint"==typeof u?(u=""+u,null!==c&&6===c.tag?(n(l,c.sibling),(d=a(c,u)).return=l,l=d):(n(l,c),(d=Kr(u,l.mode,d)).return=l,l=d),s(l)):n(l,c)}return function(e,t,n,r){try{da=0;var o=y(e,t,n,r);return ua=null,o}catch(i){if(i===ea||i===na)throw i;var a=Br(29,i,null,e.mode);return a.lanes=r,a.return=e,a}}}var ga=ma(!0),va=ma(!1),ya=!1;function xa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ba(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function wa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Sa(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,2&mc){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,t=Or(e),Dr(e,null,n),t}return Ar(e,r,t,n),Or(e)}function ka(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,4194048&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,De(e,n)}}function Ca(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Na=!1;function ja(){if(Na){if(null!==qo)throw qo}}function _a(e,t,n,r){Na=!1;var o=e.updateQueue;ya=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var l=s,c=l.next;l.next=null,null===i?a=c:i.next=c,i=l;var d=e.alternate;null!==d&&((s=(d=d.updateQueue).lastBaseUpdate)!==i&&(null===s?d.firstBaseUpdate=c:s.next=c,d.lastBaseUpdate=l))}if(null!==a){var f=o.baseState;for(i=0,d=c=l=null,s=a;;){var p=-536870913&s.lane,h=p!==s.lane;if(h?(yc&p)===p:(r&p)===p){0!==p&&p===Ko&&(Na=!0),null!==d&&(d=d.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});e:{var m=e,g=s;p=t;var v=n;switch(g.tag){case 1:if("function"==typeof(m=g.payload)){f=m.call(v,f,p);break e}f=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p="function"==typeof(m=g.payload)?m.call(v,f,p):m))break e;f=u({},f,p);break e;case 2:ya=!0}}null!==(p=s.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=o.callbacks)?o.callbacks=[p]:h.push(p))}else h={lane:p,tag:s.tag,payload:s.payload,callback:s.callback,next:null},null===d?(c=d=h,l=f):d=d.next=h,i|=p;if(null===(s=s.next)){if(null===(s=o.shared.pending))break;s=(h=s).next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}}null===d&&(l=f),o.baseState=l,o.firstBaseUpdate=c,o.lastBaseUpdate=d,null===a&&(o.shared.lanes=0),jc|=i,e.lanes=i,e.memoizedState=f}}function Ea(e,t){if("function"!=typeof e)throw Error(r(191,e));e.call(t)}function Pa(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var i,s,l,c=D.T,u={};D.T=u,ps(e,!1,t,n);try{var d=o(),f=D.S;if(null!==f&&f(u,d),null!==d&&"object"==typeof d&&"function"==typeof d.then)fs(e,t,(i=r,s=[],l={status:"pending",value:null,reason:null,then:function(e){s.push(e)}},d.then(function(){l.status="fulfilled",l.value=i;for(var e=0;e<\/script>",i=i.removeChild(i.firstChild);break;case"select":i="string"==typeof o.is?s.createElement("select",{is:o.is}):s.createElement("select"),o.multiple?i.multiple=!0:o.size&&(i.size=o.size);break;default:i="string"==typeof o.is?s.createElement(a,{is:o.is}):s.createElement(a)}}i[Ue]=t,i[Ve]=o;e:for(s=t.child;null!==s;){if(5===s.tag||6===s.tag)i.appendChild(s.stateNode);else if(4!==s.tag&&27!==s.tag&&null!==s.child){s.child.return=s,s=s.child;continue}if(s===t)break e;for(;null===s.sibling;){if(null===s.return||s.return===t)break e;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=i;e:switch(hd(i,a,o),a){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}o&&cl(t)}}return hl(t),ul(t,t.type,null===e||e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==o&&cl(t);else{if("string"!=typeof o&&null===t.stateNode)throw Error(r(166));if(e=G.current,wo(t)){if(e=t.stateNode,n=t.memoizedProps,o=null,null!==(a=fo))switch(a.tag){case 27:case 5:o=a.memoizedProps}e[Ue]=t,(e=!!(e.nodeValue===n||null!==o&&!0===o.suppressHydrationWarning||dd(e.nodeValue,n)))||yo(t,!0)}else(e=yd(e).createTextNode(o))[Ue]=t,t.stateNode=e}return hl(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(o=wo(t),null!==n){if(null===e){if(!o)throw Error(r(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(r(557));e[Ue]=t}else So(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;hl(t),e=!1}else n=ko(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return 256&t.flags?($a(t),t):($a(t),null);if(128&t.flags)throw Error(r(558))}return hl(t),null;case 13:if(o=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(a=wo(t),null!==o&&null!==o.dehydrated){if(null===e){if(!a)throw Error(r(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(r(317));a[Ue]=t}else So(),!(128&t.flags)&&(t.memoizedState=null),t.flags|=4;hl(t),a=!1}else a=ko(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return 256&t.flags?($a(t),t):($a(t),null)}return $a(t),128&t.flags?(t.lanes=n,t):(n=null!==o,e=null!==e&&null!==e.memoizedState,n&&(a=null,null!==(o=t.child).alternate&&null!==o.alternate.memoizedState&&null!==o.alternate.memoizedState.cachePool&&(a=o.alternate.memoizedState.cachePool.pool),i=null,null!==o.memoizedState&&null!==o.memoizedState.cachePool&&(i=o.memoizedState.cachePool.pool),i!==a&&(o.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),fl(t,t.updateQueue),hl(t),null);case 4:return X(),null===e&&td(t.stateNode.containerInfo),hl(t),null;case 10:return Po(t.type),hl(t),null;case 19:if(W(Wa),null===(o=t.memoizedState))return hl(t),null;if(a=!!(128&t.flags),null===(i=o.rendering))if(a)pl(o,!1);else{if(0!==Nc||null!==e&&128&e.flags)for(e=t.child;null!==e;){if(null!==(i=Ua(e))){for(t.flags|=128,pl(o,!1),e=i.updateQueue,t.updateQueue=e,fl(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)Ur(n,e),n=n.sibling;return U(Wa,1&Wa.current|2),ho&&io(t,o.treeForkCount),t.child}e=e.sibling}null!==o.tail&&ue()>Dc&&(t.flags|=128,a=!0,pl(o,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=Ua(i))){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,fl(t,e),pl(o,!0),null===o.tail&&"hidden"===o.tailMode&&!i.alternate&&!ho)return hl(t),null}else 2*ue()-o.renderingStartTime>Dc&&536870912!==n&&(t.flags|=128,a=!0,pl(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(null!==(e=o.last)?e.sibling=i:t.child=i,o.last=i)}return null!==o.tail?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=ue(),e.sibling=null,n=Wa.current,U(Wa,a?1&n|2:1&n),ho&&io(t,o.treeForkCount),e):(hl(t),null);case 22:case 23:return $a(t),Ma(),o=null!==t.memoizedState,null!==e?null!==e.memoizedState!==o&&(t.flags|=8192):o&&(t.flags|=8192),o?!!(536870912&n)&&!(128&t.flags)&&(hl(t),6&t.subtreeFlags&&(t.flags|=8192)):hl(t),null!==(n=t.updateQueue)&&fl(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),o=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(o=t.memoizedState.cachePool.pool),o!==n&&(t.flags|=2048),null!==e&&W(Yo),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Po($o),hl(t),null;case 25:case 30:return null}throw Error(r(156,t.tag))}function gl(e,t){switch(co(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return Po($o),X(),65536&(e=t.flags)&&!(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Z(t),null;case 31:if(null!==t.memoizedState){if($a(t),null===t.alternate)throw Error(r(340));So()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if($a(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(r(340));So()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return W(Wa),null;case 4:return X(),null;case 10:return Po(t.type),null;case 22:case 23:return $a(t),Ma(),null!==e&&W(Yo),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return Po($o),null;default:return null}}function vl(e,t){switch(co(t),t.tag){case 3:Po($o),X();break;case 26:case 27:case 5:Z(t);break;case 4:X();break;case 31:null!==t.memoizedState&&$a(t);break;case 13:$a(t);break;case 19:W(Wa);break;case 10:Po(t.type);break;case 22:case 23:$a(t),Ma(),null!==e&&W(Yo);break;case 24:Po($o)}}function yl(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var o=r.next;n=o;do{if((n.tag&e)===e){r=void 0;var a=n.create,i=n.inst;r=a(),i.destroy=r}n=n.next}while(n!==o)}}catch(s){Nu(t,t.return,s)}}function xl(e,t,n){try{var r=t.updateQueue,o=null!==r?r.lastEffect:null;if(null!==o){var a=o.next;r=a;do{if((r.tag&e)===e){var i=r.inst,s=i.destroy;if(void 0!==s){i.destroy=void 0,o=t;var l=n,c=s;try{c()}catch(u){Nu(o,l,u)}}}r=r.next}while(r!==a)}}catch(u){Nu(t,t.return,u)}}function bl(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{Pa(t,n)}catch(r){Nu(e,e.return,r)}}}function wl(e,t,n){n.props=Ns(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(r){Nu(e,t,r)}}function Sl(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(o){Nu(e,t,o)}}function kl(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(o){Nu(e,t,o)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(a){Nu(e,t,a)}else n.current=null}function Cl(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break e;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(o){Nu(e,e.return,o)}}function Nl(e,t,n){try{var o=e.stateNode;!function(e,t,n,o){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var a=null,i=null,s=null,l=null,c=null,u=null,d=null;for(h in n){var f=n[h];if(n.hasOwnProperty(h)&&null!=f)switch(h){case"checked":case"value":break;case"defaultValue":c=f;default:o.hasOwnProperty(h)||fd(e,t,h,null,o,f)}}for(var p in o){var h=o[p];if(f=n[p],o.hasOwnProperty(p)&&(null!=h||null!=f))switch(p){case"type":i=h;break;case"name":a=h;break;case"checked":u=h;break;case"defaultChecked":d=h;break;case"value":s=h;break;case"defaultValue":l=h;break;case"children":case"dangerouslySetInnerHTML":if(null!=h)throw Error(r(137,t));break;default:h!==f&&fd(e,t,p,h,o,f)}}return void bt(e,s,l,c,u,d,i,a);case"select":for(i in h=s=l=p=null,n)if(c=n[i],n.hasOwnProperty(i)&&null!=c)switch(i){case"value":break;case"multiple":h=c;default:o.hasOwnProperty(i)||fd(e,t,i,null,o,c)}for(a in o)if(i=o[a],c=n[a],o.hasOwnProperty(a)&&(null!=i||null!=c))switch(a){case"value":p=i;break;case"defaultValue":l=i;break;case"multiple":s=i;default:i!==c&&fd(e,t,a,i,o,c)}return t=l,n=s,o=h,void(null!=p?kt(e,!!n,p,!1):!!o!=!!n&&(null!=t?kt(e,!!n,t,!0):kt(e,!!n,n?[]:"",!1)));case"textarea":for(l in h=p=null,n)if(a=n[l],n.hasOwnProperty(l)&&null!=a&&!o.hasOwnProperty(l))switch(l){case"value":case"children":break;default:fd(e,t,l,null,o,a)}for(s in o)if(a=o[s],i=n[s],o.hasOwnProperty(s)&&(null!=a||null!=i))switch(s){case"value":p=a;break;case"defaultValue":h=a;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=a)throw Error(r(91));break;default:a!==i&&fd(e,t,s,a,o,i)}return void Ct(e,p,h);case"option":for(var m in n)if(p=n[m],n.hasOwnProperty(m)&&null!=p&&!o.hasOwnProperty(m))if("selected"===m)e.selected=!1;else fd(e,t,m,null,o,p);for(c in o)if(p=o[c],h=n[c],o.hasOwnProperty(c)&&p!==h&&(null!=p||null!=h))if("selected"===c)e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p;else fd(e,t,c,p,o,h);return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!o.hasOwnProperty(g)&&fd(e,t,g,null,o,p);for(u in o)if(p=o[u],h=n[u],o.hasOwnProperty(u)&&p!==h&&(null!=p||null!=h))switch(u){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(r(137,t));break;default:fd(e,t,u,p,o,h)}return;default:if(Rt(t)){for(var v in n)p=n[v],n.hasOwnProperty(v)&&void 0!==p&&!o.hasOwnProperty(v)&&pd(e,t,v,void 0,o,p);for(d in o)p=o[d],h=n[d],!o.hasOwnProperty(d)||p===h||void 0===p&&void 0===h||pd(e,t,d,p,o,h);return}}for(var y in n)p=n[y],n.hasOwnProperty(y)&&null!=p&&!o.hasOwnProperty(y)&&fd(e,t,y,null,o,p);for(f in o)p=o[f],h=n[f],!o.hasOwnProperty(f)||p===h||null==p&&null==h||fd(e,t,f,p,o,h)}(o,e.type,n,t),o[Ve]=t}catch(a){Nu(e,e.return,a)}}function jl(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&Ed(e.type)||4===e.tag}function _l(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||jl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&Ed(e.type))continue e;if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function El(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?(9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).insertBefore(e,t):((t=9===n.nodeType?n.body:"HTML"===n.nodeName?n.ownerDocument.body:n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Mt));else if(4!==r&&(27===r&&Ed(e.type)&&(n=e.stateNode,t=null),null!==(e=e.child)))for(El(e,t,n),e=e.sibling;null!==e;)El(e,t,n),e=e.sibling}function Pl(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&Ed(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(Pl(e,t,n),e=e.sibling;null!==e;)Pl(e,t,n),e=e.sibling}function Rl(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,o=t.attributes;o.length;)t.removeAttributeNode(o[0]);hd(t,r,n),t[Ue]=e,t[Ve]=n}catch(a){Nu(e,e.return,a)}}var Ll=!1,Fl=!1,Al=!1,Ml="function"==typeof WeakSet?WeakSet:Set,Tl=null;function Dl(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:Yl(e,n),4&r&&yl(5,n);break;case 1:if(Yl(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(i){Nu(n,n.return,i)}else{var o=Ns(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(o,t,e.__reactInternalSnapshotBeforeUpdate)}catch(s){Nu(n,n.return,s)}}64&r&&bl(n),512&r&&Sl(n,n.return);break;case 3:if(Yl(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{Pa(e,t)}catch(i){Nu(n,n.return,i)}}break;case 27:null===t&&4&r&&Rl(n);case 26:case 5:Yl(e,n),null===t&&4&r&&Cl(n),512&r&&Sl(n,n.return);break;case 12:Yl(e,n);break;case 31:Yl(e,n),4&r&&Wl(e,n);break;case 13:Yl(e,n),4&r&&Ul(e,n),64&r&&(null!==(e=n.memoizedState)&&(null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$~"===e.data)e._reactRetry=t;else if("$?"!==e.data||"loading"!==n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=Pu.bind(null,n))));break;case 22:if(!(r=null!==n.memoizedState||Ll)){t=null!==t&&null!==t.memoizedState||Fl,o=Ll;var a=Fl;Ll=r,(Fl=t)&&!a?Jl(e,n,!!(8772&n.subtreeFlags)):Yl(e,n),Ll=o,Fl=a}break;case 30:break;default:Yl(e,n)}}function Ol(e){var t=e.alternate;null!==t&&(e.alternate=null,Ol(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&Xe(t)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Il=null,zl=!1;function Bl(e,t,n){for(n=n.child;null!==n;)$l(e,t,n),n=n.sibling}function $l(e,t,n){if(be&&"function"==typeof be.onCommitFiberUnmount)try{be.onCommitFiberUnmount(xe,n)}catch(a){}switch(n.tag){case 26:Fl||kl(n,t),Bl(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(n=n.stateNode).parentNode.removeChild(n);break;case 27:Fl||kl(n,t);var r=Il,o=zl;Ed(n.type)&&(Il=n.stateNode,zl=!1),Bl(e,t,n),Bd(n.stateNode),Il=r,zl=o;break;case 5:Fl||kl(n,t);case 6:if(r=Il,o=zl,Il=null,Bl(e,t,n),zl=o,null!==(Il=r))if(zl)try{(9===Il.nodeType?Il.body:"HTML"===Il.nodeName?Il.ownerDocument.body:Il).removeChild(n.stateNode)}catch(i){Nu(n,t,i)}else try{Il.removeChild(n.stateNode)}catch(i){Nu(n,t,i)}break;case 18:null!==Il&&(zl?(Pd(9===(e=Il).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e,n.stateNode),qf(e)):Pd(Il,n.stateNode));break;case 4:r=Il,o=zl,Il=n.stateNode.containerInfo,zl=!0,Bl(e,t,n),Il=r,zl=o;break;case 0:case 11:case 14:case 15:xl(2,n,t),Fl||xl(4,n,t),Bl(e,t,n);break;case 1:Fl||(kl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount&&wl(n,t,r)),Bl(e,t,n);break;case 21:Bl(e,t,n);break;case 22:Fl=(r=Fl)||null!==n.memoizedState,Bl(e,t,n),Fl=r;break;default:Bl(e,t,n)}}function Wl(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&null!==(e=e.memoizedState))){e=e.dehydrated;try{qf(e)}catch(n){Nu(t,t.return,n)}}}function Ul(e,t){if(null===t.memoizedState&&(null!==(e=t.alternate)&&(null!==(e=e.memoizedState)&&null!==(e=e.dehydrated))))try{qf(e)}catch(n){Nu(t,t.return,n)}}function Vl(e,t){var n=function(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return null===t&&(t=e.stateNode=new Ml),t;case 22:return null===(t=(e=e.stateNode)._retryCache)&&(t=e._retryCache=new Ml),t;default:throw Error(r(435,e.tag))}}(e);t.forEach(function(t){if(!n.has(t)){n.add(t);var r=Ru.bind(null,e,t);t.then(r,r)}})}function Hl(e,t){var n=t.deletions;if(null!==n)for(var o=0;o title"))),hd(i,o,n),i[Ue]=e,nt(i),o=i;break e;case"link":var s=of("link","href",a).get(o+(n.href||""));if(s)for(var l=0;ls)break;var u=l.transferSize,d=l.initiatorType;u&&md(d)&&(i+=u*((l=l.responseEnd)lf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(o)}}:null}(d,h)))return Wc=a,e.cancelPendingCommit=h(vu.bind(null,e,t,a,n,r,o,i,s,l,u,d,null,f,p)),void eu(e,a,i,!c)}vu(e,t,a,n,r,o,i,s,l)}function Zc(e){for(var t=e;;){var n=t.tag;if((0===n||11===n||15===n)&&16384&t.flags&&(null!==(n=t.updateQueue)&&null!==(n=n.stores)))for(var r=0;rg&&(i=g,g=m,m=i);var v=rr(s,m),y=rr(s,g);if(v&&y&&(1!==p.rangeCount||p.anchorNode!==v.node||p.anchorOffset!==v.offset||p.focusNode!==y.node||p.focusOffset!==y.offset)){var x=d.createRange();x.setStart(v.node,v.offset),p.removeAllRanges(),m>g?(p.addRange(x),p.extend(y.node,y.offset)):(x.setEnd(y.node,y.offset),p.addRange(x))}}}}for(d=[],p=s;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof s.focus&&s.focus(),s=0;sn?32:n,D.T=null,n=Vc,Vc=null;var i=Bc,s=Wc;if(zc=0,$c=Bc=null,Wc=0,6&mc)throw Error(r(331));var l=mc;if(mc|=4,uc(i.current),nc(i,i.current,s,n),mc=l,Iu(0,!1),be&&"function"==typeof be.onPostCommitFiberRoot)try{be.onPostCommitFiberRoot(xe,i)}catch(c){}return!0}finally{O.p=a,D.T=o,wu(e,t)}}function Cu(e,t,n){t=Yr(n,t),null!==(e=Sa(e,t=Ls(e.stateNode,t,2),2))&&(Me(e,2),Ou(e))}function Nu(e,t,n){if(3===e.tag)Cu(e,e,n);else for(;null!==t;){if(3===t.tag){Cu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Ic||!Ic.has(r))){e=Yr(n,e),null!==(r=Sa(t,n=Fs(2),2))&&(As(n,r,t,e),Me(r,2),Ou(r));break}}t=t.return}}function ju(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new hc;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(kc=!0,o.add(n),e=_u.bind(null,e,t,n),t.then(e,e))}function _u(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,gc===e&&(yc&n)===n&&(4===Nc||3===Nc&&(62914560&yc)===yc&&300>ue()-Mc?!(2&mc)&&ru(e,0):Ec|=n,Rc===yc&&(Rc=0)),Ou(e)}function Eu(e,t){0===t&&(t=Fe()),null!==(e=Tr(e,t))&&(Me(e,t),Ou(e))}function Pu(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Eu(e,n)}function Ru(e,t){var n=0;switch(e.tag){case 31:case 13:var o=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:o=e.stateNode;break;case 22:o=e.stateNode._retryCache;break;default:throw Error(r(314))}null!==o&&o.delete(t),Eu(e,n)}var Lu=null,Fu=null,Au=!1,Mu=!1,Tu=!1,Du=0;function Ou(e){e!==Fu&&null===e.next&&(null===Fu?Lu=Fu=e:Fu=Fu.next=e),Mu=!0,Au||(Au=!0,jd(function(){6&mc?ie(fe,zu):Bu()}))}function Iu(e,t){if(!Tu&&Mu){Tu=!0;do{for(var n=!1,r=Lu;null!==r;){if(0!==e){var o=r.pendingLanes;if(0===o)var a=0;else{var i=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Se(42|e)+1)-1,a=201326741&(a&=o&~(i&~s))?201326741&a|1:a?2|a:0}0!==a&&(n=!0,Uu(r,a))}else a=yc,!(3&(a=Pe(r,r===gc?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||Re(r,a)||(n=!0,Uu(r,a));r=r.next}}while(n);Tu=!1}}function zu(){Bu()}function Bu(){Mu=Au=!1;var e=0;0!==Du&&function(){var e=window.event;if(e&&"popstate"===e.type)return e!==Sd&&(Sd=e,!0);return Sd=null,!1}()&&(e=Du);for(var t=ue(),n=null,r=Lu;null!==r;){var o=r.next,a=$u(r,t);0===a?(r.next=null,null===n?Lu=o:n.next=o,null===o&&(Fu=n)):(n=r,(0!==e||3&a)&&(Mu=!0)),r=o}0!==zc&&5!==zc||Iu(e),0!==Du&&(Du=0)}function $u(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=-62914561&e.pendingLanes;0 title"):null)}function sf(e){return!!("stylesheet"!==e.type||3&e.state.loading)}var lf=0;function cf(){if(this.count--,0===this.count&&(0===this.imgCount||!this.waitingForImages))if(this.stylesheets)df(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}var uf=null;function df(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,uf=new Map,t.forEach(ff,e),uf=null,cf.call(e))}function ff(e,t){if(!(4&t.state.loading)){var n=uf.get(e);if(n)var r=n.get(null);else{n=new Map,uf.set(e,n);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;aObject.create(null),B=(e,t)=>$(e,t,z);function $(e,t,n=()=>({}),r=0){if(e===t)return e;if(r>500)return t;const o=t,a=H(e)&&H(o);if(!(a||U(e)&&U(o)))return o;const i=a?e:W(e);if(!i)return o;const s=a?o:W(o);if(!s)return o;const l=i.length,c=s.length,u=a?new Array(c):n();let d=0;for(let f=0;fo||!K(e[i],t[i],n)))return!1;return o===a}return!1}function q(e){let t,n;const r=new Promise((e,r)=>{t=e,n=r});return r.status="pending",r.resolve=n=>{r.status="resolved",r.value=n,t(n),null==e||e(n)},r.reject=e=>{r.status="rejected",n(e)},r}function G(e){return Boolean(e&&"object"==typeof e&&"function"==typeof e.then)}function Q(e){let t;try{t=decodeURI(e)}catch{t=e.replaceAll(/%[0-9A-F]{2}/gi,e=>{try{return decodeURI(e)}catch{return e}})}return function(e){return e.replace(/[\x00-\x1f\x7f]/g,"")}(t)}var Y=["http:","https:","mailto:","tel:"];function X(e,t){if(!e)return!1;try{const n=new URL(e);return!t.has(n.protocol)}catch{return!1}}function J(e){if(!e)return{path:e,handledProtocolRelativeURL:!1};if(!/[%\\\x00-\x1f\x7f]/.test(e)&&!e.startsWith("//"))return{path:e,handledProtocolRelativeURL:!1};const t=/%25|%5C/gi;let n,r=0,o="";for(;null!==(n=t.exec(e));)o+=Q(e.slice(r,n.index))+n[0],r=t.lastIndex;o+=Q(r?e.slice(r):e);let a=!1;return o.startsWith("//")&&(a=!0,o="/"+o.replace(/^\/+/,"")),{path:o,handledProtocolRelativeURL:a}}function Z(){throw new Error("Invariant failed")}function ee(e){const t=new Map;let n,r;const o=e=>{e.next&&(e.prev?(e.prev.next=e.next,e.next.prev=e.prev,e.next=void 0,r&&(r.next=e,e.prev=r)):(e.next.prev=void 0,n=e.next,e.next=void 0,r&&(e.prev=r,r.next=e)),r=e)};return{get(e){const n=t.get(e);if(n)return o(n),n.value},set(a,i){if(t.size>=e&&n){const e=n;t.delete(e.key),e.next&&(n=e.next,e.next.prev=void 0),e===r&&(r=void 0)}const s=t.get(a);if(s)s.value=i,o(s);else{const e={key:a,value:i,prev:r};r&&(r.next=e),r=e,n||(n=e),t.set(a,e)}},clear(){t.clear(),n=void 0,r=void 0}}}function te(e,t,n=new Uint16Array(6)){const r=e.indexOf("/",t),o=-1===r?e.length:r,a=e.substring(t,o);if(!a||!a.includes("$"))return n[0]=0,n[1]=t,n[2]=t,n[3]=o,n[4]=o,n[5]=o,n;if("$"===a){const r=e.length;return n[0]=2,n[1]=t,n[2]=t,n[3]=r,n[4]=r,n[5]=r,n}if(36===a.charCodeAt(0))return n[0]=1,n[1]=t,n[2]=t+1,n[3]=o,n[4]=o,n[5]=o,n;const i=function(e){const t=e.indexOf("{");if(-1===t)return null;const n=e.indexOf("}",t);return-1===n||t+1>=e.length?null:[t,n]}(a);if(i){const[r,s]=i,l=a.charCodeAt(r+1);if(45===l){if(r+2!e.skipOnParamError&&e.caseSensitive===u&&e.prefix===d&&e.suffix===f));if(p)i=p;else{const e=ie(1,n.fullPath??n.from,u,d,f);i=e,e.depth=a,e.parent=o,o.dynamic??(o.dynamic=[]),o.dynamic.push(e)}break}case 3:{const t=r.substring(s,e[1]),c=r.substring(e[4],l),u=w&&!(!t&&!c),d=t?u?t:t.toLowerCase():void 0,f=c?u?c:c.toLowerCase():void 0,p=!S&&(null==(m=o.optional)?void 0:m.find(e=>!e.skipOnParamError&&e.caseSensitive===u&&e.prefix===d&&e.suffix===f));if(p)i=p;else{const e=ie(3,n.fullPath??n.from,u,d,f);i=e,e.parent=o,e.depth=a,o.optional??(o.optional=[]),o.optional.push(e)}break}case 2:{const t=r.substring(s,e[1]),c=r.substring(e[4],l),u=w&&!(!t&&!c),d=t?u?t:t.toLowerCase():void 0,f=c?u?c:c.toLowerCase():void 0,p=ie(2,n.fullPath??n.from,u,d,f);i=p,p.parent=o,p.depth=a,o.wildcard??(o.wildcard=[]),o.wildcard.push(p)}}o=i}if(S&&n.children&&!n.isRoot&&n.id&&95===n.id.charCodeAt(n.id.lastIndexOf("/")+1)){const e=ae(n.fullPath??n.from);e.kind=5,e.parent=o,a++,e.depth=a,o.pathless??(o.pathless=[]),o.pathless.push(e),o=e}const k=(n.path||!n.children)&&!n.isRoot;if(k&&r.endsWith("/")){const e=ae(n.fullPath??n.from);e.kind=4,e.parent=o,a++,e.depth=a,o.index=e,o=e}o.parse=(null==(v=null==(g=n.options)?void 0:g.params)?void 0:v.parse)??null,o.skipOnParamError=S,o.parsingPriority=(null==(x=null==(y=n.options)?void 0:y.skipRouteOnParseError)?void 0:x.priority)??0,k&&!o.route&&(o.route=n,o.fullPath=n.fullPath??n.from)}if(n.children)for(const w of n.children)ne(e,t,w,b,o,a,i)}function re(e,t){if(e.skipOnParamError&&!t.skipOnParamError)return-1;if(!e.skipOnParamError&&t.skipOnParamError)return 1;if(e.skipOnParamError&&t.skipOnParamError&&(e.parsingPriority||t.parsingPriority))return t.parsingPriority-e.parsingPriority;if(e.prefix&&t.prefix&&e.prefix!==t.prefix){if(e.prefix.startsWith(t.prefix))return-1;if(t.prefix.startsWith(e.prefix))return 1}if(e.suffix&&t.suffix&&e.suffix!==t.suffix){if(e.suffix.endsWith(t.suffix))return-1;if(t.suffix.endsWith(e.suffix))return 1}return e.prefix&&!t.prefix?-1:!e.prefix&&t.prefix?1:e.suffix&&!t.suffix?-1:!e.suffix&&t.suffix?1:e.caseSensitive&&!t.caseSensitive?-1:!e.caseSensitive&&t.caseSensitive?1:0}function oe(e){var t,n,r;if(e.pathless)for(const o of e.pathless)oe(o);if(e.static)for(const o of e.static.values())oe(o);if(e.staticInsensitive)for(const o of e.staticInsensitive.values())oe(o);if(null==(t=e.dynamic)?void 0:t.length){e.dynamic.sort(re);for(const t of e.dynamic)oe(t)}if(null==(n=e.optional)?void 0:n.length){e.optional.sort(re);for(const t of e.optional)oe(t)}if(null==(r=e.wildcard)?void 0:r.length){e.wildcard.sort(re);for(const t of e.wildcard)oe(t)}}function ae(e){return{kind:0,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:e,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0}}function ie(e,t,n,r,o){return{kind:e,depth:0,pathless:null,index:null,static:null,staticInsensitive:null,dynamic:null,optional:null,wildcard:null,route:null,fullPath:t,parent:null,parse:null,skipOnParamError:!1,parsingPriority:0,caseSensitive:n,prefix:r,suffix:o}}function se(e,t,n=!1){const r=e.split("/"),o=function(e,t,n,r){if("/"===e&&n.index)return{node:n.index,skipped:0};const o=!T(t),a=o&&"/"!==e,i=t.length-(o?1:0),s=[{node:n,index:1,skipped:0,depth:1,statics:1,dynamics:0,optionals:0}];let l=null,c=null,u=null;for(;s.length;){const n=s.pop(),{node:o,index:d,skipped:f,depth:p,statics:h,dynamics:m,optionals:g}=n;let{extract:v,rawParams:y,parsedParams:x}=n;if(o.skipOnParamError){if(!ce(e,t,n))continue;y=n.rawParams,v=n.extract,x=n.parsedParams}r&&o.route&&4!==o.kind&&ue(c,n)&&(c=n);const b=d===i;if(b&&(o.route&&!a&&ue(u,n)&&(u=n),!(o.optional||o.wildcard||o.index||o.pathless)))continue;const w=b?void 0:t[d];let S;if(b&&o.index){const n={node:o.index,index:d,skipped:f,depth:p+1,statics:h,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x};let r=!0;if(o.index.skipOnParamError&&(ce(e,t,n)||(r=!1)),r){if(h===i&&!m&&!g&&!f)return n;ue(u,n)&&(u=n)}}if(o.wildcard&&ue(l,n))for(const r of o.wildcard){const{prefix:n,suffix:o}=r;if(n){if(b)continue;if(!(r.caseSensitive?w:S??(S=w.toLowerCase())).startsWith(n))continue}if(o){if(b)continue;const e=t.slice(d).join("/").slice(-o.length);if((r.caseSensitive?e:e.toLowerCase())!==o)continue}const a={node:r,index:i,skipped:f,depth:p,statics:h,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x};if(!r.skipOnParamError||ce(e,t,a)){l=a;break}}if(o.optional){const e=f|1<=0;n--){const r=o.optional[n];s.push({node:r,index:d,skipped:e,depth:t,statics:h,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x})}if(!b)for(let n=o.optional.length-1;n>=0;n--){const e=o.optional[n],{prefix:r,suffix:a}=e;if(r||a){const t=e.caseSensitive?w:S??(S=w.toLowerCase());if(r&&!t.startsWith(r))continue;if(a&&!t.endsWith(a))continue}s.push({node:e,index:d+1,skipped:f,depth:t,statics:h,dynamics:m,optionals:g+1,extract:v,rawParams:y,parsedParams:x})}}if(!b&&o.dynamic&&w)for(let e=o.dynamic.length-1;e>=0;e--){const t=o.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){const e=t.caseSensitive?w:S??(S=w.toLowerCase());if(n&&!e.startsWith(n))continue;if(r&&!e.endsWith(r))continue}s.push({node:t,index:d+1,skipped:f,depth:p+1,statics:h,dynamics:m+1,optionals:g,extract:v,rawParams:y,parsedParams:x})}if(!b&&o.staticInsensitive){const e=o.staticInsensitive.get(S??(S=w.toLowerCase()));e&&s.push({node:e,index:d+1,skipped:f,depth:p+1,statics:h+1,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x})}if(!b&&o.static){const e=o.static.get(w);e&&s.push({node:e,index:d+1,skipped:f,depth:p+1,statics:h+1,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x})}if(o.pathless){const e=p+1;for(let t=o.pathless.length-1;t>=0;t--){const n=o.pathless[t];s.push({node:n,index:d,skipped:f,depth:e,statics:h,dynamics:m,optionals:g,extract:v,rawParams:y,parsedParams:x})}}}if(u&&l)return ue(l,u)?u:l;if(u)return u;if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((4===t.node.kind)>(4===e.node.kind)||4===t.node.kind==(4===e.node.kind)&&t.depth>e.depth))))}function de(e){return fe(e.filter(e=>void 0!==e).join("/"))}function fe(e){return e.replace(/\/{2,}/g,"/")}function pe(e){return"/"===e?e:e.replace(/^\/{1,}/,"")}function he(e){const t=e.length;return t>1&&"/"===e[t-1]?e.replace(/\/{1,}$/,""):e}function me(e){return he(pe(e))}function ge(e,t){return(null==e?void 0:e.endsWith("/"))&&"/"!==e&&e!==`${t}/`?e.slice(0,-1):e}function ve(e,t,n){const r=t[e];return"string"!=typeof r?r:"_splat"===e?/^[a-zA-Z0-9\-._~!/]*$/.test(r)?r:r.split("/").map(e=>xe(e,n)).join("/"):xe(r,n)}function ye({path:e,params:t,decoder:n,...r}){let o=!1;const a=Object.create(null);if(!e||"/"===e)return{interpolatedPath:"/",usedParams:a,isMissingParams:o};if(!e.includes("$"))return{interpolatedPath:e,usedParams:a,isMissingParams:o};const i=e.length;let s,l=0,c="";for(;l{t=D(e,t)||t},persist:()=>{try{e.setItem("tsr-scroll-restoration-v1_3",JSON.stringify(t))}catch{}}}}(),Se=e=>e.state.__TSR_key||e.href;function ke(e){const t=[];let n;for(;n=e.parentNode;)t.push(`${e.tagName}:nth-child(${Array.prototype.indexOf.call(n.children,e)+1})`),e=n;return`${t.reverse().join(" > ")}`.toLowerCase()}var Ce=!1,Ne="window",je="data-scroll-restoration-id";function _e(e){return e?"false"!==e&&("true"===e||(0*+e==0&&+e+""===e?+e:e)):""}var Ee,Pe=(Ee=JSON.parse,e=>{"?"===e[0]&&(e=e.substring(1));const t=function(e){const t=new URLSearchParams(e),n=Object.create(null);for(const[r,o]of t.entries()){const e=n[r];null==e?n[r]=_e(o):Array.isArray(e)?e.push(_e(o)):n[r]=[e,_e(o)]}return n}(e);for(const r in t){const e=t[r];if("string"==typeof e)try{t[r]=Ee(e)}catch(n){}}return t}),Re=function(e,t){const n="function"==typeof t;function r(r){if("object"==typeof r&&null!==r)try{return e(r)}catch(o){}else if(n&&"string"==typeof r)try{return t(r),e(r)}catch(o){}return r}return e=>{const t=function(e,t=String){const n=new URLSearchParams;for(const r in e){const o=e[r];void 0!==o&&n.set(r,t(o))}return n.toString()}(e,r);return t?`?${t}`:""}}(JSON.stringify,JSON.parse);var Le="__root__";function Fe(e){return e instanceof Response&&!!e.options}function Ae(e,t){var n;const r=null==(n=null==e?void 0:e.input)?void 0:n.call(e,{url:t});if(r){if("string"==typeof r)return new URL(r);if(r instanceof URL)return r}return t}function Me(e,t){var n;const r=null==(n=null==e?void 0:e.output)?void 0:n.call(e,{url:t});if(r){if("string"==typeof r)return new URL(r);if(r instanceof URL)return r}return t}function Te(e,t){const n=[];for(const r of t){const t=e.get(r);t&&n.push(t.get())}return n}function De(e,t,n,r,o){const a=e.map(e=>e.id),i=new Set(a);o(()=>{for(const e of t.keys())i.has(e)||t.delete(e);for(const n of e){const e=t.get(n.id);if(!e){const e=r(n);e.routeId=n.routeId,t.set(n.id,e);continue}e.routeId=n.routeId,e.get()!==n&&e.set(n)}(function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{var t;if(!e.rendered)return e.rendered=!0,null==(t=e.onReady)?void 0:t.call(e)},Ie=(e,t)=>!(!e.preload||e.router.stores.matchStores.has(t)),ze=(e,t,n=!0)=>{const r={...e.router.options.context??{}},o=n?t:t-1;for(let a=0;a<=o;a++){const t=e.matches[a];if(!t)continue;const n=e.router.getMatch(t.id);n&&Object.assign(r,n.__routeContext,n.__beforeLoadContext)}return r},Be=(e,t)=>{if(!e.matches.length)return;const n=t.routeId,r=e.matches.findIndex(t=>t.routeId===e.router.routeTree.id),o=r>=0?r:0;let a=n?e.matches.findIndex(e=>e.routeId===n):e.firstBadMatchIndex??e.matches.length-1;a<0&&(a=o);for(let i=a;i>=0;i--){const t=e.matches[i];if(e.router.looseRoutesById[t.routeId].options.notFoundComponent)return i}return n?a:o},$e=(e,t,n)=>{var r,o,a;if(Fe(n)||be(n)){if(Fe(n)&&n.redirectHandled&&!n.options.reloadDocument)throw n;throw t&&(null==(r=t._nonReactive.beforeLoadPromise)||r.resolve(),null==(o=t._nonReactive.loaderPromise)||o.resolve(),t._nonReactive.beforeLoadPromise=void 0,t._nonReactive.loaderPromise=void 0,t._nonReactive.error=n,e.updateMatch(t.id,r=>({...r,status:Fe(n)?"redirected":be(n)?"notFound":"pending"===r.status?"success":r.status,context:ze(e,t.index),isFetching:!1,error:n})),be(n)&&!n.routeId&&(n.routeId=t.routeId),null==(a=t._nonReactive.loadPromise)||a.resolve()),Fe(n)&&(e.rendered=!0,n.options._fromLocation=e.location,n.redirectHandled=!0,n=e.router.resolveRedirect(n)),n}},We=(e,t)=>{const n=e.router.getMatch(t);return!n||!!n._nonReactive.dehydrated},Ue=(e,t,n)=>{const r=ze(e,n);e.updateMatch(t,e=>({...e,context:r}))},Ve=(e,t,n,r)=>{var o,a;const{id:i,routeId:s}=e.matches[t],l=e.router.looseRoutesById[s];if(n instanceof Promise)throw n;n.routerCode=r,e.firstBadMatchIndex??(e.firstBadMatchIndex=t),$e(e,e.router.getMatch(i),n);try{null==(a=(o=l.options).onError)||a.call(o,n)}catch(c){n=c,$e(e,e.router.getMatch(i),n)}e.updateMatch(i,e=>{var t,r;return null==(t=e._nonReactive.beforeLoadPromise)||t.resolve(),e._nonReactive.beforeLoadPromise=void 0,null==(r=e._nonReactive.loadPromise)||r.resolve(),{...e,error:n,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController}}),e.preload||Fe(n)||be(n)||(e.serialError??(e.serialError=n))},He=(e,t,n,r)=>{var o;if(void 0!==r._nonReactive.pendingTimeout)return;const a=n.options.pendingMs??e.router.options.defaultPendingMs;if(e.onReady&&!Ie(e,t)&&(n.options.loader||n.options.beforeLoad||et(n))&&"number"==typeof a&&a!==1/0&&(n.options.pendingComponent??(null==(o=e.router.options)?void 0:o.defaultPendingComponent))){const t=setTimeout(()=>{Oe(e)},a);r._nonReactive.pendingTimeout=t}},Ke=(e,t)=>{const{id:n,routeId:r}=e.matches[t],o=e.router.looseRoutesById[r],a=()=>((e,t,n,r)=>{const o=e.router.getMatch(t);let a=o._nonReactive.loadPromise;o._nonReactive.loadPromise=q(()=>{null==a||a.resolve(),a=void 0});const{paramsError:i,searchError:s}=o;i&&Ve(e,n,i,"PARSE_PARAMS"),s&&Ve(e,n,s,"VALIDATE_SEARCH"),He(e,t,r,o);const l=new AbortController;let c=!1;const u=()=>{c||(c=!0,e.updateMatch(t,e=>({...e,isFetching:"beforeLoad",fetchCount:e.fetchCount+1,abortController:l})))},d=()=>{var n;null==(n=o._nonReactive.beforeLoadPromise)||n.resolve(),o._nonReactive.beforeLoadPromise=void 0,e.updateMatch(t,e=>({...e,isFetching:!1}))};if(!r.options.beforeLoad)return void e.router.batch(()=>{u(),d()});o._nonReactive.beforeLoadPromise=q();const f={...ze(e,n,!1),...o.__routeContext},{search:p,params:h,cause:m}=o,g=Ie(e,t),v={search:p,abortController:l,params:h,preload:g,context:f,location:e.location,navigate:t=>e.router.navigate({...t,_fromLocation:e.location}),buildLocation:e.router.buildLocation,cause:g?"preload":m,matches:e.matches,routeId:r.id,...e.router.options.additionalContext},y=r=>{void 0!==r?((Fe(r)||be(r))&&(u(),Ve(e,n,r,"BEFORE_LOAD")),e.router.batch(()=>{u(),e.updateMatch(t,e=>({...e,__beforeLoadContext:r})),d()})):e.router.batch(()=>{u(),d()})};let x;try{if(x=r.options.beforeLoad(v),G(x))return u(),x.catch(t=>{Ve(e,n,t,"BEFORE_LOAD")}).then(y)}catch(b){u(),Ve(e,n,b,"BEFORE_LOAD")}y(x)})(e,n,t,o),i=()=>{if(We(e,n))return;const t=((e,t,n)=>{const r=e.router.getMatch(t);if(!r._nonReactive.beforeLoadPromise&&!r._nonReactive.loaderPromise)return;He(e,t,n,r);const o=()=>{const n=e.router.getMatch(t);!n.preload||"redirected"!==n.status&&"notFound"!==n.status||$e(e,n,n.error)};return r._nonReactive.beforeLoadPromise?r._nonReactive.beforeLoadPromise.then(o):o()})(e,n,o);return G(t)?t.then(a):a()};return i()},qe=(e,t,n)=>{var r,o,a,i,s,l;const c=e.router.getMatch(t);if(!c)return;if(!n.options.head&&!n.options.scripts&&!n.options.headers)return;const u={ssr:e.router.options.ssr,matches:e.matches,match:c,params:c.params,loaderData:c.loaderData};return Promise.all([null==(o=(r=n.options).head)?void 0:o.call(r,u),null==(i=(a=n.options).scripts)?void 0:i.call(a,u),null==(l=(s=n.options).headers)?void 0:l.call(s,u)]).then(([e,t,n])=>({meta:null==e?void 0:e.meta,links:null==e?void 0:e.links,headScripts:null==e?void 0:e.scripts,headers:n,scripts:t,styles:null==e?void 0:e.styles}))},Ge=(e,t,n,r,o)=>{const a=t[r-1],{params:i,loaderDeps:s,abortController:l,cause:c}=e.router.getMatch(n),u=ze(e,r),d=Ie(e,n);return{params:i,deps:s,preload:!!d,parentMatchPromise:a,abortController:l,context:u,location:e.location,navigate:t=>e.router.navigate({...t,_fromLocation:e.location}),cause:d?"preload":c,route:o,...e.router.options.additionalContext}},Qe=async(e,t,n,r,o)=>{var a,i,s,l,c;try{const f=e.router.getMatch(n);try{Ze(o);const a=o.options.loader,i="function"==typeof a?a:null==a?void 0:a.handler,s=null==i?void 0:i(Ge(e,t,n,r,o)),l=!!i&&G(s);if((l||o._lazyPromise||o._componentsPromise||o.options.head||o.options.scripts||o.options.headers||f._nonReactive.minPendingPromise)&&e.updateMatch(n,e=>({...e,isFetching:"loader"})),i){const t=l?await s:s;$e(e,e.router.getMatch(n),t),void 0!==t&&e.updateMatch(n,e=>({...e,loaderData:t}))}o._lazyPromise&&await o._lazyPromise;const c=f._nonReactive.minPendingPromise;c&&await c,o._componentsPromise&&await o._componentsPromise,e.updateMatch(n,t=>({...t,error:void 0,context:ze(e,r),status:"success",isFetching:!1,updatedAt:Date.now()}))}catch(u){let t=u;if("AbortError"===(null==t?void 0:t.name))return f.abortController.signal.aborted?(null==(a=f._nonReactive.loaderPromise)||a.resolve(),void(f._nonReactive.loaderPromise=void 0)):void e.updateMatch(n,t=>({...t,status:"pending"===t.status?"success":t.status,isFetching:!1,context:ze(e,r)}));const p=f._nonReactive.minPendingPromise;p&&await p,be(u)&&await(null==(s=null==(i=o.options.notFoundComponent)?void 0:i.preload)?void 0:s.call(i)),$e(e,e.router.getMatch(n),u);try{null==(c=(l=o.options).onError)||c.call(l,u)}catch(d){t=d,$e(e,e.router.getMatch(n),d)}Fe(t)||be(t)||await Ze(o,["errorComponent"]),e.updateMatch(n,n=>({...n,error:t,context:ze(e,r),status:"error",isFetching:!1}))}}catch(f){const t=e.router.getMatch(n);t&&(t._nonReactive.loaderPromise=void 0),$e(e,t,f)}},Ye=async(e,t,n)=>{var r,o,a,i;async function s(r,o,a,i,s){const c=Date.now()-o.updatedAt,f=r?s.options.preloadStaleTime??e.router.options.defaultPreloadStaleTime??3e4:s.options.staleTime??e.router.options.defaultStaleTime??0,p=s.options.shouldReload,m="function"==typeof p?p(Ge(e,t,l,n,s)):p,{status:g,invalid:v}=i,y=c>=f&&(!!e.forceStaleReload||"enter"===i.cause||void 0!==a&&a!==i.id);u="success"===g&&(v||(m??y)),r&&!1===s.options.preload||(u&&!e.sync&&h?(d=!0,(async()=>{var r,o;try{await Qe(e,t,l,n,s);const a=e.router.getMatch(l);null==(r=a._nonReactive.loaderPromise)||r.resolve(),null==(o=a._nonReactive.loadPromise)||o.resolve(),a._nonReactive.loaderPromise=void 0,a._nonReactive.loadPromise=void 0}catch(a){Fe(a)&&await e.router.navigate(a.options)}})()):"success"!==g||u?await Qe(e,t,l,n,s):Ue(e,l,n))}const{id:l,routeId:c}=e.matches[n];let u=!1,d=!1;const f=e.router.looseRoutesById[c],p=f.options.loader,h="blocking"!==(("function"==typeof p||null==p?void 0:p.staleReloadMode)??e.router.options.defaultStaleReloadMode);if(We(e,l)){if(!e.router.getMatch(l))return e.matches[n];Ue(e,l,n)}else{const t=e.router.getMatch(l),a=e.router.stores.matchesId.get()[n],i=(null==(r=a&&e.router.stores.matchStores.get(a)||null)?void 0:r.routeId)===c?a:null==(o=e.router.stores.matches.get().find(e=>e.routeId===c))?void 0:o.id,u=Ie(e,l);if(t._nonReactive.loaderPromise){if("success"===t.status&&!e.sync&&!t.preload&&h)return t;await t._nonReactive.loaderPromise;const n=e.router.getMatch(l),r=n._nonReactive.error||n.error;r&&$e(e,n,r),"pending"===n.status&&await s(u,t,i,n,f)}else{const n=u&&!e.router.stores.matchStores.has(l),r=e.router.getMatch(l);r._nonReactive.loaderPromise=q(),n!==r.preload&&e.updateMatch(l,e=>({...e,preload:n})),await s(u,t,i,r,f)}}const m=e.router.getMatch(l);d||(null==(a=m._nonReactive.loaderPromise)||a.resolve(),null==(i=m._nonReactive.loadPromise)||i.resolve(),m._nonReactive.loadPromise=void 0),clearTimeout(m._nonReactive.pendingTimeout),m._nonReactive.pendingTimeout=void 0,d||(m._nonReactive.loaderPromise=void 0),m._nonReactive.dehydrated=void 0;const g=!!d&&m.isFetching;return g!==m.isFetching||!1!==m.invalid?(e.updateMatch(l,e=>({...e,isFetching:g,invalid:!1})),e.router.getMatch(l)):m};async function Xe(e){var t,n;const r=e,o=[];var a;let i;(a=r.router).stores.matchesId.get().some(e=>{var t;return null==(t=a.stores.matchStores.get(e))?void 0:t.get()._forcePending})&&Oe(r);for(let g=0;g({...e,...i?{status:"success",globalNotFound:!0,error:void 0}:{status:"notFound",error:f},isFetching:!1})),p=e,await Ze(o,["notFoundComponent"])}else if(!r.preload){const e=r.matches[0];e.globalNotFound||(null==(n=r.router.getMatch(e.id))?void 0:n.globalNotFound)&&r.updateMatch(e.id,e=>({...e,globalNotFound:!1,error:void 0}))}if(r.serialError&&void 0!==r.firstBadMatchIndex){const e=r.router.looseRoutesById[r.matches[r.firstBadMatchIndex].routeId];await Ze(e,["errorComponent"])}for(let g=0;g<=p;g++){const{id:e,routeId:t}=r.matches[g],n=r.router.looseRoutesById[t];try{const t=qe(r,e,n);if(t){const n=await t;r.updateMatch(e,e=>({...e,...n}))}}catch(m){console.error(`Error executing head for route ${t}:`,m)}}const h=Oe(r);if(G(h)&&await h,f)throw f;if(r.serialError&&!r.preload&&!r.onReady)throw r.serialError;return r.matches}function Je(e,t){const n=t.map(t=>{var n,r;return null==(r=null==(n=e.options[t])?void 0:n.preload)?void 0:r.call(n)}).filter(Boolean);if(0!==n.length)return Promise.all(n)}function Ze(e,t=tt){e._lazyLoaded||void 0!==e._lazyPromise||(e.lazyFn?e._lazyPromise=e.lazyFn().then(t=>{const{id:n,...r}=t.options;Object.assign(e.options,r),e._lazyLoaded=!0,e._lazyPromise=void 0}):e._lazyLoaded=!0);const n=()=>e._componentsLoaded?void 0:t===tt?(()=>{if(void 0===e._componentsPromise){const t=Je(e,tt);t?e._componentsPromise=t.then(()=>{e._componentsLoaded=!0,e._componentsPromise=void 0}):e._componentsLoaded=!0}return e._componentsPromise})():Je(e,t);return e._lazyPromise?e._lazyPromise.then(n):n()}function et(e){var t;for(const n of tt)if(null==(t=e.options[n])?void 0:t.preload)return!0;return!1}var tt=["component","errorComponent","pendingComponent","notFoundComponent"],nt="__TSR_index",rt="popstate",ot="beforeunload";function at(e,t){t||(t={});const n=lt();return{...t,key:n,__TSR_key:n,[nt]:e}}function it(e){var t,n;const r=(null==e?void 0:e.window)??("undefined"!=typeof document?window:void 0),o=r.history.pushState,a=r.history.replaceState;let i=[];const s=()=>i,l=(null==e?void 0:e.createHref)??(e=>e),c=(null==e?void 0:e.parseLocation)??(()=>st(`${r.location.pathname}${r.location.search}${r.location.hash}`,r.history.state));if(!(null==(t=r.history.state)?void 0:t.__TSR_key)&&!(null==(n=r.history.state)?void 0:n.key)){const e=lt();r.history.replaceState({[nt]:0,key:e,__TSR_key:e},"")}let u,d=c(),f=!1,p=!1,h=!1,m=!1;let g,v;const y=()=>{g&&(k._ignoreSubscribers=!0,(g.isPush?r.history.pushState:r.history.replaceState)(g.state,"",g.href),k._ignoreSubscribers=!1,g=void 0,v=void 0,u=void 0)},x=(e,t,n)=>{const r=l(t);v||(u=d),d=st(t,n),g={href:r,state:n,isPush:(null==g?void 0:g.isPush)||"push"===e},v||(v=Promise.resolve().then(()=>y()))},b=e=>{d=c(),k.notify({type:e})},w=async()=>{if(p)return void(p=!1);const e=c(),t=e.state[nt]-d.state[nt],n=-1===t,o=!(1===t)&&!n||f;f=!1;const a=o?"GO":n?"BACK":"FORWARD",i=o?{type:"GO",index:t}:{type:n?"BACK":"FORWARD"};if(h)h=!1;else{const t=s();if("undefined"!=typeof document&&t.length)for(const n of t)if(await n.blockerFn({currentLocation:d,nextLocation:e,action:a}))return p=!0,r.history.go(1),void k.notify(i)}d=c(),k.notify(i)},S=e=>{if(m)return void(m=!1);let t=!1;const n=s();if("undefined"!=typeof document&&n.length)for(const r of n){const e=r.enableBeforeUnload??!0;if(!0===e){t=!0;break}if("function"==typeof e&&!0===e()){t=!0;break}}return t?(e.preventDefault(),e.returnValue=""):void 0},k=function(e){let t=e.getLocation();const n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},o=n=>{e.notifyOnIndexChange??1?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...o})=>{var a,i;if(null==r?void 0:r.ignoreBlocker)return void n();const s=(null==(a=e.getBlockers)?void 0:a.call(e))??[],l="PUSH"===o.type||"REPLACE"===o.type;if("undefined"!=typeof document&&s.length&&l)for(const c of s){const n=st(o.path,o.state);if(await c.blockerFn({currentLocation:t,nextLocation:n,action:o.type}))return void(null==(i=e.onBlocked)||i.call(e))}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,o,i)=>{const s=t.state[nt];o=at(s+1,o),a({task:()=>{e.pushState(n,o),r({type:"PUSH"})},navigateOpts:i,type:"PUSH",path:n,state:o})},replace:(n,o,i)=>{const s=t.state[nt];o=at(s,o),a({task:()=>{e.replaceState(n,o),r({type:"REPLACE"})},navigateOpts:i,type:"REPLACE",path:n,state:o})},go:(t,n)=>{a({task:()=>{e.go(t),o({type:"GO",index:t})},navigateOpts:n,type:"GO"})},back:t=>{a({task:()=>{e.back((null==t?void 0:t.ignoreBlocker)??!1),o({type:"BACK"})},navigateOpts:t,type:"BACK"})},forward:t=>{a({task:()=>{e.forward((null==t?void 0:t.ignoreBlocker)??!1),o({type:"FORWARD"})},navigateOpts:t,type:"FORWARD"})},canGoBack:()=>0!==t.state[nt],createHref:t=>e.createHref(t),block:t=>{var n;if(!e.setBlockers)return()=>{};const r=(null==(n=e.getBlockers)?void 0:n.call(e))??[];return e.setBlockers([...r,t]),()=>{var n,r;const o=(null==(n=e.getBlockers)?void 0:n.call(e))??[];null==(r=e.setBlockers)||r.call(e,o.filter(e=>e!==t))}},flush:()=>{var t;return null==(t=e.flush)?void 0:t.call(e)},destroy:()=>{var t;return null==(t=e.destroy)?void 0:t.call(e)},notify:r}}({getLocation:()=>d,getLength:()=>r.history.length,pushState:(e,t)=>x("push",e,t),replaceState:(e,t)=>x("replace",e,t),back:e=>(e&&(h=!0),m=!0,r.history.back()),forward:e=>{e&&(h=!0),m=!0,r.history.forward()},go:e=>{f=!0,r.history.go(e)},createHref:e=>l(e),flush:y,destroy:()=>{r.history.pushState=o,r.history.replaceState=a,r.removeEventListener(ot,S,{capture:!0}),r.removeEventListener(rt,w)},onBlocked:()=>{u&&d!==u&&(d=u)},getBlockers:s,setBlockers:e=>i=e,notifyOnIndexChange:!1});return r.addEventListener(ot,S,{capture:!0}),r.addEventListener(rt,w),r.history.pushState=function(...e){const t=o.apply(r.history,e);return k._ignoreSubscribers||b("PUSH"),t},r.history.replaceState=function(...e){const t=a.apply(r.history,e);return k._ignoreSubscribers||b("REPLACE"),t},k}function st(e,t){const n=function(e){let t=e.replace(/[\x00-\x1f\x7f]/g,"");return t.startsWith("//")&&(t="/"+t.replace(/^\/+/,"")),t}(e),r=n.indexOf("#"),o=n.indexOf("?"),a=lt();return{href:n,pathname:n.substring(0,r>0?o>0?Math.min(r,o):r:o>0?o:n.length),hash:r>-1?n.substring(r):"",search:o>-1?n.slice(o,-1===r?void 0:r):"",state:t||{[nt]:0,key:a,__TSR_key:a}}}function lt(){return(Math.random()+1).toString(36).substring(7)}function ct(e,t){const n=t,r=e;return{fromLocation:n,toLocation:r,pathChanged:(null==n?void 0:n.pathname)!==r.pathname,hrefChanged:(null==n?void 0:n.href)!==r.href,hashChanged:(null==n?void 0:n.hash)!==r.hash}}var ut=class{constructor(e,t){this.tempLocationKey=`${Math.round(1e7*Math.random())}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=e=>e(),this.update=e=>{var t;const n=this.options,r=this.basepath??(null==n?void 0:n.basepath)??"/",o=void 0===this.basepath,a=null==n?void 0:n.rewrite;if(this.options={...n,...e},this.isServer=this.options.isServer??"undefined"==typeof document,this.protocolAllowlist=new Set(this.options.protocolAllowlist),this.options.pathParamsAllowedCharacters&&(this.pathParamsDecoder=function(e){const t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=Array.from(t.keys()).map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),r=new RegExp(n,"g");return e=>e.replace(r,e=>t.get(e)??e)}(this.options.pathParamsAllowedCharacters)),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.history=it()),this.origin=this.options.origin,this.origin||((null==window?void 0:window.origin)&&"null"!==window.origin?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){let e;this.routeTree=this.options.routeTree,this.resolvePathCache=ee(1e3),e=this.buildRouteTree(),this.setRoutes(e)}if(!this.stores&&this.latestLocation){const e=this.getStoreConfig(this);this.batch=e.batch,this.stores=function(e,t){const{createMutableStore:n,createReadonlyStore:r,batch:o,init:a}=t,i=new Map,s=new Map,l=new Map,c=n(e.status),u=n(e.loadedAt),d=n(e.isLoading),f=n(e.isTransitioning),p=n(e.location),h=n(e.resolvedLocation),m=n(e.statusCode),g=n(e.redirect),v=n([]),y=n([]),x=n([]),b=r(()=>Te(i,v.get())),w=r(()=>Te(s,y.get())),S=r(()=>Te(l,x.get())),k=r(()=>v.get()[0]),C=r(()=>v.get().some(e=>{var t;return"pending"===(null==(t=i.get(e))?void 0:t.get().status)})),N=r(()=>{var e;return{locationHref:p.get().href,resolvedLocationHref:null==(e=h.get())?void 0:e.href,status:c.get()}}),j=r(()=>({status:c.get(),loadedAt:u.get(),isLoading:d.get(),isTransitioning:f.get(),matches:b.get(),location:p.get(),resolvedLocation:h.get(),statusCode:m.get(),redirect:g.get()})),_=ee(64),E={status:c,loadedAt:u,isLoading:d,isTransitioning:f,location:p,resolvedLocation:h,statusCode:m,redirect:g,matchesId:v,pendingIds:y,cachedIds:x,matches:b,pendingMatches:w,cachedMatches:S,firstId:k,hasPending:C,matchRouteDeps:N,matchStores:i,pendingMatchStores:s,cachedMatchStores:l,__store:j,getRouteMatchStore:function(e){let t=_.get(e);return t||(t=r(()=>{const t=v.get();for(const n of t){const t=i.get(n);if(t&&t.routeId===e)return t.get()}}),_.set(e,t)),t},setMatches:P,setPending:function(e){De(e,s,y,n,o)},setCached:function(e){De(e,l,x,n,o)}};function P(e){De(e,i,v,n,o)}return P(e.matches),null==a||a(E),E}({loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:this.latestLocation,matches:[],statusCode:200},e),function(e){if(!we)return;const t=we;if(e.options.scrollRestoration&&(e.isScrollRestoring=!0),e.isScrollRestorationSetup||!t)return;e.isScrollRestorationSetup=!0,Ce=!1;const n=e.options.getScrollRestorationKey||Se,r=new Map;window.history.scrollRestoration="manual";const o=n=>{var o;if(!e.isScrollRestoring||!n||0===r.size||!t)return;const a=(o=t.state)[n]||(o[n]={});for(const[e,t]of r){let n;if(e===Ne)n=Ne;else if(e.isConnected){const t=e.getAttribute(je);n=t?`[${je}="${t}"]`:ke(e)}n&&(a[n]=t)}};document.addEventListener("scroll",t=>{if(!Ce&&e.isScrollRestoring)if(t.target===document||t.target===window)r.set(Ne,{scrollX:window.scrollX||0,scrollY:window.scrollY||0});else{const e=t.target;r.set(e,{scrollX:e.scrollLeft||0,scrollY:e.scrollTop||0})}},!0),e.subscribe("onBeforeLoad",e=>{o(e.fromLocation?n(e.fromLocation):void 0),r.clear()}),window.addEventListener("pagehide",()=>{o(n(e.stores.resolvedLocation.get()??e.stores.location.get())),t.persist()}),e.subscribe("onRendered",o=>{var a;const i=n(o.toLocation),s=e.options.scrollRestorationBehavior,l=e.options.scrollToTopSelectors;if(r.clear(),e.resetNextScroll){if("function"!=typeof e.options.scrollRestoration||e.options.scrollRestoration({location:e.latestLocation})){Ce=!0;try{const n=e.isScrollRestoring?t.state[i]:void 0;let r=!1;if(n)for(const e in n){const t=n[e];if(!U(t))continue;const{scrollX:o,scrollY:a}=t;if(Number.isFinite(o)&&Number.isFinite(a))if(e===Ne)window.scrollTo({top:a,left:o,behavior:s}),r=!0;else if(e){let t;try{t=document.querySelector(e)}catch{continue}t&&(t.scrollLeft=o,t.scrollTop=a,r=!0)}}if(!r){const t=e.history.location.hash.slice(1);if(t){const e=(null==(a=window.history.state)?void 0:a.__hashScrollIntoViewOptions)??!0;if(e){const n=document.getElementById(t);n&&n.scrollIntoView(e)}}else{const e={top:0,left:0,behavior:s};if(window.scrollTo(e),l)for(const t of l){if(t===Ne)continue;const n="function"==typeof t?t():document.querySelector(t);n&&n.scrollTo(e)}}}}finally{Ce=!1}e.isScrollRestoring&&t.set(e=>(e[i]||(e[i]={}),e))}}else e.resetNextScroll=!0})}(this)}let i=!1;const s=this.options.basepath??"/",l=this.options.rewrite;if(o||r!==s||a!==l){this.basepath=s;const e=[],t=me(s);t&&"/"!==t&&e.push(function(e){const t=me(e.basepath),n=`/${t}`,r=`${n}/`,o=e.caseSensitive?n:n.toLowerCase(),a=e.caseSensitive?r:r.toLowerCase();return{input:({url:t})=>{const r=e.caseSensitive?t.pathname:t.pathname.toLowerCase();return r===o?t.pathname="/":r.startsWith(a)&&(t.pathname=t.pathname.slice(n.length)),t},output:({url:e})=>(e.pathname=de(["/",t,e.pathname]),e)}}({basepath:s})),l&&e.push(l),this.rewrite=0===e.length?void 0:1===e.length?e[0]:function(e){return{input:({url:t})=>{for(const n of e)t=Ae(n,t);return t},output:({url:t})=>{for(let n=e.length-1;n>=0;n--)t=Me(e[n],t);return t}}}(e),this.history&&this.updateLatestLocation(),i=!0}i&&this.stores&&this.stores.location.set(this.latestLocation),"undefined"!=typeof window&&"CSS"in window&&"function"==typeof(null==(t=window.CSS)?void 0:t.supports)&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const e=function(e,t=!1,n){const r=ae(e.fullPath),o=new Uint16Array(6),a={},i={};let s=0;return ne(t,o,e,1,r,0,e=>{if(null==n||n(e,s),e.id in a&&Z(),a[e.id]=e,0!==s&&e.path){const n="/"===(t=e.fullPath)?t:t.replace(/\/{1,}$/,"");i[n]&&!e.fullPath.endsWith("/")||(i[n]=e)}var t;s++}),oe(r),{processedTree:{segmentTree:r,singleCache:ee(1e3),matchCache:ee(1e3),flatCache:null,masksTree:null},routesById:a,routesByPath:i}}(this.routeTree,this.options.caseSensitive,(e,t)=>{e.init({originalIndex:t})});return this.options.routeMasks&&function(e,t){const n=ae("/"),r=new Uint16Array(6);for(const o of e)ne(!1,r,o,1,n,0);oe(n),t.masksTree=n,t.flatCache=ee(1e3)}(this.options.routeMasks,e.processedTree),e},this.subscribe=(e,t)=>{const n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{this.subscribers.forEach(t=>{t.eventType===e.type&&t.fn(e)})},this.parseLocation=(e,t)=>{const n=({pathname:e,search:n,hash:r,href:o,state:a})=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){const o=this.options.parseSearch(n),i=this.options.stringifySearch(o);return{href:e+i+r,publicHref:e+i+r,pathname:J(e).path,external:!1,searchStr:i,search:B(null==t?void 0:t.search,o),hash:J(r.slice(1)).path,state:$(null==t?void 0:t.state,a)}}const i=new URL(o,this.origin),s=Ae(this.rewrite,i),l=this.options.parseSearch(s.search),c=this.options.stringifySearch(l);return s.search=c,{href:s.href.replace(s.origin,""),publicHref:o,pathname:J(s.pathname).path,external:!!this.rewrite&&s.origin!==this.origin,searchStr:c,search:B(null==t?void 0:t.search,l),hash:J(s.hash.slice(1)).path,state:$(null==t?void 0:t.state,a)}},r=n(e),{__tempLocation:o,__tempKey:a}=r.state;if(o&&(!a||a===this.tempLocationKey)){const e=n(o);return e.state.key=r.state.key,e.state.__TSR_key=r.state.__TSR_key,delete e.state.__tempLocation,{...e,maskedLocation:r}}return r},this.resolvePathWithBase=(e,t)=>function({base:e,to:t,trailingSlash:n="never",cache:r}){const o=t.startsWith("/"),a=!o&&"."===t;let i,s,l;if(r){i=o?t:a?e:e+"\0"+t;const n=r.get(i);if(n)return n}if(a)s=e.split("/");else if(o)s=t.split("/");else{for(s=e.split("/");s.length>1&&""===T(s);)s.pop();const n=t.split("/");for(let e=0,t=n.length;e1&&(""===T(s)?"never"===n&&s.pop():"always"===n&&s.push(""));let c="";for(let d=0;d0&&(c+="/");const e=s[d];if(!e)continue;l=te(e,0,l);const t=l[0];if(0===t){c+=e;continue}const n=l[5],r=e.substring(0,l[1]),o=e.substring(l[4],n),a=e.substring(l[2],l[3]);c+=1===t?r||o?`${r}{$${a}}${o}`:`$${a}`:2===t?r||o?`${r}{$}${o}`:"$":`${r}{-$${a}}${o}`}c=fe(c);const u=c||"/";return i&&r&&r.set(i,u),u}({base:e,to:fe(t),trailingSlash:this.options.trailingSlash,cache:this.resolvePathCache}),this.matchRoutes=(e,t,n)=>"string"==typeof e?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>function({pathname:e,routesById:t,processedTree:n}){const r=Object.create(null),o=he(e);let a,i;const s=function(e,t,n=!1){const r=n?e:`nofuzz\0${e}`,o=t.matchCache.get(r);if(void 0!==o)return o;let a;e||(e="/");try{a=se(e,t.segmentTree,n)}catch(i){if(!(i instanceof URIError))throw i;a=null}return a&&(a.branch=function(e){const t=[e];for(;e.parentRoute;)e=e.parentRoute,t.push(e);return t.reverse(),t}(a.route)),t.matchCache.set(r,a),a}(o,n,!0);s&&(a=s.route,Object.assign(r,s.rawParams),i=Object.assign(Object.create(null),s.parsedParams));return{matchedRoutes:(null==s?void 0:s.branch)||[t.__root__],routeParams:r,foundRoute:a,parsedParams:i}}({pathname:e,routesById:this.routesById,processedTree:this.processedTree}),this.cancelMatch=e=>{const t=this.getMatch(e);t&&(t.abortController.abort(),clearTimeout(t._nonReactive.pendingTimeout),t._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{this.stores.pendingIds.get().forEach(e=>{this.cancelMatch(e)}),this.stores.matchesId.get().forEach(e=>{var t;if(this.stores.pendingMatchStores.has(e))return;const n=null==(t=this.stores.matchStores.get(e))?void 0:t.get();n&&("pending"!==n.status&&"loader"!==n.isFetching||this.cancelMatch(e))})},this.buildLocation=e=>{const t=(t={})=>{var n,r;const o=t._fromLocation||this.pendingBuiltLocation||this.latestLocation,a=this.matchRoutesLightweight(o);t.from;const i="path"===t.unsafeRelative?o.pathname:t.from??a.fullPath,s=this.resolvePathWithBase(i,"."),l=a.search,c=Object.assign(Object.create(null),a.params),u=t.to?this.resolvePathWithBase(s,`${t.to}`):this.resolvePathWithBase(s,"."),d=!1===t.params||null===t.params?Object.create(null):!0===(t.params??!0)?c:Object.assign(c,D(t.params,c)),f=this.getMatchedRoutes(u);let p=f.matchedRoutes;if((!f.foundRoute||"/"!==f.foundRoute.path&&f.routeParams["**"])&&this.options.notFoundRoute&&(p=[...p,this.options.notFoundRoute]),Object.keys(d).length>0)for(const e of p){const t=(null==(n=e.options.params)?void 0:n.stringify)??e.options.stringifyParams;if(t)try{Object.assign(d,t(d))}catch{}}const h=e.leaveParams?u:J(ye({path:u,params:d,decoder:this.pathParamsDecoder,server:this.isServer}).interpolatedPath).path;let m=l;if(e._includeValidateSearch&&(null==(r=this.options.search)?void 0:r.strict)){const e={};p.forEach(t=>{if(t.options.validateSearch)try{Object.assign(e,pt(t.options.validateSearch,{...e,...m}))}catch{}}),m=e}m=function({search:e,dest:t,destRoutes:n,_includeValidateSearch:r}){return function(e){var t;const n={dest:null,_includeValidateSearch:!1,middlewares:[]};for(const a of e){if("search"in a.options)(null==(t=a.options.search)?void 0:t.middlewares)&&n.middlewares.push(...a.options.search.middlewares);else if(a.options.preSearchFilters||a.options.postSearchFilters){const e=({search:e,next:t})=>{let n=e;"preSearchFilters"in a.options&&a.options.preSearchFilters&&(n=a.options.preSearchFilters.reduce((e,t)=>t(e),e));const r=t(n);return"postSearchFilters"in a.options&&a.options.postSearchFilters?a.options.postSearchFilters.reduce((e,t)=>t(e),r):r};n.middlewares.push(e)}if(a.options.validateSearch){const e=({search:e,next:t})=>{const r=t(e);if(!n._includeValidateSearch)return r;try{return{...r,...pt(a.options.validateSearch,r)??void 0}}catch{return r}};n.middlewares.push(e)}}const r=({search:e})=>{const t=n.dest;return t.search?!0===t.search?e:D(t.search,e):{}};n.middlewares.push(r);const o=(e,t,n)=>{if(e>=n.length)return t;return(0,n[e])({search:t,next:t=>o(e+1,t,n)})};return function(e,t,r){return n.dest=t,n._includeValidateSearch=r,o(0,e,n.middlewares)}}(n)(e,t,r??!1)}({search:m,dest:t,destRoutes:p,_includeValidateSearch:e._includeValidateSearch}),m=B(l,m);const g=this.options.stringifySearch(m),v=!0===t.hash?o.hash:t.hash?D(t.hash,o.hash):void 0,y=v?`#${v}`:"";let x=!0===t.state?o.state:t.state?D(t.state,o.state):{};x=$(o.state,x);const b=`${h}${g}${y}`;let w,S,k=!1;if(this.rewrite){const e=new URL(b,this.origin),t=Me(this.rewrite,e);w=e.href.replace(e.origin,""),t.origin!==this.origin?(S=t.href,k=!0):S=t.pathname+t.search+t.hash}else w=/\s|[^\u0000-\u007F]/.test(C=b)?C.replace(/\s|[^\u0000-\u007F]/gu,encodeURIComponent):C,S=w;var C;return{publicHref:S,href:w,pathname:h,search:m,searchStr:g,state:x,hash:v??"",external:k,unmaskOnReload:t.unmaskOnReload}},n=(n={},r)=>{const o=t(n);let a=r?t(r):void 0;if(!a){const n=Object.create(null);if(this.options.routeMasks){const i=function(e,t){e||(e="/");const n=t.flatCache.get(e);if(n)return n;const r=se(e,t.masksTree);return t.flatCache.set(e,r),r}(o.pathname,this.processedTree);if(i){Object.assign(n,i.rawParams);const{from:o,params:s,...l}=i.route,c=!1===s||null===s?Object.create(null):!0===(s??!0)?n:Object.assign(n,D(s,n));r={from:e.from,...l,params:c},a=t(r)}}}return a&&(o.maskedLocation=a),o};return e.mask?n(e,{from:e.from,...e.mask}):n(e)},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{const r=he(this.latestLocation.href)===he(n.href);let o=this.commitLocationPromise;if(this.commitLocationPromise=q(()=>{null==o||o.resolve(),o=void 0}),r&&(()=>{const e=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];e.forEach(e=>{n.state[e]=this.latestLocation.state[e]});const t=K(n.state,this.latestLocation.state);return e.forEach(e=>{delete n.state[e]}),t})())this.load();else{let{maskedLocation:r,hashScrollIntoView:o,...a}=n;r&&(a={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...a,search:a.searchStr,state:{...a.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(a.unmaskOnReload??this.options.unmaskOnReload)&&(a.state.__tempKey=this.tempLocationKey)),a.state.__hashScrollIntoViewOptions=o??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,this.history[n.replace?"replace":"push"](a.publicHref,a.state,{ignoreBlocker:t})}return this.resetNextScroll=n.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:o,href:a,...i}={})=>{if(a){const t=this.history.location.state.__TSR_index,n=st(a,{__TSR_index:e?t:t+1}),r=new URL(n.pathname,this.origin);i.to=Ae(this.rewrite,r).pathname,i.search=this.options.parseSearch(n.search),i.hash=n.hash.slice(1)}const s=this.buildLocation({...i,_includeValidateSearch:!0});this.pendingBuiltLocation=s;const l=this.commitLocation({...s,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:o});return Promise.resolve().then(()=>{this.pendingBuiltLocation===s&&(this.pendingBuiltLocation=void 0)}),l},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...o})=>{var a,i;let s=!1;if(n)try{new URL(`${n}`),s=!0}catch{}if(s&&!t&&(t=!0),t){if(void 0!==e||!n){const t=this.buildLocation({to:e,...o});n=n??t.publicHref,r=r??t.publicHref}const t=!s&&r?r:n;if(X(t,this.protocolAllowlist))return Promise.resolve();if(!o.ignoreBlocker){const e=(null==(i=(a=this.history).getBlockers)?void 0:i.call(a))??[];for(const t of e)if((null==t?void 0:t.blockerFn)&&await t.blockerFn({currentLocation:this.latestLocation,nextLocation:this.latestLocation,action:"PUSH"}))return Promise.resolve()}return o.replace?window.location.replace(t):window.location.href=t,Promise.resolve()}return this.buildAndCommitLocation({...o,href:n,to:e,_isNavigate:!0})},this.beforeLoad=()=>{this.cancelMatches(),this.updateLatestLocation();const e=this.matchRoutes(this.latestLocation),t=this.stores.cachedMatches.get().filter(t=>!e.some(e=>e.id===t.id));this.batch(()=>{this.stores.status.set("pending"),this.stores.statusCode.set(200),this.stores.isLoading.set(!0),this.stores.location.set(this.latestLocation),this.stores.setPending(e),this.stores.setCached(t)})},this.load=async e=>{let t,n,r;const o=this.stores.resolvedLocation.get()??this.stores.location.get();for(r=new Promise(a=>{this.startTransition(async()=>{var i;try{this.beforeLoad();const t=this.latestLocation,n=ct(t,this.stores.resolvedLocation.get());this.stores.redirect.get()||this.emit({type:"onBeforeNavigate",...n}),this.emit({type:"onBeforeLoad",...n}),await Xe({router:this,sync:null==e?void 0:e.sync,forceStaleReload:o.href===t.href,matches:this.stores.pendingMatches.get(),location:t,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{var e,t;let n=null,r=null,o=null,a=null;this.batch(()=>{const e=this.stores.pendingMatches.get(),t=e.length,i=this.stores.matches.get();n=t?i.filter(e=>!this.stores.pendingMatchStores.has(e.id)):null;const s=new Set;for(const n of this.stores.pendingMatchStores.values())n.routeId&&s.add(n.routeId);const l=new Set;for(const n of this.stores.matchStores.values())n.routeId&&l.add(n.routeId);r=t?i.filter(e=>!s.has(e.routeId)):null,o=t?e.filter(e=>!l.has(e.routeId)):null,a=t?e.filter(e=>l.has(e.routeId)):i,this.stores.isLoading.set(!1),this.stores.loadedAt.set(Date.now()),t&&(this.stores.setMatches(e),this.stores.setPending([]),this.stores.setCached([...this.stores.cachedMatches.get(),...n.filter(e=>"error"!==e.status&&"notFound"!==e.status&&"redirected"!==e.status)]),this.clearExpiredCache())});for(const[i,s]of[[r,"onLeave"],[o,"onEnter"],[a,"onStay"]])if(i)for(const n of i)null==(t=(e=this.looseRoutesById[n.routeId].options)[s])||t.call(e,n)})})}})}catch(s){Fe(s)?(t=s,this.navigate({...t.options,replace:!0,ignoreBlocker:!0})):be(s)&&(n=s);const e=t?t.status:n?404:this.stores.matches.get().some(e=>"error"===e.status)?500:200;this.batch(()=>{this.stores.statusCode.set(e),this.stores.redirect.set(t)})}this.latestLoadPromise===r&&(null==(i=this.commitLocationPromise)||i.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),a()})}),this.latestLoadPromise=r,await r;this.latestLoadPromise&&r!==this.latestLoadPromise;)await this.latestLoadPromise;let a;this.hasNotFoundMatch()?a=404:this.stores.matches.get().some(e=>"error"===e.status)&&(a=500),void 0!==a&&this.stores.statusCode.set(a)},this.startViewTransition=e=>{const t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&"undefined"!=typeof document&&"startViewTransition"in document&&"function"==typeof document.startViewTransition){let n;if("object"==typeof t&&this.isViewTransitionTypesSupported){const r=this.latestLocation,o=this.stores.resolvedLocation.get(),a="function"==typeof t.types?t.types(ct(r,o)):t.types;if(!1===a)return void e();n={update:e,types:a}}else n=e;document.startViewTransition(n)}else e()},this.updateMatch=(e,t)=>{this.startTransition(()=>{const n=this.stores.pendingMatchStores.get(e);if(n)return void n.set(t);const r=this.stores.matchStores.get(e);if(r)return void r.set(t);const o=this.stores.cachedMatchStores.get(e);if(o){const n=t(o.get());"redirected"===n.status?this.stores.cachedMatchStores.delete(e)&&this.stores.cachedIds.set(t=>t.filter(t=>t!==e)):o.set(n)}})},this.getMatch=e=>{var t,n,r;return(null==(t=this.stores.cachedMatchStores.get(e))?void 0:t.get())??(null==(n=this.stores.pendingMatchStores.get(e))?void 0:n.get())??(null==(r=this.stores.matchStores.get(e))?void 0:r.get())},this.invalidate=e=>{const t=t=>{var n;return(null==(n=null==e?void 0:e.filter)?void 0:n.call(e,t))??1?{...t,invalid:!0,...(null==e?void 0:e.forcePending)||"error"===t.status||"notFound"===t.status?{status:"pending",error:void 0}:void 0}:t};return this.batch(()=>{this.stores.setMatches(this.stores.matches.get().map(t)),this.stores.setCached(this.stores.cachedMatches.get().map(t)),this.stores.setPending(this.stores.pendingMatches.get().map(t))}),this.shouldViewTransition=!1,this.load({sync:null==e?void 0:e.sync})},this.getParsedLocationHref=e=>e.publicHref||"/",this.resolveRedirect=e=>{const t=e.headers.get("Location");if(!e.options.href||e.options._builtLocation){const t=e.options._builtLocation??this.buildLocation(e.options),n=this.getParsedLocationHref(t);e.options.href=n,e.headers.set("Location",n)}else if(t)try{const n=new URL(t);if(this.origin&&n.origin===this.origin){const t=n.pathname+n.search+n.hash;e.options.href=t,e.headers.set("Location",t)}}catch{}if(e.options.href&&!e.options._builtLocation&&X(e.options.href,this.protocolAllowlist))throw new Error("Redirect blocked: unsafe protocol");return e.headers.get("Location")||e.headers.set("Location",e.options.href),e},this.clearCache=e=>{const t=null==e?void 0:e.filter;void 0!==t?this.stores.setCached(this.stores.cachedMatches.get().filter(e=>!t(e))):this.stores.setCached([])},this.clearExpiredCache=()=>{const e=Date.now();this.clearCache({filter:t=>{const n=this.looseRoutesById[t.routeId];if(!n.options.loader)return!0;const r=(t.preload?n.options.preloadGcTime??this.options.defaultPreloadGcTime:n.options.gcTime??this.options.defaultGcTime)??3e5;return"error"===t.status||e-t.updatedAt>=r}})},this.loadRouteChunk=Ze,this.preloadRoute=async e=>{const t=e._builtLocation??this.buildLocation(e);let n=this.matchRoutes(t,{throwOnError:!0,preload:!0,dest:e});const r=new Set([...this.stores.matchesId.get(),...this.stores.pendingIds.get()]),o=new Set([...r,...this.stores.cachedIds.get()]),a=n.filter(e=>!o.has(e.id));if(a.length){const e=this.stores.cachedMatches.get();this.stores.setCached([...e,...a])}try{return n=await Xe({router:this,matches:n,location:t,preload:!0,updateMatch:(e,t)=>{r.has(e)?n=n.map(n=>n.id===e?t(n):n):this.updateMatch(e,t)}}),n}catch(i){if(Fe(i)){if(i.options.reloadDocument)return;return await this.preloadRoute({...i.options,_fromLocation:t})}return void(be(i)||console.error(i))}},this.matchRoute=(e,t)=>{const n={...e,to:e.to?this.resolvePathWithBase(e.from||"",e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n);if((null==t?void 0:t.pending)&&"pending"!==this.stores.status.get())return!1;const o=(void 0===(null==t?void 0:t.pending)?!this.stores.isLoading.get():t.pending)?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),a=function(e,t,n,r,o){e||(e="/"),r||(r="/");const a=t?`case\0${e}`:e;let i=o.singleCache.get(a);return i||(i=ae("/"),ne(t,new Uint16Array(6),{from:e},1,i,0),o.singleCache.set(a,i)),se(r,i,n)}(r.pathname,(null==t?void 0:t.caseSensitive)??!1,(null==t?void 0:t.fuzzy)??!1,o.pathname,this.processedTree);return!!a&&(!(e.params&&!K(a.rawParams,e.params,{partial:!0}))&&((null==t?void 0:t.includeSearch)??1?!!K(o.search,r.search,{partial:!0})&&a.rawParams:a.rawParams))},this.hasNotFoundMatch=()=>this.stores.matches.get().some(e=>"notFound"===e.status||e.globalNotFound),this.getStoreConfig=t,this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??"fuzzy",stringifySearch:e.stringifySearch??Re,parseSearch:e.parseSearch??Pe,protocolAllowlist:e.protocolAllowlist??Y}),"undefined"!=typeof document&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.stores.__store.get()}setRoutes({routesById:e,routesByPath:t,processedTree:n}){this.routesById=e,this.routesByPath=t,this.processedTree=n;const r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)}get looseRoutesById(){return this.routesById}getParentContext(e){return(null==e?void 0:e.id)?e.context??this.options.context??void 0:this.options.context??void 0}matchRoutesInternal(e,t){var n,r;const o=this.getMatchedRoutes(e.pathname),{foundRoute:a,routeParams:i,parsedParams:s}=o;let{matchedRoutes:l}=o,c=!1;(a?"/"!==a.path&&i["**"]:he(e.pathname))&&(this.options.notFoundRoute?l=[...l,this.options.notFoundRoute]:c=!0);const u=c?function(e,t){if("root"!==e)for(let n=t.length-1;n>=0;n--){const e=t[n];if(e.children)return e.id}return Le}(this.options.notFoundMode,l):void 0,d=new Array(l.length),f=new Map;for(const h of this.stores.matchStores.values())h.routeId&&f.set(h.routeId,h.get());for(let h=0;hthis.navigate({...t,_fromLocation:e}),buildLocation:this.buildLocation,cause:t.cause,abortController:t.abortController,preload:!!t.preload,matches:d,routeId:n.id};t.__routeContext=n.options.context(r)??void 0}t.context={...o,...t.__routeContext,...t.__beforeLoadContext}}}return d}matchRoutesLightweight(e){var t;const{matchedRoutes:n,routeParams:r,parsedParams:o}=this.getMatchedRoutes(e.pathname),a=T(n),i={...e.search};for(const u of n)try{Object.assign(i,pt(u.options.validateSearch,i))}catch{}const s=T(this.stores.matchesId.get()),l=s&&(null==(t=this.stores.matchStores.get(s))?void 0:t.get());let c;if(l&&l.routeId===a.id&&l.pathname===e.pathname)c=l.params;else{const e=Object.assign(Object.create(null),r);for(const t of n)try{ht(t,r,o??{},e)}catch{}c=e}return{matchedRoutes:n,fullPath:a.fullPath,search:i,params:c}}},dt=class extends Error{},ft=class extends Error{};function pt(e,t){if(null==e)return{};if("~standard"in e){const n=e["~standard"].validate(t);if(n instanceof Promise)throw new dt("Async validation not supported");if(n.issues)throw new dt(JSON.stringify(n.issues,void 0,2),{cause:n});return n.value}return"parse"in e?e.parse(t):"function"==typeof e?e(t):{}}function ht(e,t,n,r){var o;const a=(null==(o=e.options.params)?void 0:o.parse)??e.options.parseParams;if(a)if(e.options.skipRouteOnParseError)for(const i in t)i in n&&(r[i]=n[i]);else{const e=a(r);Object.assign(r,e)}}var mt=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{var t,n;this.originalIndex=e.originalIndex;const r=this.options,o=!(null==r?void 0:r.path)&&!(null==r?void 0:r.id);this.parentRoute=null==(n=(t=this.options).getParentRoute)?void 0:n.call(t),o?this._path=Le:this.parentRoute||Z();let a=o?Le:null==r?void 0:r.path;a&&"/"!==a&&(a=pe(a));const i=(null==r?void 0:r.id)||a;let s=o?Le:de(["__root__"===this.parentRoute.id?"":this.parentRoute.id,i]);"__root__"===a&&(a="/"),"__root__"!==s&&(s=de(["/",s]));const l="__root__"===s?"/":de([this.parentRoute.fullPath,a]);this._path=a,this._id=s,this._fullPath=l,this._to=he(l)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),"object"==typeof e&&null!==e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>function(e){if(e.statusCode=e.statusCode||e.code||307,!e._builtLocation&&!e.reloadDocument&&"string"==typeof e.href)try{new URL(e.href),e.reloadDocument=!0}catch{}const t=new Headers(e.headers);e.href&&null===t.get("Location")&&t.set("Location",e.href);const n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!(null==e?void 0:e.getParentRoute),(null==e?void 0:e.id)&&(null==e?void 0:e.path))throw new Error("Route cannot have both an 'id' and a 'path' option.")}},gt=class extends mt{constructor(e){super(e)}};function vt(e){const t=e.errorComponent??xt;return l.jsx(yt,{getResetKey:e.getResetKey,onCatch:e.onCatch,children:({error:n,reset:r})=>n?p.createElement(t,{error:n,reset:r}):e.children})}var yt=class extends p.Component{constructor(...e){super(...e),this.state={error:null}}static getDerivedStateFromProps(e,t){const n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:null}:{resetKey:n}}static getDerivedStateFromError(e){return{error:e}}reset(){this.setState({error:null})}componentDidCatch(e,t){this.props.onCatch&&this.props.onCatch(e,t)}render(){return this.props.children({error:this.state.error,reset:()=>{this.reset()}})}};function xt({error:e}){const[t,n]=p.useState(!1);return l.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[l.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[l.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),l.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>n(e=>!e),children:t?"Hide Error":"Show Error"})]}),l.jsx("div",{style:{height:".25rem"}}),t?l.jsx("div",{children:l.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:e.message?l.jsx("code",{children:e.message}):null})}):null]})}function bt({children:e,fallback:t=null}){return wt()?l.jsx(h.Fragment,{children:e}):l.jsx(h.Fragment,{children:t})}function wt(){return h.useSyncExternalStore(St,()=>!0,()=>!1)}function St(){return()=>{}}var kt=p.createContext(null);function Ct(e){return p.useContext(kt)}var Nt=p.createContext(void 0),jt=p.createContext(void 0),_t=(e=>(e[e.None=0]="None",e[e.Mutable=1]="Mutable",e[e.Watching=2]="Watching",e[e.RecursedCheck=4]="RecursedCheck",e[e.Recursed=8]="Recursed",e[e.Dirty=16]="Dirty",e[e.Pending=32]="Pending",e))(_t||{});function Et({update:e,notify:t,unwatched:n}){return{link:function(e,t,n){const r=t.depsTail;if(void 0!==r&&r.dep===e)return;const o=void 0!==r?r.nextDep:t.deps;if(void 0!==o&&o.dep===e)return o.version=n,void(t.depsTail=o);const a=e.subsTail;if(void 0!==a&&a.version===n&&a.sub===t)return;const i=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:o,prevSub:a,nextSub:void 0};void 0!==o&&(o.prevDep=i);void 0!==r?r.nextDep=i:t.deps=i;void 0!==a?a.nextSub=i:e.subs=i},unlink:function(e,t=e.sub){const r=e.dep,o=e.prevDep,a=e.nextDep,i=e.nextSub,s=e.prevSub;void 0!==a?a.prevDep=o:t.depsTail=o;void 0!==o?o.nextDep=a:t.deps=a;void 0!==i?i.prevSub=s:r.subsTail=s;void 0!==s?s.nextSub=i:void 0===(r.subs=i)&&n(r);return a},propagate:function(e){let n,r=e.nextSub;e:for(;;){const a=e.sub;let i=a.flags;if(60&i?12&i?4&i?48&i||!o(e,a)?i=0:(a.flags=40|i,i&=1):a.flags=-9&i|32:i=0:a.flags=32|i,2&i&&t(a),1&i){const t=a.subs;if(void 0!==t){const o=(e=t).nextSub;void 0!==o&&(n={value:r,prev:n},r=o);continue}}if(void 0===(e=r)){for(;void 0!==n;)if(e=n.value,n=n.prev,void 0!==e){r=e.nextSub;continue e}break}r=e.nextSub}},checkDirty:function(t,n){let o,a=0,i=!1;e:for(;;){const s=t.dep,l=s.flags;if(16&n.flags)i=!0;else if(17&~l){if(!(33&~l)){void 0===t.nextSub&&void 0===t.prevSub||(o={value:t,prev:o}),t=s.deps,n=s,++a;continue}}else if(e(s)){const e=s.subs;void 0!==e.nextSub&&r(e),i=!0}if(!i){const e=t.nextDep;if(void 0!==e){t=e;continue}}for(;a--;){const a=n.subs,s=void 0!==a.nextSub;if(s?(t=o.value,o=o.prev):t=a,i){if(e(n)){s&&r(a),n=t.sub;continue}i=!1}else n.flags&=-33;n=t.sub;const l=t.nextDep;if(void 0!==l){t=l;continue e}}return i}},shallowPropagate:r};function r(e){do{const n=e.sub,r=n.flags;32==(48&r)&&(n.flags=16|r,2==(6&r)&&t(n))}while(void 0!==(e=e.nextSub))}function o(e,t){let n=t.depsTail;for(;void 0!==n;){if(n===e)return!0;n=n.prevDep}return!1}}const Pt=[];let Rt=0;const{link:Lt,unlink:Ft,propagate:At,checkDirty:Mt,shallowPropagate:Tt}=Et({update:e=>e._update(),notify(e){Pt[It++]=e,e.flags&=~_t.Watching},unwatched(e){void 0!==e.depsTail&&(e.depsTail=void 0,e.flags=_t.Mutable|_t.Dirty,$t(e))}});let Dt,Ot=0,It=0,zt=0;function Bt(e){try{++zt,e()}finally{--zt||Wt()}}function $t(e){const t=e.depsTail;let n=void 0!==t?t.nextDep:e.deps;for(;void 0!==n;)n=Ft(n,e)}function Wt(){if(!(zt>0)){for(;Ot(void 0!==Dt&&Lt(o,Dt,Rt),o._snapshot),subscribe(e){const t=function(e,t,n){var r,o,a;const i="object"==typeof e,s=i?e:void 0;return{next:null==(r=i?e.next:e)?void 0:r.bind(s),error:null==(o=i?e.error:t)?void 0:o.bind(s),complete:null==(a=i?e.complete:n)?void 0:a.bind(s)}}(e),n={current:!1},r=function(e){const t=()=>{const t=Dt;Dt=n,++Rt,n.depsTail=void 0,n.flags=_t.Watching|_t.RecursedCheck;try{return e()}finally{Dt=t,n.flags&=~_t.RecursedCheck,$t(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:_t.Watching|_t.RecursedCheck,notify(){const e=this.flags;e&_t.Dirty||e&_t.Pending&&Mt(this.deps,this)?t():this.flags=_t.Watching},stop(){this.flags=_t.None,this.depsTail=void 0,$t(this)}};return t(),n}(()=>{var e;o.get(),n.current?null==(e=t.next)||e.call(t,o._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){const a=Dt,i=(null==t?void 0:t.compare)??Object.is;if(n)Dt=o,++Rt,o.depsTail=void 0;else if(void 0===e)return!1;n&&(o.flags=_t.Mutable|_t.RecursedCheck);try{const t=o._snapshot,a="function"==typeof e?e(t):void 0===e&&n?r(t):e;return(void 0===t||!i(t,a))&&(o._snapshot=a,!0)}finally{Dt=a,n&&(o.flags&=~_t.RecursedCheck),$t(o)}}};return n?(o.flags=_t.Mutable|_t.Dirty,o.get=function(){const e=o.flags;if(e&_t.Dirty||e&_t.Pending&&Mt(o.deps,o)){if(o._update()){const e=o.subs;void 0!==e&&Tt(e)}}else e&_t.Pending&&(o.flags=e&~_t.Pending);return void 0!==Dt&&Lt(o,Dt,Rt),o._snapshot}):o.set=function(e){if(o._update(e)){const e=o.subs;void 0!==e&&(At(e),Tt(e),Wt())}},o}var Vt,Ht,Kt,qt,Gt={exports:{}},Qt={},Yt={exports:{}},Xt={};function Jt(){return Ht||(Ht=1,Yt.exports=function(){if(Vt)return Xt;Vt=1;var e=f(),t="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useState,r=e.useEffect,o=e.useLayoutEffect,a=e.useDebugValue;function i(e){var n=e.getSnapshot;e=e.value;try{var r=n();return!t(e,r)}catch(o){return!0}}var s="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var s=t(),l=n({inst:{value:s,getSnapshot:t}}),c=l[0].inst,u=l[1];return o(function(){c.value=s,c.getSnapshot=t,i(c)&&u({inst:c})},[e,s,t]),r(function(){return i(c)&&u({inst:c}),e(function(){i(c)&&u({inst:c})})},[e]),a(s),s};return Xt.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:s,Xt}()),Yt.exports} +/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Zt=(qt||(qt=1,Gt.exports=function(){if(Kt)return Qt;Kt=1;var e=f(),t=Jt(),n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},r=t.useSyncExternalStore,o=e.useRef,a=e.useEffect,i=e.useMemo,s=e.useDebugValue;return Qt.useSyncExternalStoreWithSelector=function(e,t,l,c,u){var d=o(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=i(function(){function e(e){if(!a){if(a=!0,r=e,e=c(e),void 0!==u&&f.hasValue){var t=f.value;if(u(t,e))return o=t}return o=e}if(t=o,n(r,e))return t;var i=c(e);return void 0!==u&&u(t,i)?(r=e,t):(r=e,o=i)}var r,o,a=!1,i=void 0===l?null:l;return[function(){return e(t())},null===i?void 0:function(){return e(i())}]},[t,l,c,u]);var p=r(e,d[0],d[1]);return a(function(){f.hasValue=!0,f.value=p},[p]),s(p),p},Qt}()),Gt.exports);function en(e,t){return e===t}function tn(e,t,n=en){const r=p.useCallback(t=>{if(!e)return()=>{};const{unsubscribe:n}=e.subscribe(t);return n},[e]),o=p.useCallback(()=>null==e?void 0:e.get(),[e]);return Zt.useSyncExternalStoreWithSelector(r,o,o,t,n)}var nn={get:()=>{},subscribe:()=>({unsubscribe:()=>{}})};function rn(e){const t=Ct(),n=p.useContext(e.from?jt:Nt),r=e.from??n,o=r?e.from?t.stores.getRouteMatchStore(r):t.stores.matchStores.get(r):void 0,a=p.useRef(void 0);return tn(o??nn,n=>{if((e.shouldThrow??1)&&!n&&Z(),void 0===n)return;const r=e.select?e.select(n):n;if(e.structuralSharing??t.options.defaultStructuralSharing){const e=$(a.current,r);return a.current=e,e}return r})}function on(e){return rn({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function an(e){const{select:t,...n}=e;return rn({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function sn(e){return rn({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{const n=!1===e.strict?t.params:t._strictParams;return e.select?e.select(n):n}})}function ln(e){return rn({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function cn(e){const t=Ct();return p.useCallback(n=>t.navigate({...n,from:n.from??(null==e?void 0:e.from)}),[null==e?void 0:e.from,t])}function un(e){return rn({...e,select:t=>e.select?e.select(t.context):t.context})}var dn=R();const fn=t(dn);function pn(e,t){const n=Ct(),r=function(e){const t=p.useRef(null);return p.useImperativeHandle(e,()=>t.current,[]),t}(t),{activeProps:o,inactiveProps:a,activeOptions:i,to:s,preload:l,preloadDelay:c,preloadIntentProximity:u,hashScrollIntoView:d,replace:f,startTransition:h,resetScroll:m,viewTransition:g,children:v,target:y,disabled:x,style:b,className:w,onClick:S,onBlur:k,onFocus:C,onMouseEnter:N,onMouseLeave:j,onTouchStart:_,ignoreBlocker:E,params:P,search:R,hash:L,state:F,mask:A,reloadDocument:M,unsafeRelative:T,from:O,_fromLocation:I,...z}=e,B=wt(),$=p.useMemo(()=>e,[n,e.from,e._fromLocation,e.hash,e.to,e.search,e.params,e.state,e.mask,e.unsafeRelative]),W=tn(n.stores.location,e=>e,(e,t)=>e.href===t.href),U=p.useMemo(()=>{const e={_fromLocation:W,...$};return n.buildLocation(e)},[n,W,$]),V=U.maskedLocation?U.maskedLocation.publicHref:U.publicHref,H=U.maskedLocation?U.maskedLocation.external:U.external,q=p.useMemo(()=>function(e,t,n,r){return r?void 0:t?{href:e,external:!0}:{href:n.createHref(e)||"/",external:!1}}(V,H,n.history,x),[x,H,V,n.history]),G=p.useMemo(()=>{if(null==q?void 0:q.external){if(X(q.href,n.protocolAllowlist))return;return q.href}if(!function(e){if("string"!=typeof e)return!1;const t=e.charCodeAt(0);return 47===t?47!==e.charCodeAt(1):46===t}(s)&&"string"==typeof s&&-1!==s.indexOf(":"))try{return new URL(s),X(s,n.protocolAllowlist)?void 0:s}catch{}},[s,q,n.protocolAllowlist]),Q=p.useMemo(()=>{if(G)return!1;if(null==i?void 0:i.exact){if(e=W.pathname,t=U.pathname,r=n.basepath,ge(e,r)!==ge(t,r))return!1}else{const e=ge(W.pathname,n.basepath),t=ge(U.pathname,n.basepath);if(!e.startsWith(t)||e.length!==t.length&&"/"!==e[t.length])return!1}var e,t,r;return!(((null==i?void 0:i.includeSearch)??1)&&!K(W.search,U.search,{partial:!(null==i?void 0:i.exact),ignoreUndefined:!(null==i?void 0:i.explicitUndefined)}))&&(!(null==i?void 0:i.includeHash)||B&&W.hash===U.hash)},[null==i?void 0:i.exact,null==i?void 0:i.explicitUndefined,null==i?void 0:i.includeHash,null==i?void 0:i.includeSearch,W,G,B,U.hash,U.pathname,U.search,n.basepath]),Y=Q?D(o,{})??mn:hn,J=Q?hn:D(a,{})??hn,Z=[w,Y.className,J.className].filter(Boolean).join(" "),ee=(b||Y.style||J.style)&&{...b,...Y.style,...J.style},[te,ne]=p.useState(!1),re=p.useRef(!1),oe=!e.reloadDocument&&!G&&(l??n.options.defaultPreload),ae=c??n.options.defaultPreloadDelay??0,ie=p.useCallback(()=>{n.preloadRoute({...$,_builtLocation:U}).catch(e=>{console.warn(e),console.warn("Error preloading route! ☝️")})},[n,$,U]);!function(e,t,n={},r={}){p.useEffect(()=>{if(!e.current||r.disabled||"function"!=typeof IntersectionObserver)return;const o=new IntersectionObserver(([e])=>{t(e)},n);return o.observe(e.current),()=>{o.disconnect()}},[t,n,r.disabled,e])}(r,p.useCallback(e=>{(null==e?void 0:e.isIntersecting)&&ie()},[ie]),bn,{disabled:!(!x&&"viewport"===oe)}),p.useEffect(()=>{re.current||x||"render"!==oe||(ie(),re.current=!0)},[x,ie,oe]);if(G)return{...z,ref:r,href:G,...v&&{children:v},...y&&{target:y},...x&&{disabled:x},...b&&{style:b},...w&&{className:w},...S&&{onClick:S},...k&&{onBlur:k},...C&&{onFocus:C},...N&&{onMouseEnter:N},...j&&{onMouseLeave:j},..._&&{onTouchStart:_}};const se=e=>{if(x||"intent"!==oe)return;if(!ae)return void ie();const t=e.currentTarget;if(xn.has(t))return;const n=setTimeout(()=>{xn.delete(t),ie()},ae);xn.set(t,n)},le=e=>{if(x||!oe||!ae)return;const t=e.currentTarget,n=xn.get(t);n&&(clearTimeout(n),xn.delete(t))};return{...z,...Y,...J,href:null==q?void 0:q.href,ref:r,onClick:wn([S,e=>{const t=e.currentTarget.getAttribute("target"),r=void 0!==y?y:t;if(!(x||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||e.defaultPrevented||r&&"_self"!==r||0!==e.button)){e.preventDefault(),dn.flushSync(()=>{ne(!0)});const t=n.subscribe("onResolved",()=>{t(),ne(!1)});n.navigate({...$,replace:f,resetScroll:m,hashScrollIntoView:d,startTransition:h,viewTransition:g,ignoreBlocker:E})}}]),onBlur:wn([k,le]),onFocus:wn([C,se]),onMouseEnter:wn([N,se]),onMouseLeave:wn([j,le]),onTouchStart:wn([_,e=>{x||"intent"!==oe||ie()}]),disabled:!!x,target:y,...ee&&{style:ee},...Z&&{className:Z},...x&&gn,...Q&&vn,...B&&te&&yn}}var hn={},mn={className:"active"},gn={role:"link","aria-disabled":!0},vn={"data-status":"active","aria-current":"page"},yn={"data-transitioning":"transitioning"},xn=new WeakMap,bn={rootMargin:"100px"},wn=e=>t=>{for(const n of e)if(n){if(t.defaultPrevented)return;n(t)}};var Sn=p.forwardRef((e,t)=>{const{_asChild:n,...r}=e,{type:o,...a}=pn(r,t),i="function"==typeof r.children?r.children({isActive:"active"===a["data-status"]}):r.children;if(!n){const{disabled:e,...t}=a;return p.createElement("a",t,i)}return p.createElement(n,a,i)});var kn=class extends mt{constructor(e){super(e),this.useMatch=e=>rn({select:null==e?void 0:e.select,from:this.id,structuralSharing:null==e?void 0:e.structuralSharing}),this.useRouteContext=e=>un({...e,from:this.id}),this.useSearch=e=>ln({select:null==e?void 0:e.select,structuralSharing:null==e?void 0:e.structuralSharing,from:this.id}),this.useParams=e=>sn({select:null==e?void 0:e.select,structuralSharing:null==e?void 0:e.structuralSharing,from:this.id}),this.useLoaderDeps=e=>an({...e,from:this.id}),this.useLoaderData=e=>on({...e,from:this.id}),this.useNavigate=()=>cn({from:this.fullPath}),this.Link=h.forwardRef((e,t)=>l.jsx(Sn,{ref:t,from:this.fullPath,...e}))}};var Cn=class extends gt{constructor(e){super(e),this.useMatch=e=>rn({select:null==e?void 0:e.select,from:this.id,structuralSharing:null==e?void 0:e.structuralSharing}),this.useRouteContext=e=>un({...e,from:this.id}),this.useSearch=e=>ln({select:null==e?void 0:e.select,structuralSharing:null==e?void 0:e.structuralSharing,from:this.id}),this.useParams=e=>sn({select:null==e?void 0:e.select,structuralSharing:null==e?void 0:e.structuralSharing,from:this.id}),this.useLoaderDeps=e=>an({...e,from:this.id}),this.useLoaderData=e=>on({...e,from:this.id}),this.useNavigate=()=>cn({from:this.fullPath}),this.Link=h.forwardRef((e,t)=>l.jsx(Sn,{ref:t,from:this.fullPath,...e}))}};function Nn(e){return new jn(e,{silent:!0}).createRoute}var jn=class{constructor(e,t){this.path=e,this.createRoute=e=>{const t=function(e){return new kn(e)}(e);return t.isRoot=!1,t},this.silent=null==t?void 0:t.silent}};function _n(e){const t=Ct(),n=`not-found-${tn(t.stores.location,e=>e.pathname)}-${tn(t.stores.status,e=>e)}`;return l.jsx(vt,{getResetKey:()=>n,onCatch:(t,n)=>{var r;if(!be(t))throw t;null==(r=e.onCatch)||r.call(e,t,n)},errorComponent:({error:t})=>{var n;if(be(t))return null==(n=e.fallback)?void 0:n.call(e,t);throw t},children:e.children})}function En(){return l.jsx("p",{children:"Not Found"})}function Pn(e){return l.jsx(l.Fragment,{children:e.children})}function Rn(e,t,n){return t.options.notFoundComponent?l.jsx(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?l.jsx(e.options.defaultNotFoundComponent,{...n}):l.jsx(En,{})}var Ln=p.memo(function({matchId:e}){const t=Ct(),n=t.stores.matchStores.get(e);n||Z();const r=tn(t.stores.loadedAt,e=>e),o=tn(n,e=>e);return l.jsx(Fn,{router:t,matchId:e,resetKey:r,matchState:p.useMemo(()=>{var e;const n=o.routeId,r=null==(e=t.routesById[n].parentRoute)?void 0:e.id;return{routeId:n,ssr:o.ssr,_displayPending:o._displayPending,parentRouteId:r}},[o._displayPending,o.routeId,o.ssr,t.routesById])})});function Fn({router:e,matchId:t,resetKey:n,matchState:r}){var o,a;const i=e.routesById[r.routeId],s=i.options.pendingComponent??e.options.defaultPendingComponent,c=s?l.jsx(s,{}):null,u=i.options.errorComponent??e.options.defaultErrorComponent,d=i.options.onCatch??e.options.defaultOnCatch,f=i.isRoot?i.options.notFoundComponent??(null==(o=e.options.notFoundRoute)?void 0:o.options.component):i.options.notFoundComponent,h=!1===r.ssr||"data-only"===r.ssr,m=(!i.isRoot||i.options.wrapInSuspense||h)&&(i.options.wrapInSuspense??s??((null==(a=i.options.errorComponent)?void 0:a.preload)||h))?p.Suspense:Pn,g=u?vt:Pn,v=f?_n:Pn;return l.jsxs(i.isRoot?i.options.shellComponent??Pn:Pn,{children:[l.jsx(Nt.Provider,{value:t,children:l.jsx(m,{fallback:c,children:l.jsx(g,{getResetKey:()=>n,errorComponent:u||xt,onCatch:(e,t)=>{if(be(e))throw e.routeId??(e.routeId=r.routeId),e;null==d||d(e,t)},children:l.jsx(v,{fallback:e=>{if(e.routeId??(e.routeId=r.routeId),!f||e.routeId&&e.routeId!==r.routeId||!e.routeId&&!i.isRoot)throw e;return p.createElement(f,e)},children:h||r._displayPending?l.jsx(bt,{fallback:c,children:l.jsx(Mn,{matchId:t})}):l.jsx(Mn,{matchId:t})})})})}),r.parentRouteId===Le?l.jsxs(l.Fragment,{children:[l.jsx(An,{resetKey:n}),(e.options.scrollRestoration,null)]}):null]})}function An({resetKey:e}){const t=Ct(),n=p.useRef(void 0);return A(()=>{const e=t.latestLocation.href;void 0!==n.current&&n.current===e||(t.emit({type:"onRendered",...ct(t.stores.location.get(),t.stores.resolvedLocation.get())}),n.current=e)},[t.latestLocation.state.__TSR_key,e,t]),null}var Mn=p.memo(function({matchId:e}){const t=Ct(),n=(e,n)=>{var r;return(null==(r=t.getMatch(e.id))?void 0:r._nonReactive[n])??e._nonReactive[n]},r=t.stores.matchStores.get(e);r||Z();const o=tn(r,e=>e),a=o.routeId,i=t.routesById[a],s=p.useMemo(()=>{var e;const n=null==(e=t.routesById[a].options.remountDeps??t.options.defaultRemountDeps)?void 0:e({routeId:a,loaderDeps:o.loaderDeps,params:o._strictParams,search:o._strictSearch});return n?JSON.stringify(n):void 0},[a,o.loaderDeps,o._strictParams,o._strictSearch,t.options.defaultRemountDeps,t.routesById]),c=p.useMemo(()=>{const e=i.options.component??t.options.defaultComponent;return e?l.jsx(e,{},s):l.jsx(Tn,{})},[s,i.options.component,t.options.defaultComponent]);if(o._displayPending)throw n(o,"displayPendingPromise");if(o._forcePending)throw n(o,"minPendingPromise");if("pending"===o.status){const e=i.options.pendingMinMs??t.options.defaultPendingMinMs;if(e){const n=t.getMatch(o.id);if(n&&!n._nonReactive.minPendingPromise){const t=q();n._nonReactive.minPendingPromise=t,setTimeout(()=>{t.resolve(),n._nonReactive.minPendingPromise=void 0},e)}}throw n(o,"loadPromise")}if("notFound"===o.status)return be(o.error)||Z(),Rn(t,i,o.error);if("redirected"===o.status)throw Fe(o.error)||Z(),n(o,"loadPromise");if("error"===o.status)throw o.error;return c}),Tn=p.memo(function(){const e=Ct(),t=p.useContext(Nt);let n,r,o=!1;{const a=t?e.stores.matchStores.get(t):void 0;[n,o]=tn(a,e=>[null==e?void 0:e.routeId,(null==e?void 0:e.globalNotFound)??!1]),r=tn(e.stores.matchesId,e=>e[e.findIndex(e=>e===t)+1])}const a=n?e.routesById[n]:void 0,i=e.options.defaultPendingComponent?l.jsx(e.options.defaultPendingComponent,{}):null;if(o)return a||Z(),Rn(e,a,void 0);if(!r)return null;const s=l.jsx(Ln,{matchId:r});return n===Le?l.jsx(p.Suspense,{fallback:i,children:s}):s});function Dn(){const e=Ct(),t=p.useRef({router:e,mounted:!1}),[n,r]=p.useState(!1),o=tn(e.stores.isLoading,e=>e),a=tn(e.stores.hasPending,e=>e),i=M(o),s=o||n||a,l=M(s),c=o||a,u=M(c);return e.startTransition=e=>{r(!0),p.startTransition(()=>{e(),r(!1)})},p.useEffect(()=>{const t=e.history.subscribe(e.load),n=e.buildLocation({to:e.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return he(e.latestLocation.publicHref)!==he(n.publicHref)&&e.commitLocation({...n,replace:!0}),()=>{t()}},[e,e.history]),A(()=>{if("undefined"!=typeof window&&e.ssr||t.current.router===e&&t.current.mounted)return;t.current={router:e,mounted:!0};(async()=>{try{await e.load()}catch(t){console.error(t)}})()},[e]),A(()=>{i&&!o&&e.emit({type:"onLoad",...ct(e.stores.location.get(),e.stores.resolvedLocation.get())})},[i,e,o]),A(()=>{u&&!c&&e.emit({type:"onBeforeRouteMount",...ct(e.stores.location.get(),e.stores.resolvedLocation.get())})},[c,u,e]),A(()=>{if(l&&!s){const t=ct(e.stores.location.get(),e.stores.resolvedLocation.get());e.emit({type:"onResolved",...t}),Bt(()=>{e.stores.status.set("idle"),e.stores.resolvedLocation.set(e.stores.location.get())}),t.hrefChanged&&function(e){if("undefined"!=typeof document&&document.querySelector){const t=e.stores.location.get(),n=t.state.__hashScrollIntoViewOptions??!0;if(n&&""!==t.hash){const e=document.getElementById(t.hash);e&&e.scrollIntoView(n)}}}(e)}},[s,l,e]),null}function On(){const e=Ct(),t=e.routesById[Le].options.pendingComponent??e.options.defaultPendingComponent,n=t?l.jsx(t,{}):null,r=l.jsxs("undefined"!=typeof document&&e.ssr?Pn:p.Suspense,{fallback:n,children:[l.jsx(Dn,{}),l.jsx(In,{})]});return e.options.InnerWrap?l.jsx(e.options.InnerWrap,{children:r}):r}function In(){const e=Ct(),t=tn(e.stores.firstId,e=>e),n=tn(e.stores.loadedAt,e=>e),r=t?l.jsx(Ln,{matchId:t}):null;return l.jsx(Nt.Provider,{value:t,children:e.options.disableGlobalCatchBoundary?r:l.jsx(vt,{getResetKey:()=>n,errorComponent:xt,onCatch:void 0,children:r})})}var zn=e=>({createMutableStore:Ut,createReadonlyStore:Ut,batch:Bt}),Bn=class extends ut{constructor(e){super(e,zn)}};function $n({router:e,children:t,...n}){Object.keys(n).length>0&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});const r=l.jsx(kt.Provider,{value:e,children:t});return e.options.Wrap?l.jsx(e.options.Wrap,{children:r}):r}function Wn({router:e,...t}){return l.jsx($n,{router:e,...t,children:l.jsx(On,{})})}var Un={};const Vn=e=>"string"==typeof e,Hn=()=>{let e,t;const n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},Kn=e=>null==e?"":""+e,qn=/###/g,Gn=e=>e&&e.indexOf("###")>-1?e.replace(qn,"."):e,Qn=e=>!e||Vn(e),Yn=(e,t,n)=>{const r=Vn(t)?t.split("."):t;let o=0;for(;o{const{obj:r,k:o}=Yn(e,t,Object);if(void 0!==r||1===t.length)return void(r[o]=n);let a=t[t.length-1],i=t.slice(0,t.length-1),s=Yn(e,i,Object);for(;void 0===s.obj&&i.length;)a=`${i[i.length-1]}.${a}`,i=i.slice(0,i.length-1),s=Yn(e,i,Object),(null==s?void 0:s.obj)&&void 0!==s.obj[`${s.k}.${a}`]&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Jn=(e,t)=>{const{obj:n,k:r}=Yn(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Zn=(e,t,n)=>{for(const r in t)"__proto__"!==r&&"constructor"!==r&&(r in e?Vn(e[r])||e[r]instanceof String||Vn(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Zn(e[r],t[r],n):e[r]=t[r]);return e},er=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var tr={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const nr=e=>Vn(e)?e.replace(/[&<>"'\/]/g,e=>tr[e]):e;const rr=[" ",",","?","!",";"],or=new class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const t=this.regExpMap.get(e);if(void 0!==t)return t;const n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}}(20),ar=(e,t,n=".")=>{if(!e)return;if(e[t]){if(!Object.prototype.hasOwnProperty.call(e,t))return;return e[t]}const r=t.split(n);let o=e;for(let a=0;a-1&&inull==e?void 0:e.replace(/_/g,"-"),sr={type:"logger",log(e){this.output("log",e)},warn(e){this.output("warn",e)},error(e){this.output("error",e)},output(e,t){var n,r;null==(r=null==(n=null==console?void 0:console[e])?void 0:n.apply)||r.call(n,console,t)}};class lr{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||sr,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,n,r){return r&&!this.debug?null:(Vn(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new lr(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return(e=e||this.options).prefix=e.prefix||this.prefix,new lr(this.logger,e)}}var cr=new lr;class ur{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(e=>{this.observers[e]||(this.observers[e]=new Map);const n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){this.observers[e]&&(t?this.observers[e].delete(t):delete this.observers[e])}emit(e,...t){if(this.observers[e]){Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r{for(let o=0;o-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){var o,a;const i=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,s=void 0!==r.ignoreJSONStructure?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let l;e.indexOf(".")>-1?l=e.split("."):(l=[e,t],n&&(Array.isArray(n)?l.push(...n):Vn(n)&&i?l.push(...n.split(i)):l.push(n)));const c=Jn(this.data,l);return!c&&!t&&!n&&e.indexOf(".")>-1&&(e=l[0],t=l[1],n=l.slice(2).join(".")),!c&&s&&Vn(n)?ar(null==(a=null==(o=this.data)?void 0:o[e])?void 0:a[t],n,i):c}addResource(e,t,n,r,o={silent:!1}){const a=void 0!==o.keySeparator?o.keySeparator:this.options.keySeparator;let i=[e,t];n&&(i=i.concat(a?n.split(a):n)),e.indexOf(".")>-1&&(i=e.split("."),r=t,t=i[1]),this.addNamespaces(t),Xn(this.data,i,r),o.silent||this.emit("added",e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(const o in n)(Vn(n[o])||Array.isArray(n[o]))&&this.addResource(e,t,o,n[o],{silent:!0});r.silent||this.emit("added",e,t,n)}addResourceBundle(e,t,n,r,o,a={silent:!1,skipCopy:!1}){let i=[e,t];e.indexOf(".")>-1&&(i=e.split("."),r=n,n=t,t=i[1]),this.addNamespaces(t);let s=Jn(this.data,i)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Zn(s,n,o):s={...s,...n},Xn(this.data,i,s),a.silent||this.emit("added",e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return void 0!==this.getResource(e,t)}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}}var fr={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,o){return e.forEach(e=>{var a;t=(null==(a=this.processors[e])?void 0:a.process(t,n,r,o))??t}),t}};const pr=Symbol("i18next/PATH_KEY");function hr(e,t){const{[pr]:n}=e(function(){const e=[],t=Object.create(null);let n;return t.get=(r,o)=>{var a;return null==(a=null==n?void 0:n.revoke)||a.call(n),o===pr?e:(e.push(o),n=Proxy.revocable(r,t),n.proxy)},Proxy.revocable(Object.create(null),t).proxy}()),r=(null==t?void 0:t.keySeparator)??".",o=(null==t?void 0:t.nsSeparator)??":";if(n.length>1&&o){const e=null==t?void 0:t.ns,a=Array.isArray(e)?e:null;if(a&&a.length>1&&a.slice(1).includes(n[0]))return`${n[0]}${o}${n.slice(1).join(r)}`}return n.join(r)}const mr={},gr=e=>!Vn(e)&&"boolean"!=typeof e&&"number"!=typeof e;class vr extends ur{constructor(e,t={}){var n,r;super(),n=e,r=this,["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"].forEach(e=>{n[e]&&(r[e]=n[e])}),this.options=t,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=cr.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){const n={...t};if(null==e)return!1;const r=this.resolve(e,n);if(void 0===(null==r?void 0:r.res))return!1;const o=gr(r.res);return!1!==n.returnObjects||!o}extractFromKey(e,t){let n=void 0!==t.nsSeparator?t.nsSeparator:this.options.nsSeparator;void 0===n&&(n=":");const r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator;let o=t.ns||this.options.defaultNS||[];const a=n&&e.indexOf(n)>-1,i=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||((e,t,n)=>{t=t||"",n=n||"";const r=rr.filter(e=>t.indexOf(e)<0&&n.indexOf(e)<0);if(0===r.length)return!0;const o=or.getRegExp(`(${r.map(e=>"?"===e?"\\?":e).join("|")})`);let a=!o.test(e);if(!a){const t=e.indexOf(n);t>0&&!o.test(e.substring(0,t))&&(a=!0)}return a})(e,n,r));if(a&&!i){const t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Vn(o)?[o]:o};const a=e.split(n);(n!==r||n===r&&this.options.ns.indexOf(a[0])>-1)&&(o=a.shift()),e=a.join(r)}return{key:e,namespaces:Vn(o)?[o]:o}}translate(e,t,n){let r="object"==typeof t?{...t}:t;if("object"!=typeof r&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof r&&(r={...r}),r||(r={}),null==e)return"";"function"==typeof e&&(e=hr(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]),e=e.map(e=>"function"==typeof e?hr(e,{...this.options,...r}):String(e));const o=void 0!==r.returnDetails?r.returnDetails:this.options.returnDetails,a=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,{key:i,namespaces:s}=this.extractFromKey(e[e.length-1],r),l=s[s.length-1];let c=void 0!==r.nsSeparator?r.nsSeparator:this.options.nsSeparator;void 0===c&&(c=":");const u=r.lng||this.language,d=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===(null==u?void 0:u.toLowerCase()))return d?o?{res:`${l}${c}${i}`,usedKey:i,exactUsedKey:i,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(r)}:`${l}${c}${i}`:o?{res:i,usedKey:i,exactUsedKey:i,usedLng:u,usedNS:l,usedParams:this.getUsedParamsDetails(r)}:i;const f=this.resolve(e,r);let p=null==f?void 0:f.res;const h=(null==f?void 0:f.usedKey)||i,m=(null==f?void 0:f.exactUsedKey)||i,g=void 0!==r.joinArrays?r.joinArrays:this.options.joinArrays,v=!this.i18nFormat||this.i18nFormat.handleAsObject,y=void 0!==r.count&&!Vn(r.count),x=vr.hasDefaultValue(r),b=y?this.pluralResolver.getSuffix(u,r.count,r):"",w=r.ordinal&&y?this.pluralResolver.getSuffix(u,r.count,{ordinal:!1}):"",S=y&&!r.ordinal&&0===r.count,k=S&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${b}`]||r[`defaultValue${w}`]||r.defaultValue;let C=p;v&&!p&&x&&(C=k);const N=gr(C),j=Object.prototype.toString.apply(C);if(!(v&&C&&N&&["[object Number]","[object Function]","[object RegExp]"].indexOf(j)<0)||Vn(g)&&Array.isArray(C))if(v&&Vn(g)&&Array.isArray(p))p=p.join(g),p&&(p=this.extendTranslation(p,e,r,n));else{let t=!1,o=!1;!this.isValidLookup(p)&&x&&(t=!0,p=k),this.isValidLookup(p)||(o=!0,p=i);const s=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&o?void 0:p,d=x&&k!==p&&this.options.updateMissing;if(o||t||d){if(this.logger.log(d?"updateKey":"missingKey",u,l,i,d?k:p),a){const e=this.resolve(i,{...r,keySeparator:!1});e&&e.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let e=[];const t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if("fallback"===this.options.saveMissingTo&&t&&t[0])for(let r=0;r{var o;const a=x&&n!==p?n:s;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,a,d,r):(null==(o=this.backendConnector)?void 0:o.saveMissing)&&this.backendConnector.saveMissing(e,l,t,a,d,r),this.emit("missingKey",e,l,t,p)};this.options.saveMissing&&(this.options.saveMissingPlurals&&y?e.forEach(e=>{const t=this.pluralResolver.getSuffixes(e,r);S&&r[`defaultValue${this.options.pluralSeparator}zero`]&&t.indexOf(`${this.options.pluralSeparator}zero`)<0&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],i+t,r[`defaultValue${t}`]||k)})}):n(e,i,k))}p=this.extendTranslation(p,e,r,f,n),o&&p===i&&this.options.appendNamespaceToMissingKey&&(p=`${l}${c}${i}`),(o||t)&&this.options.parseMissingKeyHandler&&(p=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${c}${i}`:i,t?p:void 0,r))}else{if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,C,{...r,ns:s}):`key '${i} (${this.language})' returned an object instead of string.`;return o?(f.res=e,f.usedParams=this.getUsedParamsDetails(r),f):e}if(a){const e=Array.isArray(C),t=e?[]:{},n=e?m:h;for(const o in C)if(Object.prototype.hasOwnProperty.call(C,o)){const e=`${n}${a}${o}`;t[o]=x&&!p?this.translate(e,{...r,defaultValue:gr(k)?k[o]:void 0,joinArrays:!1,ns:s}):this.translate(e,{...r,joinArrays:!1,ns:s}),t[o]===e&&(t[o]=C[o])}p=t}}return o?(f.res=p,f.usedParams=this.getUsedParamsDetails(r),f):p}extendTranslation(e,t,n,r,o){var a,i;if(null==(a=this.i18nFormat)?void 0:a.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});const a=Vn(e)&&(void 0!==(null==(i=null==n?void 0:n.interpolation)?void 0:i.skipOnVariables)?n.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let s;if(a){const t=e.match(this.interpolator.nestingRegexp);s=t&&t.length}let l=n.replace&&!Vn(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(l={...this.options.interpolation.defaultVariables,...l}),e=this.interpolator.interpolate(e,l,n.lng||this.language||r.usedLng,n),a){const t=e.match(this.interpolator.nestingRegexp);s<(t&&t.length)&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),!1!==n.nest&&(e=this.interpolator.nest(e,(...e)=>(null==o?void 0:o[0])!==e[0]||n.context?this.translate(...e,t):(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null),n)),n.interpolation&&this.interpolator.reset()}const s=n.postProcess||this.options.postProcess,l=Vn(s)?[s]:s;return null!=e&&(null==l?void 0:l.length)&&!1!==n.applyPostProcessor&&(e=fr.handle(l,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,o,a,i;return Vn(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>"function"==typeof e?hr(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;const s=this.extractFromKey(e,t),l=s.key;r=l;let c=s.namespaces;this.options.fallbackNS&&(c=c.concat(this.options.fallbackNS));const u=void 0!==t.count&&!Vn(t.count),d=u&&!t.ordinal&&0===t.count,f=void 0!==t.context&&(Vn(t.context)||"number"==typeof t.context)&&""!==t.context,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);c.forEach(e=>{var s,c;this.isValidLookup(n)||(i=e,mr[`${p[0]}-${e}`]||!(null==(s=this.utils)?void 0:s.hasLoadedNamespace)||(null==(c=this.utils)?void 0:c.hasLoadedNamespace(i))||(mr[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(", ")}" won't get resolved as namespace "${i}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),p.forEach(r=>{var i;if(this.isValidLookup(n))return;a=r;const s=[l];if(null==(i=this.i18nFormat)?void 0:i.addLookupKeys)this.i18nFormat.addLookupKeys(s,l,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));const n=`${this.options.pluralSeparator}zero`,o=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&0===e.indexOf(o)&&s.push(l+e.replace(o,this.options.pluralSeparator)),s.push(l+e),d&&s.push(l+n)),f){const r=`${l}${this.options.contextSeparator||"_"}${t.context}`;s.push(r),u&&(t.ordinal&&0===e.indexOf(o)&&s.push(r+e.replace(o,this.options.pluralSeparator)),s.push(r+e),d&&s.push(r+n))}}let c;for(;c=s.pop();)this.isValidLookup(n)||(o=c,n=this.getResource(r,e,c,t))}))})}),{res:n,usedKey:r,exactUsedKey:o,usedLng:a,usedNS:i}}isValidLookup(e){return!(void 0===e||!this.options.returnNull&&null===e||!this.options.returnEmptyString&&""===e)}getResource(e,t,n,r={}){var o;return(null==(o=this.i18nFormat)?void 0:o.getResource)?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){const t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],n=e.replace&&!Vn(e.replace);let r=n?e.replace:e;if(n&&void 0!==e.count&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(const e of t)delete r[e]}return r}static hasDefaultValue(e){const t="defaultValue";for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t===n.substring(0,12)&&void 0!==e[n])return!0;return!1}}class yr{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=cr.create("languageUtils")}getScriptPartFromCode(e){if(!(e=ir(e))||e.indexOf("-")<0)return null;const t=e.split("-");return 2===t.length?null:(t.pop(),"x"===t[t.length-1].toLowerCase()?null:this.formatLanguageCode(t.join("-")))}getLanguagePartFromCode(e){if(!(e=ir(e))||e.indexOf("-")<0)return e;const t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Vn(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch(t){}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;const n=this.formatLanguageCode(e);this.options.supportedLngs&&!this.isSupportedCode(n)||(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;const n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;const r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?e:e.indexOf("-")<0&&r.indexOf("-")<0?void 0:e.indexOf("-")>0&&r.indexOf("-")<0&&e.substring(0,e.indexOf("-"))===r||0===e.indexOf(r)&&r.length>1?e:void 0)}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if("function"==typeof e&&(e=e(t)),Vn(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||(n=e[this.getScriptPartFromCode(t)]),n||(n=e[this.formatLanguageCode(t)]),n||(n=e[this.getLanguagePartFromCode(t)]),n||(n=e.default),n||[]}toResolveHierarchy(e,t){const n=this.getFallbackCodes((!1===t?[]:t)||this.options.fallbackLng||[],e),r=[],o=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Vn(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?("languageOnly"!==this.options.load&&o(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&o(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&o(this.getLanguagePartFromCode(e))):Vn(e)&&o(this.formatLanguageCode(e)),n.forEach(e=>{r.indexOf(e)<0&&o(this.formatLanguageCode(e))}),r}}const xr={zero:0,one:1,two:2,few:3,many:4,other:5},br={select:e=>1===e?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class wr{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=cr.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){const n=ir("dev"===e?"en":e),r=t.ordinal?"ordinal":"cardinal",o=JSON.stringify({cleanedCode:n,type:r});if(o in this.pluralRulesCache)return this.pluralRulesCache[o];let a;try{a=new Intl.PluralRules(n,{type:r})}catch(i){if("undefined"==typeof Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),br;if(!e.match(/-|_/))return br;const n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[o]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||(n=this.getRule("dev",t)),(null==n?void 0:n.resolvedOptions().pluralCategories.length)>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||(n=this.getRule("dev",t)),n?n.resolvedOptions().pluralCategories.sort((e,t)=>xr[e]-xr[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${e}`):[]}getSuffix(e,t,n={}){const r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,n))}}const Sr=(e,t,n,r=".",o=!0)=>{let a=((e,t,n)=>{const r=Jn(e,n);return void 0!==r?r:Jn(t,n)})(e,t,n);return!a&&o&&Vn(n)&&(a=ar(e,n,r),void 0===a&&(a=ar(t,n,r))),a},kr=e=>e.replace(/\$/g,"$$$$");class Cr{constructor(e={}){var t;this.logger=cr.create("interpolator"),this.options=e,this.format=(null==(t=null==e?void 0:e.interpolation)?void 0:t.format)||(e=>e),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:o,prefixEscaped:a,suffix:i,suffixEscaped:s,formatSeparator:l,unescapeSuffix:c,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:h,nestingOptionsSeparator:m,maxReplaces:g,alwaysFormat:v}=e.interpolation;this.escape=void 0!==t?t:nr,this.escapeValue=void 0===n||n,this.useRawValueToEscape=void 0!==r&&r,this.prefix=o?er(o):a||"{{",this.suffix=i?er(i):s||"}}",this.formatSeparator=l||",",this.unescapePrefix=c?"":u||"-",this.unescapeSuffix=this.unescapePrefix?"":c||"",this.nestingPrefix=d?er(d):f||er("$t("),this.nestingSuffix=p?er(p):h||er(")"),this.nestingOptionsSeparator=m||",",this.maxReplaces=g||1e3,this.alwaysFormat=void 0!==v&&v,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(e,t)=>(null==e?void 0:e.source)===t?(e.lastIndex=0,e):new RegExp(t,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){var o;let a,i,s;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(e.indexOf(this.formatSeparator)<0){const o=Sr(t,l,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(o,void 0,n,{...r,...t,interpolationkey:e}):o}const o=e.split(this.formatSeparator),a=o.shift().trim(),i=o.join(this.formatSeparator).trim();return this.format(Sr(t,l,a,this.options.keySeparator,this.options.ignoreJSONStructure),i,n,{...r,...t,interpolationkey:a})};this.resetRegExp();const u=(null==r?void 0:r.missingInterpolationHandler)||this.options.missingInterpolationHandler,d=void 0!==(null==(o=null==r?void 0:r.interpolation)?void 0:o.skipOnVariables)?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>kr(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?kr(this.escape(e)):kr(e)}].forEach(t=>{for(s=0;a=t.regex.exec(e);){const n=a[1].trim();if(i=c(n),void 0===i)if("function"==typeof u){const t=u(e,a,r);i=Vn(t)?t:""}else if(r&&Object.prototype.hasOwnProperty.call(r,n))i="";else{if(d){i=a[0];continue}this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),i=""}else Vn(i)||this.useRawValueToEscape||(i=Kn(i));const o=t.safeValue(i);if(e=e.replace(a[0],o),d?(t.regex.lastIndex+=i.length,t.regex.lastIndex-=a[0].length):t.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,o,a;const i=(e,t)=>{const n=this.nestingOptionsSeparator;if(e.indexOf(n)<0)return e;const r=e.split(new RegExp(`${er(n)}[ ]*{`));let o=`{${r[1]}`;e=r[0],o=this.interpolate(o,a);const i=o.match(/'/g),s=o.match(/"/g);(((null==i?void 0:i.length)??0)%2==0&&!s||((null==s?void 0:s.length)??0)%2!=0)&&(o=o.replace(/'/g,'"'));try{a=JSON.parse(o),t&&(a={...t,...a})}catch(l){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,l),`${e}${n}${o}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Vn(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;const l=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(-1!==l&&(s=r[1].slice(l).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,l)),o=t(i.call(this,r[1].trim(),a),a),o&&r[0]===e&&!Vn(o))return o;Vn(o)||(o=Kn(o)),o||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),o=""),s.length&&(o=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),o.trim())),e=e.replace(r[0],o),this.regexp.lastIndex=0}return e}}const Nr=e=>{const t={};return(n,r,o)=>{let a=o;o&&o.interpolationkey&&o.formatParams&&o.formatParams[o.interpolationkey]&&o[o.interpolationkey]&&(a={...a,[o.interpolationkey]:void 0});const i=r+JSON.stringify(a);let s=t[i];return s||(s=e(ir(r),o),t[i]=s),s(n)}},jr=e=>(t,n,r)=>e(ir(n),r)(t);class _r{constructor(e={}){this.logger=cr.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";const n=t.cacheInBuiltFormats?Nr:jr;this.formats={number:n((e,t)=>{const n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{const n=new Intl.NumberFormat(e,{...t,style:"currency"});return e=>n.format(e)}),datetime:n((e,t)=>{const n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{const n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||"day")}),list:n((e,t)=>{const n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=Nr(t)}format(e,t,n,r={}){const o=t.split(this.formatSeparator);if(o.length>1&&o[0].indexOf("(")>1&&o[0].indexOf(")")<0&&o.find(e=>e.indexOf(")")>-1)){const e=o.findIndex(e=>e.indexOf(")")>-1);o[0]=[o[0],...o.splice(1,e)].join(this.formatSeparator)}return o.reduce((e,t)=>{var o;const{formatName:a,formatOptions:i}=(e=>{let t=e.toLowerCase().trim();const n={};if(e.indexOf("(")>-1){const r=e.split("(");t=r[0].toLowerCase().trim();const o=r[1].substring(0,r[1].length-1);"currency"===t&&o.indexOf(":")<0?n.currency||(n.currency=o.trim()):"relativetime"===t&&o.indexOf(":")<0?n.range||(n.range=o.trim()):o.split(";").forEach(e=>{if(e){const[t,...r]=e.split(":"),o=r.join(":").trim().replace(/^'+|'+$/g,""),a=t.trim();n[a]||(n[a]=o),"false"===o&&(n[a]=!1),"true"===o&&(n[a]=!0),isNaN(o)||(n[a]=parseInt(o,10))}})}return{formatName:t,formatOptions:n}})(t);if(this.formats[a]){let t=e;try{const s=(null==(o=null==r?void 0:r.formatParams)?void 0:o[r.interpolationkey])||{},l=s.locale||s.lng||r.locale||r.lng||n;t=this.formats[a](e,l,{...i,...r,...s})}catch(s){this.logger.warn(s)}return t}return this.logger.warn(`there was no format function for ${a}`),e},e)}}class Er extends ur{constructor(e,t,n,r={}){var o,a;super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=cr.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],null==(a=null==(o=this.backend)?void 0:o.init)||a.call(o,n,r.backend,r)}queueLoad(e,t,n,r){const o={},a={},i={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{const i=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[i]=2:this.state[i]<0||(1===this.state[i]?void 0===a[i]&&(a[i]=!0):(this.state[i]=1,r=!1,void 0===a[i]&&(a[i]=!0),void 0===o[i]&&(o[i]=!0),void 0===s[t]&&(s[t]=!0)))}),r||(i[e]=!0)}),(Object.keys(o).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(o),pending:Object.keys(a),toLoadLanguages:Object.keys(i),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){const r=e.split("|"),o=r[0],a=r[1];t&&this.emit("failedLoading",o,a,t),!t&&n&&this.store.addResourceBundle(o,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);const i={};this.queue.forEach(n=>{((e,t,n)=>{const{obj:r,k:o}=Yn(e,t,Object);r[o]=r[o]||[],r[o].push(n)})(n.loaded,[o],a),((e,t)=>{void 0!==e.pending[t]&&(delete e.pending[t],e.pendingCount--)})(n,e),t&&n.errors.push(t),0!==n.pendingCount||n.done||(Object.keys(n.loaded).forEach(e=>{i[e]||(i[e]={});const t=n.loaded[e];t.length&&t.forEach(t=>{void 0===i[e][t]&&(i[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit("loaded",i),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,o=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:o,callback:a});this.readingCalls++;const i=(i,s)=>{if(this.readingCalls--,this.waitingReads.length>0){const e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}i&&s&&r{this.read.call(this,e,t,n,r+1,2*o,a)},o):a(i,s)},s=this.backend[n].bind(this.backend);if(2!==s.length)return s(e,t,i);try{const n=s(e,t);n&&"function"==typeof n.then?n.then(e=>i(null,e)).catch(i):i(null,n)}catch(l){i(l)}}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Vn(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Vn(t)&&(t=[t]);const o=this.queueLoad(e,t,n,r);if(!o.toLoad.length)return o.pending.length||r(),null;o.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=""){const n=e.split("|"),r=n[0],o=n[1];this.read(r,o,"read",void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${o} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${o} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,o,a={},i=()=>{}){var s,l,c,u,d;if(!(null==(l=null==(s=this.services)?void 0:s.utils)?void 0:l.hasLoadedNamespace)||(null==(u=null==(c=this.services)?void 0:c.utils)?void 0:u.hasLoadedNamespace(t))){if(null!=n&&""!==n){if(null==(d=this.backend)?void 0:d.create){const s={...a,isUpdate:o},l=this.backend.create.bind(this.backend);if(l.length<6)try{let o;o=5===l.length?l(e,t,n,r,s):l(e,t,n,r),o&&"function"==typeof o.then?o.then(e=>i(null,e)).catch(i):i(null,o)}catch(f){i(f)}else l(e,t,n,r,i,s)}e&&e[0]&&this.store.addResource(e[0],t,n,r)}}else this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const Pr=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if("object"==typeof e[1]&&(t=e[1]),Vn(e[1])&&(t.defaultValue=e[1]),Vn(e[2])&&(t.tDescription=e[2]),"object"==typeof e[2]||"object"==typeof e[3]){const n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,format:e=>e,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Rr=e=>{var t,n;return Vn(e.ns)&&(e.ns=[e.ns]),Vn(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Vn(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),(null==(n=null==(t=e.supportedLngs)?void 0:t.indexOf)?void 0:n.call(t,"cimode"))<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),"boolean"==typeof e.initImmediate&&(e.initAsync=e.initImmediate),e},Lr=()=>{},Fr="__i18next_supportNoticeShown";class Ar extends ur{constructor(e={},t){var n;if(super(),this.options=Rr(e),this.services={},this.logger=cr,this.modules={external:[]},n=this,Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(e=>{"function"==typeof n[e]&&(n[e]=n[e].bind(n))}),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,"function"==typeof e&&(t=e,e={}),null==e.defaultNS&&e.ns&&(Vn(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const n=Pr();var r,o,a,i,s,l,c,u,d,f,p,h,m,g;this.options={...n,...this.options,...Rr(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},void 0!==e.keySeparator&&(this.options.userDefinedKeySeparator=e.keySeparator),void 0!==e.nsSeparator&&(this.options.userDefinedNsSeparator=e.nsSeparator),"function"!=typeof this.options.overloadTranslationOptionHandler&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler),!1===this.options.showSupportNotice||((null==(i=null==(a=null==(o=null==(r=this)?void 0:r.modules)?void 0:o.backend)?void 0:a.name)?void 0:i.indexOf("Locize"))>0||(null==(u=null==(c=null==(l=null==(s=null==r?void 0:r.modules)?void 0:s.backend)?void 0:l.constructor)?void 0:c.name)?void 0:u.indexOf("Locize"))>0||(null==(f=null==(d=null==r?void 0:r.options)?void 0:d.backend)?void 0:f.backends)&&r.options.backend.backends.some(e=>{var t,n,r;return(null==(t=null==e?void 0:e.name)?void 0:t.indexOf("Locize"))>0||(null==(r=null==(n=null==e?void 0:e.constructor)?void 0:n.name)?void 0:r.indexOf("Locize"))>0})||(null==(h=null==(p=null==r?void 0:r.options)?void 0:p.backend)?void 0:h.projectId)||(null==(g=null==(m=null==r?void 0:r.options)?void 0:m.backend)?void 0:g.backendOptions)&&r.options.backend.backendOptions.some(e=>null==e?void 0:e.projectId))||"undefined"!=typeof globalThis&&globalThis[Fr]||"undefined"!=typeof process&&Un&&Un.I18NEXT_NO_SUPPORT_NOTICE||"undefined"!=typeof process&&Un||("undefined"!=typeof console&&void 0!==console.info&&console.info("🌐 i18next is made possible by our own product, Locize — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com 💙"),"undefined"!=typeof globalThis&&(globalThis[Fr]=!0));const v=e=>e?"function"==typeof e?new e:e:null;if(!this.options.isClone){let e;this.modules.logger?cr.init(v(this.modules.logger),this.options):cr.init(null,this.options),e=this.modules.formatter?this.modules.formatter:_r;const t=new yr(this.options);this.store=new dr(this.options.resources,this.options);const r=this.services;r.logger=cr,r.resourceStore=this.store,r.languageUtils=t,r.pluralResolver=new wr(t,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix});this.options.interpolation.format&&this.options.interpolation.format!==n.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!e||this.options.interpolation.format&&this.options.interpolation.format!==n.interpolation.format||(r.formatter=v(e),r.formatter.init&&r.formatter.init(r,this.options),this.options.interpolation.format=r.formatter.format.bind(r.formatter)),r.interpolator=new Cr(this.options),r.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},r.backendConnector=new Er(v(this.modules.backend),r.resourceStore,r,this.options),r.backendConnector.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(r.languageDetector=v(this.modules.languageDetector),r.languageDetector.init&&r.languageDetector.init(r,this.options.detection,this.options)),this.modules.i18nFormat&&(r.i18nFormat=v(this.modules.i18nFormat),r.i18nFormat.init&&r.i18nFormat.init(this)),this.translator=new vr(this.services,this.options),this.translator.on("*",(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||(t=Lr),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&"dev"!==e[0]&&(this.options.lng=e[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(e=>{this[e]=(...t)=>this.store[e](...t)});["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});const y=Hn(),x=()=>{const e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),y.resolve(n),t(e,n)};if(this.languages&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?x():setTimeout(x,0),y}loadResources(e,t=Lr){var n,r;let o=t;const a=Vn(e)?e:this.language;if("function"==typeof e&&(o=e),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===(null==a?void 0:a.toLowerCase())&&(!this.options.preload||0===this.options.preload.length))return o();const e=[],t=t=>{if(!t)return;if("cimode"===t)return;this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{"cimode"!==t&&e.indexOf(t)<0&&e.push(t)})};if(a)t(a);else{this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e))}null==(r=null==(n=this.options.preload)?void 0:n.forEach)||r.call(n,e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),o(e)})}else o(null)}reloadResources(e,t,n){const r=Hn();return"function"==typeof e&&(n=e,e=void 0),"function"==typeof t&&(n=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),n||(n=Lr),this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===e.type&&(this.modules.backend=e),("logger"===e.type||e.log&&e.warn&&e.error)&&(this.modules.logger=e),"languageDetector"===e.type&&(this.modules.languageDetector=e),"i18nFormat"===e.type&&(this.modules.i18nFormat=e),"postProcessor"===e.type&&fr.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}setResolvedLanguage(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1)){for(let e=0;e-1)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;const n=Hn();this.emit("languageChanging",e);const r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},o=(o,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit("languageChanged",a),this.logger.log("languageChanged",a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(o,(...e)=>this.t(...e))},a=t=>{var n,a;e||t||!this.services.languageDetector||(t=[]);const i=Vn(t)?t:t&&t[0],s=this.store.hasLanguageSomeTranslations(i)?i:this.services.languageUtils.getBestMatchFromCodes(Vn(t)?[t]:t);s&&(this.language||r(s),this.translator.language||this.translator.changeLanguage(s),null==(a=null==(n=this.services.languageDetector)?void 0:n.cacheUserLanguage)||a.call(n,s)),this.loadResources(s,e=>{o(e,s)})};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e):a(this.services.languageDetector.detect()),n}getFixedT(e,t,n){const r=(e,t,...o)=>{let a;a="object"!=typeof t?this.options.overloadTranslationOptionHandler([e,t].concat(o)):{...t},a.lng=a.lng||r.lng,a.lngs=a.lngs||r.lngs,a.ns=a.ns||r.ns,""!==a.keyPrefix&&(a.keyPrefix=a.keyPrefix||n||r.keyPrefix);const i={...this.options,...a};"function"==typeof a.keyPrefix&&(a.keyPrefix=hr(a.keyPrefix,i));const s=this.options.keySeparator||".";let l;return a.keyPrefix&&Array.isArray(e)?l=e.map(e=>("function"==typeof e&&(e=hr(e,i)),`${a.keyPrefix}${s}${e}`)):("function"==typeof e&&(e=hr(e,i)),l=a.keyPrefix?`${a.keyPrefix}${s}${e}`:e),this.t(l,a)};return Vn(e)?r.lng=e:r.lngs=e,r.ns=t,r.keyPrefix=n,r}t(...e){var t;return null==(t=this.translator)?void 0:t.translate(...e)}exists(...e){var t;return null==(t=this.translator)?void 0:t.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const n=t.lng||this.resolvedLanguage||this.languages[0],r=!!this.options&&this.options.fallbackLng,o=this.languages[this.languages.length-1];if("cimode"===n.toLowerCase())return!0;const a=(e,t)=>{const n=this.services.backendConnector.state[`${e}|${t}`];return-1===n||0===n||2===n};if(t.precheck){const e=t.precheck(this,a);if(void 0!==e)return e}return!!this.hasResourceBundle(n,e)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!a(n,e)||r&&!a(o,e)))}loadNamespaces(e,t){const n=Hn();return this.options.ns?(Vn(e)&&(e=[e]),e.forEach(e=>{this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){const n=Hn();Vn(e)&&(e=[e]);const r=this.options.preload||[],o=e.filter(e=>r.indexOf(e)<0&&this.services.languageUtils.isSupportedCode(e));return o.length?(this.options.preload=r.concat(o),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){var t,n;if(e||(e=this.resolvedLanguage||((null==(t=this.languages)?void 0:t.length)>0?this.languages[0]:this.language)),!e)return"rtl";try{const t=new Intl.Locale(e);if(t&&t.getTextInfo){const e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch(o){}const r=(null==(n=this.services)?void 0:n.languageUtils)||new yr(Pr());return e.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(r.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){const n=new Ar(e,t);return n.createInstance=Ar.createInstance,n}cloneInstance(e={},t=Lr){const n=e.forkResourceStore;n&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},o=new Ar(r);void 0===e.debug&&void 0===e.prefix||(o.logger=o.logger.clone(e));if(["store","services","language"].forEach(e=>{o[e]=this[e]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},n){const e=Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{});o.store=new dr(e,r),o.services.resourceStore=o.store}if(e.interpolation){const t={...Pr().interpolation,...this.options.interpolation,...e.interpolation},n={...r,interpolation:t};o.services.interpolator=new Cr(n)}return o.translator=new vr(o.services,r),o.translator.on("*",(e,...t)=>{o.emit(e,...t)}),o.init(r,t),o.translator.options=r,o.translator.backendConnector.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},o}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Mr=Ar.createInstance();Mr.createInstance,Mr.dir,Mr.init,Mr.loadResources,Mr.reloadResources,Mr.use,Mr.changeLanguage,Mr.getFixedT,Mr.t,Mr.exists,Mr.setDefaultNamespace,Mr.hasLoadedNamespace,Mr.loadNamespaces,Mr.loadLanguages;const Tr={},Dr=(e,t,n,r)=>{Br(n)&&Tr[n]||(Br(n)&&(Tr[n]=new Date),((e,t,n,r)=>{var o,a,i,s;const l=[n,{code:t,...r||{}}];if(null==(a=null==(o=null==e?void 0:e.services)?void 0:o.logger)?void 0:a.forward)return e.services.logger.forward(l,"warn","react-i18next::",!0);Br(l[0])&&(l[0]=`react-i18next:: ${l[0]}`),(null==(s=null==(i=null==e?void 0:e.services)?void 0:i.logger)?void 0:s.warn)?e.services.logger.warn(...l):(null==console?void 0:console.warn)&&console.warn(...l)})(e,t,n,r))},Or=(e,t)=>()=>{if(e.isInitialized)t();else{const n=()=>{setTimeout(()=>{e.off("initialized",n)},0),t()};e.on("initialized",n)}},Ir=(e,t,n)=>{e.loadNamespaces(t,Or(e,n))},zr=(e,t,n,r)=>{if(Br(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Ir(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Or(e,r))},Br=e=>"string"==typeof e,$r=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Wr={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},Ur=e=>Wr[e];let Vr={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:e=>e.replace($r,Ur)};let Hr;const Kr={type:"3rdParty",init(e){((e={})=>{Vr={...Vr,...e}})(e.options.react),(e=>{Hr=e})(e)}},qr=p.createContext();class Gr{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}const Qr=(e,t,n,r)=>e.getFixedT(t,n,r),Yr=(e,t={})=>{var n,r,o,a;const{i18n:i}=t,{i18n:s,defaultNS:l}=p.useContext(qr)||{},c=i||s||Hr;if(c&&!c.reportNamespaces&&(c.reportNamespaces=new Gr),!c){Dr(c,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const e=(e,t)=>{return Br(t)?t:"object"==typeof(n=t)&&null!==n&&Br(t.defaultValue)?t.defaultValue:Array.isArray(e)?e[e.length-1]:e;var n},t=[e,{},!1];return t.t=e,t.i18n={},t.ready=!1,t}(null==(n=c.options.react)?void 0:n.wait)&&Dr(c,"DEPRECATED_OPTION","useTranslation: It seems you are still using the old wait option, you may migrate to the new useSuspense behaviour.");const u={...Vr,...c.options.react,...t},{useSuspense:d,keyPrefix:f}=u;let h=l||(null==(r=c.options)?void 0:r.defaultNS);h=Br(h)?[h]:h||["translation"],null==(a=(o=c.reportNamespaces).addUsedNamespaces)||a.call(o,h);const m=(c.isInitialized||c.initializedStoreOnce)&&h.every(e=>((e,t,n={})=>t.languages&&t.languages.length?t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}):(Dr(t,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:t.languages}),!0))(e,c,u)),g=((e,t,n,r)=>p.useCallback(Qr(e,t,n,r),[e,t,n,r]))(c,t.lng||null,"fallback"===u.nsMode?h:h[0],f),v=()=>g,y=()=>Qr(c,t.lng||null,"fallback"===u.nsMode?h:h[0],f),[x,b]=p.useState(v);let w=h.join();t.lng&&(w=`${t.lng}${w}`);const S=((e,t)=>{const n=p.useRef();return p.useEffect(()=>{n.current=e},[e,t]),n.current})(w),k=p.useRef(!0);p.useEffect(()=>{const{bindI18n:e,bindI18nStore:n}=u;k.current=!0,m||d||(t.lng?zr(c,t.lng,h,()=>{k.current&&b(y)}):Ir(c,h,()=>{k.current&&b(y)})),m&&S&&S!==w&&k.current&&b(y);const r=()=>{k.current&&b(y)};return e&&(null==c||c.on(e,r)),n&&(null==c||c.store.on(n,r)),()=>{k.current=!1,c&&e&&(null==e||e.split(" ").forEach(e=>c.off(e,r))),n&&c&&n.split(" ").forEach(e=>c.store.off(e,r))}},[c,w]),p.useEffect(()=>{k.current&&m&&b(v)},[c,f,m]);const C=[x,c,m];if(C.t=x,C.i18n=c,C.ready=m,m)return C;if(!m&&!d)return C;throw new Promise(e=>{t.lng?zr(c,t.lng,h,()=>e()):Ir(c,h,()=>e())})},Xr={Add:"Add","Add Filament":"+ Add Filament",Archive:"Archive",Archived:"Archived","Are you sure to permanently delete the selected filaments? This action cannot be undone.":"Are you sure to permanently delete the selected filaments? This action cannot be undone.","Are you sure to permanently delete this filament? This action cannot be undone.":"Are you sure to permanently delete this filament? This action cannot be undone.","Basic Info":"Basic Info","Batch Delete":"Batch Delete",Brand:"Brand","Clear Selection":"Clear Selection","Color Varieties":"Color Varieties","By Color":"By Color","By Type":"By Type",Calibration:"Calibration",Cancel:"Cancel",Color:"Color","Copy All":"Copy All","Current Net Weight":"Current Net Weight","Current Net Weight cannot exceed Total Net Weight":"Current Net Weight cannot exceed Total Net Weight","Custom Color":"Custom Color","C++↔Web":"C++↔Web",Data:"Data","Debug Log":"Debug Log",Delete:"Delete","Delete Filament":"Delete Filament","Delete {{count}} Filaments":"Delete {{count}} Filaments",Dismiss:"Dismiss",Distribution:"Distribution","Drag to move":"Drag to move","Drying: {{date}}":"Drying: {{date}}","Edit Filament":"Edit Filament","Edit Filament Info":"Edit Filament Info",Empty:"Empty",Exhausted:"Exhausted","Fetching device info...":"Fetching device info...",Filament:"Filament","Filament Info":"Filament Info","Filament List":"Filament List","Filament Manager":"Filament Manager","Filament Type":"Filament Type","Getting AMS data failed":"Getting AMS data failed","Getting device list failed, please retry":"Getting device list failed, please retry",HTTP:"HTTP","Input Note":"Input Note","Input Current Net Weight":"Input Current Net Weight","Input Spool Weight":"Input Spool Weight","Input Total Net Weight":"Input Total Net Weight","Input Total Weight":"Input Total Weight","Manual Add":"Manual Add","Material Type":"Material Type","My Filaments":"My Filaments","Needs Drying":"Needs Drying","Net Weight":"Net Weight",Next:"Next","No AMS detected on this device":"No AMS detected on this device","No Data":"No Data","No printer found, please ensure logged in and device bound":"No printer found, please ensure logged in and device bound","No Records":"No Records","No Usage Records":"No Usage Records",Note:"Note",Online:"Online",Operation:"Operation","per page":"/page","Preset Color":"Preset Color",Previous:"Previous","Read from AMS":"Read from AMS",Ready:"Ready","Refresh printer status":"Refresh printer status",Remain:"Remain","Remain {{percent}}%":"Remain {{percent}}%",Reminders:"Reminders",roll:"roll",Save:"Save","Select Brand":"Select Brand","Select Brand First":"Select Brand First","Select Device":"Select Device","Select Series":"Select Series","Select Type":"Select Type","Selected {{count}} items":"Selected {{count}} items",Series:"Series","Spool Detail":"Spool Detail","Spool Weight":"Spool Weight","Total Net Weight":"Total Net Weight","Total Quantity":"Total Quantity","Total Value":"Total Value","Total Weight":"Total Weight","Usage Records":"Usage Records",Weight:"Weight","Weight cannot exceed {{max}}g":"Weight cannot exceed {{max}}g","Cloud sync: +{{added}} added, {{updated}} up-to-date":"Cloud sync: +{{added}} added, {{updated}} up-to-date","Cloud push failed: {{op}} — {{message}}":"Cloud push failed: {{op}} — {{message}}","Filament operation failed. This feature currently requires a network connection.":"Filament operation failed. This feature currently requires a network connection.","unknown error":"unknown error","Saved locally only — sign in to sync to cloud.":"Saved locally only — sign in to sync to cloud.","Syncing new filament to cloud…":"Syncing new filament to cloud…","Syncing {{count}} new filaments to cloud…":"Syncing {{count}} new filaments to cloud…","Syncing filament change to cloud…":"Syncing filament change to cloud…","Syncing filament deletion to cloud…":"Syncing filament deletion to cloud…","Syncing deletion of {{count}} filaments to cloud…":"Syncing deletion of {{count}} filaments to cloud…","Filament synced to cloud.":"Filament synced to cloud.","Filament change synced to cloud.":"Filament change synced to cloud.","Filament deletion synced to cloud.":"Filament deletion synced to cloud.","Synced {{count}} new filaments to cloud.":"Synced {{count}} new filaments to cloud.","Synced {{count}} filament changes to cloud.":"Synced {{count}} filament changes to cloud.","Synced {{count}} filament deletions to cloud.":"Synced {{count}} filament deletions to cloud.","Push Local to Cloud":"Push Local to Cloud","Last AMS Auto-Sync":"Last AMS Auto-Sync","Pushed {{n}}, Skipped {{n2}}":"Pushed {{n}}, Skipped {{n2}}","Device state: {{state}}":"Device state: {{state}}","Pushed {{n}} spools to cloud":"Pushed {{n}} spools to cloud","No spools to push (need RFID + total weight).":"No spools to push (need RFID + total weight).","Push to cloud failed: {{reason}}":"Push to cloud failed: {{reason}}","Manual push: enqueued {{n}} spools":"Manual push: enqueued {{n}} spools","AMS auto-push: pushed {{p}}, skipped {{s}}":"AMS auto-push: pushed {{p}}, skipped {{s}}","Sync History":"Sync History","No sync history yet.":"No sync history yet.",Pull:"Pull",Push:"Push",Failed:"Failed",Close:"Close",Clear:"Clear","Pulled from cloud: +{{added}} added, {{updated}} up-to-date":"Pulled from cloud: +{{added}} added, {{updated}} up-to-date","Pushed to cloud: added a filament":"Pushed to cloud: added a filament","Pushed to cloud: updated a filament":"Pushed to cloud: updated a filament","Pushed to cloud: deleted a filament":"Pushed to cloud: deleted a filament","Pushed to cloud.":"Pushed to cloud.","Cloud · offline":"Cloud · not signed in","Cloud · pulling…":"Cloud · pulling…","Cloud · syncing…":"Cloud · syncing…","Cloud · error":"Cloud · error","Cloud · synced":"Cloud · synced","Cloud · idle":"Cloud · idle","Not logged in — cloud sync disabled":"Not signed in — cloud sync disabled","Last synced: {{time}}":"Last synced: {{time}}","No sync yet":"No sync yet","Sync filament info":"Sync filament info","Syncing filament info...":"Syncing filament info...",Printer:"Printer","No printers — sign in and bind a device":"No printers — sign in and bind a device","Please sign in to view your filament library.":"Please sign in to view your filament library.","Filament data is hidden until you sign in.":"Filament data is hidden until you sign in.","Manual Entry":"Manual Entry","AMS Sync":"AMS Sync",RFID:"RFID","Not signed in":"Not signed in","Not signed in — no data available":"Not signed in — no data available",All:"All",General:"General",Group:"Group","Loading...":"Loading...",OK:"OK",Parameter:"Parameter","Pick Custom Color":"Pick Custom Color","Search Filament":"Search Filament","Usage Heatmap":"Usage Heatmap","Low Remain":"Low Remain",day_Sun:"Sun",day_Mon:"Mon",day_Tue:"Tue",day_Wed:"Wed",day_Thu:"Thu",day_Fri:"Fri",day_Sat:"Sat","No predefined colors for this filament":"No predefined colors for this filament","Bambu Color Code":"Bambu Color Code"},Jr={Add:"添加","Add Filament":"+ 添加耗材",Archive:"存档",Archived:"归档","Are you sure to permanently delete the selected filaments? This action cannot be undone.":"确认要永久删除所选耗材吗?此操作无法撤销。","Are you sure to permanently delete this filament? This action cannot be undone.":"确认要永久删除该耗材吗?此操作无法撤销。","Basic Info":"基本信息","Batch Delete":"批量删除",Brand:"品牌","Clear Selection":"取消选择","Custom Color":"自定义颜色","By Color":"按颜色","By Type":"按类型",Calibration:"校准",Cancel:"取消",Color:"颜色","Color Varieties":"颜色种类","Copy All":"复制全部","Current Net Weight":"当前净重","Current Net Weight cannot exceed Total Net Weight":"当前净重不能大于总净重","C++↔Web":"C++↔Web",Data:"数据","Debug Log":"调试日志",Delete:"删除","Delete Filament":"删除耗材","Delete {{count}} Filaments":"删除 {{count}} 个耗材",Dismiss:"关闭提示",Distribution:"分布","Drag to move":"拖动以移动窗口","Drying: {{date}}":"干燥:{{date}}","Edit Filament":"编辑耗材","Edit Filament Info":"编辑耗材信息",Empty:"空",Exhausted:"已耗尽","Fetching device info...":"正在获取设备信息…",Filament:"耗材","Filament Info":"耗材信息","Filament List":"耗材列表","Filament Manager":"耗材管理","Filament Type":"耗材类型","Getting AMS data failed":"获取 AMS 数据失败","Getting device list failed, please retry":"获取设备列表失败,请重试",HTTP:"HTTP","Input Current Net Weight":"输入当前净重","Input Note":"输入备注","Input Spool Weight":"输入料盘重量","Input Total Net Weight":"输入总净重","Input Total Weight":"输入总重量","Manual Add":"手动添加","Material Type":"类型","My Filaments":"我的耗材","Needs Drying":"需要干燥","Net Weight":"净重",Next:"下一条","No AMS detected on this device":"该设备未识别到 AMS","No Data":"暂无数据","No printer found, please ensure logged in and device bound":"未发现可用打印机,请确保已登录并绑定设备","No Records":"无","No Usage Records":"暂无使用记录",Note:"备注",Online:"在线",Operation:"操作","per page":"/页","Please select filaments to delete first.":"请先勾选要删除的耗材。","Preset Color":"预设颜色",Previous:"上一条","Read from AMS":"从 AMS 上读取",Ready:"就绪","Refresh printer status":"刷新打印机状态",Remain:"剩余","Remain {{percent}}%":"剩余 {{percent}}%",Reminders:"提醒",roll:"卷",Save:"保存","Select Brand":"选择品牌","Select Brand First":"请先选择品牌","Select Device":"选择设备","Select Series":"选择系列","Select Type":"选择类型","Selected {{count}} items":"已选中 {{count}} 项",Series:"系列","Spool Detail":"耗材详情","Spool Weight":"料盘重量","Total Net Weight":"总净重","Total Quantity":"总数量","Total Value":"总价值","Total Weight":"总重量","Usage Records":"使用记录",Weight:"重量","Weight cannot exceed {{max}}g":"重量不能超过 {{max}}克","Cloud sync: +{{added}} added, {{updated}} up-to-date":"云端同步:新增 {{added}} 条,{{updated}} 条已最新","Cloud push failed: {{op}} — {{message}}":"云端同步失败:{{op}} — {{message}}","Filament operation failed. This feature currently requires a network connection.":"耗材操作失败。当前功能需要联网使用,请检查网络后重试。","unknown error":"未知错误","Saved locally only — sign in to sync to cloud.":"仅保存到本地,登录账号后将自动同步到云端。","Syncing new filament to cloud…":"正在同步新增耗材到云端…","Syncing {{count}} new filaments to cloud…":"正在同步 {{count}} 条新增耗材到云端…","Syncing filament change to cloud…":"正在同步耗材修改到云端…","Syncing filament deletion to cloud…":"正在同步耗材删除到云端…","Syncing deletion of {{count}} filaments to cloud…":"正在同步 {{count}} 条耗材删除到云端…","Filament synced to cloud.":"耗材已同步到云端。","Filament change synced to cloud.":"耗材修改已同步到云端。","Filament deletion synced to cloud.":"耗材删除已同步到云端。","Synced {{count}} new filaments to cloud.":"已同步 {{count}} 条新增耗材到云端。","Synced {{count}} filament changes to cloud.":"已同步 {{count}} 条耗材变更到云端。","Synced {{count}} filament deletions to cloud.":"已同步 {{count}} 条耗材删除到云端。","Push Local to Cloud":"推送本地到云端","Last AMS Auto-Sync":"最近一次 AMS 自动同步","Pushed {{n}}, Skipped {{n2}}":"推送 {{n}} 卷,跳过 {{n2}} 卷","Device state: {{state}}":"设备状态:{{state}}","Pushed {{n}} spools to cloud":"已推送 {{n}} 卷到云端","No spools to push (need RFID + total weight).":"无可推送的耗材(需要 RFID 且填写整卷净重)","Push to cloud failed: {{reason}}":"推送到云端失败:{{reason}}","Manual push: enqueued {{n}} spools":"手动推送:已入队 {{n}} 卷","AMS auto-push: pushed {{p}}, skipped {{s}}":"AMS 自动推送:推送 {{p}} 卷,跳过 {{s}} 卷","Sync History":"同步历史","No sync history yet.":"暂无同步记录。",Pull:"拉取",Push:"推送",Failed:"失败",Close:"关闭",Clear:"清空","Pulled from cloud: +{{added}} added, {{updated}} up-to-date":"从云端拉取:新增 {{added}} 条,{{updated}} 条已最新","Pushed to cloud: added a filament":"已推送到云端:新增一条耗材","Pushed to cloud: updated a filament":"已推送到云端:修改一条耗材","Pushed to cloud: deleted a filament":"已推送到云端:删除一条耗材","Pushed to cloud.":"已推送到云端。","Cloud · offline":"云端 · 未登录","Cloud · pulling…":"云端 · 拉取中…","Cloud · syncing…":"云端 · 同步中…","Cloud · error":"云端 · 异常","Cloud · synced":"云端 · 已同步","Cloud · idle":"云端 · 空闲","Not logged in — cloud sync disabled":"未登录 — 云端同步不可用","Last synced: {{time}}":"上次同步:{{time}}","No sync yet":"尚未同步过","Sync filament info":"同步耗材信息","Syncing filament info...":"正在同步耗材信息...",Printer:"打印机","No printers — sign in and bind a device":"暂无打印机 — 请登录并绑定设备","Please sign in to view your filament library.":"请先登录,再查看耗材管理器数据。","Filament data is hidden until you sign in.":"未登录或退出登录后,耗材数据将被隐藏。","Manual Entry":"手动录入","AMS Sync":"AMS 同步",RFID:"RFID","Not signed in":"账号未登录","Not signed in — no data available":"账号未登录,暂无数据",All:"全部",General:"通用",Group:"分组","Loading...":"加载中…",OK:"确定",Parameter:"参数","Pick Custom Color":"选择自定义颜色","Search Filament":"搜索耗材","Usage Heatmap":"使用热力图","Low Remain":"剩余量低",day_Sun:"日",day_Mon:"一",day_Tue:"二",day_Wed:"三",day_Thu:"四",day_Fri:"五",day_Sat:"六","No predefined colors for this filament":"该耗材暂无预设颜色","Bambu Color Code":"Bambu 色号"},Zr={Add:"追加","Add Filament":"+ フィラメントを追加","Advanced Settings":"",Archive:"アーカイブ",Archived:"アーカイブ済み","Basic Info":"基本情報","Basic Parameters":"",Brand:"ブランド","By Color":"色別","By Type":"タイプ別",Calibration:"キャリブレーション",Cancel:"取消し",Color:"色","Color Varieties":"色のバリエーション",day_Fri:"金曜日",day_Mon:"月曜日",day_Sat:"土曜日",day_Sun:"日曜日",day_Thu:"木曜日",day_Tue:"火曜日",day_Wed:"水曜日",Delete:"削除",Distribution:"分布","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"乾燥:{{date}}","Edit Filament":"フィラメントを編集","Edit Filament Info":"フィラメント情報を編集",Empty:"空","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"使用済み",Favorite:"","Fetching device info...":"デバイス情報を取得しています...",Filament:"フィラメント","Filament Info":"フィラメント情報","Filament List":"フィラメント一覧","Filament Manager":"フィラメントマネージャー","Getting AMS data failed":"AMSデータの取得に失敗しました","Getting device list failed, please retry":"デバイスリストの取得に失敗しました。もう一度お試しください","Input Note":"インプットメモ","Input Spool Weight":"インプットスプール重量","Input Total Weight":"インプット総重量","Input Unit Price":"","Last Dry Date":"","Low Remain":"残量低下","Manual Add":"手動追加","Material Type":"素材タイプ","Needs Drying":"乾燥が必要","Net Weight":"正味重量",Next:"次へ","No AMS detected on this device":"このデバイスではAMSは検出されませんでした","No Data":"データ無し","No printer found, please ensure logged in and device bound":"プリンターが見つかりません。ログインしてデバイスがバインドされていることを確認してください","No Records":"記録なし","No Usage Records":"使用記録なし",Note:"メモ",Off:"",Online:"オンライン",Operation:"操作",Others:"","per page":"/ページ",Previous:"前へ",Price:"","Read from AMS":"AMSから読む",Ready:"準備完了",Remain:"残量","Remain {{percent}}%":"残量{{percent}}%","Remain Alert":"",Reminders:"リマインダー",roll:"ロール",Save:"保存","Select Brand":"ブランドを選択","Select Currency":"","Select Device":"デバイスを選択","Select Series":"シリーズを選択","Select Type":"タイプを選択",Series:"シリーズ","Spool Detail":"スプールの詳細","Spool Weight":"スプールの重量",Stats:"",Status:"","Status Reminders":"","Total Quantity":"合計数量","Total Value":"合計金額","Total Weight":"総重量","Unit Price(/kg)":"","Usage Heatmap":"使用状況ヒートマップ","Usage Records":"利用記録",Weight:"重量"},eo={"{{count}} item_many":"",Add:"Aggiungi","Add Filament":"+ Aggiungi filamento","Advanced Settings":"",Archive:"Archivio",Archived:"Archiviato","Basic Info":"Informazioni di Base","Basic Parameters":"",Brand:"Marca","By Color":"Per colore","By Type":"Per tipologia",Calibration:"Calibrazione",Cancel:"Annulla",Color:"Colore","Color Varieties":"Varietà di colore",day_Fri:"Ven",day_Mon:"Lun",day_Sat:"Sab",day_Sun:"Dom",day_Thu:"Gio",day_Tue:"Mar",day_Wed:"Mer",Delete:"Elimina",Distribution:"Distribuzione","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Asciugatura: {{date}}","Edit Filament":"Modifica Filamento","Edit Filament Info":"Modifica le informazioni sul filamento",Empty:"Vuoto","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Scarico",Favorite:"","Fetching device info...":"Recupero delle informazioni del dispositivo in corso...",Filament:"Filamento","Filament Info":"Informazioni filamento","Filament List":"Elenco filamenti","Filament Manager":"Gestore filamento","Getting AMS data failed":"Impossibile ottenere i dati AMS","Getting device list failed, please retry":"Impossibile ottenere l'elenco dispositivi, riprova","Input Note":"Nota di input","Input Spool Weight":"Peso bobina in entrata","Input Total Weight":"Peso totale in entrata","Input Unit Price":"","Last Dry Date":"","Low Remain":"Livello basso","Manual Add":"Aggiunta manuale","Material Type":"Tipo di Materiale","Needs Drying":"Necessita asciugatura","Net Weight":"Peso Netto",Next:"Avanti","No AMS detected on this device":"Nessun AMS rilevato su questo dispositivo","No Data":"Nessun dato","No printer found, please ensure logged in and device bound":"Nessuna stampante trovata. Controllare di aver effettuato l'accesso e che il dispositivo sia associato","No Records":"Nessun record","No Usage Records":"Nessun record di utilizzo",Note:"Nota",Off:"",Online:"Online",Operation:"Operazione",Others:"","per page":"/pagina",Previous:"Precedente",Price:"","Read from AMS":"Lettura da AMS",Ready:"Pronto",Remain:"Rimane","Remain {{percent}}%":"Rimane il {{percent}}%","Remain Alert":"",Reminders:"Promemoria",roll:"rullo",Save:"Salva","Select Brand":"Seleziona marca","Select Currency":"","Select Device":"Seleziona il dispositivo","Select Series":"Seleziona le serie","Select Type":"Seleziona tipo",Series:"Serie","Spool Detail":"Dettaglio bobina","Spool Weight":"Peso bobina",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Quantità totale","Total Value":"Valore totale","Total Weight":"Peso totale","Unit Price(/kg)":"","Usage Heatmap":"Utilizzo mappa di calore","Usage Records":"Record di utilizzo",Weight:"Peso"},to={"{{count}} item_many":"",Add:"Ajouter","Add Filament":"+ Ajouter du filament","Advanced Settings":"",Archive:"Archiver",Archived:"Archivé","Basic Info":"Informations de base","Basic Parameters":"",Brand:"Marque","By Color":"Par couleur","By Type":"Par type",Calibration:"Calibration",Cancel:"Annuler",Color:"Couleur","Color Varieties":"Variétés de couleurs",day_Fri:"Ven",day_Mon:"Lun",day_Sat:"Sam",day_Sun:"Dim",day_Thu:"Jeu",day_Tue:"Mar",day_Wed:"Mer",Delete:"Supprimer",Distribution:"Distribution","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Séchage : {{date}}","Edit Filament":"Modifier Filament","Edit Filament Info":"Modifier les informations du filament",Empty:"Vide","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Épuisé",Favorite:"","Fetching device info...":"Récupération des informations de l'appareil…",Filament:"Filament","Filament Info":"Informations sur le filament","Filament List":"Liste des filaments","Filament Manager":"Gestionnaire de filaments","Getting AMS data failed":"Échec de la récupération des données AMS","Getting device list failed, please retry":"Échec de la récupération de la liste des appareils, veuillez réessayer","Input Note":"Note d'entrée","Input Spool Weight":"Poids de la bobine d'entrée","Input Total Weight":"Poids total d'entrée","Input Unit Price":"","Last Dry Date":"","Low Remain":"Quantité restante faible","Manual Add":"Ajout manuel","Material Type":"Type de matériau.","Needs Drying":"Séchage nécessaire","Net Weight":"Poids Net",Next:"Suivant","No AMS detected on this device":"Aucun AMS détecté sur cet appareil","No Data":"Aucune donnée","No printer found, please ensure logged in and device bound":"Imprimante introuvable. Veuillez vérifier que vous êtes connecté et que votre appareil est bien associé","No Records":"Aucun enregistrement","No Usage Records":"Aucun enregistrement d'utilisation",Note:"Note",Off:"",Online:"En ligne",Operation:"Opération",Others:"","per page":"/page",Previous:"Précédent",Price:"","Read from AMS":"Lecture depuis l'AMS",Ready:"Prêt",Remain:"Restant","Remain {{percent}}%":"{{percent}} % restant(s)","Remain Alert":"",Reminders:"Rappels",roll:"rouleau",Save:"Enregistrer","Select Brand":"Sélectionner la marque","Select Currency":"","Select Device":"Sélectionner l'appareil","Select Series":"Sélectionner la série","Select Type":"Sélectionnez le Type",Series:"Série","Spool Detail":"Détails de la bobine","Spool Weight":"Poids de la bobine",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Quantité totale","Total Value":"Valeur totale","Total Weight":"Poids total","Unit Price(/kg)":"","Usage Heatmap":"Carte thermique d'utilisation","Usage Records":"Enregistrements d'utilisation",Weight:"Poids"},no={Add:"Hinzufügen","Add Filament":"+ Filament hinzufügen","Advanced Settings":"",Archive:"Archivieren",Archived:"Archiviert","Basic Info":"Basis-Info","Basic Parameters":"",Brand:"Marke","By Color":"Nach Farbe","By Type":"Nach Typ",Calibration:"Kalibrierung",Cancel:"Abbrechen",Color:"Farbe","Color Varieties":"Farbvarianten",day_Fri:"Fr",day_Mon:"Mo",day_Sat:"Sa",day_Sun:"So",day_Thu:"Do",day_Tue:"Di",day_Wed:"Mi",Delete:"Löschen",Distribution:"Verteilung","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Trocknung: {{date}}","Edit Filament":"Filament bearbeiten","Edit Filament Info":"Filamentinformationen bearbeiten",Empty:"Leer","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Verbraucht",Favorite:"","Fetching device info...":"Geräteinformationen abrufen ...",Filament:"Filament","Filament Info":"Filamentinformationen","Filament List":"Filamentliste","Filament Manager":"Filament Manager","Getting AMS data failed":"Abrufen der AMS-Daten fehlgeschlagen","Getting device list failed, please retry":"Abrufen der Geräteliste fehlgeschlagen. Bitte versuchen Sie es erneut.","Input Note":"Eingabehinweis","Input Spool Weight":"Gewicht Spule Eingangsmaterial","Input Total Weight":"Gesamtgewicht Eingangsmaterial","Input Unit Price":"","Last Dry Date":"","Low Remain":"Geringe Rückstände","Manual Add":"Manuell hinzufügen","Material Type":"Materialtyp","Needs Drying":"Trocknung erforderlich","Net Weight":"Nettogewicht",Next:"Weiter","No AMS detected on this device":"Kein AMS auf diesem Gerät erkannt","No Data":"Keine Daten","No printer found, please ensure logged in and device bound":"Kein Drucker gefunden. Bitte stellen Sie sicher, dass Sie angemeldet sind und das Gerät verknüpft ist.","No Records":"Keine Datensätze","No Usage Records":"Keine Nutzungsdatensätze",Note:"Anmerkung",Off:"",Online:"Online",Operation:"Operation",Others:"","per page":"/Seite",Previous:"Zurück",Price:"","Read from AMS":"Von AMS lesen",Ready:"Bereit",Remain:"Verbleibend","Remain {{percent}}%":"{{percent}}% verbleiben","Remain Alert":"",Reminders:"Erinnerungen",roll:"Rolle",Save:"Speichern","Select Brand":"Marke auswählen","Select Currency":"","Select Device":"Gerät auswählen","Select Series":"Serie auswählen","Select Type":"Typ wählen",Series:"Serie","Spool Detail":"Spulendetail","Spool Weight":"Spulengewicht",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Gesamtmenge","Total Value":"Gesamtwert","Total Weight":"Gesamtgewicht","Unit Price(/kg)":"","Usage Heatmap":"Nutzungs-Heatmap","Usage Records":"Nutzungsdatensätze",Weight:"Gewicht"},ro={Add:"Hozzáadás","Add Filament":"+ Filament hozzáadása","Advanced Settings":"",Archive:"Archiválás",Archived:"Archivált","Basic Info":"Alapinformáció","Basic Parameters":"",Brand:"Márka","By Color":"Szín szerint","By Type":"Típus szerint",Calibration:"Kalibrálás",Cancel:"Mégse",Color:"Szín","Color Varieties":"Színváltozatok",day_Fri:"Péntek",day_Mon:"Hétfő",day_Sat:"Szombat",day_Sun:"Vasárnap",day_Thu:"Csütörtök",day_Tue:"Kedd",day_Wed:"Szerda",Delete:"Törlés",Distribution:"Elosztás","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Szárítás: {{date}}","Edit Filament":"Filament szerkesztése","Edit Filament Info":"Filamentinformációk szerkesztése",Empty:"Üres","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Kimerült",Favorite:"","Fetching device info...":"Eszközadatok lekérése…",Filament:"Filament","Filament Info":"Filamentinformációk","Filament List":"Filamentlista","Filament Manager":"Filamentkezelő","Getting AMS data failed":"Az AMS-adatok lekérése sikertelen volt","Getting device list failed, please retry":"Az eszközlista lekérése sikertelen, próbálja újra","Input Note":"Megjegyzés megadása","Input Spool Weight":"Tekercs tömegének megadása","Input Total Weight":"Teljes tömeg megadása","Input Unit Price":"","Last Dry Date":"","Low Remain":"Alacsony marad","Manual Add":"Manuális hozzáadás","Material Type":"Anyagtípus","Needs Drying":"Szárítást igényel","Net Weight":"Nettó tömeg",Next:"Következő","No AMS detected on this device":"Nem észlelhető AMS ezen az eszközön","No Data":"Nincs adat","No printer found, please ensure logged in and device bound":"Nem található nyomtató, győződjön meg arról, hogy be van jelentkezve és az eszközhöz van kötve","No Records":"Nincsenek rekordok","No Usage Records":"Nincsenek használati feljegyzések",Note:"Megjegyzés",Off:"",Online:"Online",Operation:"Művelet",Others:"","per page":"/oldal",Previous:"Előző",Price:"","Read from AMS":"Olvasás az AMS-ből",Ready:"Kész",Remain:"Hátralevő","Remain {{percent}}%":"Hátralevő: {{percent}}%","Remain Alert":"",Reminders:"Emlékeztetők",roll:"tekercs",Save:"Mentés","Select Brand":"Márka kiválasztása","Select Currency":"","Select Device":"Eszköz kiválasztása","Select Series":"Sorozat kiválasztása","Select Type":"Válassz típust",Series:"Sorozat","Spool Detail":"Tekercs részletei","Spool Weight":"Tekercs súlya",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Teljes mennyiség","Total Value":"Teljes érték","Total Weight":"Teljes súly","Unit Price(/kg)":"","Usage Heatmap":"Használati hőtérkép","Usage Records":"Használati feljegyzések",Weight:"Súly"},oo={"{{count}} item_many":"",Add:"Añadir","Add Filament":"+ Añadir filamento","Advanced Settings":"",Archive:"Archivo",Archived:"Archivado","Basic Info":"Información Básica","Basic Parameters":"",Brand:"Marca","By Color":"Por color","By Type":"Por tipo",Calibration:"Calibración",Cancel:"Cancelar",Color:"Color","Color Varieties":"Variedades de color",day_Fri:"Vie",day_Mon:"Lun",day_Sat:"Sáb",day_Sun:"Dom",day_Thu:"Jue",day_Tue:"Mar",day_Wed:"Mié",Delete:"Borra",Distribution:"Distribución","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Secando: {{date}}","Edit Filament":"Edit Filament","Edit Filament Info":"Editar información de filamento",Empty:"Vacío","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Agotado",Favorite:"","Fetching device info...":"Obteniendo información de dispositivo...",Filament:"Filamento","Filament Info":"Información de filamento","Filament List":"Lista de filamentos","Filament Manager":"Gestor de filamentos","Getting AMS data failed":"Error al obtener datos de AMS","Getting device list failed, please retry":"Error al obtener la lista de dispositivos, inténtelo de nuevo","Input Note":"Introduzca una nota","Input Spool Weight":"Introduzca el peso de la bobina","Input Total Weight":"Peso total de entrada","Input Unit Price":"","Last Dry Date":"","Low Remain":"Queda poco","Manual Add":"Añadir manualmente","Material Type":"Tipo de material","Needs Drying":"Necesita secado","Net Weight":"Peso neto",Next:"Siguiente","No AMS detected on this device":"No se detectó AMS en este dispositivo","No Data":"Sin datos","No printer found, please ensure logged in and device bound":"No se encontró ninguna impresora; asegúrese de haber iniciado sesión y de que el dispositivo esté vinculado","No Records":"No hay registros","No Usage Records":"Sin registros de uso",Note:"Nota",Off:"",Online:"En línea",Operation:"Operación",Others:"","per page":"/página",Previous:"Anterior",Price:"","Read from AMS":"Leer desde AMS",Ready:"Listo",Remain:"Restante","Remain {{percent}}%":"Restante {{percent}}%","Remain Alert":"",Reminders:"Recordatorios",roll:"rollo",Save:"Guardar","Select Brand":"Seleccionar marca","Select Currency":"","Select Device":"Seleccionar dispositivo","Select Series":"Seleccionar serie","Select Type":"Seleccione el tipo",Series:"Serie","Spool Detail":"Detalle de bobina","Spool Weight":"Peso de bobina",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Cantidad total","Total Value":"Valor total","Total Weight":"Peso total","Unit Price(/kg)":"","Usage Heatmap":"Mapa de uso","Usage Records":"Registros de uso",Weight:"Peso"},ao={Add:"Lägg till","Add Filament":"+ Lägg till filament","Advanced Settings":"",Archive:"Arkivera",Archived:"Arkiverad","Basic Info":"Grundläggande information","Basic Parameters":"",Brand:"Stämpel","By Color":"Efter färg","By Type":"Efter typ",Calibration:"Kalibrering",Cancel:"Avbryt",Color:"Färg","Color Varieties":"Färgvarianter",day_Fri:"fre",day_Mon:"mån",day_Sat:"lör",day_Sun:"sön",day_Thu:"tors",day_Tue:"tis",day_Wed:"ons",Delete:"Radera",Distribution:"Utdelning","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Torkning: {{datum}}","Edit Filament":"Redigera filament","Edit Filament Info":"Redigera filamentinformation",Empty:"Tom","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Utmattad",Favorite:"","Fetching device info...":"Hämtar enhetsinformation...",Filament:"Filament","Filament Info":"Filamentinformation","Filament List":"Filamentlista","Filament Manager":"Filamenthanterare","Getting AMS data failed":"Det gick inte att hämta AMS-data","Getting device list failed, please retry":"Det gick inte att hämta enhetslistan; försök igen","Input Note":"Inmatningsanteckning","Input Spool Weight":"Ingångsspolens vikt","Input Total Weight":"Inmatad totalvikt","Input Unit Price":"","Last Dry Date":"","Low Remain":"Låg restmängd","Manual Add":"Manuell tillägg","Material Type":"Materialtyp","Needs Drying":"Behöver torkning","Net Weight":"Netto vikt",Next:"Nästa","No AMS detected on this device":"Inget AMS upptäckt på den här enheten","No Data":"Ingen data","No printer found, please ensure logged in and device bound":"Ingen skrivare hittades. Tillförsäkra inloggning och att enheten är kopplad","No Records":"Inga poster","No Usage Records":"Inga användningsposter",Note:"Notera",Off:"",Online:"Online",Operation:"Funktion",Others:"","per page":"/sida",Previous:"Föregående",Price:"","Read from AMS":"Läs från AMS",Ready:"Redo",Remain:"Förbli","Remain {{percent}}%":"Kvar: {{percent}}%","Remain Alert":"",Reminders:"Påminnelser",roll:"rulle",Save:"Spara","Select Brand":"Välj varumärke","Select Currency":"","Select Device":"Välj enhet","Select Series":"Välj serie","Select Type":"Välj typ",Series:"Serie","Spool Detail":"Spoledetalj","Spool Weight":"Spolevikt",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Total kvantitet","Total Value":"Totalvärde","Total Weight":"Totalvikt","Unit Price(/kg)":"","Usage Heatmap":"Användning av värmemapp","Usage Records":"Användningsposter",Weight:"Vikt"},io={"{{count}} item_few":"","{{count}} item_many":"",Add:"","Add Filament":"","Advanced Settings":"",Archive:"",Archived:"","Basic Info":"","Basic Parameters":"",Brand:"","By Color":"","By Type":"",Calibration:"",Cancel:"",Color:"","Color Varieties":"",day_Fri:"",day_Mon:"",day_Sat:"",day_Sun:"",day_Thu:"",day_Tue:"",day_Wed:"",Delete:"",Distribution:"","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"","Edit Filament":"","Edit Filament Info":"",Empty:"","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"",Favorite:"","Fetching device info...":"",Filament:"","Filament Info":"","Filament List":"","Filament Manager":"","Getting AMS data failed":"","Getting device list failed, please retry":"","Input Note":"","Input Spool Weight":"","Input Total Weight":"","Input Unit Price":"","Last Dry Date":"","Low Remain":"","Manual Add":"","Material Type":"","Needs Drying":"","Net Weight":"",Next:"","No AMS detected on this device":"","No Data":"","No printer found, please ensure logged in and device bound":"","No Records":"","No Usage Records":"",Note:"",Off:"",Online:"",Operation:"",Others:"","per page":"",Previous:"",Price:"","Read from AMS":"",Ready:"",Remain:"","Remain {{percent}}%":"","Remain Alert":"",Reminders:"",roll:"",Save:"","Select Brand":"","Select Currency":"","Select Device":"","Select Series":"","Select Type":"",Series:"","Spool Detail":"","Spool Weight":"",Stats:"",Status:"","Status Reminders":"","Total Quantity":"","Total Value":"","Total Weight":"","Unit Price(/kg)":"","Usage Heatmap":"","Usage Records":"",Weight:""},so={Add:"Toevoegen","Add Filament":"+ Voeg filament toe","Advanced Settings":"",Archive:"Archiveren",Archived:"Gearchiveerd","Basic Info":"Basisinfo","Basic Parameters":"",Brand:"Merk","By Color":"Op kleur","By Type":"Op type",Calibration:"Kalibratie",Cancel:"Annuleren",Color:"Kleur","Color Varieties":"Kleurvariëteiten",day_Fri:"Vr",day_Mon:"Ma",day_Sat:"Za",day_Sun:"Zo",day_Thu:"Do",day_Tue:"Di",day_Wed:"Wo",Delete:"Verwijderen",Distribution:"Verdeling","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Drogen: {{date}}","Edit Filament":"Bewerk filament","Edit Filament Info":"Filamentinformatie bewerken",Empty:"Leeg","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Verbruikt",Favorite:"","Fetching device info...":"Apparaatinformatie ophalen...",Filament:"Filament","Filament Info":"Filamentinformatie","Filament List":"Filamentlijst","Filament Manager":"Filamentbeheer","Getting AMS data failed":"Het ophalen van AMS-gegevens is mislukt","Getting device list failed, please retry":"Het ophalen van de apparatenlijst is mislukt, probeer het opnieuw","Input Note":"Invoernotitie","Input Spool Weight":"Invoer spoelgewicht","Input Total Weight":"Invoer totaal gewicht","Input Unit Price":"","Last Dry Date":"","Low Remain":"Weinig resterend","Manual Add":"Handmatig toevoegen","Material Type":"Materiaaltype","Needs Drying":"Moet gedroogd worden","Net Weight":"Nettogewicht",Next:"Volgende","No AMS detected on this device":"Geen AMS gedetecteerd op dit apparaat","No Data":"Geen gegevens","No printer found, please ensure logged in and device bound":"Geen printer gevonden. Zorg ervoor dat u bent ingelogd en dat het apparaat correct is gekoppeld","No Records":"Geen gegevens","No Usage Records":"Geen gebruiksgegevens",Note:"Notitie",Off:"",Online:"Online",Operation:"Operatie",Others:"","per page":"/pagina",Previous:"Vorig",Price:"","Read from AMS":"Lees van AMS",Ready:"Klaar",Remain:"Resterend","Remain {{percent}}%":"Resterend {{percent}}%","Remain Alert":"",Reminders:"Herinneringen",roll:"rollen",Save:"Bewaar","Select Brand":"Selecteer merk","Select Currency":"","Select Device":"Selecteer apparaat","Select Series":"Selecteer serie","Select Type":"Selecteer type",Series:"Serie","Spool Detail":"Spoeldetails","Spool Weight":"Spoelgewicht",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Totale hoeveelheid","Total Value":"Totale waarde","Total Weight":"Totaalgewicht","Unit Price(/kg)":"","Usage Heatmap":"Gebruiksheatmap","Usage Records":"Gebruiksgegevens",Weight:"Gewicht"},lo={"{{count}} item_few":"","{{count}} item_many":"",Add:"","Add Filament":"","Advanced Settings":"",Archive:"",Archived:"","Basic Info":"","Basic Parameters":"",Brand:"","By Color":"","By Type":"",Calibration:"",Cancel:"",Color:"","Color Varieties":"",day_Fri:"",day_Mon:"",day_Sat:"",day_Sun:"",day_Thu:"",day_Tue:"",day_Wed:"",Delete:"",Distribution:"","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"","Edit Filament":"","Edit Filament Info":"",Empty:"","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"",Favorite:"","Fetching device info...":"",Filament:"","Filament Info":"","Filament List":"","Filament Manager":"","Getting AMS data failed":"","Getting device list failed, please retry":"","Input Note":"","Input Spool Weight":"","Input Total Weight":"","Input Unit Price":"","Last Dry Date":"","Low Remain":"","Manual Add":"","Material Type":"","Needs Drying":"","Net Weight":"",Next:"","No AMS detected on this device":"","No Data":"","No printer found, please ensure logged in and device bound":"","No Records":"","No Usage Records":"",Note:"",Off:"",Online:"",Operation:"",Others:"","per page":"",Previous:"",Price:"","Read from AMS":"",Ready:"",Remain:"","Remain {{percent}}%":"","Remain Alert":"",Reminders:"",roll:"",Save:"","Select Brand":"","Select Currency":"","Select Device":"","Select Series":"","Select Type":"",Series:"","Spool Detail":"","Spool Weight":"",Stats:"",Status:"","Status Reminders":"","Total Quantity":"","Total Value":"","Total Weight":"","Unit Price(/kg)":"","Usage Heatmap":"","Usage Records":"",Weight:""},co={"{{count}} item_few":"","{{count}} item_many":"",Add:"","Add Filament":"","Advanced Settings":"",Archive:"",Archived:"","Basic Info":"","Basic Parameters":"",Brand:"","By Color":"","By Type":"",Calibration:"",Cancel:"",Color:"","Color Varieties":"",day_Fri:"",day_Mon:"",day_Sat:"",day_Sun:"",day_Thu:"",day_Tue:"",day_Wed:"",Delete:"",Distribution:"","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"","Edit Filament":"","Edit Filament Info":"",Empty:"","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"",Favorite:"","Fetching device info...":"",Filament:"","Filament Info":"","Filament List":"","Filament Manager":"","Getting AMS data failed":"","Getting device list failed, please retry":"","Input Note":"","Input Spool Weight":"","Input Total Weight":"","Input Unit Price":"","Last Dry Date":"","Low Remain":"","Manual Add":"","Material Type":"","Needs Drying":"","Net Weight":"",Next:"","No AMS detected on this device":"","No Data":"","No printer found, please ensure logged in and device bound":"","No Records":"","No Usage Records":"",Note:"",Off:"",Online:"",Operation:"",Others:"","per page":"",Previous:"",Price:"","Read from AMS":"",Ready:"",Remain:"","Remain {{percent}}%":"","Remain Alert":"",Reminders:"",roll:"",Save:"","Select Brand":"","Select Currency":"","Select Device":"","Select Series":"","Select Type":"",Series:"","Spool Detail":"","Spool Weight":"",Stats:"",Status:"","Status Reminders":"","Total Quantity":"","Total Value":"","Total Weight":"","Unit Price(/kg)":"","Usage Heatmap":"","Usage Records":"",Weight:""},uo={Add:"","Add Filament":"","Advanced Settings":"",Archive:"",Archived:"","Basic Info":"","Basic Parameters":"",Brand:"","By Color":"","By Type":"",Calibration:"",Cancel:"",Color:"","Color Varieties":"",day_Fri:"",day_Mon:"",day_Sat:"",day_Sun:"",day_Thu:"",day_Tue:"",day_Wed:"",Delete:"",Distribution:"","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"","Edit Filament":"","Edit Filament Info":"",Empty:"","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"",Favorite:"","Fetching device info...":"",Filament:"","Filament Info":"","Filament List":"","Filament Manager":"","Getting AMS data failed":"","Getting device list failed, please retry":"","Input Note":"","Input Spool Weight":"","Input Total Weight":"","Input Unit Price":"","Last Dry Date":"","Low Remain":"","Manual Add":"","Material Type":"","Needs Drying":"","Net Weight":"",Next:"","No AMS detected on this device":"","No Data":"","No printer found, please ensure logged in and device bound":"","No Records":"","No Usage Records":"",Note:"",Off:"",Online:"",Operation:"",Others:"","per page":"",Previous:"",Price:"","Read from AMS":"",Ready:"",Remain:"","Remain {{percent}}%":"","Remain Alert":"",Reminders:"",roll:"",Save:"","Select Brand":"","Select Currency":"","Select Device":"","Select Series":"","Select Type":"",Series:"","Spool Detail":"","Spool Weight":"",Stats:"",Status:"","Status Reminders":"","Total Quantity":"","Total Value":"","Total Weight":"","Unit Price(/kg)":"","Usage Heatmap":"","Usage Records":"",Weight:""},fo={"{{count}} item_many":"",Add:"Adicionar","Add Filament":"+ Adicionar filamento","Advanced Settings":"",Archive:"Arquivar",Archived:"Arquivado","Basic Info":"Inform. básicas","Basic Parameters":"",Brand:"Marca","By Color":"Por cor","By Type":"Por tipo",Calibration:"Calibração",Cancel:"Cancelar",Color:"Cor","Color Varieties":"Variações de cor",day_Fri:"Sex",day_Mon:"Seg",day_Sat:"Sáb",day_Sun:"Dom",day_Thu:"Qui",day_Tue:"Ter",day_Wed:"Qua",Delete:"Excluir",Distribution:"Distribuição","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Secagem: {{date}}","Edit Filament":"Editar filamento","Edit Filament Info":"Editar informações do filamento",Empty:"Vazio","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Esgotado",Favorite:"","Fetching device info...":"Buscando informações do dispositivo…",Filament:"Filamento","Filament Info":"Informações do filamento","Filament List":"Lista de filamentos","Filament Manager":"Gerenciador de filamentos","Getting AMS data failed":"Falha ao obter dados do AMS","Getting device list failed, please retry":"Falha ao obter a lista de dispositivos. Tente novamente","Input Note":"Observação de entrada","Input Spool Weight":"Peso do carretel de entrada","Input Total Weight":"Peso total de entrada","Input Unit Price":"","Last Dry Date":"","Low Remain":"Pouco restante","Manual Add":"Adicionar manualmente","Material Type":"Tipo de material","Needs Drying":"Precisa de secagem","Net Weight":"Peso Líquido",Next:"Próximo","No AMS detected on this device":"Nenhum AMS detectado neste dispositivo","No Data":"Sem dados","No printer found, please ensure logged in and device bound":"Nenhuma impressora encontrada. Verifique se você fez login e vinculou o dispositivo","No Records":"Sem registros","No Usage Records":"Sem registros de uso",Note:"Nota",Off:"",Online:"On-line",Operation:"Operação",Others:"","per page":"/página",Previous:"Anterior",Price:"","Read from AMS":"Ler do AMS",Ready:"Pronto",Remain:"Restante","Remain {{percent}}%":"Restante: {{percent}}%","Remain Alert":"",Reminders:"Lembretes",roll:"bobina",Save:"Salvar","Select Brand":"Selecionar marca","Select Currency":"","Select Device":"Selecionar dispositivo","Select Series":"Selecionar série","Select Type":"Selecione o tipo",Series:"Série","Spool Detail":"Detalhes do carretel","Spool Weight":"Peso do carretel",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Quantidade total","Total Value":"Valor total","Total Weight":"Peso total","Unit Price(/kg)":"","Usage Heatmap":"Mapa de calor de uso","Usage Records":"Registros de uso",Weight:"Peso"},po={Add:"추가","Add Filament":"+ 필라멘트 추가","Advanced Settings":"",Archive:"아카이브",Archived:"보관됨","Basic Info":"기본 정보","Basic Parameters":"",Brand:"브랜드","By Color":"색상 기준","By Type":"유형 기준",Calibration:"캘리브레이션",Cancel:"취소",Color:"색상","Color Varieties":"색상 종류",day_Fri:"금요일",day_Mon:"월요일",day_Sat:"토요일",day_Sun:"일요일",day_Thu:"목요일",day_Tue:"화요일",day_Wed:"수요일",Delete:"삭제",Distribution:"분포","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"건조 기간: {{date}}","Edit Filament":"필라멘트 수정","Edit Filament Info":"필라멘트 정보 편집",Empty:"비어 있음","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"소진됨",Favorite:"","Fetching device info...":"기기 정보를 가져오는 중...",Filament:"필라멘트","Filament Info":"필라멘트 정보","Filament List":"필라멘트 목록","Filament Manager":"필라멘트 관리자","Getting AMS data failed":"AMS 데이터 가져오기에 실패.","Getting device list failed, please retry":"장치 목록을 가져오는 데 실패했습니다. 다시 시도하세요.","Input Note":"입력 참고","Input Spool Weight":"스풀 무게 입력","Input Total Weight":"총 무게 입력","Input Unit Price":"","Last Dry Date":"","Low Remain":"잔여량 부족","Manual Add":"수동 추가","Material Type":"재료 유형","Needs Drying":"건조 필요","Net Weight":"순중량",Next:"다음","No AMS detected on this device":"이 기기에서 AMS가 감지되지 않았습니다.","No Data":"데이터 없음","No printer found, please ensure logged in and device bound":"프린터를 찾을 수 없습니다. 로그인된 상태이고 기기가 연동되어 있는지 확인하세요.","No Records":"기록 없음","No Usage Records":"사용 기록 없음",Note:"메모",Off:"",Online:"온라인",Operation:"동작",Others:"","per page":"/페이지",Previous:"이전",Price:"","Read from AMS":"AMS에서 읽기",Ready:"준비 완료",Remain:"잔여량","Remain {{percent}}%":"잔여량 {{percent}}%","Remain Alert":"",Reminders:"알림",roll:"롤",Save:"저장","Select Brand":"브랜드 선택","Select Currency":"","Select Device":"기기 선택","Select Series":"시리즈 선택","Select Type":"타입 선택",Series:"시리즈","Spool Detail":"스풀 세부 사항","Spool Weight":"스풀 무게",Stats:"",Status:"","Status Reminders":"","Total Quantity":"총 수량","Total Value":"총 가치","Total Weight":"총 중량","Unit Price(/kg)":"","Usage Heatmap":"사용량 히트맵","Usage Records":"사용 기록",Weight:"무게"},ho={"{{count}} item_few":"","{{count}} item_many":"",Add:"Dodaj","Add Filament":"+ Dodaj filament","Advanced Settings":"",Archive:"Archiwum",Archived:"Zarchiwizowane","Basic Info":"Podstawowe informacje","Basic Parameters":"",Brand:"Marka","By Color":"Według koloru","By Type":"Według typu",Calibration:"Kalibracja",Cancel:"Anuluj",Color:"Kolor","Color Varieties":"Odmiany kolorów",day_Fri:"Pt",day_Mon:"Pon",day_Sat:"Sob",day_Sun:"Nie",day_Thu:"Czw",day_Tue:"Wt",day_Wed:"Śr",Delete:"Usuń",Distribution:"Dystrybucja","Dry Date":"","Dry Reminder":"","Drying: {{date}}":"Suszenie: {{date}}","Edit Filament":"Edytuj Filament","Edit Filament Info":"Edytuj informacje o filamencie",Empty:"Pusty","Every 2 Months":"","Every 2 Weeks":"","Every Month":"","Every Week":"",Exhausted:"Wyczerpane",Favorite:"","Fetching device info...":"Pobieranie informacji o urządzeniu...",Filament:"Filament","Filament Info":"Informacje o filamencie","Filament List":"Lista filamentów","Filament Manager":"Zarządzanie filamentem","Getting AMS data failed":"Nie udało się pobrać danych AMS","Getting device list failed, please retry":"Nie udało się pobrać listy urządzeń. Spróbuj ponownie","Input Note":"Wprowadź uwagę","Input Spool Weight":"Wprowadź masę szpuli","Input Total Weight":"Wprowadź całkowitą masę","Input Unit Price":"","Last Dry Date":"","Low Remain":"Pozostała niewielka ilość","Manual Add":"Dodawanie ręczne","Material Type":"Typ materiału","Needs Drying":"Wymaga wysuszenia","Net Weight":"Masa netto",Next:"Dalej","No AMS detected on this device":"Nie wykryto AMS na tym urządzeniu","No Data":"Brak danych","No printer found, please ensure logged in and device bound":"Nie znaleziono drukarki. Upewnij się, że użytkownik jest zalogowany i urządzenie jest powiązane","No Records":"Brak rekordów","No Usage Records":"Brak zapisów użytkowania",Note:"Uwaga",Off:"",Online:"Online",Operation:"Operacja",Others:"","per page":"/strona",Previous:"Poprzednie",Price:"","Read from AMS":"Odczytaj z AMS",Ready:"Gotowe",Remain:"Pozostało","Remain {{percent}}%":"Pozostało {{percent}}%","Remain Alert":"",Reminders:"Przypomnienia",roll:"rolka",Save:"Zapisz","Select Brand":"Wybierz markę","Select Currency":"","Select Device":"Wybierz urządzenie","Select Series":"Wybierz serię","Select Type":"Wybierz Typ",Series:"Seria","Spool Detail":"Szczegóły szpuli","Spool Weight":"Masa szpuli",Stats:"",Status:"","Status Reminders":"","Total Quantity":"Całkowita ilość","Total Value":"Całkowita wartość","Total Weight":"Całkowita masa","Unit Price(/kg)":"","Usage Heatmap":"Mapa cieplna użycia","Usage Records":"Rekordy użytkowania",Weight:"Masa"};Mr.use(Kr).init({lng:function(){const e=new URLSearchParams(window.location.search).get("lang");return e?(localStorage.setItem("BambuWebLang",e),e):localStorage.getItem("BambuWebLang")||"en"}(),fallbackLng:"en",returnEmptyString:!1,debug:!1,interpolation:{escapeValue:!1},resources:{en:{translation:Xr},zh_CN:{translation:Jr},ja_JP:{translation:Zr},it_IT:{translation:eo},fr_FR:{translation:to},de_DE:{translation:no},hu_HU:{translation:ro},es_ES:{translation:oo},sv_SE:{translation:ao},cs_CZ:{translation:io},nl_NL:{translation:so},uk_UA:{translation:lo},ru_RU:{translation:co},tr_TR:{translation:uo},pt_BR:{translation:fo},ko_KR:{translation:po},pl_PL:{translation:ho}},parseMissingKeyHandler:e=>e});const mo=function(e){return new Cn(e)}({component:function(){const e="/filament"===function(e){const t=Ct(null==e||e.router),n=(null==e?void 0:e.router)||t,r=p.useRef(void 0);return tn(n.stores.__store,t=>{if(null==e?void 0:e.select){if(e.structuralSharing??n.options.defaultStructuralSharing){const n=$(r.current,e.select(t));return r.current=n,n}return e.select(t)}return t})}({select:e=>e.location.pathname});return l.jsxs(l.Fragment,{children:[!e&&l.jsxs("div",{className:"flex gap-4 p-2 border-b border-neutral-200 dark:border-neutral-700 text-sm",children:[l.jsx(Sn,{to:"/",className:"font-bold hover:text-green-500 [&.active]:text-green-500",children:"Home"}),l.jsx(Sn,{to:"/about",className:"font-bold hover:text-green-500 [&.active]:text-green-500",children:"About"}),l.jsx(Sn,{to:"/app",className:"font-bold hover:text-green-500 [&.active]:text-green-500",children:"App"})]}),l.jsx(Tn,{})]})}}),go=e=>{let t;const n=new Set,r=(e,r)=>{const o="function"==typeof e?e(t):e;if(!Object.is(o,t)){const e=t;t=(null!=r?r:"object"!=typeof o||null===o)?o:Object.assign({},t,o),n.forEach(n=>n(t,e))}},o=()=>t,a={setState:r,getState:o,getInitialState:()=>i,subscribe:e=>(n.add(e),()=>n.delete(e))},i=t=e(r,o,a);return a},vo=e=>e;const yo=e=>{const t=(e=>e?go(e):go)(e),n=e=>function(e,t=vo){const n=h.useSyncExternalStore(e.subscribe,h.useCallback(()=>t(e.getState()),[e,t]),h.useCallback(()=>t(e.getInitialState()),[e,t]));return h.useDebugValue(n),n}(t,e);return Object.assign(n,t),n};var xo=Symbol.for("immer-nothing"),bo=Symbol.for("immer-draftable"),wo=Symbol.for("immer-state");function So(e,...t){throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ko=Object.getPrototypeOf;function Co(e){return!!e&&!!e[wo]}function No(e){var t;return!!e&&(Eo(e)||Array.isArray(e)||!!e[bo]||!!(null==(t=e.constructor)?void 0:t[bo])||Ao(e)||Mo(e))}var jo=Object.prototype.constructor.toString(),_o=new WeakMap;function Eo(e){if(!e||"object"!=typeof e)return!1;const t=Object.getPrototypeOf(e);if(null===t||t===Object.prototype)return!0;const n=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(n===Object)return!0;if("function"!=typeof n)return!1;let r=_o.get(n);return void 0===r&&(r=Function.toString.call(n),_o.set(n,r)),r===jo}function Po(e,t,n=!0){if(0===Ro(e)){(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)})}else e.forEach((n,r)=>t(r,n,e))}function Ro(e){const t=e[wo];return t?t.type_:Array.isArray(e)?1:Ao(e)?2:Mo(e)?3:0}function Lo(e,t){return 2===Ro(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function Fo(e,t,n){const r=Ro(e);2===r?e.set(t,n):3===r?e.add(n):e[t]=n}function Ao(e){return e instanceof Map}function Mo(e){return e instanceof Set}function To(e){return e.copy_||e.base_}function Do(e,t){if(Ao(e))return new Map(e);if(Mo(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const n=Eo(e);if(!0===t||"class_only"===t&&!n){const t=Object.getOwnPropertyDescriptors(e);delete t[wo];let n=Reflect.ownKeys(t);for(let r=0;r1&&Object.defineProperties(e,{set:Io,add:Io,clear:Io,delete:Io}),Object.freeze(e),t&&Object.values(e).forEach(e=>Oo(e,!0))),e}var Io={value:function(){So(2)}};function zo(e){return null===e||"object"!=typeof e||Object.isFrozen(e)}var Bo,$o={};function Wo(e){const t=$o[e];return t||So(0),t}function Uo(){return Bo}function Vo(e,t){t&&(Wo("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ho(e){Ko(e),e.drafts_.forEach(Go),e.drafts_=null}function Ko(e){e===Bo&&(Bo=e.parent_)}function qo(e){return Bo={drafts_:[],parent_:Bo,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Go(e){const t=e[wo];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function Qo(e,t){t.unfinalizedDrafts_=t.drafts_.length;const n=t.drafts_[0];return void 0!==e&&e!==n?(n[wo].modified_&&(Ho(t),So(4)),No(e)&&(e=Yo(t,e),t.parent_||Jo(t,e)),t.patches_&&Wo("Patches").generateReplacementPatches_(n[wo].base_,e,t.patches_,t.inversePatches_)):e=Yo(t,n,[]),Ho(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==xo?e:void 0}function Yo(e,t,n){if(zo(t))return t;const r=e.immer_.shouldUseStrictIteration(),o=t[wo];if(!o)return Po(t,(r,a)=>Xo(e,o,t,r,a,n),r),t;if(o.scope_!==e)return t;if(!o.modified_)return Jo(e,o.base_,!0),o.base_;if(!o.finalized_){o.finalized_=!0,o.scope_.unfinalizedDrafts_--;const t=o.copy_;let a=t,i=!1;3===o.type_&&(a=new Set(t),t.clear(),i=!0),Po(a,(r,a)=>Xo(e,o,t,r,a,n,i),r),Jo(e,t,!1),n&&e.patches_&&Wo("Patches").generatePatches_(o,n,e.patches_,e.inversePatches_)}return o.copy_}function Xo(e,t,n,r,o,a,i){if(null==o)return;if("object"!=typeof o&&!i)return;const s=zo(o);if(!s||i){if(Co(o)){const i=Yo(e,o,a&&t&&3!==t.type_&&!Lo(t.assigned_,r)?a.concat(r):void 0);if(Fo(n,r,i),!Co(i))return;e.canAutoFreeze_=!1}else i&&n.add(o);if(No(o)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;if(t&&t.base_&&t.base_[r]===o&&s)return;Yo(e,o),t&&t.scope_.parent_||"symbol"==typeof r||!(Ao(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))||Jo(e,o)}}}function Jo(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Oo(t,n)}var Zo={get(e,t){if(t===wo)return e;const n=To(e);if(!Lo(n,t))return function(e,t,n){var r;const o=na(t,n);return o?"value"in o?o.value:null==(r=o.get)?void 0:r.call(e.draft_):void 0}(e,n,t);const r=n[t];return e.finalized_||!No(r)?r:r===ta(e.base_,t)?(oa(e),e.copy_[t]=aa(r,e)):r},has:(e,t)=>t in To(e),ownKeys:e=>Reflect.ownKeys(To(e)),set(e,t,n){const r=na(To(e),t);if(null==r?void 0:r.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){const r=ta(To(e),t),i=null==r?void 0:r[wo];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(((o=n)===(a=r)?0!==o||1/o==1/a:o!=o&&a!=a)&&(void 0!==n||Lo(e.base_,t)))return!0;oa(e),ra(e)}var o,a;return e.copy_[t]===n&&(void 0!==n||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=n,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==ta(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,oa(e),ra(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const n=To(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:r.enumerable,value:n[t]}:r},defineProperty(){So(11)},getPrototypeOf:e=>ko(e.base_),setPrototypeOf(){So(12)}},ea={};function ta(e,t){const n=e[wo];return(n?To(n):e)[t]}function na(e,t){if(!(t in e))return;let n=ko(e);for(;n;){const e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=ko(n)}}function ra(e){e.modified_||(e.modified_=!0,e.parent_&&ra(e.parent_))}function oa(e){e.copy_||(e.copy_=Do(e.base_,e.scope_.immer_.useStrictShallowCopy_))}Po(Zo,(e,t)=>{ea[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),ea.deleteProperty=function(e,t){return ea.set.call(this,e,t,void 0)},ea.set=function(e,t,n){return Zo.set.call(this,e[0],t,n,e[0])};function aa(e,t){const n=Ao(e)?Wo("MapSet").proxyMap_(e,t):Mo(e)?Wo("MapSet").proxySet_(e,t):function(e,t){const n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:Uo(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let o=r,a=Zo;n&&(o=[r],a=ea);const{revoke:i,proxy:s}=Proxy.revocable(o,a);return r.draft_=s,r.revoke_=i,s}(e,t);return(t?t.scope_:Uo()).drafts_.push(n),n}function ia(e){if(!No(e)||zo(e))return e;const t=e[wo];let n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Do(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Do(e,!0);return Po(n,(e,t)=>{Fo(n,e,ia(t))},r),t&&(t.finalized_=!1),n}var sa=(new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if("function"==typeof e&&"function"!=typeof t){const n=t;t=e;const r=this;return function(e=n,...o){return r.produce(e,e=>t.call(this,e,...o))}}let r;if("function"!=typeof t&&So(6),void 0!==n&&"function"!=typeof n&&So(7),No(e)){const o=qo(this),a=aa(e,void 0);let i=!0;try{r=t(a),i=!1}finally{i?Ho(o):Ko(o)}return Vo(o,n),Qo(r,o)}if(!e||"object"!=typeof e){if(r=t(e),void 0===r&&(r=e),r===xo&&(r=void 0),this.autoFreeze_&&Oo(r,!0),n){const t=[],o=[];Wo("Patches").generateReplacementPatches_(e,r,t,o),n(t,o)}return r}So(1)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},"boolean"==typeof(null==e?void 0:e.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof(null==e?void 0:e.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),"boolean"==typeof(null==e?void 0:e.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){No(e)||So(8),Co(e)&&(e=function(e){Co(e)||So(10);return ia(e)}(e));const t=qo(this),n=aa(e,void 0);return n[wo].isManual_=!0,Ko(t),n}finishDraft(e,t){const n=e&&e[wo];n&&n.isManual_||So(9);const{scope_:r}=n;return Vo(r,t),Qo(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){const r=t[n];if(0===r.path.length&&"replace"===r.op){e=r.value;break}}n>-1&&(t=t.slice(n+1));const r=Wo("Patches").applyPatches_;return Co(e)?r(e,t):this.produce(e,e=>r(e,t))}}).produce;const la=e=>(t,n,r)=>(r.setState=(e,n,...r)=>{const o="function"==typeof e?sa(e):e;return t(o,n,...r)},e(r.setState,n,r)),ca={BASE_URL:"./",DEV:!1,MODE:"production",PROD:!0,SSR:!1},ua=e=>!!e.dispatchFromDevtools&&"function"==typeof e.dispatch,da=new Map,fa=e=>{const t=da.get(e);return t?Object.fromEntries(Object.entries(t.stores).map(([e,t])=>[e,t.getState()])):{}},pa=e=>{var t,n;if(!e)return;const r=e.split("\n"),o=r.findIndex(e=>e.includes("api.setState"));if(o<0)return;const a=(null==(t=r[o+1])?void 0:t.trim())||"";return null==(n=/.+ (.+) .+/.exec(a))?void 0:n[1]},ha=(e,t={})=>(n,r,o)=>{const{enabled:a,anonymousActionType:i,store:s,...l}=t;let c;try{c=(null!=a?a:"production"!==(ca?"production":void 0))&&window.__REDUX_DEVTOOLS_EXTENSION__}catch(m){}if(!c)return e(n,r,o);const{connection:u,...d}=((e,t,n)=>{if(void 0===e)return{type:"untracked",connection:t.connect(n)};const r=da.get(n.name);if(r)return{type:"tracked",store:e,...r};const o={connection:t.connect(n),stores:{}};return da.set(n.name,o),{type:"tracked",store:e,...o}})(s,c,l);let f=!0;o.setState=(e,t,a)=>{const c=n(e,t);if(!f)return c;const d=void 0===a?{type:i||pa((new Error).stack)||"anonymous"}:"string"==typeof a?{type:a}:a;return void 0===s?(null==u||u.send(d,r()),c):(null==u||u.send({...d,type:`${s}/${d.type}`},{...fa(l.name),[s]:o.getState()}),c)},o.devtools={cleanup:()=>{u&&"function"==typeof u.unsubscribe&&u.unsubscribe(),((e,t)=>{if(void 0===t)return;const n=da.get(e);n&&(delete n.stores[t],0===Object.keys(n.stores).length&&da.delete(e))})(l.name,s)}};const p=(...e)=>{const t=f;f=!1,n(...e),f=t},h=e(o.setState,r,o);if("untracked"===d.type?null==u||u.init(h):(d.stores[d.store]=o,null==u||u.init(Object.fromEntries(Object.entries(d.stores).map(([e,t])=>[e,e===d.store?h:t.getState()])))),ua(o)){let e=!1;const t=o.dispatch;o.dispatch=(...n)=>{"production"===(ca?"production":void 0)||"__setState"!==n[0].type||e||(console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'),e=!0),t(...n)}}return u.subscribe(e=>{var t;switch(e.type){case"ACTION":return"string"!=typeof e.payload?void console.error("[zustand devtools middleware] Unsupported action format"):ma(e.payload,e=>{if("__setState"===e.type){if(void 0===s)return void p(e.state);1!==Object.keys(e.state).length&&console.error('\n [zustand devtools middleware] Unsupported __setState action format.\n When using \'store\' option in devtools(), the \'state\' should have only one key, which is a value of \'store\' that was passed in devtools(),\n and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } }\n ');const t=e.state[s];if(null==t)return;return void(JSON.stringify(o.getState())!==JSON.stringify(t)&&p(t))}ua(o)&&o.dispatch(e)});case"DISPATCH":switch(e.payload.type){case"RESET":return p(h),void 0===s?null==u?void 0:u.init(o.getState()):null==u?void 0:u.init(fa(l.name));case"COMMIT":return void 0===s?void(null==u||u.init(o.getState())):null==u?void 0:u.init(fa(l.name));case"ROLLBACK":return ma(e.state,e=>{if(void 0===s)return p(e),void(null==u||u.init(o.getState()));p(e[s]),null==u||u.init(fa(l.name))});case"JUMP_TO_STATE":case"JUMP_TO_ACTION":return ma(e.state,e=>{void 0!==s?JSON.stringify(o.getState())!==JSON.stringify(e[s])&&p(e[s]):p(e)});case"IMPORT_STATE":{const{nextLiftedState:n}=e.payload,r=null==(t=n.computedStates.slice(-1)[0])?void 0:t.state;if(!r)return;return p(void 0===s?r:r[s]),void(null==u||u.send(null,n))}case"PAUSE_RECORDING":return f=!f}return}}),h},ma=(e,t)=>{let n;try{n=JSON.parse(e)}catch(r){console.error("[zustand devtools middleware] Could not parse the received json",r)}void 0!==n&&t(n)},ga=e=>({devices:[],addDevice:t=>e(e=>{e.devices.push({id:t,value:0,AmsList:[]})}),removeDevice:t=>e(e=>{e.devices=e.devices.filter(e=>e.id!==t)})}),va=e=>({device:{id:"",value:0,AmsList:[],addAms:t=>e(e=>{e.device.AmsList.push({id:t,value:0,SlotList:[]})}),removeAms:t=>e(e=>{e.device.AmsList=e.device.AmsList.filter(e=>e.id!==t)})}}),ya=e=>({ams:{id:"",value:0,SlotList:[],setValue:(t,n)=>e(e=>{e.ams.id=t,e.ams.value=n}),addSlot:t=>e(e=>{e.ams.SlotList.push({id:t,value:0})}),removeSlot:t=>e(e=>{e.ams.SlotList=e.ams.SlotList.filter(e=>e.id!==t)})}}),xa=e=>({slot:{id:"",value:0,status:"",setValue:(t,n)=>e(e=>{e.slot.id=t,e.slot.value=n}),setStatus:(t,n)=>e(e=>{e.slot.id=t,e.slot.status=n})}}),ba={logged_in:!1,is_syncing:!1,is_pulling:!1,last_synced_at:"",last_error:{code:0,message:""}};const wa=e=>({filament:{spools:[],presets:{vendors:[]},machines:[],amsData:null,selectedMachineDevId:"",theme:/\(\s*light\s*\)/i.test(navigator.userAgent)?"light":"dark",isLoading:!1,error:null,cloudSync:{...ba},cloudConfig:null,cloudSyncHistory:[],cloudAutoPushSummary:null,toasts:[],debugEnabled:!1,debugLogs:[],debugFilter:"all",candidatesByFilaId:{},items:[],setSpools:t=>e(e=>{e.filament.spools=t,e.filament.items=t,e.filament.error=null}),setPresets:t=>e(e=>{e.filament.presets=t}),setMachines:t=>e(e=>{e.filament.machines=t}),setAmsData:t=>e(e=>{e.filament.amsData=t}),setSelectedMachineDevId:t=>e(e=>{e.filament.selectedMachineDevId=t||""}),setTheme:t=>e(e=>{e.filament.theme=t}),setLoading:t=>e(e=>{e.filament.isLoading=t}),setError:t=>e(e=>{e.filament.error=t,e.filament.isLoading=!1}),setCloudSync:t=>e(e=>{e.filament.cloudSync=t}),setCloudConfig:t=>e(e=>{e.filament.cloudConfig=t}),appendCloudSyncHistory:t=>e(e=>{var n;const r=e.filament.cloudSyncHistory,o=((null==(n=r[r.length-1])?void 0:n.id)??0)+1;r.push({id:o,...t}),r.length>100&&r.splice(0,r.length-100)}),clearCloudSyncHistory:()=>e(e=>{e.filament.cloudSyncHistory=[]}),setCloudAutoPushSummary:t=>e(e=>{e.filament.cloudAutoPushSummary=t}),pushToast:t=>e(e=>{var n;const r=((null==(n=e.filament.toasts[e.filament.toasts.length-1])?void 0:n.id)??0)+1;e.filament.toasts.push({id:r,...t}),e.filament.toasts.length>5&&e.filament.toasts.splice(0,e.filament.toasts.length-5)}),dismissToast:t=>e(e=>{e.filament.toasts=e.filament.toasts.filter(e=>e.id!==t)}),setDebugEnabled:t=>e(e=>{e.filament.debugEnabled=t,t||(e.filament.debugLogs=[],e.filament.debugFilter="all")}),appendDebugLog:t=>e(e=>{var n;if(!e.filament.debugEnabled)return;const r=((null==(n=e.filament.debugLogs[e.filament.debugLogs.length-1])?void 0:n.id)??0)+1;e.filament.debugLogs.push({id:r,...t}),e.filament.debugLogs.length>300&&e.filament.debugLogs.splice(0,e.filament.debugLogs.length-300)}),clearDebugLogs:()=>e(e=>{e.filament.debugLogs=[]}),setDebugFilter:t=>e(e=>{e.filament.debugFilter=t}),setColorCandidates:(t,n)=>e(e=>{if(!t)return;const r=Array.isArray(n)?n:[],o=e.filament.candidatesByFilaId[t];0===r.length&&Array.isArray(o)&&o.length>0||(e.filament.candidatesByFilaId[t]=r)}),setItems:t=>e(e=>{e.filament.items=t,e.filament.spools=t,e.filament.error=null})}}),Sa=yo(ha(la((e,t,n)=>({...ga(e),...va(e),...ya(e),...xa(e),...wa(e)})),{name:"app-store"}));function ka(e,t){!function(e){var t,n,r,o,a;const i="string"==typeof e?e:JSON.stringify(e);if("function"==typeof(null==(n=null==(t=window.chrome)?void 0:t.webview)?void 0:n.postMessage))return void window.chrome.webview.postMessage(i);if("function"==typeof(null==(a=null==(o=null==(r=window.webkit)?void 0:r.messageHandlers)?void 0:o.wx)?void 0:a.postMessage))return void window.webkit.messageHandlers.wx.postMessage(i);const s=document.createElement("iframe");s.style.display="none",s.src="app://"+encodeURIComponent(i),document.body.appendChild(s),setTimeout(()=>{try{document.body.removeChild(s)}catch{}},200)}({head:e,body:t})}function Ca(){const e=p.useRef(0),t=p.useRef(new Map),n=p.useCallback(ka,[]),r=p.useCallback((r,o=5e3)=>{const a=e.current++,i=Sa.getState().filament,s={version:"1.0",type:"request",seq:a,ts:Date.now()},l=r??{};return i.debugEnabled&&"filament"===l.module&&i.appendDebugLog({ts:Date.now(),category:"bridge",level:"info",title:"Web request sent",summary:`${String(l.submod??"unknown")}/${String(l.action??"unknown")}`,detail:l}),n(s,r??{}),new Promise(e=>{const n=setTimeout(()=>{t.current.delete(a),e({ok:!1,error:"Request Timeout"})},o);t.current.set(a,{resolve:e,timer:n})})},[n]);return p.useEffect(()=>{const e=e=>{const n=e.detail;if(function(e){return"1.0"===e.head.version}(n)&&"response"===n.head.type){const e=t.current.get(n.head.seq);if(!e)return;clearTimeout(e.timer),t.current.delete(n.head.seq);const r=n.body,o=Sa.getState().filament;o.debugEnabled&&"filament"===(null==r?void 0:r.module)&&o.appendDebugLog({ts:Date.now(),category:"bridge",level:0===Number(r.error_code??0)?"info":"error",title:"C++ response received",summary:`${String(r.submod??"unknown")}/${String(r.action??"unknown")}`,detail:r}),e.resolve({ok:!0,value:n.body})}};return document.addEventListener("cpp:device",e),()=>{document.removeEventListener("cpp:device",e),t.current.forEach(e=>clearTimeout(e.timer)),t.current.clear()}},[]),r}function Na(e,t,n){return{module:"filament",submod:e,action:t,payload:n??{}}}function ja(e){const t=e&&"object"==typeof e?e:{},n=Array.isArray(t.filamentSettings)?t.filamentSettings:[],r=new Set,o=new Map;return n.forEach(e=>{const t="string"==typeof e.filamentVendor?e.filamentVendor:"",n="string"==typeof e.filamentType?e.filamentType:"",a="string"==typeof e.filamentName?e.filamentName:"";if(t&&r.add(t),!t||!n)return;const i=`${t}\0${n}`,s=o.get(i)??new Set,l=a.trim(),c=`${n} `;l&&l!==n&&l.startsWith(c)&&s.add(l.slice(c.length).trim()),o.set(i,s)}),{...t,vendors:t.vendors instanceof Array?t.vendors.filter(e=>"string"==typeof e&&e.length>0):[...r].sort(),types:t.types instanceof Array?t.types:[...o.entries()].map(([e,t])=>{const[n,r]=e.split("\0");return{vendor:n,type:r,series:[...t].filter(Boolean).sort()}}).sort((e,t)=>e.vendor.localeCompare(t.vendor)||e.type.localeCompare(t.type))}}function _a(e){const t=(e??"").trim();if(!t)return"";const n=(t.startsWith("#")?t:`#${t}`).slice(0,7).toUpperCase();return/^#[0-9A-F]{6}$/.test(n)?n:""}function Ea(e,t){const n=_a(e),r=_a(t);return!(!n||!r)&&n===r}function Pa(e){return Array.isArray(e)?e.map(_a).filter(e=>7===e.length):[]}function Ra(e){return Pa(e).slice().sort().join(",")}function La(e){return{hexes:Pa(e.hexes),primary:_a(e.primaryHex),colorType:e.colorType}}function Fa(e){const{hexes:t,primary:n,colorType:r}=La(e);if(t.length>1){if(1===r){const e=100/t.length;return`linear-gradient(90deg, ${t.map((t,n)=>`${t} ${n*e}%, ${t} ${(n+1)*e}%`).join(", ")})`}return`linear-gradient(90deg, ${t.join(", ")})`}return 1===t.length?t[0]:n||"#888"}function Aa(e){const{hexes:t,primary:n}=La(e);return t.length>1?t.join(" / "):1===t.length?t[0]:n}function Ma(e){const t=(e.color_code??"").trim();return!!t&&(!t.startsWith("#")&&!/^[0-9A-F]{6,8}$/i.test(t))}function Ta(e,t,n={}){if(!Array.isArray(e)||0===e.length)return null;const r=Pa(t);if(0===r.length)return null;const o=Ra(r);for(const a of e){if(n.officialOnly&&!Ma(a))continue;const e=Pa(a.colors);if((!n.singleHexOnly||1===e.length)&&(e.length===r.length&&Ra(e)===o))return a}return null}function Da(e,t){const n=(e.setting_id||"").trim(),r=n?t[n]:void 0,o=Pa(e.colors),a=_a(e.color_code);if(r){const e=Ta(r,o,{officialOnly:!0});if(e)return e}if(r&&a){const e=Ta(r,[a],{officialOnly:!0});if(e)return e}if(r&&a){const e=function(e,t){if(!Array.isArray(e)||0===e.length)return null;const n=_a(t);if(!n)return null;for(const r of e)if(Ma(r)&&Pa(r.colors).some(e=>Ea(e,n)))return r;return null}(r,a);if(e)return e}if(a)for(const[i,s]of Object.entries(t)){if(i===n)continue;const e=Ta(s,[a],{officialOnly:!0,singleHexOnly:!0});if(e)return e}if(r){const e=Ta(r,o);if(e)return e}return r&&a?Ta(r,[a]):null}function Oa({colorCode:e,colors:t,colorType:n,size:r=40,border:o=!0,radius:a}){const i=Pa(t),s=_a(e)||"#888",c={width:r,height:r,borderRadius:a??Math.max(2,Math.round(r/6)),overflow:"hidden",boxShadow:o?"inset 0 0 0 1px rgba(255, 255, 255, 0.10)":void 0,boxSizing:"border-box"};if(i.length>1&&1===n){const e=i.length,t=r>=24?2:1,n=Math.max(1,r-2*t),o=Math.floor(n/e),a=i.map((t,r)=>r===e-1?n-o*(e-1):o);return l.jsx("span",{className:"inline-flex shrink-0 align-middle",style:{...c,display:"inline-flex",alignItems:"center",justifyContent:"center",lineHeight:0,fontSize:0,background:"rgba(255, 255, 255, 0.06)"},children:l.jsx("span",{style:{display:"inline-flex",width:n,height:n,lineHeight:0,fontSize:0},children:i.map((e,t)=>l.jsx("span",{style:{display:"block",flex:`0 0 ${a[t]}px`,width:a[t],height:n,background:e}},`${t}-${e}`))})})}if(i.length>1){const e=i.join(", ");return l.jsx("span",{className:"inline-block shrink-0",style:{...c,background:`linear-gradient(90deg, ${e})`}})}const u=i[0]||s;return l.jsx("span",{className:"inline-block shrink-0",style:{...c,background:u}})}const Ia=["#000000","#333333","#555555","#808080","#BBBBBB","#FFFFFF","#FF0000","#CC3333","#FF6666","#FF3300","#FF6600","#FF9900","#FFCC00","#FFFF00","#CCFF00","#66FF00","#00CC00","#009933","#006633","#00CCCC","#0099CC","#0066CC","#0033CC","#0000FF","#3300CC","#6600CC","#9900CC","#CC00CC","#FF00FF","#FF66CC","#FF99CC","#CC6666","#996633","#663300","#CCCC99","#99CC66","#66CCCC","#6699FF","#CC99FF","#FFCC99"],za={manual:"Manual Entry",ams_sync:"AMS Sync",rfid:"RFID"},Ba=[20,50,100];function $a(e,t){const n=(e||"").trim(),r=(t||"").trim();return n?r&&r!==n?n&&(r===n||r.startsWith(n+" "))?r:`${n} ${r}`.trim():n:r}function Wa(e){const t=(e.brand||"").trim(),n=(e.series||"").trim(),r=(e.material_type||"").trim();return[t,n||r].filter(Boolean).join(" ")}function Ua(e){return"number"==typeof e.net_weight&&e.net_weight>0?Math.round(e.net_weight):Math.round((e.initial_weight||0)*(e.remain_percent||0)/100)}function Va(e,t){const n=Array.isArray(null==t?void 0:t.colors)?t.colors:[],r=Array.isArray(e.colors)?e.colors:[];return r.length>1?{colorCode:e.color_code,colors:r,colorType:e.color_type}:n.length>1?{colorCode:n[0]||e.color_code,colors:n,colorType:null==t?void 0:t.color_type}:{colorCode:e.color_code,colors:r,colorType:e.color_type}}function Ha(e,t){if(t<=7)return Array.from({length:t},(e,t)=>t+1);const n=[1];e>3&&n.push("...");for(let r=Math.max(2,e-1);r<=Math.min(t-1,e+1);r++)n.push(r);return e1&&n.push(t),n}const Ka="min-w-6 h-6 flex items-center justify-center rounded-sm border text-xs cursor-pointer px-1 disabled:opacity-30 disabled:cursor-default",qa="border-transparent bg-transparent text-fm-text-secondary hover:bg-fm-hover hover:text-fm-text-strong",Ga="text-left px-6 pt-2 pb-[9px] align-middle text-sm font-normal text-fm-text-strong h-12 sticky top-0 bg-[#141414] [html[data-theme=light]_&]:bg-white z-10 select-none border-b border-fm-border",Qa="text-left px-6 pt-2 pb-[9px] border-b border-fm-border align-middle h-[60px]";function Ya({spools:e,selected:t,onToggleSelect:n,onSelectAll:r,grouped:o,onDetail:a,onAddSimilar:i,onEmptyAdd:s,onDelete:c}){const{t:u}=Yr(),[d,f]=p.useState({key:"",asc:!0}),[h,m]=p.useState(1),[g,v]=p.useState(50),[y,x]=p.useState({}),b=Sa(e=>e.filament.candidatesByFilaId),w=p.useMemo(()=>{const{key:t,asc:n}=d;return t?[...e].sort((e,r)=>{const o=e[t],a=r[t];if("number"==typeof o&&"number"==typeof a)return n?o-a:a-o;const i=String(o||""),s=String(a||"");return n?i.localeCompare(s):s.localeCompare(i)}):e},[e,d]),S=w.length,k=p.useMemo(()=>{if(!o)return w.map(e=>({type:"spool",spool:e}));const e=function(e){const t={};return e.forEach(e=>{const n=Wa(e)||"?";t[n]||(t[n]={key:n,count:0,totalWeight:0,spools:[]}),t[n].count++,t[n].totalWeight+=Ua(e),t[n].spools.push(e)}),Object.values(t)}(w),t=[];return e.forEach(e=>{t.push({type:"group",group:e}),y[e.key]||e.spools.forEach(e=>t.push({type:"spool",spool:e}))}),t},[w,o,y]),C=k.length,N=Math.max(1,Math.ceil(C/g)),j=Math.min(h,N),_=k.slice((j-1)*g,j*g),E=p.useCallback(e=>{f(t=>t.key===e?{key:e,asc:!t.asc}:{key:e,asc:!0})},[]);return 0===S?l.jsxs("div",{className:"flex-1 min-h-0 flex flex-col items-center justify-center text-fm-text-detail gap-4 bg-fm-inner2 rounded-[16px] border border-fm-border",children:[l.jsxs("button",{type:"button",className:"relative w-12 h-12 rounded-lg border border-fm-border bg-fm-inner2 text-fm-text-detail cursor-pointer transition-colors duration-150 hover:bg-fm-hover hover:text-fm-text-primary",onClick:s,title:u("Add Filament"),"aria-label":u("Add Filament"),children:[l.jsx("span",{className:"absolute inset-2 rounded border-2 border-current opacity-55"}),l.jsx("span",{className:"absolute left-1/2 top-1/2 h-[2px] w-4 -translate-x-1/2 -translate-y-1/2 rounded-sm bg-current opacity-55"}),l.jsx("span",{className:"absolute left-1/2 top-1/2 h-4 w-[2px] -translate-x-1/2 -translate-y-1/2 rounded-sm bg-current opacity-55"})]}),l.jsx("p",{children:u("No Data")})]}):l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"flex-1 min-h-0 bg-[#141414] [html[data-theme=light]_&]:bg-white rounded-[16px] border border-fm-border p-3 relative overflow-hidden",children:l.jsx("div",{className:"h-full overflow-auto px-3",children:l.jsxs("table",{className:"w-full border-separate border-spacing-0",children:[l.jsxs("colgroup",{children:[l.jsx("col",{style:{width:48}}),l.jsx("col",{style:{minWidth:200}}),l.jsx("col",{style:{width:180}}),l.jsx("col",{style:{width:140}})]}),l.jsx("thead",{children:l.jsxs("tr",{children:[l.jsx("th",{className:`${Ga} !px-4 w-12 text-center`,children:l.jsx("input",{type:"checkbox",className:"w-4 h-4 cursor-pointer accent-fm-brand",checked:t.size>0&&t.size===e.length,onChange:r})}),l.jsx(Xa,{label:u("Filament"),sortKey:"brand",current:d.key,asc:d.asc,onClick:E}),l.jsx(Xa,{label:u("Remain"),sortKey:"remain_percent",current:d.key,asc:d.asc,onClick:E}),l.jsx("th",{className:Ga,children:u("Operation")})]})}),l.jsx("tbody",{children:_.map(e=>{if("group"===e.type){const t=e.group,n=!!y[t.key];return l.jsx("tr",{"data-testid":"filament-group-row","data-group-key":t.key,"data-group-count":t.count,"data-group-weight":t.totalWeight,className:"cursor-pointer select-none",onClick:()=>{return e=t.key,void x(t=>({...t,[e]:!t[e]}));var e},children:l.jsx("td",{colSpan:4,className:"bg-fm-inner border-b border-fm-border px-6 pt-2 pb-[9px] h-8",children:l.jsxs("div",{className:"flex items-center gap-3 text-xs text-fm-text-secondary",children:[l.jsx("span",{className:"inline-block w-3 transition-transform duration-150"+(n?" -rotate-90":""),children:"▾"}),l.jsx("span",{children:t.key}),l.jsx("span",{className:"bg-fm-input rounded-[10px] px-2 py-[1px] text-[11px]",children:t.count}),l.jsxs("span",{className:"text-fm-text-detail",children:[t.totalWeight," g"]})]})})},`g-${t.key}`)}const r=e.spool,o=r.remain_percent||0,s=0===o?"empty":o<20?"low":"",d=Ua(r),f=function(e){const t=e.spool_weight||0;return Math.max(0,Math.round((e.initial_weight||0)-t))}(r),p=Wa(r),h=Da(r,b),m=Va(r,h);return l.jsxs("tr",{"data-testid":`filament-row-${r.spool_id}`,"data-color-code":r.color_code,"data-color-type":r.color_type??2,className:"transition-colors duration-100 hover:bg-fm-hover"+(t.has(r.spool_id)?" bg-fm-selected":""),children:[l.jsx("td",{className:`${Qa} !px-4 w-12 text-center`,children:l.jsx("input",{type:"checkbox",className:"w-4 h-4 cursor-pointer accent-fm-brand",checked:t.has(r.spool_id),onChange:()=>n(r.spool_id)})}),l.jsx("td",{className:Qa,children:l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsx("div",{"data-testid":"filament-row-color","data-color-code":m.colorCode,className:"w-10 h-10 shrink-0 relative",children:l.jsx(Oa,{colorCode:m.colorCode,colors:m.colors,colorType:m.colorType})}),l.jsxs("div",{className:"flex flex-col gap-[2px] min-w-0",children:[l.jsx("span",{"data-testid":"filament-row-name",className:"text-sm text-fm-text-primary leading-[22px]",children:p||"—"}),l.jsxs("div",{className:"flex items-center gap-1 text-xs text-fm-text-secondary opacity-70 leading-[19px] min-w-0",children:[l.jsxs("span",{className:"shrink-0",children:[r.diameter||1.75," mm"]}),(()=>{const e=function(e,t){const n=Va(e,t);return Aa({hexes:n.colors,primaryHex:n.colorCode})}(r,h),t=function(e,t){const n=Va(e,t);return Aa({hexes:n.colors,primaryHex:n.colorCode})?Fa({hexes:n.colors,primaryHex:n.colorCode,colorType:n.colorType}):""}(r,h),n=((null==h?void 0:h.name)||r.color_name||"").trim(),o=(()=>{const e=((null==h?void 0:h.color_code)||"").trim();return e?e.startsWith("#")||/^[0-9A-F]{6,8}$/i.test(e)?"":e:""})();return n||e||t||o?l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"shrink-0",children:"|"}),t&&l.jsx("span",{"data-testid":"filament-row-color-swatch","data-swatch-bg":t,className:"inline-flex shrink-0",children:l.jsx(Oa,{colorCode:m.colorCode,colors:m.colors,colorType:m.colorType,size:14,radius:3})}),n&&l.jsx("span",{"data-testid":"filament-row-color-name",className:"truncate",children:n}),o&&l.jsxs("span",{"data-testid":"filament-row-fila-code",className:"text-fm-text-detail shrink-0",title:u("Bambu Color Code"),children:["· ",o]}),(n||o)&&e&&l.jsx("span",{className:"shrink-0",children:"·"}),e&&l.jsx("span",{"data-testid":"filament-row-color-hex",className:"font-mono tracking-wider truncate",children:e})]}):null})()]}),r.note&&l.jsxs("div",{className:"flex items-center gap-1 text-xs text-fm-text-detail leading-[19px] min-w-0",children:[l.jsxs("svg",{className:"shrink-0 w-3 h-3 opacity-60",viewBox:"0 0 12 12",fill:"none",children:[l.jsx("rect",{x:"1",y:"1",width:"10",height:"10",rx:"1",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("line",{x1:"3",y1:"4",x2:"9",y2:"4",stroke:"currentColor",strokeWidth:"1"}),l.jsx("line",{x1:"3",y1:"6.5",x2:"9",y2:"6.5",stroke:"currentColor",strokeWidth:"1"}),l.jsx("line",{x1:"3",y1:"9",x2:"6.5",y2:"9",stroke:"currentColor",strokeWidth:"1"})]}),l.jsx("span",{className:"truncate",title:r.note,children:r.note})]})]})]})}),l.jsx("td",{className:Qa,children:l.jsxs("div",{className:"flex flex-col gap-1",children:[l.jsxs("div",{className:"flex items-baseline gap-[2px] whitespace-nowrap",children:[l.jsxs("span",{className:"text-sm text-fm-text-primary leading-[22px]",children:[d," g"]}),l.jsx("span",{className:"text-xs text-fm-text-secondary leading-[19px]",children:" / "}),l.jsxs("span",{className:"text-xs text-fm-text-secondary leading-[19px]",children:[f," g"]})]}),l.jsx("div",{className:"w-[164px] h-[6px] bg-fm-input rounded-sm overflow-hidden",children:l.jsx("div",{className:"h-full rounded-full transition-[width] duration-300"+("empty"===s?" bg-fm-danger":"low"===s?" bg-fm-warning":" bg-fm-brand"),style:{width:`${o}%`}})})]})}),l.jsx("td",{className:Qa,children:l.jsxs("div",{className:"flex gap-2 items-center",children:[l.jsx("button",{"data-testid":"filament-row-detail",className:"w-4 h-4 bg-transparent border-none cursor-pointer text-fm-brand p-0 flex items-center justify-center transition-colors duration-150 hover:text-fm-brand-hover [&>svg]:w-4 [&>svg]:h-4",onClick:()=>a(r.spool_id),title:u("Spool Detail"),children:l.jsxs("svg",{viewBox:"0 0 16 16",fill:"none",children:[l.jsx("path",{d:"M3 2.5h6.5L13 6v7.5H3V2.5z",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M9.5 2.5V6H13",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("circle",{cx:"7.5",cy:"9.5",r:"2",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("line",{x1:"9",y1:"11",x2:"11",y2:"13",stroke:"currentColor",strokeWidth:"1.1"})]})}),l.jsx("button",{"data-testid":"filament-row-add-similar",className:"w-4 h-4 bg-transparent border-none cursor-pointer text-fm-brand p-0 flex items-center justify-center transition-colors duration-150 hover:text-fm-brand-hover [&>svg]:w-4 [&>svg]:h-4",onClick:()=>i(r.spool_id),title:u("Add"),children:l.jsxs("svg",{viewBox:"0 0 16 16",fill:"none",children:[l.jsx("path",{d:"M3 2.5h6.5L13 6v7.5H3V2.5z",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M9.5 2.5V6H13",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("line",{x1:"8",y1:"7.5",x2:"8",y2:"11.5",stroke:"currentColor",strokeWidth:"1.2"}),l.jsx("line",{x1:"6",y1:"9.5",x2:"10",y2:"9.5",stroke:"currentColor",strokeWidth:"1.2"})]})}),l.jsx("button",{"data-testid":"filament-row-delete",className:"w-4 h-4 bg-transparent border-none cursor-pointer text-fm-brand p-0 flex items-center justify-center transition-colors duration-150 hover:text-fm-brand-hover [&>svg]:w-4 [&>svg]:h-4",onClick:()=>c(r.spool_id),title:u("Delete"),children:l.jsxs("svg",{viewBox:"0 0 16 16",fill:"none",children:[l.jsx("path",{d:"M4 5h8l-.6 8H4.6L4 5z",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M6 3h4",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M3 5h10",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M6.5 7v4M9.5 7v4",stroke:"currentColor",strokeWidth:"1"})]})})]})})]},r.spool_id)})})]})})}),C>g&&l.jsxs("div",{className:"flex items-center justify-end gap-1 py-3 shrink-0",children:[l.jsx("button",{className:`${Ka} ${qa}`,disabled:j<=1,onClick:()=>m(e=>Math.max(1,Math.min(e,N)-1)),children:"‹"}),Ha(j,N).map((e,t)=>"..."===e?l.jsx("span",{className:"text-fm-text-detail text-xs px-[2px]",children:"…"},`d${t}`):l.jsx("button",{className:`${Ka} ${e===j?"border-fm-border-focus bg-fm-selected text-fm-text-strong font-medium":qa}`,onClick:()=>m(e),children:e},e)),l.jsx("button",{className:`${Ka} ${qa}`,disabled:j>=N,onClick:()=>m(e=>Math.min(N,Math.min(e,N)+1)),children:"›"}),l.jsx("select",{className:"ml-3 bg-fm-inner2 border-none rounded-sm text-fm-text-primary text-xs px-1 py-[2px] cursor-pointer outline-none",value:g,onChange:e=>{v(Number(e.target.value)),m(1)},children:Ba.map(e=>l.jsxs("option",{value:e,children:[e,u("per page")]},e))})]})]})}function Xa({label:e,sortKey:t,current:n,asc:r,onClick:o}){const a=n===t?r?"sort-asc":"sort-desc":"";return l.jsxs("th",{className:`${Ga} cursor-pointer hover:text-fm-text-strong ${a}`,onClick:()=>o(t),children:[e,l.jsx("span",{className:"fm-sort-icon"})]})}const Ja=999999999;function Za(e){return!Number.isFinite(e)||e<0?0:Math.min(Ja,Math.round(e))}const ei=_a;function ti(e){const t=parseInt(String(e.weight??"0"),10)||0,n="number"==typeof e.remain?e.remain:0;return t<=0?0:n<=0?t:Math.round(t*n/100)}function ni(e){const t=e.value;if(t.length>1&&t.startsWith("0")&&!t.startsWith("0.")){const n=t.replace(/^0+(?=\d)/,"");return n!==t&&(e.value=n),Number(n)||0}return Number(t)||0}function ri(e,t,n,r){let o=(e||"").trim().replace(/\s+@.*$/,"");const a=$a(n,r);if(!o)return a;const i=[t,t.replace(/\s+/g,"")];"Bambu Lab"===t&&i.push("Bambu");for(const s of i.filter(Boolean)){if(o===s)return a;if(o.startsWith(`${s} `)){o=o.substring(s.length+1).trim();break}}return o||a}function oi({open:e,editingSpool:t,prefilledSpool:n,presets:r,onClose:o,onSubmitAdd:a,onSubmitUpdate:i,onFetchMachines:s,onRequestPushall:c,onFetchAmsData:u}){var d;const{t:f}=Yr(),h=!!t,m=t||n,g=Sa(e=>e.filament.cloudConfig),v=Sa(e=>e.filament.spools),y=Sa(e=>e.filament.selectedMachineDevId),x=p.useMemo(()=>{const e=Array.isArray(null==g?void 0:g.vendors)?g.vendors:void 0;return function(e,t,n){const r=new Set;return e.forEach(e=>{e.name&&r.add(e.name)}),null==t||t.forEach(e=>{e&&r.add(e)}),n.forEach(e=>{e.brand&&r.add(e.brand)}),[...r].sort()}(r,e,v)},[r,g,v]),[b,w]=p.useState("manual"),[S,k]=p.useState(""),[C,N]=p.useState(""),[j,_]=p.useState(""),[E,P]=p.useState(""),[R,L]=p.useState([]),[F,A]=p.useState(""),[M,T]=p.useState([]),[D,O]=p.useState(2),[I,z]=p.useState(""),B=p.useRef(""),$=p.useRef(!1),W=p.useRef(!1),[U,V]=p.useState(1e3),[H,K]=p.useState(1e3),[q,G]=p.useState(""),[Q,Y]=p.useState(1),[X,J]=p.useState([]),[Z,ee]=p.useState(null),[te,ne]=p.useState(null),[re,oe]=p.useState(null),[ae,ie]=p.useState({brand:!1,material:!1,color:!1,weight:!1}),[se,le]=p.useState(!1),[ce,ue]=p.useState("");p.useEffect(()=>{var t;if(e)if(w("manual"),Y(1),oe(null),ne(null),ie({brand:!1,material:!1,color:!1,weight:!1}),ee(null),ue(""),B.current="",$.current=!1,W.current=!1,z(""),m){k(m.brand||""),N(m.material_type||""),_(m.series||"");const e=ei(m.color_code);P(e),L(e&&(t=e,!Ia.some(e=>e.toUpperCase()===t.toUpperCase()))?[e]:[]),A(m.color_name||""),T(Array.isArray(m.colors)?[...m.colors]:[]),O(m.color_type??2);const n=m.spool_weight||0,r=Math.max(0,(m.initial_weight||0)-n);V(r>0?r:1e3);const o=m.remain_percent||0,a="number"==typeof m.net_weight&&m.net_weight>0?Math.round(m.net_weight):Math.round(r*o/100);K(a>0?a:r>0?r:1e3),G(m.note||"")}else k(""),N(""),_(""),P(""),L([]),A(""),T([]),O(2),V(1e3),K(1e3),G("")},[e,m,n]);const de=p.useCallback(e=>{var t;const n=(e.filamentVendor||"").trim(),o=(e.filamentType||"").trim(),a=(e.filamentId||"").trim();if(!a)return null;for(const i of r)if(!n||i.name===n)for(const e of i.types){if(o&&e.name!==o)continue;const n=null==(t=e.items)?void 0:t.find(e=>e.setting_id===a||e.filament_id===a);if(n)return{vendor:i,type:e,item:n}}return null},[r]),fe=p.useCallback(e=>{const t=(e.filamentName||"").trim();if(de(e))return t;const n=(()=>{var n;for(const o of r)if(!e.filamentVendor||o.name===e.filamentVendor)for(const r of o.types){if(e.filamentType&&r.name!==e.filamentType)continue;const a=null==(n=r.items)?void 0:n.find(e=>{const n=ri(e.name,o.name,r.name,e.series||"");return!!t&&n===t});if(a)return{vendor:o,type:r,item:a}}return null})();return n?ri(n.item.name,n.vendor.name,n.type.name,n.item.series||""):t},[de,r]),pe=p.useMemo(()=>{const e=new Set,t=null==g?void 0:g.filamentSettings;if(Array.isArray(t)&&t.forEach(t=>{if(!t)return;if(S&&t.filamentVendor!==S)return;const n=fe(t);n&&e.add(n)}),0===e.size){(S?r.filter(e=>e.name===S):r).forEach(t=>{t.types.forEach(n=>{if(Array.isArray(n.items)&&n.items.length>0)return void n.items.forEach(r=>{const o=ri(r.name,t.name,n.name,r.series||"");o&&e.add(o)});const r=Array.isArray(n.series)?n.series.filter(Boolean):[];0===r.length?n.name&&e.add(n.name):r.forEach(t=>e.add($a(n.name,t)))})})}return[...e].sort()},[S,g,r,fe]),he=(j||"").trim()||(C||"").trim(),me=p.useMemo(()=>{const e=null==g?void 0:g.filamentSettings;if(!Array.isArray(e))return"";const t=(j||"").trim();if(!t||!S)return"";const n=e.find(e=>e&&e.filamentVendor===S&&fe(e)===t);return((null==n?void 0:n.filamentId)||"").trim()},[g,S,j,fe]),ge=p.useMemo(()=>{var e;for(const t of r)if(t.name===S)for(const n of t.types){if(n.name!==C)continue;const r=null==(e=n.items)?void 0:e.find(e=>{const r=e.series||"",o=ri(e.name,t.name,n.name,r);return r===(j||"")||o===(j||"")||$a(n.name,r)===(j||"")||r===$a(n.name,j)});if(r)return r}return null},[r,S,C,j]),ve=p.useMemo(()=>me||(null==ge?void 0:ge.setting_id)||(null==ge?void 0:ge.filament_id)||(null==m?void 0:m.setting_id)||"",[me,ge,null==m?void 0:m.setting_id]),ye=Sa(e=>e.filament.candidatesByFilaId),xe=Sa(e=>e.filament.setColorCandidates),be=p.useMemo(()=>ve?ye[ve]??[]:[],[ve,ye]),we=p.useMemo(()=>{if(!C)return[];const e=new Set;for(const t of r)for(const n of t.types)if(n.name===C)for(const t of n.items||[]){const n=(t.setting_id||t.filament_id||"").trim();n&&e.add(n)}return[...e]},[r,C]),Se=p.useMemo(()=>Ia.map(e=>{const t=e.toUpperCase();return{color_code:t,colors:[t],color_type:2,name:""}}),[]),ke=p.useMemo(()=>{if(be.length>0)return be;if(we.length>0){const e=[],t=new Set;for(const n of we){const r=ye[n];if(r)for(const n of r){const r=`${n.color_type}|${(n.colors||[]).join(",").toUpperCase()}`;t.has(r)||(t.add(r),e.push(n))}}if(e.length>0)return e}return C?Se:[]},[be,we,ye,C,Se]),Ce=p.useMemo(()=>Fa({hexes:M,primaryHex:E,colorType:D}),[M,D,E]),Ne=p.useMemo(()=>M.length>1?M.map(e=>(e||"").toUpperCase()).filter(Boolean).join(" / "):(E||"").toUpperCase(),[M,E]),je=Ca(),_e=p.useCallback(async e=>{if(!e)return;if(!Sa.getState().filament.candidatesByFilaId[e])try{const t=await je({module:"filament",submod:"colors",action:"query_for_id",payload:{fila_id:e}});if(t.ok&&0===t.value.error_code){const n=t.value.payload,r=Array.isArray(null==n?void 0:n.candidates)?n.candidates:[],o=Sa.getState().filament.candidatesByFilaId[e];if(0===r.length&&Array.isArray(o)&&o.length>0)return;xe(e,r)}else{const n=t.ok?t.value.message:t.error;console.warn("[fila] loadColorCandidates failed for",e,n);const r=Sa.getState().filament.candidatesByFilaId[e];if(Array.isArray(r)&&r.length>0)return;xe(e,[])}}catch(t){console.warn("[fila] loadColorCandidates threw for",e,t);const n=Sa.getState().filament.candidatesByFilaId[e];if(Array.isArray(n)&&n.length>0)return;xe(e,[])}},[je,xe]);p.useEffect(()=>{e&&ve&&_e(ve)},[e,ve,_e]),p.useEffect(()=>{var t;if(!e)return;if(!(!!ve&&((null==(t=ye[ve])?void 0:t.length)??0)>0)&&0!==we.length)for(const e of we)e!==ve&&_e(e)},[e,ve,we,ye,_e]);const Ee=p.useCallback(e=>function(e){const{candidate:t,formColorCode:n,formColors:r}=e,o=_a(n);if(!o)return!1;const a=_a((t.colors??[])[0]);if(2===t.color_type)return!(r.length>1)&&Ea(o,a);if(r.length<2)return!1;const i=Pa(t.colors);return i.length===r.length&&Ra(i)===Ra(r)}({candidate:e,formColorCode:E,formColors:M}),[E,M]);p.useEffect(()=>{if(!ve)return;if(!be||0===be.length)return;if(!B.current&&!$.current)return void(B.current=ve);if(B.current===ve)return;if(W.current)return B.current=ve,void(W.current=!1);if(!(!!E&&be.some(e=>Ee(e)))){const e=be.find(e=>2===e.color_type)||be[0];if(e){const t=e.colors&&e.colors[0]||"";t&&P(t),T(Array.isArray(e.colors)?[...e.colors]:[]),O(e.color_type??2),A(e.name||""),z(e.color_code||""),L([])}}B.current=ve},[ve,be,E,Ee]),p.useEffect(()=>{if(!E)return;if(!be||0===be.length)return;const e=be.find(e=>Ee(e));e&&(e.name&&A(t=>t===e.name?t:e.name),e.color_code&&z(t=>t===e.color_code?t:e.color_code))},[E,M,D,be,Ee]);const Pe=p.useCallback(e=>{const t=e.colors&&e.colors[0]||"";t&&P(t),T(Array.isArray(e.colors)?[...e.colors]:[]),O(e.color_type),A(e.name||"");const n=!!e.color_code&&!e.color_code.startsWith("#");z(n?e.color_code:""),$.current=!0},[]),Re=p.useCallback(e=>{P(e),T([]),O(2),A(""),z(""),$.current=!0},[]),Le=e=>{var t;const n=(e||"").trim();let o="";const a=null==g?void 0:g.filamentSettings;if(Array.isArray(a)){const e=a.find(e=>e&&e.filamentVendor===S&&fe(e)===n);e&&(o=(e.filamentType||"").trim())}if(!o)e:for(const i of r)if(!S||i.name===S)for(const e of i.types){if(null==(t=e.items)?void 0:t.find(t=>ri(t.name,i.name,e.name,t.series||"")===n)){o=e.name;break e}}if(!o){const e=(e=>{const t=(e||"").trim();if(!t)return{type:"",series:""};const n=new Set;(S?r.filter(e=>e.name===S):r).forEach(e=>e.types.forEach(e=>{e.name&&n.add(e.name)}));const o=[...n].sort((e,t)=>t.length-e.length);for(const r of o){if(t===r)return{type:r,series:""};if(t.startsWith(r+" "))return{type:r,series:t.substring(r.length+1).trim()}}const a=t.split(/\s+/)[0];return{type:a,series:t.substring(a.length).trim()}})(n);o=e.type}N(o),_(n)},Fe=U<=0?"":U>Ja||H>Ja?f("Weight cannot exceed {{max}}g",{max:Ja}):H>U?f("Current Net Weight cannot exceed Total Net Weight"):"",Ae=!!(S&&C&&E&&U>0&&H>=0&&U<=Ja&&H<=Ja&&H<=U),[Me,Te]=p.useState(!1),[De,Oe]=p.useState("#000000"),Ie=p.useRef(null),ze=p.useRef(null),Be=p.useCallback(()=>{Oe(E||"#000000"),Te(!0)},[E]),$e=p.useCallback(()=>{Te(!1)},[]),We=p.useCallback(()=>{const e=function(e,t,n){const r=function(e){const t=(e||"").trim();return t?(t.startsWith("#")?t:`#${t}`).slice(0,7).toUpperCase():""}(e);return!r||function(e,t){return t.some(t=>t.toUpperCase()===e.toUpperCase())}(r,n)||t.some(e=>e.toUpperCase()===r.toUpperCase())?{colorCode:r,customColors:t}:{colorCode:r,customColors:[...t,r]}}(De,R,Ia);P(e.colorCode),L(e.customColors),T([]),O(2),A(""),z(""),$.current=!0,Te(!1)},[De,R]);p.useEffect(()=>{if(!Me)return;const e=e=>{"Escape"===e.key&&(e.stopPropagation(),$e())};return window.addEventListener("keydown",e,!0),()=>{window.removeEventListener("keydown",e,!0)}},[Me,$e]);const Ue=p.useCallback(async(e,t=!0)=>{ne(null),oe(null),le(!0),ue("");try{const n=await u(t?e:void 0,t);ee(n),n&&n.ams_units.length>0?ne(n.ams_units[0].ams_id):ue(f("No AMS detected on this device"))}catch{ue(f("Getting AMS data failed"))}le(!1)},[u,f]),[Ve,He]=p.useState(!1),Ke=p.useCallback(async()=>{var e,t;if(Ve)return;const n=(null==Z?void 0:Z.selected_dev_id)||(null==(e=X.find(e=>e.is_online))?void 0:e.dev_id)||(null==(t=X[0])?void 0:t.dev_id)||"";if(n){He(!0);try{await c(n)}catch{}window.setTimeout(()=>He(!1),2e3)}},[Ve,null==Z?void 0:Z.selected_dev_id,X,c]);p.useEffect(()=>{if(!e||"ams"!==b||se)return;if(!y)return;const t=(null==Z?void 0:Z.selected_dev_id)||"";t&&t!==y&&X.some(e=>e.dev_id===y)&&Ue(y,!1)},[e,b,se,y,null==Z?void 0:Z.selected_dev_id,X,Ue]);const qe=p.useRef(re);qe.current=re;const Ge=p.useRef(Z);Ge.current=Z;const Qe=p.useRef(te);Qe.current=te;const Ye=p.useRef(ce);Ye.current=ce,p.useEffect(()=>{if(!e||"ams"!==b||se)return;if(!((null==Z?void 0:Z.selected_dev_id)||""))return;let t=!1;const n=window.setInterval(async()=>{try{const e=await u();if(t||!e)return;const n=Ge.current;if(n&&JSON.stringify(n)===JSON.stringify(e))return;ee(e),e.ams_units.length>0&&(Ye.current&&ue(""),null==Qe.current&&ne(e.ams_units[0].ams_id));const r=qe.current;if(r){const t=e.ams_units.find(e=>e.ams_id===r.ams_id),n=null==t?void 0:t.trays.find(e=>e.slot_id===r.slot_id);n?JSON.stringify(n)!==JSON.stringify(r.tray)&&oe({ams_id:r.ams_id,slot_id:r.slot_id,tray:n}):oe(null)}}catch{}},1500);return()=>{t=!0,window.clearInterval(n)}},[e,b,se,null==Z?void 0:Z.selected_dev_id,u]);const Xe=p.useRef(X);Xe.current=X,p.useEffect(()=>{if(!e||"ams"!==b||se)return;let t=!1;const n=window.setInterval(async()=>{try{const e=await s();if(t||!Array.isArray(e))return;const n=Xe.current;if(JSON.stringify(n)===JSON.stringify(e))return;J(e)}catch{}},3e3);return()=>{t=!0,window.clearInterval(n)}},[e,b,se,s]);const[Je,Ze]=p.useState({x:0,y:0}),et=p.useRef(null);p.useEffect(()=>{e&&Ze({x:0,y:0})},[e]);const tt=p.useCallback(e=>{const t=et.current;t&&Ze({x:t.baseX+(e.clientX-t.startX),y:t.baseY+(e.clientY-t.startY)})},[]),nt=p.useCallback(()=>{et.current=null,window.removeEventListener("mousemove",tt),window.removeEventListener("mouseup",nt),document.body.style.userSelect=""},[tt]),rt=p.useCallback(e=>{e.target.closest("button, input, select, textarea, a")||(et.current={startX:e.clientX,startY:e.clientY,baseX:Je.x,baseY:Je.y},window.addEventListener("mousemove",tt),window.addEventListener("mouseup",nt),document.body.style.userSelect="none",e.preventDefault())},[Je,tt,nt]),ot=p.useCallback(()=>Ze({x:0,y:0}),[]);if(!e)return null;const at=null==Z?void 0:Z.ams_units.find(e=>e.ams_id===te),it=["A1","A2","A3","A4"],st="ams"===b&&!!re,lt=st&&ae.brand,ct=st&&ae.material,ut=st&&ae.color,dt=st&&ae.weight;return l.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-start justify-center pt-10 z-[1000]",children:l.jsxs("div",{"data-testid":h?"edit-dialog":"add-dialog","data-mode":b,className:"w-[644px] max-h-[calc(100vh-80px)] bg-[#242424] [html[data-theme=light]_&]:bg-fm-sidebar rounded-lg shadow-[0px_8px_24px_0px_rgba(0,0,0,0.12)] flex flex-col overflow-hidden fm-native-form",style:{transform:`translate(${Je.x}px, ${Je.y}px)`},onClick:e=>e.stopPropagation(),children:[l.jsxs("div",{className:"flex items-center justify-between h-[40px] pl-[24px] pr-[8px] shrink-0 relative cursor-move select-none",onMouseDown:rt,onDoubleClick:ot,title:f("Drag to move"),children:[l.jsx("h3",{className:"text-[14px] font-bold leading-[22px] text-fm-text-strong truncate",children:f(h?"Edit Filament":"Add Filament")}),l.jsx("button",{className:"size-[24px] rounded-[6px] flex items-center justify-center bg-transparent border-none text-fm-text-detail cursor-pointer hover:text-fm-text-strong hover:bg-fm-hover",onClick:o,children:l.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:l.jsx("path",{d:"M4 4l8 8M12 4l-8 8",stroke:"currentColor",strokeWidth:"1.2"})})}),l.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-px bg-fm-border"})]}),l.jsx("div",{className:"flex-1 overflow-y-auto",children:l.jsxs("div",{className:"flex flex-col gap-[24px] p-[24px]",children:[!h&&l.jsxs("div",{className:"flex gap-[16px] items-start w-full",children:[l.jsx("div",{"data-testid":"dialog-tab-manual","data-active":"manual"===b?"true":"false",className:"flex-1 flex items-center justify-center py-[4px] px-[16px] cursor-pointer rounded-[8px] border transition-all duration-150 "+("manual"===b?"border-fm-brand text-[#50e81d]":"border-fm-border-focus text-fm-text-primary hover:bg-fm-hover"),onClick:()=>w("manual"),children:l.jsx("span",{className:"py-[5px] text-[14px] leading-[22px]",children:f("Manual Add")})}),l.jsx("div",{"data-testid":"dialog-tab-ams","data-active":"ams"===b?"true":"false",className:"flex-1 flex items-center justify-center py-[4px] px-[8px] cursor-pointer rounded-[8px] border transition-all duration-150 "+("ams"===b?"border-fm-brand text-[#50e81d]":"border-fm-border-focus text-fm-text-primary hover:bg-fm-hover"),onClick:async()=>{w("ams"),oe(null),le(!0),ue("");try{const e=await s();if(J(e),0===e.length)return ee(null),ne(null),oe(null),ue(""),void le(!1);const t=e.find(e=>y&&e.dev_id===y)||e.find(e=>e.is_online)||e[0],n=!y||t.dev_id!==y,r=await u(t.dev_id,n);ee(r),r&&r.ams_units.length>0?ne(r.ams_units[0].ams_id):ue(f("No AMS detected on this device"))}catch{ue(f("Getting device list failed, please retry"))}le(!1)},children:l.jsx("span",{className:"py-[5px] text-[14px] leading-[22px]",children:f("Read from AMS")})})]}),"ams"===b&&l.jsxs("div",{className:"flex flex-col gap-[16px]",children:[l.jsxs("div",{className:"flex items-center gap-[6px]",children:[l.jsx("div",{className:"w-[2px] h-[16px] rounded-[10px] bg-[#50e81d]"}),l.jsx("span",{className:"text-[14px] leading-[22px] text-fm-text-primary",children:f("Select Device")})]}),se&&l.jsx("div",{className:"text-center text-fm-text-detail text-xs py-4",children:f("Fetching device info...")}),!se&&l.jsxs("div",{className:"flex flex-col gap-[10px] rounded-[8px] border border-fm-border-focus bg-fm-inner p-3",children:[l.jsx("label",{className:"text-[11px] leading-[16px] text-fm-text-secondary",children:f("Printer")}),l.jsxs("div",{className:"flex items-center gap-[8px]",children:[l.jsx("select",{className:"flex-1 min-h-[36px] rounded-[6px] bg-fm-inner2 px-[8px] text-fm-text-strong text-xs outline-none focus:shadow-[0_0_0_1px_var(--color-fm-brand)] fm-select-arrow cursor-pointer disabled:cursor-not-allowed disabled:opacity-60",value:X.length&&((null==Z?void 0:Z.selected_dev_id)||(null==(d=X[0])?void 0:d.dev_id))||"",disabled:0===X.length,onChange:e=>{e.target.value&&Ue(e.target.value)},children:0===X.length?l.jsx("option",{value:"",children:f("No printers — sign in and bind a device")}):X.map(e=>l.jsxs("option",{value:e.dev_id,children:[e.dev_name||e.dev_id,e.is_lan?"(LAN)":""]},e.dev_id))}),l.jsx("button",{type:"button",className:"shrink-0 w-[32px] h-[32px] rounded-[6px] border border-fm-border-focus bg-fm-inner2 text-fm-text-secondary flex items-center justify-center hover:text-fm-text-strong hover:border-fm-text-secondary disabled:cursor-not-allowed disabled:opacity-50 transition-colors",title:f("Refresh printer status"),"aria-label":f("Refresh printer status"),disabled:0===X.length||Ve,onClick:()=>{Ke()},children:l.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",className:Ve?"animate-spin":"",children:[l.jsx("path",{d:"M11.5 3.5A5 5 0 1 0 12 8",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",fill:"none"}),l.jsx("path",{d:"M12 2v3h-3",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})]})})]}),0===X.length&&l.jsx("p",{className:"text-[11px] leading-[16px] text-fm-text-detail m-0",children:f("No printer found, please ensure logged in and device bound")})]}),!!ce&&!se&&l.jsx("div",{className:"text-xs text-fm-warning leading-[19px] px-1",children:ce}),!se&&X.length>0&&l.jsxs("div",{"data-testid":"ams-grid",className:"flex flex-col gap-[4px]",children:[l.jsx("div",{className:"flex items-center gap-[12px]",children:l.jsx("div",{className:"flex flex-1 gap-[12px] items-center justify-end min-w-0",children:null==Z?void 0:Z.ams_units.map(e=>l.jsx("button",{type:"button","data-testid":`ams-unit-${e.ams_id}`,"data-active":e.ams_id===te?"true":"false",className:"rounded-[4px] border bg-transparent cursor-pointer flex items-center p-[4px] transition-colors duration-150 hover:border-fm-text-secondary "+(e.ams_id===te?"border-fm-brand":"border-fm-border-focus"),title:`AMS ${parseInt(e.ams_id,10)+1}`,onClick:()=>{ne(e.ams_id),oe(null)},children:l.jsx(ai,{unit:e,isActive:e.ams_id===te})},e.ams_id))})}),at&&l.jsx("div",{className:"flex gap-[8px] py-[8px]",children:at.trays.map((e,t)=>{const n=it[t]||`A${t+1}`,o=(null==re?void 0:re.slot_id)===e.slot_id&&(null==re?void 0:re.ams_id)===at.ams_id;return e.is_exists?l.jsxs("div",{"data-testid":`ams-slot-${at.ams_id}-${e.slot_id}`,"data-empty":"false","data-selected":o?"true":"false","data-color":e.color,"data-color-type":e.color_type,"data-colors":(e.colors||[]).join(","),className:"flex-1 flex flex-col rounded-[6px] border cursor-pointer transition-all duration-150 overflow-hidden hover:border-fm-text-secondary "+(o?"border-fm-brand":"border-fm-border-focus"),onClick:()=>((e,t)=>{var n;oe({ams_id:e.ams_id,slot_id:t.slot_id,tray:t}),W.current=!0;let o="",a="",i="",s="";const l=t.setting_id||"";if(l)e:for(const p of r)for(const e of p.types){const t=null==(n=e.items)?void 0:n.find(e=>!e.is_user&&(e.setting_id===l||e.filament_id===l));if(t){o=p.name,a=e.name,i=t.series||"",s=ri(t.name,p.name,e.name,i);break e}}if(o||(o=t.sub_brands||""),!a){const e=t.fila_type||"",n=new Set;(o?r.filter(e=>e.name===o):r).forEach(e=>e.types.forEach(e=>{e.name&&n.add(e.name)}));let s="",l="";for(const t of n){if(e===t){s=t,l="";break}e.startsWith(t+" ")&&t.length>s.length?(s=t,l=e.substring(t.length+1).trim()):e.startsWith(t)&&t.length>s.length&&(s=t,l=e.substring(t.length).trim())}a=s,i||(i=l)}k(o),N(a),_(s||$a(a,i));const c=ei(t.color);c&&P(c);const u=Array.isArray(t.colors)?t.colors.map(e=>"string"==typeof e?e:"").filter(e=>!!e).map(e=>ei(e)).filter(e=>!!e):[];u.length>1?(T(u),O(1===t.color_type?1:0)):(T([]),O(2)),A(t.color_name||""),z(t.fila_color_code||""),$.current=!0;const d=parseInt(String(t.weight??"0"),10)||0,f=ti(t);V(d>0?d:1e3),K(f>0?f:d>0?d:1e3),ie({brand:!!o,material:!!a||!!s,color:!!c,weight:d>0||f>0})})(at,e),children:[l.jsx("div",{className:"fm-slot-header-bg text-center py-[2px] text-[11px] leading-[16px] text-fm-text-strong bg-[#424242] rounded-t-[6px] "+(o?"!bg-fm-brand !text-white":""),children:n}),l.jsxs("div",{className:"flex gap-[4px] items-center p-[4px]",children:[l.jsx("div",{className:"size-[40px] shrink-0 flex items-center justify-center",children:l.jsx(Oa,{colorCode:e.color,colors:e.colors,colorType:e.color_type,size:32})}),l.jsxs("div",{className:"flex-1 flex flex-col gap-[4px] min-w-0",children:[l.jsxs("div",{className:"text-[12px] leading-[19px] text-fm-text-primary flex items-center gap-[4px] truncate",children:[l.jsx(Oa,{colorCode:e.color,colors:e.colors,colorType:e.color_type,size:14,radius:3}),e.fila_type||"—"]}),l.jsx("div",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:(()=>{const t=ti(e);return t>0?`${t}g`:"—"})()})]})]})]},n):l.jsxs("div",{"data-testid":`ams-slot-${at.ams_id}-${e.slot_id}`,"data-empty":"true",className:"flex-1 flex flex-col rounded-[6px] border border-fm-border-focus cursor-default opacity-30 transition-all duration-150 overflow-hidden",children:[l.jsx("div",{className:"fm-slot-header-bg text-center py-[2px] text-[11px] leading-[16px] text-fm-text-strong bg-[#424242] rounded-t-[6px]",children:n}),l.jsxs("div",{className:"flex gap-[4px] items-center p-[4px]",children:[l.jsx("div",{className:"size-[40px] shrink-0 flex items-center justify-center",children:l.jsx(Oa,{colorCode:"#555",size:32})}),l.jsx("div",{className:"flex-1 flex flex-col gap-[4px] min-w-0",children:l.jsx("span",{className:"text-[12px] leading-[19px] text-fm-text-primary truncate",children:f("Empty")})})]})]},n)})})]})]}),"ams"===b&&re&&l.jsx("div",{className:"h-0 w-full border-t border-fm-border"}),("manual"===b||re)&&l.jsxs("div",{className:"flex flex-col gap-[12px]",children:[l.jsxs("div",{className:"flex flex-col gap-[16px]",children:[l.jsxs("div",{className:"flex items-center gap-[6px]",children:[l.jsx("div",{className:"w-[2px] h-[16px] rounded-[10px] bg-[#50e81d]"}),l.jsx("span",{className:"text-[14px] leading-[22px] text-fm-text-strong",children:f("Filament Info")})]}),l.jsxs("div",{className:"flex gap-[12px]",children:[l.jsxs("div",{className:"flex flex-col gap-[4px] flex-1 pb-[24px]",children:[l.jsxs("label",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:[l.jsx("span",{className:"text-[#ff2b00]",children:"*"})," ",f("Brand")]}),l.jsxs("select",{"data-testid":"filament-brand",className:"bg-fm-inner2 border-none rounded-[6px] h-[32px] pl-[8px] pr-[4px] text-fm-text-strong text-[12px] leading-[19px] outline-none w-full focus:shadow-[0_0_0_1px_var(--color-fm-brand)] fm-select-arrow cursor-pointer disabled:cursor-not-allowed disabled:opacity-60",value:S,disabled:lt,onChange:e=>{k(e.target.value),ct||(N(""),_(""))},children:[l.jsx("option",{value:"",children:f("Select Brand")}),x.map(e=>l.jsx("option",{value:e,children:e},e))]})]}),l.jsxs("div",{className:"flex flex-col gap-[4px] flex-1 pb-[24px]",children:[l.jsxs("label",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:[l.jsx("span",{className:"text-[#ff2b00]",children:"*"})," ",f("Material Type")]}),l.jsxs("select",{"data-testid":"filament-material",className:"bg-fm-inner2 border-none rounded-[6px] h-[32px] pl-[8px] pr-[4px] text-fm-text-strong text-[12px] leading-[19px] outline-none w-full focus:shadow-[0_0_0_1px_var(--color-fm-brand)] fm-select-arrow cursor-pointer disabled:cursor-not-allowed disabled:opacity-60",value:he,onChange:e=>Le(e.target.value),disabled:!S||ct,children:[l.jsx("option",{value:"",children:f(S?"Select Type":"Select Brand First")}),he&&!pe.includes(he)&&l.jsx("option",{value:he,children:he}),pe.map(e=>l.jsx("option",{value:e,children:e},e))]})]})]}),l.jsxs("div",{className:"flex flex-col gap-[8px]",children:[l.jsxs("label",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:[l.jsx("span",{className:"text-[#ff2b00]",children:"*"})," ",f("Color")]}),l.jsxs("div",{"data-testid":"color-candidate-panel",className:"flex flex-wrap gap-[6px] items-center "+(ut?"pointer-events-none opacity-60":""),children:[l.jsxs("div",{ref:Ie,className:"relative",children:[l.jsx("button",{type:"button","data-testid":"pick-custom-color-button",className:"size-[24px] rounded-[4px] cursor-pointer border border-dashed border-fm-border-focus bg-fm-inner overflow-hidden flex items-center justify-center text-fm-text-detail text-sm hover:border-fm-text-secondary disabled:cursor-not-allowed disabled:opacity-60 p-0",title:f("Pick Custom Color"),"aria-label":f("Pick Custom Color"),"aria-haspopup":"dialog","aria-expanded":Me,disabled:ut,onClick:Be,children:l.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:l.jsx("path",{d:"M7 2v10M2 7h10",stroke:"currentColor",strokeWidth:"1.2"})})}),Me&&l.jsxs("div",{role:"dialog","aria-label":f("Pick Custom Color"),className:"absolute left-0 top-[calc(100%+8px)] z-[1100] w-[224px] flex flex-col gap-[12px] rounded-[10px] border border-fm-border bg-fm-base p-[14px] shadow-[0_12px_32px_rgba(0,0,0,0.5)]",children:[l.jsxs("div",{className:"flex items-center gap-[12px]",children:[l.jsx("button",{type:"button",autoFocus:!0,className:"size-[56px] shrink-0 rounded-[8px] border border-fm-border-focus cursor-pointer focus:outline-none focus:ring-2 focus:ring-fm-brand transition-shadow",style:{background:De},"aria-label":f("Pick Custom Color"),title:f("Pick Custom Color"),onClick:()=>{var e;return null==(e=ze.current)?void 0:e.click()}}),l.jsxs("div",{className:"flex flex-col gap-[4px] min-w-0 flex-1",children:[l.jsx("span",{className:"text-[10px] leading-[12px] text-fm-text-detail uppercase tracking-wider",children:f("Custom Color")}),l.jsx("span",{className:"text-[13px] leading-[18px] text-fm-text-strong font-mono tracking-wider",children:(De||"#000000").toUpperCase()})]})]}),l.jsx("input",{ref:ze,type:"color",value:De||"#000000",onChange:e=>Oe(e.target.value),className:"sr-only",tabIndex:-1,"aria-hidden":"true"}),l.jsxs("div",{className:"flex justify-end gap-[8px]",children:[l.jsx("button",{type:"button",className:"h-[28px] px-[14px] rounded-[6px] cursor-pointer text-[12px] leading-[19px] bg-fm-input text-fm-text-primary border-none hover:bg-fm-hover",onClick:$e,children:f("Cancel")}),l.jsx("button",{type:"button",className:"h-[28px] px-[14px] rounded-[6px] border-none cursor-pointer text-[12px] leading-[19px] font-medium bg-fm-brand text-white hover:bg-fm-brand-hover",onClick:We,children:f("OK")})]})]})]}),0===ke.length&&0===R.length&&l.jsx("div",{className:"text-[11px] leading-[16px] text-fm-text-detail",children:f("No predefined colors for this filament")}),ke.map(e=>{const t=Ee(e),n=(e.colors||[]).map(e=>ei(e)).filter(e=>e.length>0);return l.jsx("button",{type:"button","data-testid":`color-candidate-${e.color_code}`,"data-color-code":e.color_code,"data-color-name":e.name,"data-color-type":e.color_type,"data-colors":(e.colors||[]).join(","),"data-selected":t?"true":"false",title:e.name,"aria-label":e.name,onClick:()=>Pe(e),className:"size-[24px] rounded-[4px] p-0 cursor-pointer transition-colors duration-150 border hover:border-fm-text-secondary bg-transparent inline-flex items-center justify-center "+(t?"border-fm-brand border-2":"border-fm-border-focus"),children:l.jsx(Oa,{colorCode:n[0]||"",colors:e.colors,colorType:e.color_type,size:22,radius:3,border:!1})},`${e.color_code}|${(e.colors||[]).join(",")}`)}),R.map(e=>{const t=0===M.length&&e.toUpperCase()===E.toUpperCase();return l.jsx("div",{className:"size-[24px] rounded-[4px] cursor-pointer border transition-colors duration-150 hover:border-fm-text-secondary inline-flex items-center justify-center bg-transparent "+(t?"border-fm-brand border-2":"border-fm-border-focus"),title:f("Custom Color"),onClick:()=>Re(e),children:l.jsx(Oa,{colorCode:e,size:22,radius:3,border:!1})},`custom-${e}`)})]}),E&&l.jsxs("div",{"data-testid":"color-preview-bar",className:"flex items-center gap-[8px] bg-fm-inner rounded-[6px] px-[8px] py-[6px] flex-wrap",children:[l.jsx("span",{"data-testid":"preview-swatch","data-swatch-bg":Ce,className:"inline-flex shrink-0",children:l.jsx(Oa,{colorCode:E,colors:M,colorType:D,size:16,radius:3})}),F&&l.jsx("span",{"data-testid":"preview-color-name",className:"text-[11px] leading-[16px] text-fm-text-secondary shrink-0",children:F}),I&&l.jsxs("span",{"data-testid":"preview-fila-code",className:"text-[11px] leading-[16px] text-fm-text-detail shrink-0",title:f("Bambu Color Code"),children:["· ",I]}),l.jsx("span",{"data-testid":"preview-hex-list",className:"text-[11px] leading-[16px] text-fm-text-primary font-mono tracking-wider break-all",children:Ne})]})]}),l.jsxs("div",{className:"flex flex-col gap-[4px]",children:[l.jsxs("label",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:[l.jsx("span",{className:"text-[#ff2b00]",children:"*"})," ",f("Weight")]}),l.jsxs("div",{className:"bg-fm-inner rounded-[6px] p-[8px]",children:[l.jsxs("div",{className:"flex gap-[8px] items-center",children:[l.jsxs("div",{className:"flex flex-col gap-[4px] flex-1",children:[l.jsx("span",{className:"text-[11px] leading-[16px] text-fm-text-secondary",children:f("Current Net Weight")}),l.jsxs("div",{className:"flex items-center gap-[6px]",children:[l.jsx("input",{className:"bg-fm-inner2 border-none rounded-[6px] h-[32px] pl-[8px] pr-[4px] text-fm-text-strong text-[12px] leading-[19px] outline-none flex-1 min-w-0 focus:shadow-[0_0_0_1px_var(--color-fm-brand)] disabled:cursor-not-allowed disabled:opacity-60",type:"number",min:0,max:Ja,step:1,placeholder:f("Input Current Net Weight"),value:H,disabled:dt,onFocus:e=>e.target.select(),onChange:e=>K(Za(ni(e.target)))}),l.jsx("span",{className:"text-[12px] leading-[19px] text-fm-text-secondary shrink-0",children:"g"})]})]}),l.jsxs("div",{className:"flex flex-col gap-[4px] flex-1",children:[l.jsx("span",{className:"text-[11px] leading-[16px] text-fm-text-secondary",children:f("Total Net Weight")}),l.jsxs("div",{className:"flex items-center gap-[6px]",children:[l.jsx("input",{className:"bg-fm-inner2 border-none rounded-[6px] h-[32px] pl-[8px] pr-[4px] text-fm-text-strong text-[12px] leading-[19px] outline-none flex-1 min-w-0 focus:shadow-[0_0_0_1px_var(--color-fm-brand)] "+(h||dt?"opacity-60 cursor-not-allowed":""),type:"number",min:0,max:Ja,step:1,placeholder:f("Input Total Net Weight"),value:U,readOnly:h||dt,disabled:h||dt,onFocus:e=>e.target.select(),onChange:e=>V(Za(ni(e.target)))}),l.jsx("span",{className:"text-[12px] leading-[19px] text-fm-text-secondary shrink-0",children:"g"})]})]})]}),Fe&&l.jsx("div",{className:"mt-[6px] text-[11px] leading-[16px] text-fm-warning",children:Fe})]})]})]}),l.jsxs("div",{className:"flex flex-col gap-[4px]",children:[l.jsx("label",{className:"text-[12px] leading-[19px] text-fm-text-secondary",children:f("Note")}),l.jsxs("div",{className:"relative",children:[l.jsx("textarea",{className:"bg-fm-inner2 border-none rounded-[6px] h-[110px] px-[12px] pt-[8px] pb-[4px] text-fm-text-strong text-[12px] leading-[19px] outline-none w-full focus:shadow-[0_0_0_1px_var(--color-fm-brand)] resize-none",maxLength:50,placeholder:f("Input Note"),value:q,onChange:e=>G(e.target.value)}),l.jsxs("span",{className:"absolute right-[12px] bottom-[4px] text-[12px] leading-[19px] text-fm-text-gray",children:[q.length,"/50"]})]})]})]})]})}),l.jsxs("div",{className:"flex items-center justify-between h-[60px] px-[16px] shrink-0",children:[!h&&"manual"===b&&l.jsxs("div",{className:"flex items-center gap-[4px] w-[106px]",children:[l.jsxs("div",{className:"flex-1 flex items-center gap-[4px] bg-fm-inner2 rounded-[6px] h-[24px] pl-[8px] pr-[4px]",children:[l.jsx("span",{className:"text-[12px] leading-[19px] text-fm-text-strong flex-1",children:Q}),l.jsx("span",{className:"text-[11px] leading-[16px] text-fm-text-detail",children:f("roll")})]}),l.jsxs("div",{className:"flex flex-col shrink-0 w-[18px] h-[24px]",children:[l.jsx("button",{className:"flex-1 rounded-t-[6px] bg-fm-inner2 border-none cursor-pointer flex items-center justify-center text-fm-text-primary hover:bg-fm-hover",onClick:()=>Y(Math.min(99,Q+1)),children:l.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:l.jsx("path",{d:"M2.5 6.5l2.5-3 2.5 3",stroke:"currentColor",strokeWidth:"1"})})}),l.jsx("button",{className:"flex-1 rounded-b-[6px] bg-fm-inner2 border-none cursor-pointer flex items-center justify-center text-fm-text-primary hover:bg-fm-hover",onClick:()=>Y(Math.max(1,Q-1)),children:l.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:l.jsx("path",{d:"M2.5 3.5l2.5 3 2.5-3",stroke:"currentColor",strokeWidth:"1"})})})]})]}),(h||"manual"!==b)&&l.jsx("div",{}),l.jsxs("div",{className:"flex gap-[12px] items-center",children:[l.jsx("button",{"data-testid":"dialog-cancel",className:"h-[30px] px-[32px] rounded-[8px] cursor-pointer text-[12px] leading-[19px] whitespace-nowrap transition-colors duration-150 bg-fm-input text-fm-text-primary border-none hover:bg-fm-hover",onClick:o,children:f("Cancel")}),l.jsx("button",{"data-testid":"dialog-confirm",className:"h-[30px] px-[32px] rounded-[8px] border-none cursor-pointer text-[12px] leading-[19px] font-medium whitespace-nowrap transition-colors duration-150 bg-fm-brand text-white hover:bg-fm-brand-hover disabled:opacity-40 disabled:cursor-default",disabled:!Ae,onClick:async()=>{const e=U>0?Math.min(100,Math.max(0,Math.round(100*H/U))):0,n={brand:S,material_type:C,series:j,color_code:E,color_name:F,initial_weight:U,spool_weight:0,net_weight:H,remain_percent:e,note:q,setting_id:me||(null==ge?void 0:ge.setting_id)||(null==ge?void 0:ge.filament_id)||(null==m?void 0:m.setting_id)||""};if(Array.isArray(M)&&M.length>1?(n.colors=[...M],n.color_type=D):(n.colors=[],n.color_type=2),h){const e=t,r=e=>null==e?"":String(e),o={spool_id:e.spool_id},a=o;Object.keys(n).forEach(t=>{const o=n[t],i=e[t];let s;if(Array.isArray(o)||Array.isArray(i)){const e=Array.isArray(o)?o:[],t=Array.isArray(i)?i:[];s=e.length!==t.length||e.some((e,n)=>e!==t[n])}else s="string"==typeof o||"string"==typeof i?r(o)!==r(i):!Object.is(o,i);s&&(a[t]=o)});if(!(await i(o)))return}else{let e="";if("ams"===b&&re){const t=re.tray,o=t.tag_uid||"",a=(r=o).length>0&&/[^0]/.test(r)?v.find(e=>(e.tag_uid||"")===o):void 0,i=parseInt(String(t.weight??"0"),10)||0,s="number"==typeof t.remain?t.remain:0;(null==a?void 0:a.spool_id)&&(e=a.spool_id,n.spool_id=a.spool_id),n.entry_method="ams_sync",n.tag_uid=o,n.setting_id=n.setting_id||t.setting_id||"",n.bound_ams_id=re.ams_id,n.bound_dev_id=(null==Z?void 0:Z.selected_dev_id)||"",n.remain_percent=s;const l=Array.isArray(t.colors)?t.colors.map(e=>ei(e)).filter(e=>e.length>0):[];l.length>0&&(n.colors=l),n.color_type="number"==typeof t.color_type?t.color_type:l.length>1?0:2,i>0&&(n.initial_weight=i);const c=t.diameter,u="number"==typeof c?c:parseFloat(String(c??"0"));u>0&&(n.diameter=u)}else n.entry_method="manual";if(!(e?await i(n):await a(n,"ams"===b?1:Q)))return}var r;o()},children:f(h?"Save":"Add")})]})]})]})})}function ai({unit:e,isActive:t}){const n=e.trays||[],r=[0,1,2,3].map(e=>{const t=n[e];return t&&t.is_exists&&t.color?t.color:"rgba(255,255,255,0.1)"});return l.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:[l.jsx("rect",{x:"1",y:"1",width:"18",height:"18",rx:"3",stroke:t?"var(--color-fm-brand)":"currentColor",strokeWidth:"1.2",fill:"none"}),l.jsx("rect",{x:"3",y:"3",width:"6",height:"6",rx:"1",fill:r[0]}),l.jsx("rect",{x:"11",y:"3",width:"6",height:"6",rx:"1",fill:r[1]}),l.jsx("rect",{x:"3",y:"11",width:"6",height:"6",rx:"1",fill:r[2]}),l.jsx("rect",{x:"11",y:"11",width:"6",height:"6",rx:"1",fill:r[3]})]})}function ii({open:e,spool:t,filteredSpools:n,onClose:r,onEdit:o,onNavigate:a}){const{t:i}=Yr(),[s,c]=p.useState({x:0,y:0}),u=p.useRef(null);p.useEffect(()=>{e&&c({x:0,y:0})},[e]);const d=p.useCallback(e=>{const t=u.current;t&&c({x:t.baseX+(e.clientX-t.startX),y:t.baseY+(e.clientY-t.startY)})},[]),f=p.useCallback(()=>{u.current=null,window.removeEventListener("mousemove",d),window.removeEventListener("mouseup",f),document.body.style.userSelect=""},[d]),h=p.useCallback(e=>{e.target.closest("button, input, select, textarea, a")||(u.current={startX:e.clientX,startY:e.clientY,baseX:s.x,baseY:s.y},window.addEventListener("mousemove",d),window.addEventListener("mouseup",f),document.body.style.userSelect="none",e.preventDefault())},[s,d,f]),m=p.useCallback(()=>c({x:0,y:0}),[]);if(!e||!t)return null;const g=n.findIndex(e=>e.spool_id===t.spool_id),v=g>0,y=g>=0&&g0?Math.round(t.net_weight):Math.round(S*(t.remain_percent||0)/100),C=Fa({hexes:t.colors,primaryHex:t.color_code,colorType:t.color_type}),N=function(e){const t=Aa(e),n=(e.name??"").trim();return n&&t?`${n} · ${t}`:n||t}({hexes:t.colors,primaryHex:t.color_code,colorType:t.color_type,name:t.color_name})||"—";return l.jsx("div",{"data-testid":"detail-dialog","data-spool-id":t.spool_id,className:"fixed inset-0 bg-black/50 flex items-start justify-center pt-5 z-[1000]",children:l.jsxs("div",{className:"w-[480px] max-h-[calc(100vh-40px)] bg-fm-sidebar rounded-xl flex flex-col overflow-hidden",style:{transform:`translate(${s.x}px, ${s.y}px)`},onClick:e=>e.stopPropagation(),children:[l.jsxs("div",{className:"flex items-center px-6 py-4 border-b border-[#424242] gap-3 cursor-move select-none",onMouseDown:h,onDoubleClick:m,title:i("Drag to move"),children:[l.jsx("h3",{className:"flex-1 text-base font-medium text-fm-text-strong whitespace-nowrap overflow-hidden text-ellipsis",children:i("Spool Detail")}),l.jsxs("div",{className:"flex items-center gap-[13px] shrink-0",children:[l.jsxs("button",{className:"flex items-center gap-1 bg-transparent border-none cursor-pointer text-fm-text-secondary text-xs px-2 pl-[6px] py-[2px] h-6 rounded-md transition-colors duration-150 hover:text-fm-text-strong hover:bg-fm-hover disabled:text-fm-text-gray disabled:cursor-default disabled:hover:bg-transparent [&>svg]:shrink-0",disabled:!v,onClick:()=>v&&a(n[g-1].spool_id),children:[l.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:l.jsx("path",{d:"M7 2L3 6l4 4",stroke:"currentColor",strokeWidth:"1.2"})}),i("Previous")]}),l.jsxs("button",{className:"flex items-center gap-1 bg-transparent border-none cursor-pointer text-fm-text-secondary text-xs px-2 pl-[6px] py-[2px] h-6 rounded-md transition-colors duration-150 hover:text-fm-text-strong hover:bg-fm-hover disabled:text-fm-text-gray disabled:cursor-default disabled:hover:bg-transparent [&>svg]:shrink-0",disabled:!y,onClick:()=>y&&a(n[g+1].spool_id),children:[i("Next"),l.jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",children:l.jsx("path",{d:"M5 2l4 4-4 4",stroke:"currentColor",strokeWidth:"1.2"})})]})]}),l.jsx("button",{"data-testid":"detail-dialog-close",className:"bg-transparent border-none text-fm-text-detail text-xl cursor-pointer leading-none hover:text-fm-text-strong",onClick:r,children:"×"})]}),l.jsxs("div",{className:"flex items-center gap-3 px-6",children:[l.jsx("div",{className:"w-10 h-10 shrink-0 relative",children:l.jsx(Oa,{colorCode:t.color_code,colors:t.colors,colorType:t.color_type})}),l.jsxs("div",{className:"flex flex-col",children:[l.jsxs("div",{className:"flex items-center gap-1 text-sm font-medium text-fm-text-strong leading-[22px] [&>svg]:text-fm-text-secondary [&>svg]:shrink-0",children:[x||"—",l.jsx("span",{className:"inline-flex items-center justify-center px-1 h-4 rounded-sm bg-fm-input text-[11px] text-fm-text-secondary leading-4 empty:hidden",children:za[t.entry_method]?i(za[t.entry_method]):""})]}),l.jsxs("div",{className:"text-xs text-fm-text-secondary opacity-70 leading-[19px]",children:[t.diameter||1.75," mm|",t.color_name||"—"]})]})]}),l.jsxs("div",{className:"flex-1 overflow-y-auto px-6 py-5",children:[l.jsx("div",{className:"fm-section-bar flex items-center gap-[6px] text-sm font-normal text-fm-text-primary mt-4 mb-2 leading-[22px] first:mt-0",children:i("Filament Info")}),l.jsxs("div",{className:"flex gap-3",children:[l.jsx(si,{label:i("Brand"),value:t.brand||"—"}),l.jsx(si,{label:i("Material Type"),value:b||"—"})]}),l.jsxs("div",{className:"flex gap-3",children:[l.jsxs("div",{className:"flex flex-col gap-1 mb-4 flex-1",children:[l.jsx("label",{className:"text-xs text-fm-text-secondary leading-[19px]",children:i("Color")}),l.jsxs("div",{"data-testid":"detail-color-field","data-color-type":t.color_type??"",className:"text-xs text-fm-text-primary leading-[19px] min-h-8 flex items-center gap-2 bg-fm-inner2 rounded-md px-2 py-[6px]",children:[l.jsx("span",{"data-testid":"detail-color-swatch","data-swatch-bg":C,className:"inline-flex shrink-0",children:l.jsx(Oa,{colorCode:t.color_code,colors:t.colors,colorType:t.color_type,size:16,radius:3})}),l.jsx("span",{"data-testid":"detail-color-label",className:"truncate",children:N})]})]}),l.jsx("div",{className:"flex-1"})]}),l.jsx("div",{className:"fm-section-bar flex items-center gap-[6px] text-sm font-normal text-fm-text-primary mt-4 mb-2 leading-[22px]",children:i("Weight")}),l.jsxs("div",{className:"flex items-end gap-2 bg-fm-inner rounded-md p-2 opacity-30",children:[l.jsxs("div",{className:"flex flex-col gap-1 flex-1",children:[l.jsx("span",{className:"text-[11px] text-fm-text-secondary leading-4",children:i("Current Net Weight")}),l.jsxs("span",{className:"text-sm text-fm-text-strong leading-[22px] font-medium",children:[k," g"]})]}),l.jsxs("div",{className:"flex flex-col gap-1 flex-1",children:[l.jsx("span",{className:"text-[11px] text-fm-text-secondary leading-4",children:i("Total Net Weight")}),l.jsxs("span",{className:"text-sm text-fm-text-strong leading-[22px] font-medium",children:[S," g"]})]})]}),l.jsx("div",{className:"fm-section-bar flex items-center gap-[6px] text-sm font-normal text-fm-text-primary mt-4 mb-2 leading-[22px]",children:i("Basic Info")}),l.jsx(si,{label:i("Parameter")+" 1",value:Wa(t)||"—"}),l.jsx("div",{className:"fm-section-bar flex items-center gap-[6px] text-sm font-normal text-fm-text-primary mt-4 mb-2 leading-[22px]",children:i("Note")}),l.jsx(si,{label:i("Note"),value:t.note||"—"})]}),l.jsx("div",{className:"flex items-center justify-end px-6 py-3 border-t border-fm-border",children:l.jsx("button",{"data-testid":"detail-dialog-edit",className:"inline-flex items-center gap-1 h-[30px] px-8 rounded-lg border-none cursor-pointer text-xs whitespace-nowrap transition-colors duration-150 bg-fm-brand text-white font-medium hover:bg-fm-brand-hover",onClick:()=>o(t),children:i("Edit Filament Info")})})]})})}function si({label:e,value:t}){return l.jsxs("div",{className:"flex flex-col gap-1 mb-4 flex-1",children:[l.jsx("label",{className:"text-xs text-fm-text-secondary leading-[19px]",children:e}),l.jsx("div",{className:"text-xs text-fm-text-primary leading-[19px] min-h-8 flex items-center bg-fm-inner2 rounded-md px-2 py-[6px]",children:t})]})}function li({open:e,title:t,message:n,confirmText:r,cancelText:o,danger:a=!1,onConfirm:i,onCancel:s}){const{t:c}=Yr();return p.useEffect(()=>{if(!e)return;const t=e=>{"Escape"===e.key?s():"Enter"===e.key&&i()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,s,i]),e?l.jsx("div",{"data-testid":"confirm-dialog","data-danger":a?"true":"false",className:"fixed inset-0 bg-black/50 flex items-center justify-center z-[1100]",children:l.jsxs("div",{className:"w-[360px] bg-fm-sidebar rounded-xl shadow-[0_8px_24px_rgba(0,0,0,0.4)] overflow-hidden",onClick:e=>e.stopPropagation(),role:"dialog","aria-modal":"true",children:[l.jsx("div",{className:"px-6 pt-5 pb-2",children:l.jsx("h3",{"data-testid":"confirm-dialog-title",className:"text-sm font-medium text-fm-text-strong leading-5 m-0",children:t})}),n?l.jsx("div",{className:"px-6 pb-5 text-xs text-fm-text-secondary leading-5 whitespace-pre-line",children:n}):l.jsx("div",{className:"h-2"}),l.jsxs("div",{className:"flex gap-2 justify-end px-6 pb-5",children:[l.jsx("button",{type:"button","data-testid":"confirm-dialog-cancel",onClick:s,className:"inline-flex items-center justify-center h-[30px] px-4 rounded-lg border border-fm-border-focus/50 bg-fm-inner text-fm-text-primary text-xs cursor-pointer transition-colors duration-150 hover:bg-fm-hover",children:o??c("Cancel")}),l.jsx("button",{type:"button","data-testid":"confirm-dialog-confirm",onClick:()=>{i()},className:"inline-flex items-center justify-center h-[30px] px-4 rounded-lg border-none text-xs font-medium cursor-pointer transition-colors duration-150 "+(a?"bg-[#d9373b] text-white hover:bg-[#bf2f33]":"bg-fm-brand text-white hover:bg-fm-brand-hover"),children:r??c("OK")})]})]})}):null}function ci({state:e,onPullClick:t,tooltipExtra:n}){const{t:r}=Yr(),{logged_in:o,is_syncing:a,is_pulling:i,last_synced_at:s,last_error:c}=e,u=!!c.code,d=a||i,f=o&&!d&&u,p=(()=>{if(!o)return r("Not logged in — cloud sync disabled");if(u)return r("Filament operation failed. This feature currently requires a network connection.");if(d)return r("Syncing filament info...");if(s)try{const e=new Date(s);return r("Last synced: {{time}}",{time:e.toLocaleString()})}catch{return s}return r("Sync filament info")})(),h=o&&n?`${p}\n\n${n}`:p,m=o&&!d,g=o?f?"text-[#ff6b6b]":"text-fm-text-secondary":"text-fm-text-detail",v=o?f?"bg-fm-hover":"bg-fm-inner":"bg-transparent",y=o?"border-fm-border-focus/50":"border-dashed border-fm-border/70";return l.jsx("button",{className:`inline-flex items-center justify-center h-[30px] w-[30px] rounded-lg border transition-colors duration-150 ${v} ${g} ${y} ${m?"cursor-pointer hover:bg-fm-hover":"cursor-default"} ${o?"":"opacity-55"}`,title:h,"aria-label":h,onClick:()=>{m&&t()},"data-offline":o?void 0:"true",children:d?l.jsxs("svg",{className:"animate-spin",width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[l.jsx("circle",{cx:"9",cy:"9",r:"6.5",stroke:"currentColor",strokeWidth:"1.2",opacity:"0.28"}),l.jsx("path",{d:"M15.5 9A6.5 6.5 0 0 0 9 2.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"})]}):o?l.jsxs("span",{className:"relative inline-flex items-center justify-center size-[18px]","aria-hidden":"true",children:[l.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none",children:[l.jsx("path",{d:"M4.25 9.25A4.75 4.75 0 0 1 12.6 6.12",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),l.jsx("path",{d:"M12.6 4.25v1.87h-1.87",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),l.jsx("path",{d:"M13.75 8.75A4.75 4.75 0 0 1 5.4 11.88",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),l.jsx("path",{d:"M5.4 13.75v-1.87h1.87",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})]}),f&&l.jsx("span",{className:"absolute -top-[1px] -right-[1px] size-[5px] rounded-full bg-[#ff6b6b]"})]}):l.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[l.jsx("path",{d:"M5 12.5h7.5a2.75 2.75 0 0 0 .4-5.47A4 4 0 0 0 5.2 7.2a2.65 2.65 0 0 0-.2 5.3Z",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round",opacity:"0.9"}),l.jsx("path",{d:"M3.25 3.25l11.5 11.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]})})}function ui(e){try{return new Date(e).toLocaleString()}catch{return String(e)}}function di(e){return"error"===e.status?"text-[#ff6b6b]":"pull"===e.kind?"text-fm-brand":"text-fm-text-primary"}function fi({open:e,onClose:t}){const{t:n}=Yr(),r=Sa(e=>e.filament.cloudSyncHistory),o=Sa(e=>e.filament.clearCloudSyncHistory);if(p.useEffect(()=>{if(!e)return;const n=e=>{"Escape"===e.key&&t()};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[e,t]),!e)return null;const a=[...r].reverse();return l.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-[1100]",onClick:t,children:l.jsxs("div",{className:"w-[520px] max-w-[90vw] max-h-[80vh] bg-fm-sidebar rounded-xl shadow-[0_8px_24px_rgba(0,0,0,0.4)] overflow-hidden flex flex-col",onClick:e=>e.stopPropagation(),role:"dialog","aria-modal":"true",children:[l.jsxs("div",{className:"flex items-center justify-between px-5 pt-4 pb-3 border-b border-fm-border-focus/30",children:[l.jsx("h3",{className:"text-sm font-medium text-fm-text-strong leading-5 m-0",children:n("Sync History")}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("button",{type:"button",onClick:o,disabled:0===a.length,className:"inline-flex items-center justify-center h-[26px] px-3 rounded-lg border border-fm-border-focus/50 bg-fm-inner text-fm-text-secondary text-xs cursor-pointer transition-colors duration-150 hover:bg-fm-hover disabled:opacity-40 disabled:cursor-default",children:n("Clear")}),l.jsx("button",{type:"button",onClick:t,className:"inline-flex items-center justify-center h-[26px] px-3 rounded-lg border border-fm-border-focus/50 bg-fm-inner text-fm-text-primary text-xs cursor-pointer transition-colors duration-150 hover:bg-fm-hover",children:n("Close")})]})]}),l.jsx("div",{className:"flex-1 overflow-y-auto",children:0===a.length?l.jsx("div",{className:"flex items-center justify-center h-[200px] text-xs text-fm-text-secondary",children:n("No sync history yet.")}):l.jsx("ul",{className:"m-0 p-0 list-none",children:a.map(e=>l.jsxs("li",{className:"flex items-start gap-3 px-5 py-2.5 border-b border-fm-border-focus/15 last:border-b-0",children:[l.jsx("span",{className:"shrink-0 mt-[1px] text-[11px] font-mono text-fm-text-secondary tabular-nums",children:ui(e.ts)}),l.jsx("span",{className:"shrink-0 mt-[1px] inline-flex items-center justify-center h-[18px] px-2 rounded-full text-[11px] "+("error"===e.status?"bg-[#ff6b6b]/15 text-[#ff6b6b]":"pull"===e.kind?"bg-fm-brand/15 text-fm-brand":"bg-fm-inner text-fm-text-secondary"),children:"error"===e.status?n("Failed"):"pull"===e.kind?n("Pull"):n("Push")}),l.jsx("span",{className:`flex-1 text-xs leading-5 break-words ${di(e)}`,children:e.summary})]},e.id))})})]})})}function pi({toasts:e,onDismiss:t,autoDismissMs:n=5e3}){const{t:r}=Yr();return p.useEffect(()=>{if(!n)return;if(0===e.length)return;const r=e.map(e=>window.setTimeout(()=>t(e.id),n));return()=>r.forEach(e=>window.clearTimeout(e))},[e,n,t]),0===e.length?null:l.jsx("div",{className:"fixed bottom-6 right-6 flex flex-col gap-2 z-[2000] pointer-events-none",children:e.map(e=>{const n="error"===e.level?"#ff6b6b":"warn"===e.level?"#ffb84d":"#50e81d";return l.jsxs("div",{className:"pointer-events-auto flex items-start gap-3 max-w-[360px] bg-fm-sidebar border border-fm-border rounded-lg px-4 py-3 shadow-[0_4px_20px_rgba(0,0,0,0.25)] text-fm-text-primary text-xs leading-[19px]",children:[l.jsx("span",{className:"mt-[4px] inline-block size-[8px] rounded-full shrink-0",style:{background:n}}),l.jsx("span",{className:"flex-1 break-words",children:e.text}),l.jsx("button",{className:"shrink-0 size-[18px] rounded-[6px] bg-transparent border-none text-fm-text-detail cursor-pointer hover:text-fm-text-strong",onClick:()=>t(e.id),"aria-label":r("Dismiss"),children:l.jsx("svg",{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",children:l.jsx("path",{d:"M2 2l6 6M8 2l-6 6",stroke:"currentColor",strokeWidth:"1.2"})})})]},e.id)})})}const hi=[{id:"all",label:"All"},{id:"data",label:"Data"},{id:"bridge",label:"C++↔Web"},{id:"http",label:"HTTP"}];function mi(e){try{return new Date(e).toLocaleTimeString()}catch{return String(e)}}function gi({logs:e,filter:t,onFilterChange:n,onClear:r}){const{t:o}=Yr(),[a,i]=p.useState(new Set),s=p.useMemo(()=>{if("undefined"==typeof window)return null;const{href:e,origin:t,pathname:n,search:r,hash:o}=window.location,a=o.startsWith("#")?o.slice(1):"";return{href:e,origin:t,pathname:n,search:r,hash:o,currentPathname:a?a.split("?")[0]||"/":n,filamentUrl:`${t}${n}${r}#/filament`}},[]),c=p.useMemo(()=>{const n="all"===t?e:e.filter(e=>e.category===t);if(!(null==s?void 0:s.href)&&!(null==s?void 0:s.filamentUrl)||"all"!==t&&"bridge"!==t)return n;const r=[];if((null==s?void 0:s.filamentUrl)&&r.push({id:-2,ts:Date.now(),category:"bridge",level:"/filament"===s.currentPathname?"info":"warn",title:"Filament Page URL",summary:s.filamentUrl,detail:{href:s.filamentUrl,targetRoute:"/filament",currentPathname:s.currentPathname,currentHash:s.hash}}),null==s?void 0:s.href){const e={id:-1,ts:Date.now(),category:"bridge",level:"info",title:"Current Page URL",summary:s.href,detail:{href:s.href,origin:s.origin,pathname:s.pathname,search:s.search,hash:s.hash}};r.push(e)}return[...r,...n]},[e,t,s]);return l.jsxs("div",{className:"shrink-0 rounded-xl border border-fm-border bg-fm-sidebar overflow-hidden",children:[l.jsxs("div",{className:"flex items-center justify-between gap-4 px-4 py-3 border-b border-fm-border",children:[l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsx("div",{className:"text-sm font-medium text-fm-text-primary",children:o("Debug Log")}),l.jsx("div",{className:"flex gap-2",children:hi.map(e=>l.jsx("button",{className:"h-7 px-3 rounded-md border cursor-pointer text-xs transition-colors duration-150 "+(t===e.id?"bg-fm-brand/15 border-fm-brand text-fm-brand":"bg-fm-inner2 border-fm-border text-fm-text-secondary hover:bg-fm-hover"),onClick:()=>n(e.id),children:o(e.label)},e.id))})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("button",{className:"h-7 px-3 rounded-md border border-fm-border bg-fm-inner2 cursor-pointer text-xs text-fm-text-secondary hover:bg-fm-hover",onClick:async()=>{const e=c.map(e=>{const t=void 0===e.detail?"":`\n${JSON.stringify(e.detail,null,2)}`;return`[${mi(e.ts)}] [${e.category}] [${e.level}] ${e.title}\n${e.summary}${t}`}).join("\n\n");try{await navigator.clipboard.writeText(e)}catch{}},children:o("Copy All")}),l.jsx("button",{className:"h-7 px-3 rounded-md border border-fm-border bg-fm-inner2 cursor-pointer text-xs text-fm-text-secondary hover:bg-fm-hover",onClick:r,children:o("Clear")})]})]}),l.jsx("div",{className:"h-[220px] overflow-auto px-3 py-2 flex flex-col gap-2",children:0===c.length?l.jsx("div",{className:"h-full flex items-center justify-center text-xs text-fm-text-detail",children:"No debug logs yet."}):c.map(e=>{const t=a.has(e.id);return l.jsxs("div",{className:"rounded-lg border border-fm-border bg-fm-base/70 px-3 py-2",children:[l.jsxs("div",{className:"flex items-start justify-between gap-3",children:[l.jsxs("div",{className:"min-w-0 flex-1",children:[l.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[l.jsx("span",{className:"text-[11px] text-fm-text-detail",children:mi(e.ts)}),l.jsxs("span",{className:"inline-flex items-center h-5 px-2 rounded-full border text-[11px] "+(n=e.level,"error"===n?"text-[#ff6b6b] border-[#ff6b6b]/40 bg-[#ff6b6b]/10":"warn"===n?"text-[#f5b84b] border-[#f5b84b]/40 bg-[#f5b84b]/10":"text-fm-text-secondary border-fm-border bg-fm-hover"),children:[e.category," / ",e.level]}),l.jsx("span",{className:"text-xs text-fm-text-primary font-medium",children:e.title})]}),l.jsx("div",{className:"mt-1 text-xs text-fm-text-secondary break-words",children:e.summary})]}),void 0!==e.detail&&l.jsx("button",{className:"shrink-0 h-6 px-2 rounded-md border border-fm-border bg-fm-inner2 cursor-pointer text-[11px] text-fm-text-secondary hover:bg-fm-hover",onClick:()=>{return t=e.id,void i(e=>{const n=new Set(e);return n.has(t)?n.delete(t):n.add(t),n});var t},children:t?"Hide":"Detail"})]}),t&&void 0!==e.detail&&l.jsx("pre",{className:"mt-2 rounded-md bg-[#121212] border border-fm-border p-3 text-[11px] leading-4 text-[#d6d6d6] overflow-auto whitespace-pre-wrap break-all",children:"string"==typeof e.detail?e.detail:JSON.stringify(e.detail,null,2)})]},e.id);var n})})]})}const vi={brand:"Brand",material_type:"Filament Type",series:"Material Type"};function yi({options:e,current:t,onSelect:n,onClose:r}){const{t:o}=Yr();return p.useEffect(()=>{const e=()=>r();return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[r]),l.jsxs("div",{className:"absolute z-[100] bg-fm-sidebar border border-fm-border rounded-lg p-1 min-w-[120px] max-h-60 overflow-y-auto shadow-[0_4px_12px_rgba(0,0,0,0.4)]",onClick:e=>e.stopPropagation(),children:[l.jsx("div",{className:"px-3 py-[6px] rounded-sm cursor-pointer text-xs text-fm-text-primary hover:bg-fm-hover "+(t?"":"bg-fm-brand/15 text-fm-brand font-medium"),onClick:()=>n(""),children:o("All")}),e.map(e=>l.jsx("div",{className:"px-3 py-[6px] rounded-sm cursor-pointer text-xs text-fm-text-primary hover:bg-fm-hover "+(t===e?"bg-fm-brand/15 text-fm-brand font-medium":""),onClick:()=>n(e),children:e},e))]})}const xi=Nn("/filament")({component:function(){const{t:e}=Yr(),{init:t,addSpool:n,batchAddSpool:r,updateSpool:o,removeSpool:a,batchRemoveSpool:i,fetchMachines:s,requestMachinePushall:c,fetchAmsData:u,fetchPresets:d,fetchCloudSyncStatus:f,triggerCloudPull:h,pushAllNow:m,fetchCloudFilamentConfig:g}=function(){const{t:e}=Yr(),t=Ca(),n=Sa(e=>e.filament.setSpools),r=Sa(e=>e.filament.setPresets),o=Sa(e=>e.filament.setMachines),a=Sa(e=>e.filament.setAmsData),i=Sa(e=>e.filament.setSelectedMachineDevId),s=Sa(e=>e.filament.setTheme),l=Sa(e=>e.filament.setLoading),c=Sa(e=>e.filament.setError),u=Sa(e=>e.filament.setCloudSync),d=Sa(e=>e.filament.setCloudConfig),f=Sa(e=>e.filament.pushToast),h=Sa(e=>e.filament.appendCloudSyncHistory),m=Sa(e=>e.filament.setCloudAutoPushSummary),g=Sa(e=>e.filament.setDebugEnabled),v=Sa(e=>e.filament.appendDebugLog),y=Sa(e=>e.filament.spools),x=Sa(e=>e.filament.candidatesByFilaId),b=Sa(e=>e.filament.setColorCandidates),w=p.useRef(new Set),S=p.useRef({timer:null,counts:{create:0,update:0,delete:0,other:0}}),k=p.useCallback(()=>{const t=S.current;t.timer&&(clearTimeout(t.timer),t.timer=null);const{create:n,update:r,delete:o,other:a}=t.counts,i=n+r+o+a;if(0===i)return;let s;t.counts={create:0,update:0,delete:0,other:0};let l="";1===i?n?(s=e("Filament synced to cloud."),l="create"):r?(s=e("Filament change synced to cloud."),l="update"):o?(s=e("Filament deletion synced to cloud."),l="delete"):s=e("Filament synced to cloud."):n>0&&0===r&&0===o&&0===a?(s=e("Synced {{count}} new filaments to cloud.",{count:n}),l="create"):r>0&&0===n&&0===o&&0===a?(s=e("Synced {{count}} filament changes to cloud.",{count:r}),l="update"):o>0&&0===n&&0===r&&0===a?(s=e("Synced {{count}} filament deletions to cloud.",{count:o}),l="delete"):s=e("Synced {{count}} filament changes to cloud.",{count:i}),f({level:"info",text:s,op:l})},[e,f]);p.useEffect(()=>{const t=t=>{var r;const s=t.detail;if(!(null==s?void 0:s.body))return;const l=s.body;if("filament"===l.module&&"report"===(null==(r=s.head)?void 0:r.type)){if("spool"===l.submod){const e=l.payload;return void(e&&n(e))}if("debug"===l.submod&&"log"===l.action){const e=l.payload;return void(e&&v(e))}if("sync"===l.submod){const t=l.payload;if("state"===l.action)u(t);else if("pull_done"===l.action){const r=t.spools;r&&n(r);const o=t.state;o&&u(o),k();const a=t.added||0,i=t.updated||0;f({level:"info",text:e("Cloud sync: +{{added}} added, {{updated}} up-to-date",{added:a,updated:i}),op:"pull"}),h({ts:Date.now(),kind:"pull",op:"",status:"ok",summary:e("Pulled from cloud: +{{added}} added, {{updated}} up-to-date",{added:a,updated:i}),detail:{added:a,updated:i}})}else if("push_done"===l.action){const n=t.state;n&&u(n);const r=t.op||"",o=S.current,a="create"===r||"update"===r||"delete"===r?r:"other";o.counts[a]+=1,o.timer&&clearTimeout(o.timer),o.timer=setTimeout(()=>k(),1e3);const i=e("create"===r?"Pushed to cloud: added a filament":"update"===r?"Pushed to cloud: updated a filament":"delete"===r?"Pushed to cloud: deleted a filament":"Pushed to cloud.");h({ts:Date.now(),kind:"push",op:"create"===r||"update"===r||"delete"===r?r:"",status:"ok",summary:i,detail:{op:r,spool_id:t.spool_id}})}else if("push_failed"===l.action){const n=t.op||"",r=t.message||e("unknown error");f({level:"error",text:e("Filament operation failed. This feature currently requires a network connection."),op:n,spool_id:t.spool_id}),h({ts:Date.now(),kind:"push",op:"create"===n||"update"===n||"delete"===n?n:"",status:"error",summary:e("Cloud push failed: {{op}} — {{message}}",{op:n,message:r}),detail:{op:n,message:r,spool_id:t.spool_id}})}else if("auto_push_summary"===l.action){const n={trigger:t.trigger??"auto",device_state:t.device_state??"idle",pushed:Number(t.pushed??0),skipped_cooldown:Number(t.skipped_cooldown??0),skipped_no_diff:Number(t.skipped_no_diff??0),skipped_no_rfid:Number(t.skipped_no_rfid??0),skipped_no_total_nw:null!=t.skipped_no_total_nw?Number(t.skipped_no_total_nw):void 0,observed_at:Date.now()};if(m(n),"manual"===n.trigger){const t=n.pushed>0?e("Pushed {{n}} spools to cloud",{n:n.pushed}):e("No spools to push (need RFID + total weight).");f({level:n.pushed>0?"info":"warn",text:t,op:"update"})}h({ts:Date.now(),kind:"push",op:"update",status:"ok",summary:"manual"===n.trigger?e("Manual push: enqueued {{n}} spools",{n:n.pushed}):e("AMS auto-push: pushed {{p}}, skipped {{s}}",{p:n.pushed,s:n.skipped_cooldown+n.skipped_no_diff+n.skipped_no_rfid}),detail:n})}return}if("config"!==l.submod||"fetched"!==l.action){if("machine"===l.submod&&"selected_changed"===l.action){const e=l.payload,t="string"==typeof e.selected_dev_id?e.selected_dev_id:"",n=e.machines;n&&Array.isArray(n.machines)&&o(n.machines);const r=e.ams;return r&&a(r),void i(t)}}else d(ja(l.payload))}};return document.addEventListener("cpp:device",t),()=>{document.removeEventListener("cpp:device",t);const e=S.current;e.timer&&(clearTimeout(e.timer),e.timer=null)}},[n,u,d,f,h,v,o,a,i,m,e,k]),p.useEffect(()=>{if(!Array.isArray(y)||0===y.length)return;const e=new Set;for(const t of y){const n=(t.setting_id||"").trim();n&&(n in x||w.current.has(n)||e.add(n))}if(0===e.size)return;let n=!1;return(async()=>{var r;for(const o of e){if(n)return;w.current.add(o);const e=await t(Na("colors","query_for_id",{fila_id:o}));if(w.current.delete(o),n)return;const a=e.ok&&0===e.value.error_code?(null==(r=e.value.payload)?void 0:r.candidates)??[]:[],i=Sa.getState().filament.candidatesByFilaId[o];Array.isArray(a)&&0===a.length&&Array.isArray(i)&&i.length>0||b(o,Array.isArray(a)?a:[])}})(),()=>{n=!0}},[y,x,b,t]);const C=p.useCallback(async()=>{l(!0),c(null);const e=await t(Na("init","init"));if(l(!1),e.ok&&0===e.value.error_code){const t=e.value.payload;n(t.spools??[]),r(t.presets??{vendors:[]}),t.theme&&s(t.theme),t.cloud_sync&&u(t.cloud_sync),g(Boolean(t.debug_enabled))}else c(e.ok?e.value.message:e.error)},[t,n,r,s,l,c,u,g]),N=p.useCallback(async()=>{l(!0);const e=await t(Na("spool","list"));l(!1),e.ok&&0===e.value.error_code&&n(e.value.payload)},[t,n,l]),j=p.useCallback((t,n)=>{const r=Sa.getState().filament.cloudSync;if(null==r?void 0:r.logged_in){const r="create"===t?n>1?e("Syncing {{count}} new filaments to cloud…",{count:n}):e("Syncing new filament to cloud…"):"update"===t?e("Syncing filament change to cloud…"):n>1?e("Syncing deletion of {{count}} filaments to cloud…",{count:n}):e("Syncing filament deletion to cloud…");f({level:"info",text:r,op:t})}else f({level:"warn",text:e("Saved locally only — sign in to sync to cloud."),op:t})},[f,e]),_=p.useCallback(t=>{f({level:"error",text:e("Filament operation failed. This feature currently requires a network connection."),op:t})},[f,e]),E=p.useCallback(async e=>{const r=await t(Na("spool","add",e));return r.ok&&0===r.value.error_code&&(n(r.value.payload),j("create",1)),r.ok&&0===r.value.error_code||_("create"),r.ok&&0===r.value.error_code},[t,n,j,_]),P=p.useCallback(async(e,r)=>{const o=await t(Na("spool","batch_add",{spool:e,quantity:r}));return o.ok&&0===o.value.error_code&&(n(o.value.payload),j("create",r)),o.ok&&0===o.value.error_code||_("create"),o.ok&&0===o.value.error_code},[t,n,j,_]),R=p.useCallback(async e=>{const r=await t(Na("spool","update",e));return r.ok&&0===r.value.error_code&&(n(r.value.payload),j("update",1)),r.ok&&0===r.value.error_code||_("update"),r.ok&&0===r.value.error_code},[t,n,j,_]),L=p.useCallback(async e=>{const r=await t(Na("spool","remove",{spool_id:e}));return r.ok&&0===r.value.error_code&&(n(r.value.payload),j("delete",1)),r.ok&&0===r.value.error_code||_("delete"),r.ok&&0===r.value.error_code},[t,n,j,_]),F=p.useCallback(async e=>{const r=await t(Na("spool","batch_remove",{spool_ids:e}));return r.ok&&0===r.value.error_code&&(n(r.value.payload),j("delete",e.length)),r.ok&&0===r.value.error_code||_("delete"),r.ok&&0===r.value.error_code},[t,n,j,_]),A=p.useCallback(async e=>{const r=await t(Na("spool","mark_empty",{spool_id:e}));return r.ok&&0===r.value.error_code&&n(r.value.payload),r.ok&&0===r.value.error_code},[t,n]),M=p.useCallback(async e=>{const r=await t(Na("spool","toggle_favorite",{spool_id:e}));return r.ok&&0===r.value.error_code&&n(r.value.payload),r.ok&&0===r.value.error_code},[t,n]),T=p.useCallback(async e=>{const r=await t(Na("spool","archive",{spool_id:e}));return r.ok&&0===r.value.error_code&&n(r.value.payload),r.ok&&0===r.value.error_code},[t,n]),D=p.useCallback(async()=>{const e=await t(Na("preset","list"));e.ok&&0===e.value.error_code&&r(e.value.payload)},[t,r]),O=p.useCallback(async()=>{const e=await t(Na("machine","list"));if(e.ok&&0===e.value.error_code){const t=e.value.payload;return o(t.machines??[]),"string"==typeof t.selected_dev_id&&i(t.selected_dev_id),t.machines??[]}return[]},[t,o,i]),I=p.useCallback(async e=>{const n={};e&&(n.dev_id=e);const r=await t(Na("machine","request_pushall",n));return r.ok&&0===r.value.error_code},[t]),z=p.useCallback(async(e,n=!1)=>{const r={};e&&(r.dev_id=e),n&&(r.switch_selected=!0);const o=await t(Na("ams","list",r));if(o.ok&&0===o.value.error_code){const e=o.value.payload;return a(e),n&&e&&"string"==typeof e.selected_dev_id&&e.selected_dev_id&&i(e.selected_dev_id),e}return null},[t,a,i]),B=p.useCallback(async()=>{const e=await t(Na("sync","status"));e.ok&&0===e.value.error_code&&u(e.value.payload)},[t,u]),$=p.useCallback(async()=>{const e=await t(Na("sync","pull"));return e.ok&&0===e.value.error_code&&u(e.value.payload),e.ok&&0===e.value.error_code},[t,u]),W=p.useCallback(async()=>{const n=await t(Na("sync","push_all_now"));return n.ok&&0===n.value.error_code?(u(n.value.payload),!0):(f({level:"error",text:e("Push to cloud failed: {{reason}}",{reason:n.ok?n.value.message:n.error}),op:"update"}),!1)},[t,u,f,e]),U=p.useCallback(async e=>{const n=await t(Na("config","fetch",(null==e?void 0:e.force)?{force:!0}:void 0));n.ok&&0===n.value.error_code&&"cached"===n.value.message&&n.value.payload&&d(ja(n.value.payload))},[t,d]);return{init:C,fetchSpools:N,addSpool:E,batchAddSpool:P,updateSpool:R,removeSpool:L,batchRemoveSpool:F,markEmpty:A,toggleFavorite:M,archiveSpool:T,fetchPresets:D,fetchMachines:O,requestMachinePushall:I,fetchAmsData:z,fetchCloudSyncStatus:B,triggerCloudPull:$,pushAllNow:W,fetchCloudFilamentConfig:U}}(),v=p.useCallback(async()=>{await Promise.all([d(),g({force:!0})])},[d,g]),y=Sa(e=>e.filament.spools),x=Sa(e=>e.filament.presets),b=Sa(e=>e.filament.theme),w=Sa(e=>e.filament.isLoading),S=Sa(e=>e.filament.cloudSync),k=Sa(e=>e.filament.cloudAutoPushSummary),C=Sa(e=>e.filament.toasts),N=Sa(e=>e.filament.dismissToast),j=Sa(e=>e.filament.debugEnabled),_=Sa(e=>e.filament.debugLogs),E=Sa(e=>e.filament.debugFilter),P=Sa(e=>e.filament.setDebugFilter),R=Sa(e=>e.filament.clearDebugLogs),[L,F]=p.useState("all"),[A,M]=p.useState(""),[T,D]=p.useState({}),[O,I]=p.useState(!0),[z,B]=p.useState(new Set),$=z.size>0,W=S.logged_in,[U,V]=p.useState(null),[H,K]=p.useState(!1),[q,G]=p.useState(!1),[Q,Y]=p.useState(null),[X,J]=p.useState(null),[Z,ee]=p.useState(null),[te,ne]=p.useState(!1),[re,oe]=p.useState(null),ae=Sa(e=>e.filament.setDebugEnabled);p.useEffect(()=>{window.__internalBuild&&ae(!0)},[ae]),p.useEffect(()=>{t()},[t]),p.useEffect(()=>{let e=!1;return(async()=>{if(await f(),e)return;v();const{cloudSync:t}=Sa.getState().filament;t.logged_in&&await h()})(),()=>{e=!0}},[f,v,h]),p.useEffect(()=>{W||(B(new Set),ne(!1),ee(null),G(!1),Y(null),J(null))},[W]),p.useEffect(()=>{document.documentElement.dataset.theme=b},[b]);const ie=p.useMemo(()=>{let e=y.filter(e=>"archived"!==e.status);if("ams"===L&&(e=e.filter(e=>"ams_sync"===e.entry_method)),A.trim()){const t=A.toLowerCase();e=e.filter(e=>`${e.brand} ${e.material_type} ${e.series} ${e.color_name}`.toLowerCase().includes(t))}for(const[t,n]of Object.entries(T))n&&(e=e.filter(e=>e[t]===n));return e},[y,L,A,T]);p.useEffect(()=>{B(e=>{if(0===e.size)return e;const t=new Set(ie.map(e=>e.spool_id)),n=new Set([...e].filter(e=>t.has(e)));return n.size===e.size?e:n})},[ie]);const se=e=>{const t=new Set;return y.forEach(n=>{const r=n[e];r&&t.add(r)}),[...t].sort()},le=p.useCallback(e=>{B(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),ce=p.useCallback(()=>{B(e=>e.size===ie.length?new Set:new Set(ie.map(e=>e.spool_id)))},[ie]),ue=p.useCallback(t=>{oe({title:e("Delete Filament"),message:e("Are you sure to permanently delete this filament? This action cannot be undone."),confirmText:e("Delete"),onConfirm:()=>a(t)})},[a,e]),de=p.useCallback(()=>{const t=[...z];t.length&&oe({title:e("Delete {{count}} Filaments",{count:t.length}),message:e("Are you sure to permanently delete the selected filaments? This action cannot be undone."),confirmText:e("Delete"),onConfirm:async()=>{await i(t),B(new Set)}})},[z,i,e]),fe=p.useCallback(e=>{const t=y.find(t=>t.spool_id===e);t&&(ee(t),ne(!0))},[y]),pe=p.useCallback(e=>{const t=y.find(t=>t.spool_id===e);t&&(Y(null),J({brand:t.brand,material_type:t.material_type,series:t.series,color_code:t.color_code,color_name:t.color_name,initial_weight:t.initial_weight,spool_weight:t.spool_weight}),G(!0))},[y]),he=p.useCallback(e=>{ne(!1),Y(e),J(null),G(!0)},[]),me=p.useCallback(()=>{W&&(Y(null),J(null),G(!0))},[W]),ge=p.useCallback(async(e,t)=>t>1?r(e,t):n(e),[n,r]),ve=p.useCallback(async e=>o(e),[o]),ye=p.useCallback(async()=>(await s(),Sa.getState().filament.machines),[s]),xe=p.useCallback(async(e,t=!1)=>(await u(e,t),Sa.getState().filament.amsData),[u]),be=p.useCallback(async()=>{W&&await Promise.all([h(),g({force:!0})])},[W,h,g]),[we,Se]=p.useState(!1),ke=p.useCallback(async()=>{if(W&&!we){Se(!0);try{await m()}finally{Se(!1)}}},[W,we,m]),Ce=p.useMemo(()=>{if(!k)return;const t=k,n=t.skipped_cooldown+t.skipped_no_diff+t.skipped_no_rfid;return[e("Last AMS Auto-Sync"),e("Pushed {{n}}, Skipped {{n2}}",{n:t.pushed,n2:n}),e("Device state: {{state}}",{state:t.device_state})].join("\n")},[k,e]);return l.jsxs("div",{"data-testid":"filament-page-root","data-logged-in":W?"true":"false",className:"flex h-screen overflow-hidden bg-fm-base text-fm-text-primary text-xs leading-[19px] font-['HarmonyOS_Sans_SC',-apple-system,'Segoe_UI',sans-serif] fm-native-form",children:[l.jsxs("div",{className:"flex-1 min-h-0 flex flex-col overflow-hidden p-6",children:[l.jsx("div",{className:"flex-1 min-h-0 flex flex-col overflow-hidden gap-4",children:l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"flex items-center justify-between gap-4 shrink-0",children:[l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsx("div",{className:"flex gap-2 "+(W?"":"opacity-40 pointer-events-none"),children:["all","ams"].map(t=>l.jsx("div",{"data-testid":`filament-tab-${t}`,"data-active":L===t?"true":"false",className:"px-[10px] py-1 h-7 rounded-md cursor-pointer text-xs text-fm-text-secondary flex items-center transition-colors duration-150 hover:bg-fm-hover "+(L===t?"bg-fm-input text-fm-text-strong":""),onClick:()=>F(t),children:"all"===t?e("All"):"AMS"},t))}),l.jsx("div",{className:"w-px h-[11px] bg-fm-border"}),l.jsx("div",{className:"flex gap-2 "+(W?"":"opacity-40 pointer-events-none"),children:["brand","material_type","series"].map(t=>l.jsxs("div",{style:{position:"relative"},children:[l.jsxs("div",{className:"flex items-center gap-1 px-2 pl-[6px] py-[2px] h-6 rounded-md cursor-pointer text-sm text-fm-text-primary transition-colors duration-150 hover:bg-fm-hover "+(T[t]?"bg-fm-brand/15 text-fm-brand font-medium":""),onClick:e=>{e.stopPropagation(),V(U===t?null:t)},children:[e(vi[t]),l.jsx("svg",{width:"8",height:"5",viewBox:"0 0 8 5",fill:"none",children:l.jsx("path",{d:"M1 1l3 3 3-3",stroke:"currentColor",strokeWidth:"1"})})]}),U===t&&l.jsx(yi,{options:se(t),current:T[t]||"",onSelect:e=>{D(n=>{const r={...n};return e?r[t]=e:delete r[t],r}),V(null)},onClose:()=>V(null)})]},t))})]}),l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsxs("div",{className:"flex items-center gap-1 bg-fm-inner2 rounded-md px-2 h-[30px] w-[200px] "+(W?"":"opacity-40"),children:[l.jsxs("svg",{className:"text-fm-text-detail shrink-0",width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[l.jsx("circle",{cx:"6",cy:"6",r:"4.5",stroke:"currentColor",strokeWidth:"1.2"}),l.jsx("path",{d:"M9.5 9.5L13 13",stroke:"currentColor",strokeWidth:"1.2"})]}),l.jsx("input",{"data-testid":"filament-search",className:"bg-transparent border-none outline-none text-fm-text-primary text-xs w-full placeholder:text-fm-text-detail disabled:cursor-not-allowed",type:"text",placeholder:e("Search Filament"),value:A,onChange:e=>M(e.target.value),disabled:!W})]}),l.jsx("button",{"data-testid":"filament-group-toggle","data-grouped":O?"true":"false",className:`inline-flex items-center gap-1 h-[30px] px-3 rounded-lg border-none text-xs whitespace-nowrap transition-colors duration-150 bg-fm-inner text-fm-text-primary border border-fm-border-focus/50 hover:bg-fm-hover ${O?"!bg-[rgba(44,173,0,0.08)] !border-fm-brand !text-[#50e81d]":""} ${W?"cursor-pointer":"opacity-40 cursor-not-allowed hover:bg-fm-inner"}`,onClick:()=>I(!O),disabled:!W,children:e("Group")}),l.jsx(ci,{state:S,onPullClick:be,tooltipExtra:Ce}),l.jsx("button",{type:"button","data-testid":"filament-push-all","data-pushing":we?"true":"false",className:"inline-flex items-center justify-center h-[30px] w-[30px] rounded-lg border border-fm-border-focus/50 bg-fm-inner text-fm-text-secondary transition-colors duration-150 "+(!W||we?"opacity-40 cursor-not-allowed":"cursor-pointer hover:bg-fm-hover"),title:e("Push Local to Cloud"),"aria-label":e("Push Local to Cloud"),onClick:ke,disabled:!W||we,children:we?l.jsxs("svg",{className:"animate-spin",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",children:[l.jsx("circle",{cx:"12",cy:"12",r:"9",stroke:"currentColor",strokeOpacity:"0.3",strokeWidth:"2"}),l.jsx("path",{d:"M21 12a9 9 0 0 1-9 9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]}):l.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[l.jsx("path",{d:"M4.5 13.5h9",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"}),l.jsx("path",{d:"M9 4v7",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round"}),l.jsx("path",{d:"M5.5 7.5L9 4l3.5 3.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})]})}),l.jsx("button",{type:"button",className:"inline-flex items-center justify-center h-[30px] w-[30px] rounded-lg border border-fm-border-focus/50 bg-fm-inner text-fm-text-secondary transition-colors duration-150 "+(W?"cursor-pointer hover:bg-fm-hover":"opacity-40 cursor-not-allowed"),title:e("Sync History"),"aria-label":e("Sync History"),onClick:()=>K(!0),disabled:!W,children:l.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 18 18",fill:"none","aria-hidden":"true",children:[l.jsx("path",{d:"M3.5 9a5.5 5.5 0 1 0 1.6-3.9",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),l.jsx("path",{d:"M3.5 4v3h3",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),l.jsx("path",{d:"M9 6v3.25L11 10.5",stroke:"currentColor",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})]})}),l.jsx("button",{"data-testid":"filament-add",className:"inline-flex items-center gap-1 h-[30px] px-3 rounded-lg border-none text-xs whitespace-nowrap transition-colors duration-150 font-medium "+(W?"cursor-pointer bg-fm-brand text-white hover:bg-fm-brand-hover":"cursor-not-allowed bg-fm-brand/40 text-white/70"),disabled:!W,onClick:me,children:e("Add Filament")})]})]}),$&&l.jsxs("div",{className:"flex items-center justify-between shrink-0 bg-[rgba(224,64,64,0.08)] border border-fm-danger/60 rounded-lg px-4 py-2",children:[l.jsxs("div",{className:"flex items-center gap-2 text-fm-danger text-sm",children:[l.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:"shrink-0",children:[l.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeWidth:"1.2",fill:"none"}),l.jsx("path",{d:"M8 4v5M8 11v.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round"})]}),l.jsx("span",{children:e("Selected {{count}} items",{count:z.size})})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsxs("button",{className:"inline-flex items-center gap-[6px] h-[28px] px-3 rounded-md border border-fm-danger bg-fm-danger text-white text-xs cursor-pointer hover:brightness-110",onClick:de,children:[l.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 16 16",fill:"none",className:"shrink-0",children:[l.jsx("path",{d:"M4 5h8l-.6 8H4.6L4 5z",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M6 3h4",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M3 5h10",stroke:"currentColor",strokeWidth:"1.1"}),l.jsx("path",{d:"M6.5 7v4M9.5 7v4",stroke:"currentColor",strokeWidth:"1"})]}),e("Batch Delete")]}),l.jsx("button",{className:"h-[28px] px-3 rounded-md border border-fm-border-focus/50 bg-transparent text-fm-text-primary text-xs cursor-pointer hover:bg-fm-hover",onClick:()=>B(new Set),children:e("Clear Selection")})]})]}),w?l.jsx("div",{className:"flex flex-col items-center justify-center py-20 text-fm-text-detail gap-4",children:l.jsx("p",{children:e("Loading...")})}):W?l.jsx(Ya,{spools:ie,selected:z,onToggleSelect:le,onSelectAll:ce,grouped:O,onDetail:fe,onAddSimilar:pe,onEmptyAdd:me,onDelete:ue}):l.jsxs("div",{"data-testid":"auth-signed-out",className:"flex flex-col items-center justify-center py-20 text-center gap-3 rounded-lg border border-fm-border bg-fm-inner",children:[l.jsx("p",{className:"m-0 text-[15px] leading-[22px] text-fm-text-strong",children:e("Not signed in — no data available")}),l.jsx("p",{className:"m-0 text-xs leading-[19px] text-fm-text-detail",children:e("Please sign in to view your filament library.")})]})]})}),j&&l.jsx("div",{className:"pt-4 mt-auto shrink-0",children:l.jsx(gi,{logs:_,filter:E,onFilterChange:P,onClear:R})})]}),l.jsx(oi,{open:q,editingSpool:Q,prefilledSpool:X,presets:x.vendors,onClose:()=>{G(!1),Y(null),J(null)},onSubmitAdd:ge,onSubmitUpdate:ve,onFetchMachines:ye,onRequestPushall:c,onFetchAmsData:xe}),l.jsx(ii,{open:te,spool:Z,filteredSpools:ie,onClose:()=>ne(!1),onEdit:he,onNavigate:e=>{const t=y.find(t=>t.spool_id===e);t&&ee(t)}}),l.jsx(pi,{toasts:C,onDismiss:N}),l.jsx(fi,{open:H,onClose:()=>K(!1)}),l.jsx(li,{open:null!==re,title:(null==re?void 0:re.title)??"",message:null==re?void 0:re.message,confirmText:null==re?void 0:re.confirmText,danger:!0,onCancel:()=>oe(null),onConfirm:async()=>{const e=null==re?void 0:re.onConfirm;oe(null),e&&await e()}})]})}});function bi({src:e,...t}){const n="/img/"+e;return l.jsx("img",{src:n,...t})}function wi(e){const[t,n]=h.useState(!1),[r,o]=h.useState(!1);let a=e.icon;return r&&e.active?a=e.active:t&&e.hover&&(a=e.hover),l.jsx("button",{className:e.className,onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),onClick:()=>o(!r),children:l.jsx(bi,{src:a})})}const Si=({children:e,direction:t="vertical",height:n="100%",width:r="100%",className:o="",style:a={},smooth:i=!1})=>{const s={height:n,width:r,overflowY:"vertical"===t?"auto":"hidden",overflowX:"horizontal"===t?"auto":"hidden",scrollBehavior:i?"smooth":"auto",...a},c=`\n ${"vertical"===t?"overflow-y-auto":"overflow-x-auto whitespace-nowrap"}\n ${i?"scroll-smooth":""}\n ${o}\n `;return l.jsx("div",{style:s,className:c,children:e})};function ki(){return l.jsx("div",{className:"flex-col",children:l.jsxs(Si,{children:[l.jsxs("div",{className:"flex flex-row items-center",children:[l.jsx(wi,{icon:"device_add.svg",className:"mr-auto"}),l.jsx(wi,{icon:"device_layout.svg"}),l.jsx(wi,{icon:"device_query.svg"})]}),l.jsx("div",{className:"flex flex-col"})]})})}function Ci(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}function Ni(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function ji(...e){return t=>{let n=!1;const r=e.map(e=>{const r=Ni(e,t);return n||"function"!=typeof r||(n=!0),r});if(n)return()=>{for(let t=0;t{const t=n.map(e=>p.createContext(e));return function(n){const r=(null==n?void 0:n[e])||t;return p.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return r.scopeName=e,[function(t,r){const o=p.createContext(r),a=n.length;n=[...n,r];const i=t=>{var n;const{scope:r,children:i,...s}=t,c=(null==(n=null==r?void 0:r[e])?void 0:n[a])||o,u=p.useMemo(()=>s,Object.values(s));return l.jsx(c.Provider,{value:u,children:i})};return i.displayName=t+"Provider",[i,function(n,i){var s;const l=(null==(s=null==i?void 0:i[e])?void 0:s[a])||o,c=p.useContext(l);if(c)return c;if(void 0!==r)return r;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},Pi(r,...t)]}function Pi(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){const r=n.reduce((t,{useScope:n,scopeName:r})=>({...t,...n(e)[`__scope${r}`]}),{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var Ri=(null==globalThis?void 0:globalThis.document)?p.useLayoutEffect:()=>{},Li=m[" useId ".trim().toString()]||(()=>{}),Fi=0;function Ai(e){const[t,n]=p.useState(Li());return Ri(()=>{n(e=>e??String(Fi++))},[e]),e||(t?`radix-${t}`:"")}var Mi=m[" useInsertionEffect ".trim().toString()]||Ri;function Ti({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){const[o,a,i]=function({defaultProp:e,onChange:t}){const[n,r]=p.useState(e),o=p.useRef(n),a=p.useRef(t);return Mi(()=>{a.current=t},[t]),p.useEffect(()=>{var e;o.current!==n&&(null==(e=a.current)||e.call(a,n),o.current=n)},[n,o]),[n,r,a]}({defaultProp:t,onChange:n}),s=void 0!==e,l=s?e:o;{const t=p.useRef(void 0!==e);p.useEffect(()=>{const e=t.current;if(e!==s){const t=e?"controlled":"uncontrolled",n=s?"controlled":"uncontrolled";console.warn(`${r} is changing from ${t} to ${n}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}t.current=s},[s,r])}const c=p.useCallback(t=>{var n;if(s){const r=function(e){return"function"==typeof e}(t)?t(e):t;r!==e&&(null==(n=i.current)||n.call(i,r))}else a(t)},[s,e,a,i]);return[l,c]}function Di(e){const t=Oi(e),n=p.forwardRef((e,n)=>{const{children:r,...o}=e,a=p.Children.toArray(r),i=a.find(zi);if(i){const e=i.props.children,r=a.map(t=>t===i?p.Children.count(e)>1?p.Children.only(null):p.isValidElement(e)?e.props.children:null:t);return l.jsx(t,{...o,ref:n,children:p.isValidElement(e)?p.cloneElement(e,void 0,r):null})}return l.jsx(t,{...o,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function Oi(e){const t=p.forwardRef((e,t)=>{const{children:n,...r}=e;if(p.isValidElement(n)){const e=function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;if(o)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o)return e.props.ref;return e.props.ref||e.ref}(n),o=function(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=(...e)=>{const t=a(...e);return o(...e),t}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}(r,n.props);return n.type!==p.Fragment&&(o.ref=t?ji(t,e):e),p.cloneElement(n,o)}return p.Children.count(n)>1?p.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ii=Symbol("radix.slottable");function zi(e){return p.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===Ii}var Bi=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{const n=Di(`Primitive.${t}`),r=p.forwardRef((e,r)=>{const{asChild:o,...a}=e,i=o?n:t;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),l.jsx(i,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function $i(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...e)=>{var n;return null==(n=t.current)?void 0:n.call(t,...e)},[])}var Wi,Ui="dismissableLayer.update",Vi="dismissableLayer.pointerDownOutside",Hi="dismissableLayer.focusOutside",Ki=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),qi=p.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:i,onDismiss:s,...c}=e,u=p.useContext(Ki),[d,f]=p.useState(null),h=(null==d?void 0:d.ownerDocument)??(null==globalThis?void 0:globalThis.document),[,m]=p.useState({}),g=_i(t,e=>f(e)),v=Array.from(u.layers),[y]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),x=v.indexOf(y),b=d?v.indexOf(d):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,S=b>=x,k=function(e,t=(null==globalThis?void 0:globalThis.document)){const n=$i(e),r=p.useRef(!1),o=p.useRef(()=>{});return p.useEffect(()=>{const e=e=>{if(e.target&&!r.current){let r=function(){Qi(Vi,n,a,{discrete:!0})};const a={originalEvent:e};"touch"===e.pointerType?(t.removeEventListener("click",o.current),o.current=r,t.addEventListener("click",o.current,{once:!0})):r()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}(e=>{const t=e.target,n=[...u.branches].some(e=>e.contains(t));S&&!n&&(null==o||o(e),null==i||i(e),e.defaultPrevented||null==s||s())},h),C=function(e,t=(null==globalThis?void 0:globalThis.document)){const n=$i(e),r=p.useRef(!1);return p.useEffect(()=>{const e=e=>{if(e.target&&!r.current){Qi(Hi,n,{originalEvent:e},{discrete:!1})}};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}(e=>{const t=e.target;[...u.branches].some(e=>e.contains(t))||(null==a||a(e),null==i||i(e),e.defaultPrevented||null==s||s())},h);return function(e,t=(null==globalThis?void 0:globalThis.document)){const n=$i(e);p.useEffect(()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[n,t])}(e=>{b===u.layers.size-1&&(null==r||r(e),!e.defaultPrevented&&s&&(e.preventDefault(),s()))},h),p.useEffect(()=>{if(d)return n&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(Wi=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),Gi(),()=>{n&&1===u.layersWithOutsidePointerEventsDisabled.size&&(h.body.style.pointerEvents=Wi)}},[d,h,n,u]),p.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),Gi())},[d,u]),p.useEffect(()=>{const e=()=>m({});return document.addEventListener(Ui,e),()=>document.removeEventListener(Ui,e)},[]),l.jsx(Bi.div,{...c,ref:g,style:{pointerEvents:w?S?"auto":"none":void 0,...e.style},onFocusCapture:Ci(e.onFocusCapture,C.onFocusCapture),onBlurCapture:Ci(e.onBlurCapture,C.onBlurCapture),onPointerDownCapture:Ci(e.onPointerDownCapture,k.onPointerDownCapture)})});qi.displayName="DismissableLayer";function Gi(){const e=new CustomEvent(Ui);document.dispatchEvent(e)}function Qi(e,t,n,{discrete:r}){const o=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?function(e,t){e&&dn.flushSync(()=>e.dispatchEvent(t))}(o,a):o.dispatchEvent(a)}p.forwardRef((e,t)=>{const n=p.useContext(Ki),r=p.useRef(null),o=_i(t,r);return p.useEffect(()=>{const e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),l.jsx(Bi.div,{...e,ref:o})}).displayName="DismissableLayerBranch";var Yi="focusScope.autoFocusOnMount",Xi="focusScope.autoFocusOnUnmount",Ji={bubbles:!1,cancelable:!0},Zi=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:a,...i}=e,[s,c]=p.useState(null),u=$i(o),d=$i(a),f=p.useRef(null),h=_i(t,e=>c(e)),m=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let e=function(e){if(m.paused||!s)return;const t=e.target;s.contains(t)?f.current=t:rs(f.current,{select:!0})},t=function(e){if(m.paused||!s)return;const t=e.relatedTarget;null!==t&&(s.contains(t)||rs(f.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(const t of e)t.removedNodes.length>0&&rs(s)};document.addEventListener("focusin",e),document.addEventListener("focusout",t);const r=new MutationObserver(n);return s&&r.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),r.disconnect()}}},[r,s,m.paused]),p.useEffect(()=>{if(s){os.add(m);const t=document.activeElement;if(!s.contains(t)){const n=new CustomEvent(Yi,Ji);s.addEventListener(Yi,u),s.dispatchEvent(n),n.defaultPrevented||(!function(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(rs(r,{select:t}),document.activeElement!==n)return}((e=es(s),e.filter(e=>"A"!==e.tagName)),{select:!0}),document.activeElement===t&&rs(s))}return()=>{s.removeEventListener(Yi,u),setTimeout(()=>{const e=new CustomEvent(Xi,Ji);s.addEventListener(Xi,d),s.dispatchEvent(e),e.defaultPrevented||rs(t??document.body,{select:!0}),s.removeEventListener(Xi,d),os.remove(m)},0)}}var e},[s,u,d,m]);const g=p.useCallback(e=>{if(!n&&!r)return;if(m.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,o=document.activeElement;if(t&&o){const t=e.currentTarget,[r,a]=function(e){const t=es(e),n=ts(t,e),r=ts(t.reverse(),e);return[n,r]}(t);r&&a?e.shiftKey||o!==a?e.shiftKey&&o===r&&(e.preventDefault(),n&&rs(a,{select:!0})):(e.preventDefault(),n&&rs(r,{select:!0})):o===t&&e.preventDefault()}},[n,r,m.paused]);return l.jsx(Bi.div,{tabIndex:-1,...i,ref:h,onKeyDown:g})});function es(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ts(e,t){for(const n of e)if(!ns(n,{upTo:t}))return n}function ns(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function rs(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}Zi.displayName="FocusScope";var os=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null==n||n.pause()),e=as(e,t),e.unshift(t)},remove(t){var n;e=as(e,t),null==(n=e[0])||n.resume()}}}();function as(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}var is=p.forwardRef((e,t)=>{var n;const{container:r,...o}=e,[a,i]=p.useState(!1);Ri(()=>i(!0),[]);const s=r||a&&(null==(n=null==globalThis?void 0:globalThis.document)?void 0:n.body);return s?fn.createPortal(l.jsx(Bi.div,{...o,ref:t}),s):null});is.displayName="Portal";var ss=e=>{const{present:t,children:n}=e,r=function(e){const[t,n]=p.useState(),r=p.useRef(null),o=p.useRef(e),a=p.useRef("none"),i=e?"mounted":"unmounted",[s,l]=function(e,t){return p.useReducer((e,n)=>t[e][n]??e,e)}(i,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const e=ls(r.current);a.current="mounted"===s?e:"none"},[s]),Ri(()=>{const t=r.current,n=o.current;if(n!==e){const r=a.current,i=ls(t);if(e)l("MOUNT");else if("none"===i||"none"===(null==t?void 0:t.display))l("UNMOUNT");else{l(n&&r!==i?"ANIMATION_OUT":"UNMOUNT")}o.current=e}},[e,l]),Ri(()=>{if(t){let e;const n=t.ownerDocument.defaultView??window,i=a=>{const i=ls(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&i&&(l("ANIMATION_END"),!o.current)){const r=t.style.animationFillMode;t.style.animationFillMode="forwards",e=n.setTimeout(()=>{"forwards"===t.style.animationFillMode&&(t.style.animationFillMode=r)})}},s=e=>{e.target===t&&(a.current=ls(r.current))};return t.addEventListener("animationstart",s),t.addEventListener("animationcancel",i),t.addEventListener("animationend",i),()=>{n.clearTimeout(e),t.removeEventListener("animationstart",s),t.removeEventListener("animationcancel",i),t.removeEventListener("animationend",i)}}l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:p.useCallback(e=>{r.current=e?getComputedStyle(e):null,n(e)},[])}}(t),o="function"==typeof n?n({present:r.isPresent}):p.Children.only(n),a=_i(r.ref,function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;if(o)return e.ref;if(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get,o=r&&"isReactWarning"in r&&r.isReactWarning,o)return e.props.ref;return e.props.ref||e.ref}(o));return"function"==typeof n||r.isPresent?p.cloneElement(o,{ref:a}):null};function ls(e){return(null==e?void 0:e.animationName)||"none"}ss.displayName="Presence";var cs=0;function us(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ds=function(){return ds=Object.assign||function(e){for(var t,n=1,r=arguments.length;n